1

我是相当新的使用AWS,我需要运行一个批处理(日常)并将数据存储在MySQL数据库中。这将需要约30分钟的提取和转换。作为一个便笺,我需要运行熊猫。在AWS中运行Python脚本的最佳位置在哪里?

我读到的lambda函数被限制为5分钟。 http://docs.aws.amazon.com/lambda/latest/dg/limits.html

我正在考虑在Ubuntu或Elastic Beanstalk实例中使用EC2微型实例。和Amazon RDS的MySQL数据库。

我在正确的道路上吗?哪里是在AWS中运行我的Python代码的最佳场所?

+1

SQS + Lambda是这里的“简单”方法,但您可能需要将问题划分为更小的块以使其符合时间限制。 – tadman

+0

同时关注Spot实例。获得一个体面的m3/m4/r3/etc现场实例比t2。*更便宜,更快。*用于批处理。 – mootmoot

回答

1

我正在使用大约2-3个Ubuntu EC2实例来运行Python脚本(通过cronjob)用于不同的目的,并使用RDS for PostgresDB,所有这些目前运行良好。所以我认为你应该试试EC2和RDS。祝你好运!

0

我会创建一个EC2实例,安装Python和MySQL,并承载该实例上的所有内容。如果您需要更高的可用性,则可以使用ASG来维护至少一个实例的运行。如果一个AZ发生故障,或者系统发生故障,ASG将启动另一个AZ中的另一个实例。使用CloudWatch进行EC2实例监控。

如果您不需要数据库的24小时可用性,甚至可以安排您的实例在不需要时降低成本的情况下启动和停止。

1

如果您需要每天运行一次或两次这些操作,您可能需要查看新的AWS批处理服务,这将允许您运行批处理作业,而无需担心DevOps。

如果您有足够的工作来保持计算机一天中大部分时间都很忙,我相信最好的解决方案是运行基于Docker的解决方案,这将允许您更轻松地管理您的映像并能够测试您的本地主机(如果您需要,可以更轻松地转移到其他云)。 AWS ECS使它像Elastic beanstalk一样简单。

我的前端运行在Elastic beanstalk上,我的后端工作人员在ECS上运行。就我而言,我的Python工作人员正在无限循环中检查SQS消息,以便服务器可以通过SQS消息与他们进行通信。但是我也有CloudWatch规则(作为cron作业)唤醒并调用Lambda函数,然后发布SQS消息供工作人员处理。然后我可以在同一个t2.small ECS实例上运行三个工作容器。如果其中一名工人失败,ECS将重新创建一个。

总而言之,在AWS ECS上的Docker上使用python。

相关问题