【アップデート】CloudFormationのDescribeStackSetで「展開リージョン」を取得できるようになりました

「このスタックセット、どのリージョンへ展開されてたっけ?」調査がチョット楽になります
2023.02.03

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

以下アップデートの紹介です。

AWS CloudFormationのスタックセットの情報を確認する時に、 「展開されているリージョン」を "より簡単に" 取得できるようになりました。

背景(今まで)

CloudFormation(CFn)のスタックセットは複数アカウント・複数リージョンへ共通のCFnテンプレートを展開するための機能です。

今までは「スタックセットがどのリージョンへ展開されているか」の棚卸しには少し手間が要りました。 展開されているスタックインスタンスの一覧をマネジメントコンソールから確認して集計、もしくはCLI(SDK)で作り込む必要がありました。

例えば以下のようなスクリプトで展開されているリージョン一覧を取得できます。

stack_set_name="EXAMPLE"

aws cloudformation list-stack-instances \
  --stack-set-name "${stack_set_name}" \
  --query "Summaries[].Region" \
  --output yaml \
| sort --unique

# - ap-northeast-1
# - us-east-1

これから

今回のアップデートで DescribeStackSet APIのアウトプットに Regions パラメータが付与されました。

先程のスクリプトとの before/after を見てもらったほうが分かりやすいと思います。 以下アップデート後のスクリプトです。

stack_set_name="EXAMPLE"

aws cloudformation describe-stack-set \
  --stack-set-name "${stack_set_name}" \
  --query "StackSet.Regions" \
  --output yaml

# - ap-northeast-1
# - us-east-1

AWS CLIのコマンドで完結していることが分かります。

このとおり、「展開されているリージョン」を "より簡単に" 取得できるようになりました。やったね。

棚卸しスクリプト作ってみた

早速このアップデートを活用して「各スタックセットで展開されているリージョン」一覧を取得するスクリプトを作ってみます。

list_stack_set_names () {
  stack_set_names=$(aws cloudformation list-stack-sets \
    --status "ACTIVE" \
    --query "Summaries[].[StackSetName]" \
    --output text)
  echo "${stack_set_names}"
}

get_stack_set_regions () {
  stack_set_regions=$(aws cloudformation describe-stack-set \
    --stack-set-name "$1" \
    --query "StackSet.Regions" \
    --output text \
    | tr "\t" ",")
  echo "${stack_set_regions}"
}

inventory_stack_sets_regions () {
  echo "| StackSetName | Regions |"
  echo "| -- | -- |"
  list_stack_set_names \
  | while read stack_set_name; do
    regions=$(get_stack_set_regions "${stack_set_name}")
    echo "| ${stack_set_name} | ${regions} |"
  done
}

inventory_stack_sets_regions
# | StackSetName | Regions |
# | -- | -- |
# | AAA-STACKSET | ap-northeast-1 |
# | BBB-STACKSET | ap-northeast-1,us-east-1 |
# | CCC-STACKSET | eu-north-1,ap-south-1,eu-west-3,eu-west-2,eu-west-1,ap-northeast-3,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 |

おわりに

地味に嬉しい系のアップデートでした。スタックセットの展開状況を棚卸しする際にはぜひ活用しましょう。

参考