EC2インスタンスの停止保護無効化、有効化をAWS CLIとpythonで実行してみる
1.AWS CLIで実行してみる(無効化)
aws ec2 modify-instance-attribute \
--instance-id i-xxxxxxxxxxyyyyyyy \
--no-disable-api-stop
2.AWS CLIで実行してみる(有効化)
aws ec2 modify-instance-attribute \
--instance-id i-xxxxxxxxxxyyyyyyy \
--disable-api-stop
3.Pythonで実行してみる(無効化)
#!/usr/bin/python3.8
import sys
import boto3
import botocore
import os
import traceback
def get_abc():
try:
client = boto3.client('ec2')
response = client.modify_instance_attribute(
InstanceId='i-xxxxxxxxxxxyyyyyy',
DisableApiStop={
'Value': False,
},
)
return(response)
except Exception as ex:
err_message = ex.__class__.__name__
t = traceback.format_exception_only(type(ex), ex)
print(t,err_message)
sys.exit(1)
if __name__ == '__main__':
response = get_abc()
print('status=',response['ResponseMetadata']['HTTPStatusCode'])
print('date',response['ResponseMetadata']['HTTPHeaders']['date'])
print('server=',response['ResponseMetadata']['HTTPHeaders']['server'])
4.注意事項
boto3を最新にupdateしないと、エラーになることがあります。 pip3 install -U boto3 2023/12/07時点では boto3-1.33.8 のようです
5.実行結果
status= 200
date Thu, 07 Dec 2023 04:56:22 GMT
server= AmazonEC2
response(実行結果)はdictで返却されます。HTTPStatusCode=200が返却されれば 成功です。HTTPStatusCode,date,serverを出力しています。
6. おまけ
停止保護有効化したインスタンスを停止させようとすると、エラーになります。
"botocore.exceptions.ClientError: An error occurred (OperationNotPermitted) when calling the StopInstances operation: The instance 'i-xxxxxxxxxyyyyy' may not be stopped. Modify its 'disableApiStop' instance attribute and try again.\n"] ClientError