带有python脚本的ec2instance自动化[重复]

Posted

技术标签:

【中文标题】带有python脚本的ec2instance自动化[重复]【英文标题】:ec2instance automation with python script [duplicate] 【发布时间】:2022-01-01 14:04:27 【问题描述】:

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

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

谢谢, 尼基尔

【问题讨论】:

可能有帮助:Auto-Stop EC2 instances when they finish a task - DEV Community ????‍????????‍???? @Sidh “启动”实例的触发器是什么?它会始终运行相同的 Python 脚本,还是每次实例启动时都需要从 S3 复制它? 这将是相同的 python 脚本。要求是在 aws 上托管一个 python 文件,并在每天的特定时间将其作为计划作业运行。到目前为止,我能够获取驻留在 s3 上的 python 文件,并且能够在 ec2 之上手动执行它。 脚本运行需要多长时间?您是否考虑过使用 AWS Lamba 来运行脚本? (注意:它的 Lambda 函数最多只能运行 15 分钟)。 【参考方案1】:

您的要求似乎是:

安排 Amazon EC2 实例在每天的特定时间启动 实例启动后应运行 Python 脚本 Python 脚本运行完毕后,停止实例

按计划启动 EC2 实例

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

您可以编写 Lambda 函数以在 EC2 实例上调用 StartInstances() 来启动它。

启动时运行脚本

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

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

脚本完成后停止实例

在脚本的最后,添加命令:

shutdown -h now

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

(这里假设脚本以root身份运行。如果它以其他用户身份运行,则需要使用sudo shutdown -h now。)

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于带有python脚本的ec2instance自动化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在控制台中执行 python 脚本的选项卡自动完成

iOS - 带有重置应用程序的 UI 自动化多个脚本

从带有参数的python脚本执行python文件jenkins]

通过Ansible运行带有模块的python脚本

如何运行带有参数的python脚本?

如何运行带有blender参数的python脚本?