我有一个 python 脚本,可以拍摄视频并将其转换为一系列小全景图。现在,有一个用于上传视频 (mp4) 的 S3 存储桶。每次上传时,我都需要将此文件发送到 ec2 实例。 这是流程:
- 上传视频文件到S3。
- 这应该会触发 EC2 实例启动。
- 运行后,我希望将文件复制到实例内的特定目录。
- 在此之后,我希望 py 文件 (panorama.py) 开始运行并从目录中读取视频文件并对其进行处理,然后生成输出图像。
- 这些输出图像需要上传到新的存储桶或最初使用的同一存储桶。
- 实例应在此之后终止。
我到目前为止所做的是,我创建了一个 lambda 函数,只要将对象添加到该存储桶中就会触发该函数。它存储文件的名称和路径。我读过我现在需要使用 SQS 队列并将此名称和路径元数据传递到队列并使用 SQS 来触发实例。然后,我需要在实例中运行一个脚本,该脚本从 SQS 队列中提取元数据,然后使用它来将文件 (mp4) 从存储桶复制到实例。 我该怎么做呢? 我是 AWS 的新手,因此对 SQS 或如何传输元数据和自动触发实例等了解不多。
最佳答案
你的措辞有点困惑。它说你想“启动”一个实例(这表明该实例已经存在),但它又说它想“终止”一个实例(这将永久删除它)。我将假设您实际上打算“停止”该实例,以便可以再次使用它。
您可以将 shell 脚本放在 /var/lib/cloud/scripts/per-boot/
目录中。 此脚本将在每次实例启动时执行。
当实例完成处理后,它可以调用 sudo shutdown now -h
来关闭实例。 (或者,它可以告诉 EC2 停止实例,但使用 shutdown
更容易。)
详情请见:Auto-Stop EC2 instances when they finish a task - DEV Community
关于python-3.x - 如何使用 sqs 启动 ec2 实例并在实例中触发 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66382852/