【Python で AWS を操る】EC2 インスタンス ID の一覧取得

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

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

今回は AWS Lambda で EC2 インスタンス ID の一覧取得を行うプログラムです。

コード

import boto3

ec2 = boto3.resource('ec2')

def lambda_handler(event, context):
    instance_ids = []
    instance_iterator = ec2.instances.all()
    for instance in instance_iterator:
        instance_ids.append(instance.instance_id)
        
    print(instance_ids)

その他設定

AWS Lambda の環境

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

必要なポリシー

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

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

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

参考