使用 python 脚本的 ec2instance 自动化

ec2instance automation with python script

我正在尝试 运行 ec2 实例上的 python 脚本。 python 文件驻留在 s3 上。 我可以使用允许访问 s3 文件夹和文件的 iam 角色从 ec2 实例手动 运行。

问题是,我如何在需要时自动启动和停止 ec2 实例,以及如何在启动 ec2 实例和停止实例时调用/传递 python 文件到 运行一旦 python 个文件完成执行。

谢谢, 尼克尔

EC2 实例使用 cloudinit,您可以将其自定义为 运行 每次启动时的给定脚本。您可以使用 python 中的常规 os 工具来关闭您的实例(例如 shutdown -h now)。

您的要求似乎是:

  • 安排 Amazon EC2 实例在每天的特定时间启动
  • 实例启动后应该运行一个Python脚本
  • 当 Python 脚本完成 运行ning 时,停止实例

按计划启动 EC2 实例

您可以使用 Amazon EventBridge 按计划触发 AWS Lambda 函数

您可以对 Lambda 函数进行编码以在 EC2 实例上调用 StartInstances() 以启动它。

运行 启动脚本

将脚本安装到 /var/lib/cloud/scripts/per-boot/ 目录中。此脚本可以从 S3 下载 Python 程序,然后 运行 它。

当 EC2 实例启动时,它会自动 运行 该目录中的任何脚本。

脚本完成后停止实例

在脚本末尾,添加命令:

shutdown -h now

这将关闭实例并将其置于已停止状态。

(这里假设脚本是 运行ning 作为 root。如果是 运行ning 作为另一个用户,则需要使用 sudo shutdown -h now。)

如果脚本的最长执行时间少于 15 分钟,另一种替代方法是使用 lambda 函数而不是 EC2 实例来 运行 python 脚本。使用 AWS lambda 而不是 EC2 实现无服务器。只需在 AWS lambda 中添加您的脚本代码并从 AWS 事件桥安排 lambda 函数来调用它。