繁体   English   中英

每当我向 s3 添加新文件时,如何将文件从 s3 传输到我的 ec2 实例?

[英]How do I transfer files from s3 to my ec2 instance whenever I add a new file to s3?

我的 ec2 实例中有一个 py 脚本。 这需要一个视频文件作为输入,该文件位于 S3 存储桶中。 每次将新文件添加到该存储桶时,如何自动化 ec2 实例开始运行的过程? 我希望 ec2 实例识别这个新文件,然后将其添加到 py 脚本可以使用它并处理它并创建 output 文件的本地目录。 然后我想将此 output 文件发送回存储桶并将其存储在那里。 我知道 boto3 库用于将 s3 连接到 ec2,但是我不清楚如何自动触发它并查找新文件,而无需手动启动我的实例并复制所有内容

编辑:我有一个 python 程序,它基本上获取一个视频文件(mp4),然后将其分解为帧并将其缝合以创建一堆小的全景图像并将其存储在名为“输出”的文件夹中。 现在,由于程序需要视频作为输入,因此在程序中我引用了一个特定的目录,它应该从中选择 mp4 文件并将其作为输入读取。 所以我现在想要的是,将有一个 s3 存储桶来接收来自其他地方的视频文件。 它将位于特定存储桶内的文件夹中。 我希望将进入该存储桶的任何新 mp4 文件复制或发送到我的实例中的输入目录。 另外,当发生这种情况时,我希望自动执行存储在该实例中的 python 程序,并在输入目录中找到这个新的视频文件来处理它并制作小全景图,然后将其存储在 output 目录中,甚至更好,发送它到同一个 s3 存储桶中的 output 文件夹。

您可以通过多种方式为此设计解决方案。 它们会根据您获取视频的频率、可扩展性、容错性、您想要并行处理的视频数量等等而有所不同。 我将只提供一个,假设偶尔会上传新视频并且不需要自动缩放组来同时处理大量视频。

根据上述假设,一种方法可能如下:

  1. 使用S3 事件通知上传新视频会触发 lambda function 。
  2. Lambda 从 S3 事件中获取视频详细信息(例如 s3 路径),将视频详细信息提交到SQS 队列启动您的实例
  3. 您在实例上的应用程序一旦启动,就会拉取 SQS 队列以获取要处理的视频文件的详细信息。 这将要求您的应用程序以启动实例启动的方式进行设计,这可以使用修改后的用户数据、systemd 单元文件等来完成。

它是一个非常基本的解决方案,正如我提到的,许多其他方法都是可能的,包括自动缩放组、基于 sqs 大小的缩放策略、ssm 运行命令等等。

暂无
暂无

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

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