数据工程 - 有效提取数据的基础设施/服务(AWS)[已结束]

问题描述 投票:1回答:1

我们假设标准数据工程问题:

  • 每天凌晨3点连接到API
  • 下载数据
  • 将它们存储在数据湖中

假设有一个python脚本可以执行API命中和存储,但这并不重要。

理想情况下,我希望有一些活跃的服务,运行此脚本并自行杀死...到目前为止,我考虑过这些可能性(使用AWS服务):

  1. (AWS)Lambda - FaaS,用例的理想匹配。但是有一个问题:功能的带宽(有限的RAM / CPU)和超时5分钟。
  2. (AWS)Lambda +步骤函数+范围请求:并行激发多个Lambdas,每个Lambda都下载文件的一部分。通过步骤函数进行协调。它解决了1)的问题,但感觉非常复杂。
  3. (AWS EC2)静态VM:经典方法:我有一个VM,我有一个python解释器,我有一个cron - >每晚我运行脚本。或者每天晚上,我都可以使用CloudFormation触发新的EC2机器的构建,运行脚本然后杀死它。问题:感觉非常老派 - 就像必须有更好的方法去做。
  4. (AWS ECS)Docker:我对docker的经验很少。可能类似于VM的情况,但感觉更通用/可控。我不知道这种工作是否有一个好的协调者,它是多么容易(发射码头并杀死它)

我怎么看:

  1. 正是我想要的,但由于资源限制,下载大数据并不好。
  2. 1)复杂的解决方法
  3. 感觉非常oldschool,额外的devops费用
  4. 对这个话题不太了解,感觉就像现在的最新技术

我的问题是:这类工作目前的最新技术水平是什么?什么服务有用,有什么经验?

amazon-web-services docker aws-lambda etl data-extraction
1个回答
1
投票

#3的变体...使用用户数据脚本启动Linux Amazon EC2实例,并将Shutdown Behavior设置为Terminate。

User Data脚本执行下载并将数据复制到Amazon S3。然后它执行sudo shutdown -h来关闭实例。 (或者,如果脚本很复杂,用户数据脚本可以从S3存储桶下载程序,然后执行它。)

Linux EC2实例现在每秒收费,因此将其视为具有更多磁盘空间且没有5分钟限制的更大版本的Lambda。

无需使用CloudFormation来启动实例,因为您只需要删除CloudFormation堆栈。相反,只需使用必要的参数直接启动实例。您甚至可以使用参数创建启动模板,然后使用启动模板简单地启动实例。

您甚至可以为流程添加一些智能并使用现货定价启动实例(将出价设置为正常的按需定价,因为最坏的情况下您只需支付正常价格)。如果由于备用容量不足而无法启动竞价型实例,请改为启动按需实例。

© www.soinside.com 2019 - 2024. All rights reserved.