如何在 AWS (EC2/Lambda) 上运行 python 代码

Hem*_*Das 5 python amazon-s3 amazon-ec2 aws-lambda

这篇文章旨在获取基本信息/链接,以了解在 Lambda 或 EC2 上运行 Py 代码。

我的代码结构非常简单:

import numpy as np
import pandas as pd
#load more packages

input_data = pd.read_csv(...)

def do_stuff(input, parameters):
     action1
     action2
     output.to_csv(...)
     plt.save_fig(...)

do_stuff(input_data,input_parameter)
Run Code Online (Sandbox Code Playgroud)

我需要在 AWS 上运行此代码,但我不确定使用哪个:Lambda 或 EC2。此外,输入文件在我的本地 PC 上,输出将保存到特定文件夹中。我需要将它保存到 S3.0 吗?如果是这样,路径如何?我还用吗import os

对于这个菜鸟之类的问题,我很抱歉。我需要一些关于我应该阅读什么才能开始的入门指导。浏览 AWS 文档变得技术化——从 Lambda 上的“Hello World”——我无法理解太多。由于锁定,我无法使用我的办公室桌面,我的个人 mac 无法处理负载。输入和输出文件非常小 - 累计不到 5 MB(有多个输入文件)。

Adi*_*bak 1

如果这是需要经常完成的事情,您可能会创建一个工作流程,其中您可以:

  1. 将输入.csv文件上传到S3存储桶

  2. 您的AWS Lambda函数侦听 S3 存储桶中的更改,并在上传新文件时触发您的代码运行。

  3. 您的代码将输出.csv保存到第二个S3存储桶。

代码可能看起来非常粗略像这样(根据本示例进行修改)

import boto3
import os
import sys
from urllib.parse import unquote_plus

s3_client = boto3.client('s3')
def handle_csv(original_csv_path, output_csv_path):
    <process csv code>

def lambda_handler(event, context):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = unquote_plus(record['s3']['object']['key'])
        tmpkey = key.replace('/', '')
        download_path = <insert path here>
        upload_path = <insert path here>
        s3_client.download_file(bucket, key, download_path)
        handle_csv(download_path, upload_path)
        s3_client.upload_file(upload_path, '<>'.format(bucket), key)
Run Code Online (Sandbox Code Playgroud)

路径可能如下所示: '<bucket/object>': 'input_csvs/1.csv'