我可以使用什么Python或CLI调用来终止AWS spot实例并从spot实例本身发出请求?

2024-04-25 07:38:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个长期运行的aws作业,正在使用spot实例(每个作业一个实例)来节省资金。python代码可以处理停止和重新启动,但当我完成分析工作时,我希望终止spot实例,不再启动(对于该批),这样我就不必手动照看东西(我使用的是昂贵的GPU实例,所以我希望尽快停止)。我的代码都是用python编写的-是否存在一个aws python sdk或cli调用,它将终止spot实例并停止启动更多的spot实例,所有这些都是从spot实例本身开始的?结果是,一旦我的工作完成,我不想为GPU时间付费

几年前的一个相关问题是here,但它没有完全回答我的问题

谢谢大家!


Tags: 实例代码awscliheregpu作业时间
2条回答

在最后一个spot实例上执行以下操作:

  1. 检索实例ID:wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
  2. 修改实例的关闭行为: aws ec2 modify-instance-attribute instance-initiated-shutdown-behavior terminate
  3. 然后,当您想要终止它时:sudo shutdown -h now。也可以通过以下方式安排关机:echo "sudo halt" | at now + 5 minutes

如果你正在寻找一种更具Python风格的方法。您可以使用boto3。它是一个SDK,用于管理AWS实例和AWS下的许多服务。您可以使用Udhav的方法从http://169.254.169.254/latest/meta-data/instance-id获取实例id,并将此实例id传递给boto3function以终止它

请确保在使用sdk或cli时,您必须使用secret\u access\u key和secret\u access\u id创建IAM角色以验证此请求。 以下文本来自官方AWS documentation

程序访问

必须提供AWS访问密钥才能对AWS进行编程调用或使用 用于PowerShell的AWS命令行界面或AWS工具

创建访问密钥时,将访问密钥ID(例如,AKIAIOSFODNN7EXAMPLE)和机密访问密钥(例如,wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)作为一个集合创建。只有在创建密钥时,才能下载该密钥。如果您没有下载您的秘密访问密钥,或者您丢失了它,您必须创建一个新的密钥

相关问题 更多 >