Pythonでboto3を使って全リージョンで処理を回すコード書いてみた
AWS上で全リージョンに対して同じ処理を実行したい場合に利用できるPythonのスクリプトを書いてみたので共有します。常に最新のリージョンリストを取得するため、リージョンの拡張にも柔軟に対応できます。是非ご利用下さい。
こんにちは、臼田です。
皆さん、Pythonしてますか?
今回は全リージョンに対して処理を回す機会があったので、作成したPythonのコードを共有します。
コード
2021/12/20追記 regions取得時にmap型からlist型に変換する処理を追加しました。複数回forを回す場合などに取り回ししやすくなります。
コードは下記のとおりです。2.7.10と3.6.1で動くことは確認しています。
import boto3 ec2 = boto3.client('ec2') regions = list(map(lambda x: x['RegionName'], ec2.describe_regions()['Regions'])) for region in regions: print(region) ec2 = boto3.client('ec2', region_name=region)
出力結果はこんな感じです。
$ python iterate_all_regions.py ap-south-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-2 ap-northeast-1 sa-east-1 ca-central-1 ap-southeast-1 ap-southeast-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2
現状では15リージョンあるのできちんと全てのリージョンが取得できていることが確認できると思います。
あんまり解説する必要もないかもしれませんが少し説明します。
ec2.describe_regions()
では利用可能なリージョン名と各リージョンのエンドポイントが返ってきます。
その中からリージョン名を抜き出して、mapでリストにしています。
実際の処理は書いてある通り、clientの宣言時にregion_name
を指定することにより各リージョンで処理が可能です。
まとめ
書いてみて、割と使う機会がありそうだなーと思ったのでブログにしてみました。
ぜひご活用下さい。