Как изменить защиту от прерывания с помощью boto3 - PullRequest
1 голос
/ 20 сентября 2019

Я хочу проверить многие экземпляры AWS ec2, затем я использую boto3 следующим образом:

#!/usr/bin/env python 
#coding=utf8

import boto3
ec2 = boto3.resource(
    'ec2',
    aws_access_key_id="<AK>",
    aws_secret_access_key="<SK>",
    region_name='eu-central-1'
)

instances = ec2.instances.filter(
    Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}])

ids = ['id1','id2'.....'idn']
status = ec2.instances.filter(InstanceIds=ids).terminate()
print(status)

Но я получил ОШИБКУ:

botocore.exceptions.ClientError: An error occurred (OperationNotPermitted) when calling the TerminateInstances operation: The instance 'i-0f06b49c1f16dcfde' may not be terminated. Modify its 'disableApiTermination' instance attribute and try again.

, пожалуйста, скажите мне, как изменитьdisableApiTermination.

1 Ответ

1 голос
/ 20 сентября 2019

Используйте modify_attribute.См. документацию .

import boto3
ec2 = boto3.resource('ec2')

instances = ec2.instances.filter(
    Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}])

for instance in instances:
    print(instance.id)

# after choosing the instances to terminate:
ids = ['id1', 'id2']
for id in ids:
    ec2.Instance(id).modify_attribute(
        DisableApiTermination={
            'Value': False
        })
    ec2.Instance(id).terminate()
...