将S3对象ID传递给EC2实例的最佳方法?
目前在我构建的环境中,一个文件作为 JSON 文件从 Web 表单提交到 S3 存储桶。当该文件到达 S3 存储桶时,它会触发 AWS Lambda 打开 EC2 实例。EC2 需要在 S3 存储桶中下载该文件并将其提供给应用程序。完成后,文件将提交到 S3 存储桶并触发 AWS Lambda,从而关闭 EC2 实例。
下载该文件的最佳方式是什么?这些是我的一些想法,但我不确定它们是否可行/实用:
- 将触发 AWS Lambda 的文件的 S3 对象 ID 传递给 EC2(使用 Lambda)
- 将 S3 存储桶中最近上传的文件的 S3 对象 ID 传递给 EC2
- 使用 AWS CLI 获取存储桶中唯一文件的 S3 对象 ID(例如:mybucket/uploaded_files/)
一旦 EC2 实例传递了对象 ID,它就会下载它。想法/意见?谢谢。
编辑澄清:上传到 S3 存储桶的文件是一个 JSON 文件,其中包含应用程序的配置选项。永远只有一个 EC2 实例(因为这是一个副项目)。
回答
可能最具可扩展性和容错性的方法是通过SQS。
在这种情况下,您的 lambda 将对象 ID 传递到专用 SQS 队列并启动实例。启动时的实例从队列中读取消息并处理图像,包括下载它们。