如何使用AWS Lambda函数将文件从S3存储桶复制到EC2 Windows实例



我正试图通过AWS Lambda函数将上传到S3的文件复制到EC2 windows实例。我的要求是,当一个文件上传到S3存储桶时,AWS Lambda函数应该触发,并且同一个文件应该复制到EC2实例。

AWS Lambda函数如何连接到EC2 Windows实例?请告诉我如何实现这种情况。

AWS Lambda函数在EC2实例的外部运行。事实上,您可以将其视为一个非常临时的EC2实例。

因此,你的问题的答案是";那么,如何将EC2Linux实例中的内容复制到Windows实例中呢">

最大的问题是,良好的安全性意味着";"推";将事物转换为EC2实例。例如,我无法将东西推入您当前使用的计算机。因此,最好的答案是;推动";文件,最好是";"拉";文件。以下是几种方法:

系统管理员运行命令

AWS Lambda函数可以触发AWS Systems Manager Run命令,该命令可以在EC2实例上执行脚本。此脚本可以将文件从S3"拉"到实例上。

这之所以成为可能,是因为EC2实例安装了Systems Manager Agent,它可以接收请求并触发脚本。

轮询Amazon SQS队列

AWS Lambda函数可以向Amazon SQS队列发送消息。实例上的脚本可以不断轮询SQS队列以查找消息。当它收到一条消息时,它会使用该信息将文件从S3"拉"到实例中。(在SQS队列上使用长轮询以减少请求数量。(

事实上,AmazonS3可以直接将消息发送到AmazonSQS队列,而不需要Lambda函数。

使用Web服务器

AWS Lambda函数可以通过EC2实例上运行的web服务器对文件进行POST,该服务器正在"侦听"此类请求。

共享文件系统

正如@mimitist所建议的,AWS Lambda函数可以连接到Amazon EFS文件系统。因此,它可以将文件存储在文件系统上,如果EC2实例也安装了相同的文件系统,则可以立即访问该文件。

您可以通过两种方式来解决此问题:

  1. 为您的Lambdas和EC2创建共享文件系统。https://aws.amazon.com/blogs/aws/new-a-shared-file-system-for-your-lambda-functions/

  2. 在EC2上创建API服务以接收文件。

第一种方法是最安全的,可能也是更好的方法。第二种方法更有趣。您可以创建一个Node+Express API,它接收文件,然后在POST请求中从Lambda发送文件。

现在通过将AWS Lambda与S3一起使用,系统管理器为我工作,解决了这个问题。我创建了一个node.js脚本来从S3获取自动事件,并将详细信息推送到系统管理器运行的powershell脚本文档中,从而复制到ec2实例,该实例按预期工作。

您需要根据从s3到EC2 的文件传输选择正确的实例类型

最新更新