EC2インスタンスの停止保護(無効化/有効化)をAWS CLIとプログラム(Python)で実行してみる

EC2インスタンスの停止保護無効化、有効化をAWS CLIとpythonで実行してみる
              図A AWS 構成図
    aws ec2 modify-instance-attribute \
        --instance-id i-xxxxxxxxxxyyyyyyy \
        --no-disable-api-stop
                 図Bインスタンスの停止保護(AWSコンソール)
    aws ec2 modify-instance-attribute \
        --instance-id i-xxxxxxxxxxyyyyyyy \
        --disable-api-stop
                  図C インスタンスの停止保護(AWSコンソール)
    #!/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'])
    boto3を最新にupdateしないと、エラーになることがあります。
    pip3 install -U boto3 
    2023/12/07時点では boto3-1.33.8 のようです
    status= 200
    date Thu, 07 Dec 2023 04:56:22 GMT
    server= AmazonEC2
    response(実行結果)はdictで返却されます。HTTPStatusCode=200が返却されれば
    成功です。HTTPStatusCode,date,serverを出力しています。
    停止保護有効化したインスタンスを停止させようとすると、エラーになります。
    "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