带有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自动化[重复]的主要内容,如果未能解决你的问题,请参考以下文章