什么是好的架构?我应该使用哪些工具在像 AWS 这样的云中每月一次下载和处理多个文件?

What would be a good architecture and which tools should I use for downloading and processing multiple files once per month in a cloud like AWS?

嘿 Stackflow 社区, 我正在寻找一个好的架构和工具来满足以下要求:

在每个月的特定日期自动执行:

我想在像 AWS 这样的云服务上进行设置。

我想到的一个解决方案是设置一个 Airflow Container,它按顺序启动所有这些任务。 在这个解决方案中,我的缺点是我必须为这个容器支付整个月的费用,但我每个月只需要一次。我不想每次都手动启动和关闭实例。

感谢您的帮助!

我会自己回答这个问题,因为我找到了一个非常好的解决方案。

我使用了 AWS 无服务器和 PaaS 工具。

Workflow/architecture如下:

  1. CloudWatch 事件在每个月的第一个工作日触发指定的 lambda 函数
  2. 被调用的 lambda 函数从 AWS CloudWatch 调用中提取元数据(即实际时间)并调用脚本下载 csv 并将其保存到 S3 存储服务。然后将使用 csv 文件的路径作为参数调用另一个脚本。使用 lambda 的一个优点是您可以为每个请求获得另一个 IP 地址,因此您不会 运行 速率限制并且不会被阻止。
  3. 该脚本使用 Map 函数启动一些 AWS Step Functions。使用 AWS Step Functions 的原因是一次控制最大请求数。如果我对每个文件调用 lambda 函数,那么 10000 个下载请求将同时到达服务器,这将破坏大多数服务器。由于每个 StepFunction 实例的最大事件数为 25,000,我不得不将我的请求拆分为多个 Step Functions。
  4. 下载的文件将添加到 AWS SQS 中的队列中,该队列对每个文件调用 lambda 函数
  5. lambda 函数从 SQS 获取文件的地址,并提取 json 个文件中每个文件的数据,这些文件将存储在 S3 中。如果提取失败,文件将被添加到包含失败文件路径的 SQS 队列中。准备好进行手动处理和错误修复
  6. 将在 AWS Glue
  7. 的帮助下创建存储的 json 文件的架构
  8. schema中的数据可以在AWS Athena中查询和提取