Amazon web services 将S3对象ID传递给EC2实例的最佳方法?

Amazon web services 将S3对象ID传递给EC2实例的最佳方法?,amazon-web-services,amazon-s3,amazon-ec2,aws-cli,Amazon Web Services,Amazon S3,Amazon Ec2,Aws Cli,目前在我构建的环境中,一个文件作为JSON文件从web表单提交到S3存储桶。当该文件到达S3存储桶时,它会触发AWS Lambda打开EC2实例。EC2需要将该文件下载到S3存储桶中,并将其提供给应用程序。一旦完成,一个文件将被提交到一个S3 bucket并触发AWS Lambda,从而关闭EC2实例 下载该文件的最佳方式是什么?这些是我的一些想法,但我不确定它们是否可行: 将触发AWS Lambda的文件的S3对象ID传递给EC2(使用Lambda) 将S3存储桶中最近上载的文件的S3对象ID

目前在我构建的环境中,一个文件作为JSON文件从web表单提交到S3存储桶。当该文件到达S3存储桶时,它会触发AWS Lambda打开EC2实例。EC2需要将该文件下载到S3存储桶中,并将其提供给应用程序。一旦完成,一个文件将被提交到一个S3 bucket并触发AWS Lambda,从而关闭EC2实例

下载该文件的最佳方式是什么?这些是我的一些想法,但我不确定它们是否可行:

  • 将触发AWS Lambda的文件的S3对象ID传递给EC2(使用Lambda)
  • 将S3存储桶中最近上载的文件的S3对象ID传递给EC2
  • 使用AWS CLI获取bucket中唯一文件(例如:mybucket/upload_files/)的S3对象ID
  • 一旦EC2实例被传递了对象ID,它就会下载它。 想法/意见?谢谢

    编辑以澄清:
    上传到S3 bucket的文件是一个JSON文件,其中包含应用程序的配置选项。只有一个EC2实例(因为这是一个辅助项目)。

    最具可扩展性和容错性的方法可能是通过


    在这种情况下,lambda将对象ID传递给专用SQS队列,并启动实例。启动时实例从队列读取消息并处理映像,包括下载它们。

    如果负载足够高,我不会将ec2启动/停止与每个文件的创建结合起来。例如,创建文件的速度快于实例的启动时间

    我会使用一个发送给SNS的消息。我通常总是把SNS放在SQS前面,因为它为您提供了一个过滤和转发消息的好地方

    然后,我将让我的处理服务监听这个SQS队列。我还将把我的处理服务放入。然后你就可以控制

    您还可以使用来处理所有e2扩展和订阅SQS

    使用自动缩放组,很有可能以更低的成本获得“更快”的应用程序。例如,当t3.large的成本是t3.xLarge的一半时,您可能会发现2x t3.large比1x t3.xLarge运行得更快。但这在很大程度上取决于您的代码


    另一个想法是在lambda中完成所有处理。你可以输入你的lambda代码。下面是使用Clarizav的另一种方法。

    您是否考虑过使用Lambda函数处理该文件?@MCI该文件实际上只是一个JSON文件,其中包含ec2上运行的主应用程序的配置选项。上传到S3 bucket的JSON文件需要传递/下拉到EC2实例,以便应用程序知道该做什么。我将编辑我的原始问题以澄清。这对于我试图实现的目标来说已经足够了,谢谢。它将被标记为正确答案,因为它以最简单的方式解决了我想要的问题,尽管@denov提供的答案很好,如果我需要解决方案中内置的弹性。