繁体   English   中英

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

[英]How to copy a file from S3 bucket to an EC2 Windows instance using AWS Lambda function

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

AWS Lambda 函数如何连接到 EC2 Windows 实例? 请让我如何实现这个场景。

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

  1. 为您的 Lambda 和 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 函数EC2 实例之外运行。 实际上,您可以将其视为非常临时的 EC2 实例。

因此,您的问题的答案是“好吧,您如何将某些内容从 EC2 Linux 实例复制到 Windows 实例?”

最大的问题是良好的安全性意味着将东西“推”到 EC2 实例中并不容易。 例如,我无法将东西推送到您当前使用的计算机中。 因此,最好的答案是与其“推”文件,不如“拉”文件。 这里有几个方法:

系统管理器运行命令

AWS Lambda 函数可以触发AWS Systems Manager Run Command ,它可以在 EC2 实例上执行脚本。 此脚本可以将文件从 S3“拉”到实例上。

这是可能的,因为 EC2 实例安装了 Systems Manager 代理,它可以接收请求并触发脚本。

轮询 Amazon SQS 队列

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

事实上,Amazon S3 可以将消息直接发送到 Amazon SQS 队列,而无需 Lambda 函数。

使用网络服务器

AWS Lambda 函数可以通过运行在 EC2 实例上的 Web 服务器发布文件,该服务器正在“侦听”此类请求。

共享文件系统

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM