这篇文章是为了获得在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)我需要在亚马逊网络服务上运行这段代码,但我不确定该使用哪一个: Lambda还是EC2。此外,输入文件在我的本地PC上,输出被保存到特定的文件夹中。我是否需要将其保存到S3。如果是这样,路径是什么样子的?我还在使用import os吗
对于这个菜鸟的问题我很抱歉。我需要一些入门指南,告诉我应该读些什么才能开始。浏览AWS文档是技术性的-从Lambda上的"Hello World“-我不能理解太多。由于封锁,我无法使用我的办公室桌面,我的个人mac也无法处理负载。输入和输出文件非常小-累积不到5MB(有多个输入文件)。
发布于 2020-06-21 02:55:39
如果这是需要经常做的事情,您可能会创建一个工作流,其中您可以:
代码可能看起来非常粗略,如下所示(修改自this example )
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'
发布于 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代码是如何工作的,以便更好地掌握事情是如何工作的。
https://stackoverflow.com/questions/62489657
复制相似问题