[アップデート] AWSアカウントのリージョン管理(有効化/オプトイン無効化)が AWS CLI/SDK で出来るようになりました

プログラマブルにオプトインリージョンの確認・変更が可能になったぞ
2023.02.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2023/6追記)本記事ではリリース情報にならい「オプトインリージョン」と表現していますが、一部AWSサービス(例:AWS Control Tower)で指すそれと一致しない可能性があるのでご注意ください。AWS リージョンの管理 - AWS

どうも、ちゃだいん(@chazuke4649)です。

AWSアカウントのリージョン管理(有効化/オプトイン無効化)が AWS CLI/SDK で出来るようになりました

Programmatically manage enabled and disabled opt-in AWS Regions on AWS accounts

何が嬉しい?

aws account コマンドのアップデート第2弾です。第1弾は以下ブログをどうぞ。

AWSアカウントで使用可能なリージョンには、比較的古くからある・デフォルト有効化で・無効化できないリージョン群と、比較的新しい・デフォルト無効化で・無効化できる(オプトイン)リージョン群があります。

以下は執筆時点のリージョンの管理画面の例です。

これらリージョンの管理や有効化・無効化の処理は、マネジメントコンソールでのみ実行可能でしたが、今回のアップデートで AWS CLI/SDK にて実行可能になりました。

さらに、Organizationsを使用している場合、Organization管理者は、管理アカウントを使用して、全てのメンバーアカウントのオプトインリージョンのステータスを一元管理できるようになりました。

やってみた

AWS CLI v1は 1.27.70 から利用可能です。(執筆時点ではv2はまだ追いついてませんが、そのうちv2も使えるようになるかと)

account — AWS CLI v1 Command Reference

account — AWS CLI v2 Command Reference

公式ドキュメントは以下を参考します。

Specifying which AWS Regions your account can use - AWS Account Management

1.自アカウントのリージョンのオプトインステータスの一覧を取得する

まずは account list-regions コマンドで、自分のAWSアカウントのリージョンのオプトインステータスの一覧を取得します。

% aws-v1 account list-regions --output text

REGIONS	af-south-1	DISABLED
REGIONS	ap-east-1	DISABLED
REGIONS	ap-northeast-1	ENABLED_BY_DEFAULT
REGIONS	ap-northeast-2	ENABLED_BY_DEFAULT
REGIONS	ap-northeast-3	ENABLED_BY_DEFAULT
REGIONS	ap-south-1	ENABLED_BY_DEFAULT
REGIONS	ap-south-2	DISABLED
REGIONS	ap-southeast-1	ENABLED_BY_DEFAULT
REGIONS	ap-southeast-2	ENABLED_BY_DEFAULT
REGIONS	ap-southeast-3	DISABLED
REGIONS	ap-southeast-4	DISABLED
REGIONS	ca-central-1	ENABLED_BY_DEFAULT
REGIONS	eu-central-1	ENABLED_BY_DEFAULT
REGIONS	eu-central-2	DISABLED
REGIONS	eu-north-1	ENABLED_BY_DEFAULT
REGIONS	eu-south-1	DISABLED
REGIONS	eu-south-2	DISABLED
REGIONS	eu-west-1	ENABLED_BY_DEFAULT
REGIONS	eu-west-2	ENABLED_BY_DEFAULT
REGIONS	eu-west-3	ENABLED_BY_DEFAULT

--region-opt-status-contains オプションで、指定したオプトステータスのリージョンのみ取得できます。

## ENABLED_BY_DEFAULT のみ
% aws-v1 account list-regions --region-opt-status-contains ENABLED_BY_DEFAULT --output table
--------------------------------------------
|                ListRegions               |
+------------------------------------------+
||                 Regions                ||
|+-----------------+----------------------+|
||   RegionName    |   RegionOptStatus    ||
|+-----------------+----------------------+|
||  ap-northeast-1 |  ENABLED_BY_DEFAULT  ||
||  ap-northeast-2 |  ENABLED_BY_DEFAULT  ||
||  ap-northeast-3 |  ENABLED_BY_DEFAULT  ||
||  ap-south-1     |  ENABLED_BY_DEFAULT  ||
||  ap-southeast-1 |  ENABLED_BY_DEFAULT  ||
||  ap-southeast-2 |  ENABLED_BY_DEFAULT  ||
||  ca-central-1   |  ENABLED_BY_DEFAULT  ||
||  eu-central-1   |  ENABLED_BY_DEFAULT  ||
||  eu-north-1     |  ENABLED_BY_DEFAULT  ||
||  eu-west-1      |  ENABLED_BY_DEFAULT  ||
||  eu-west-2      |  ENABLED_BY_DEFAULT  ||
||  eu-west-3      |  ENABLED_BY_DEFAULT  ||
||  sa-east-1      |  ENABLED_BY_DEFAULT  ||
||  us-east-1      |  ENABLED_BY_DEFAULT  ||
||  us-east-2      |  ENABLED_BY_DEFAULT  ||
||  us-west-1      |  ENABLED_BY_DEFAULT  ||
||  us-west-2      |  ENABLED_BY_DEFAULT  ||
|+-----------------+----------------------+|

## DISABLED のみ
% aws-v1 account list-regions --region-opt-status-contains DISABLED --output table
-----------------------------------------
|              ListRegions              |
+---------------------------------------+
||               Regions               ||
|+-----------------+-------------------+|
||   RegionName    |  RegionOptStatus  ||
|+-----------------+-------------------+|
||  af-south-1     |  DISABLED         ||
||  ap-east-1      |  DISABLED         ||
||  ap-south-2     |  DISABLED         ||
||  ap-southeast-3 |  DISABLED         ||
||  ap-southeast-4 |  DISABLED         ||
||  eu-central-2   |  DISABLED         ||
||  eu-south-1     |  DISABLED         ||
||  eu-south-2     |  DISABLED         ||
||  me-central-1   |  DISABLED         ||
||  me-south-1     |  DISABLED         ||
|+-----------------+-------------------+|

他にも、オプトインリージョンの有効化・無効化も実行可能です。

2.メンバーアカウントのオプトインリージョンのステータスを取得する

こちらのコマンドは、AWS Organizationsの管理アカウントにて、「AWS Account Managementの信頼されたアクセスが有効化になっている」場合のみ利用可能です。

Organizationsコンソールの以下画面にて確認・有効化できます。

メンバーアカウントIDの指定と、リージョンを指定すれば、以下のように取得できました。

% aws-v1 account get-region-opt-status --account-id 111111111111 --region-name af-south-1
{
    "RegionName": "af-south-1",
    "RegionOptStatus": "DISABLED"
}

※アカウントIDはダミー値

以下のようにすれば、1つのリージョンに対して、全メンバーアカウントのオプトインステータスを取得することができました。

% aws organizations list-accounts --query "Accounts[].[Id]" --output text\
| while read account; do
  echo "${account} ..."
  aws-v1 account get-region-opt-status --account-id ${account} --region-name af-south-1 --output text
done
111111111111 ...
af-south-1	DISABLED
222222222222 ...
af-south-1	DISABLED
333333333333 ...
af-south-1	DISABLED
444444444444 ...
af-south-1	DISABLED

※アカウントIDはダミー値

これで、プログラマブルに組織全体のアカウントのオプトインリージョンの確認ができるようになりました。

検証は以上です。