[アップデート] EC2のDescribeRegionsで無効化リージョンも含めた一覧が取得できるようになりました

こんにちは。サービスグループの武田です。

今年の4月に香港リージョンが追加されました。そして、この香港リージョンからは有効化がオプトインになりました。

[新リージョン] アジアで8番目となる香港リージョンが追加されました。使用するには有効化が必要です

これまでリージョンの有効/無効といったステータスは、マネジメントコンソール上からは確認できたのですが、AWS CLIなどでは確認できませんでした。今回EC2のAPIに、これらのステータスを確認できるアップデートがありましたのでさっそく試してみました。

環境

AWS CLIを利用します。アップデートが必要なため、古いバージョンの場合は必ずアップデートを行ってください。

$ aws --version
aws-cli/1.16.205 Python/3.7.0 Darwin/18.6.0 botocore/1.12.195

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.5
BuildVersion:	18F132

有効リージョンの一覧取得

これまでどおりec2 describe-regionsを実行すればOKです。OptInStatusがリージョンの状態ですね。OptInStatusは次の3つのステータスが定義されています。

  • opt-in-not-required
    • オプトイン不要(有効)
  • opted-in
    • オプトインしている(有効)
  • not-opted-in
    • オプトインしていない(無効)
$ aws ec2 describe-regions
{
    "Regions": [
        {
            "Endpoint": "ec2.eu-north-1.amazonaws.com",
            "RegionName": "eu-north-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.ap-south-1.amazonaws.com",
            "RegionName": "ap-south-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.eu-west-3.amazonaws.com",
            "RegionName": "eu-west-3",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.eu-west-2.amazonaws.com",
            "RegionName": "eu-west-2",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.eu-west-1.amazonaws.com",
            "RegionName": "eu-west-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.ap-northeast-2.amazonaws.com",
            "RegionName": "ap-northeast-2",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.ap-northeast-1.amazonaws.com",
            "RegionName": "ap-northeast-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.sa-east-1.amazonaws.com",
            "RegionName": "sa-east-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.ca-central-1.amazonaws.com",
            "RegionName": "ca-central-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.ap-southeast-1.amazonaws.com",
            "RegionName": "ap-southeast-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.ap-southeast-2.amazonaws.com",
            "RegionName": "ap-southeast-2",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.eu-central-1.amazonaws.com",
            "RegionName": "eu-central-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.us-east-1.amazonaws.com",
            "RegionName": "us-east-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.us-east-2.amazonaws.com",
            "RegionName": "us-east-2",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.us-west-1.amazonaws.com",
            "RegionName": "us-west-1",
            "OptInStatus": "opt-in-not-required"
        },
        {
            "Endpoint": "ec2.us-west-2.amazonaws.com",
            "RegionName": "us-west-2",
            "OptInStatus": "opt-in-not-required"
        }
    ]
}

なお、単純にリージョン名の一覧のみが欲しいのであれば次のようにqueryを書けばOKです。リストが長くなってしまうので、以降はこのクエリを付けておきます。

$ aws ec2 describe-regions --query 'Regions[].RegionName'

無効リージョンも含めた一覧取得

無効リージョンを取得したい場合は--all-regionsオプションを付与します。例として次のようにコマンドを実行します。ap-east-1が含まれていることが確認できます。なお、大阪ローカルリージョンは含まれていませんね。

$ aws ec2 describe-regions --all-regions --query 'Regions[].RegionName'
[
    "eu-north-1",
    "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-east-1",
    "ap-southeast-1",
    "ap-southeast-2",
    "eu-central-1",
    "us-east-1",
    "us-east-2",
    "us-west-1",
    "us-west-2"
]

無効リージョンのみ一覧取得

全リージョンから無効リージョンのみに絞ります。絞り込みは--filtersオプションを使用します。

$ aws ec2 describe-regions --all-regions --filters 'Name=opt-in-status,Values=not-opted-in' --query 'Regions[].RegionName'
[
    "ap-east-1"
]

対象リージョンが有効か無効かを調べる

次のように--region-nameオプションを使用することで指定したリージョン情報のみ取得できます。OptInStatusがopt-in-not-requiredかopted-inなら有効、not-opted-inなら無効という判定ができます。

$ aws ec2 describe-regions --all-regions --region-name ap-east-1 --query 'Regions[].OptInStatus'
[
    "not-opted-in"
]

まとめ

社内では待ち望んでいた声も多く、待望のアップデートがついに来ました!ぜひ便利に使っていきましょう。

参考リンク