【Python で AWS を操る】EC2 インスタンスの停止

記事タイトルとURLをコピーする

こんにちは、山中です。 AWS Lambda でとりあえずサクッと AWS の各種サービスを動かすプログラムを載せています。
※ 正常系のみ (エラー処理などは書いていない) なので、あくまで検証環境で試すことを想定しています。

今回は AWS Lambda で EC2 の停止を行うプログラムです。

コード

import boto3

client = boto3.client('ec2')

def lambda_handler(event, context):
    client.stop_instances(
        InstanceIds=[
            'i-xxxxxxxxxxxxxxxxx',
        ],
    )

i-xxxxxxxxxxxxxxxxx 部分を起動したいインスタンスのインスタンス ID に置き換える

その他設定

AWS Lambda の環境

項目 設定値
ランタイム Python 3.9
アーキテクチャ x86_64

必要なポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "action",
            "Effect": "Allow",
            "Action": "ec2:StopInstances",
            "Resource": "*"
        }
    ]
}

CloudWatch Logs にログを出力する場合は、以下

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "action",
            "Effect": "Allow",
            "Action": "ec2:StopInstances",
            "Resource": "*"
        },
        {
            "Sid": "log",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*"
            ]
        }
    ]
}

参考