首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AWS上运行python代码(EC2/Lambda)

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

Stack Overflow用户
提问于 2020-06-21 01:54:24
回答 2查看 1.3K关注 0票数 5

这篇文章是为了获得在Lambda或EC2上运行Py代码的基本信息/链接。

我的代码结构非常简单:

代码语言:javascript
复制
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)

我需要在亚马逊网络服务上运行这段代码,但我不确定该使用哪一个: Lambda还是EC2。此外,输入文件在我的本地PC上,输出被保存到特定的文件夹中。我是否需要将其保存到S3。如果是这样,路径是什么样子的?我还在使用import os

对于这个菜鸟的问题我很抱歉。我需要一些入门指南,告诉我应该读些什么才能开始。浏览AWS文档是技术性的-从Lambda上的"Hello World“-我不能理解太多。由于封锁,我无法使用我的办公室桌面,我的个人mac也无法处理负载。输入和输出文件非常小-累积不到5MB(有多个输入文件)。

EN

回答 2

Stack Overflow用户

发布于 2020-06-21 02:55:39

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

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

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

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

代码可能看起来非常粗略,如下所示(修改自this example )

代码语言:javascript
复制
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)

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

票数 1
EN

Stack Overflow用户

发布于 2020-06-27 14:59:03

这就是这里的操作,尽管我在这里没有一个好的答案-我可以总结我已经弄明白的东西。

Lambda:我找到了一个有用的youtube video来理解如何让Lambda工作。此外,要使用numpy和pandas等Py包,还需要添加一个Lambda层。通过这个Medium post,我能够做到这一点。但是我还没有完全弄清楚如何连接我的输入CVS文件和导出我的输出CSV文件。当我意识到Lambda可以运行15分钟的最大连续时间时,我停了下来。我的马尔可夫模拟代码需要24小时-所以Lambda是没有问题的,我没有继续下去。(附言:我后来读到有一些“复杂”的方法可以让它工作-但不-我甚至不清楚Lambda服务将如何收费)。

EC2:有几个资源对在EC2 AWS Linux服务器上运行我的代码有很大帮助。medium post on running Jupyter server是最有用的,然后我通过nother helpful medium post在终端上使用python和conda。此外,我使用dropbox API和python包将我的输出文件从EC2上运行的代码推送到云中。

Lambda不适用于我,而EC2在很大程度上要归功于medium post。此外,我需要了解CLI代码是如何工作的,以便更好地掌握事情是如何工作的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62489657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档