【问题标题】:Launch EC2 instance on S3 upload + process file在 S3 上传 + 进程文件上启动 EC2 实例
【发布时间】:2021-04-14 07:44:42
【问题描述】:

我想在用户将数据上传到我的datadump-input S3 存储桶时自动启动 EC2 实例。然后 EC2 实例应该:

  1. 开始
  2. datadump-input 下载文件并使用预加载的 Python 脚本对其进行处理
  3. 停止

最简单的方法是什么? 具体来说,如何将文件从 S3 存储桶获取到 EC2 实例? 每次上传的文件名都会不同。

我在考虑 Lambda,但对其他服务持开放态度。

【问题讨论】:

  • Lambda 非常适合这种用例。
  • @jellycsc 我知道如何从输入中解析文件位置。如何将该信息传递给实例?
  • 我不明白你的意思。 “将信息传递给实例”是什么意思?
  • 如何让EC2实例从datadump-input下载上传的文件?每次都会有不同的路径
  • 您可以使用CLI或SDK从S3路径下载。

标签: amazon-web-services amazon-s3 amazon-ec2 aws-lambda amazon-sns


【解决方案1】:

我会让 S3 将新对象通知发送到 SQS 队列。配置自动扩展组以在队列深度大于 0 时启动 EC2 实例。在 EC2 实例上,让您的应用程序轮询 SQS 队列以获取消息,直到没有更多消息为止。

【讨论】:

  • SQS 是否让您动态传递 S3 文件的位置?
  • @DanielFreeman 我不确定我是否理解您的问题,对于上传到 S3 的每个新对象,S3 将在 SQS 队列中放置一条消息,其中包含新对象的存储桶和密钥作为消息。
  • 如何让 EC2 实例从 S3 存储桶下载正确的文件?每次上传的文件名都会不同
  • 文件名是S3中的key。文件名将在您从 SQS 获得的消息中。您将使用该文件名将文件从 S3 下载到 EC2 实例中。
  • Auto Scaling 非常适合在消息到达时启动实例。但是,在处理消息时停止实例并不是很好。为此,当实例处理完队列中的所有消息后,它应该调用 Auto Scaling API 以将 Desired Capacity 设置为零。这将导致 Auto Scaling 停止实例。下次启动时,它可以运行/var/lib/cloud/scripts/per-boot/ 目录中的启动脚本。见:Auto-Stop EC2 instances when they finish a task
猜你喜欢
  • 2013-10-24
  • 2016-10-09
  • 2023-04-05
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2012-04-24
相关资源
最近更新 更多