LambdaでEC2インスタンスを起動しコマンド実行後にインスタンス停止する方法


停止しているUbuntuのEC2インスタンスを起動してから、スクリプトを実行し、その結果をメールで送信してから、また停止するということをやりたいです。  
次のようなLambda関数を書いて実行しました。

[code]

    import boto3
    
    instanceId = 'i-xxxxxxxx'
    instance = boto3.resource('ec2').Instance(instanceId)
    statusDict = {'pending'      : 0,
                  'running'      :16,
                  'shutting-down':32,
                  'terminated'   :48,
                  'stopping'     :64,
                  'stopped'      :80 
                 }
    
    ec2 = boto3.client('ec2')
    ssm = boto3.client('ssm')
    
    def lambda_handler(event, context):
        try:
            state = instance.state
            stateCode = state['Code']
            if stateCode == statusDict['running']:
                print('Instance is already running.')
            else:
                response = instance.start()
                print(response)
                instance.wait_until_running()
                print('Succeed to start instance')
    
            print(ssm.describe_instance_information())
            waiter = ec2.get_waiter('instance_status_ok')
            waiter.wait(InstanceIds=[instanceId])
            print(ssm.describe_instance_information())
    
            ssm.send_command(
                InstanceIds = [instanceId],
                DocumentName = "AWS-RunShellScript",
                Parameters = {
                    "commands": [
                        "python3 ./example.py",
                        "cat log.txt | sendmail example@gmail.com", 
                        "aws ec2 stop-instances --instance-ids i-xxxxxxxxx",
                    ],
                    "executionTimeout": ["3600"],
                    "workingDirectory":["/home/ubuntu/example/"]
                },
            )
        except Exception as e:
            print(e)
            raise e
    
[/code]

これを実行すると、メールの送信までは実行されるのですが、インスタンスの停止が行われません。  
サーバーにはawsがインストールされていて、サーバーにsshでログインして同じコマンドを入力するとちゃんと停止されることは確認しています。

スクリプト実行後にインスタンスを停止するためにはどうすればいいでしょうか。




原因はわかりませんが・・・

実行するコマンドをshutdownにしてみてはどうでしょうか？  
もしくはssmでコマンド実行を行なった後に別途ssmからterminateしてみるとか。

