我使用AWS相当新,我需要运行批处理(每日)并将数据存储在MySQL数据库中。提取和转化大约需要30分钟。作为旁注,我需要运行大熊猫。
我读到lambda函数限制为5分钟。 http://docs.aws.amazon.com/lambda/latest/dg/limits.html
我在考虑将EC2微实例与Ubuntu或Elastic Beanstalk实例一起使用。和Amazon RDS for MySQL DB。
我是在正确的道路上吗?在AWS中运行我的python代码的最佳位置在哪里?
答案 0 :(得分:2)
如果您需要每天运行一次或两次这些操作,您可能需要查看新的AWS Batch服务,这样您就可以运行批处理作业而无需担心DevOps。
如果你有足够的工作来保持计算机忙碌一整天,我相信最好的解决方案是运行基于Docker的解决方案,这将使您能够更轻松地管理您的图像并能够测试您的本地主机(如果有必要,可以更轻松地移动到另一个云)。 AWS ECS使其像Elastic beanstalk一样简单。
我的前端运行在Elastic beanstalk上,我的后端工作人员在ECS上运行。在我的例子中,我的python worker正在无限循环上运行,检查SQS消息,以便服务器可以通过SQS消息与它们通信。但我也有CloudWatch规则(作为cron作业)唤醒并调用Lambda函数,然后发布SQS消息供工作人员处理。然后,我可以在同一个t2.small ECS实例上运行三个工作容器。如果其中一个工人失败,ECS将重新创建一个。
总结一下,在AWS ECS上的Docker上使用python。
答案 1 :(得分:1)
我使用大约2-3个Ubuntu EC2实例只是为了不同目的运行Python脚本(通过cronjob)并使用RDS for PostgresDB,所有这些实际上都运行良好。所以我认为你应该试试EC2和RDS。祝你好运!
答案 2 :(得分:0)
我会创建一个EC2实例,安装Python和MySQL,并托管该实例上的所有内容。如果您需要更高的可用性,可以使用ASG来维护至少1个运行实例。如果一个AZ发生故障,或者系统发生故障,ASG将在另一个AZ中启动另一个实例。使用CloudWatch进行EC2实例监控。
如果您不需要数据库的24小时可用性,您甚至可以安排实例在不需要时启动和停止,从而降低成本。