python-3.x - 如何使用 sqs 启动 ec2 实例并在实例中触发 python 脚本

标签 python-3.x amazon-web-services amazon-ec2 aws-lambda amazon-sqs

我有一个 python 脚本,可以拍摄视频并将其转换为一系列小全景图。现在,有一个用于上传视频 (mp4) 的 S3 存储桶。每次上传时,我都需要将此文件发送到 ec2 实例。 这是流程:

  1. 上传视频文件到S3。
  2. 这应该会触发 EC2 实例启动。
  3. 运行后,我希望将文件复制到实例内的特定目录。
  4. 在此之后,我希望 py 文件 (panorama.py) 开始运行并从目录中读取视频文件并对其进行处理,然后生成输出图像。
  5. 这些输出图像需要上传到新的存储桶或最初使用的同一存储桶。
  6. 实例应在此之后终止。

我到目前为止所做的是,我创建了一个 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/

相关文章:

C# MailMessage to stream - 编码问题

python - 如何在 Python3 中使用 pylab 去除 x 轴标签中的困惑/重叠?

python - 使用 pandas 将 Unix 13 位数字转换为日期时间/时间戳格式

python-3.x - 指定数据框的属性定义(例如列)位于哪个文件中?

amazon-web-services - 基础设施代码是否应该与应用程序代码存储在同一存储库中?

python-3.x - AWS Python SDK Boto3 EMR client.get_waiter ("step_complete") 失败

amazon-web-services - 安全组 sg-0da667222da8a6eb2 似乎不属于与输入子网相同的 VPC

linux - 通过 ssh 编写 sudo 脚本

amazon-web-services - 尽管没有可用的现货实例,AWS ECS 任务仍在运行

python-3.x - 像带有 Selenium python 的 Instagram 照片