Pythonでboto3を使って全リージョンで処理を回すコード書いてみた

スタートプラン

こんにちは、臼田です。

皆さん、Pythonしてますか?

今回は全リージョンに対して処理を回す機会があったので、作成したPythonのコードを共有します。

コード

コードは下記のとおりです。2.7.10と3.6.1で動くことは確認しています。

1
2
3
4
5
6
7
8
import boto3
 
ec2 = boto3.client('ec2')
regions = map(lambda x: x['RegionName'], ec2.describe_regions()['Regions'])
 
for region in regions:
  print(region)
  ec2 = boto3.client('ec2', region_name=region)

出力結果はこんな感じです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ 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を指定することにより各リージョンで処理が可能です。

まとめ

書いてみて、割と使う機会がありそうだなーと思ったのでブログにしてみました。

ぜひご活用下さい。

スタートプラン