こんにちは。AWS CLIが好きな福島です。
今回は、CloudFormation StackSetsの操作に関するブログとなります。
利用するコマンド,サブコマンド
まず、AWS CLIの構造は以下の通りです。
aws <command> <subcommand> [options and parameters]
上記を前提に今回使う <command>,<subcommand>
は、以下の通りです。
<command>
- cloudformation
<subcommand>
- ①list-stack-sets
→スタックセット一覧の確認 - ②list-stack-instances
→スタックセット内のインスタンス情報の確認 - ③list-stack-set-operations
→スタックセットのオペレーション一覧の確認 - ④list-stack-set-operation-results
→スタックセットのオペレーション結果の確認
StackSetsの一覧
実行コマンド
aws cloudformation list-stack-sets \ --query "Summaries[].[\ StackSetName,\ StackSetId,\ AutoDeployment.Enabled,\ AutoDeployment.RetainStacksOnAccountRemoval,\ PermissionModel,\ DriftStatus]" \ --output text | column -t
実行例
# aws cloudformation list-stack-sets \ > --query "Summaries[].[\ > StackSetName,\ > StackSetId,\ > AutoDeployment.Enabled,\ > AutoDeployment.RetainStacksOnAccountRemoval,\ > PermissionModel,\ > DriftStatus]" \ > --output text | column -t cfn-fk-iam cfn-fk-iam:438d2659-231c-47e0-9d67-f2a51ce19dbc True False SERVICE_MANAGED NOT_CHECKED config-tokyo config-tokyo:6c21e459-b331-4c0b-9329-1a766e422d6f True False SERVICE_MANAGED NOT_CHECKED fk-switch-role2 fk-switch-role2:daf4eb7f-eece-4a84-b09e-d1d9da664e07 True False SERVICE_MANAGED NOT_CHECKED root-deploy root-deploy:2a8c6552-f38f-48cf-9bea-0e8df602ca00 True False SERVICE_MANAGED NOT_CHECKED sss sss:c5270c11-0bc9-4ede-836c-16850143ae79 True False SERVICE_MANAGED NOT_CHECKED test test:509c901e-da63-4e3b-bea0-d68f846370ca True False SERVICE_MANAGED NOT_CHECKED test-stack test-stack:9dfefdc7-c064-45e9-9d59-f4be386ee594 True False SERVICE_MANAGED NOT_CHECKED testerou-deploy testerou-deploy:05580f74-e88e-40f6-8a31-8439e1a6cdd0 True True SERVICE_MANAGED NOT_CHECKED #
各列の説明
- 1列目
スタックセット名 - 2列目
スタックセットID - 3列目
自動デプロイオプション設定(Trueが有効/Falseが無効) - 4列目
スタックの保持設定(Trueが有効/Falseが無効) - 5列目
デプロイオプション(セルフマネージド型 or サービスマネージド型) - 6列目
ドリフトのステータス
StackSetsのインスタンス一覧
変数の設定
STACK_SETS_NAME="" # 例: STACK_SETS_NAME="cfn-fk-iam"
以下のコマンドでスタック名を確認することができます。
aws cloudformation list-stack-sets \ --query "Summaries[].[StackSetName]" \ --output text
実行コマンド
aws cloudformation list-stack-instances \ --stack-set-name ${STACK_SETS_NAME} \ --query "Summaries[].[\ Account,\ Region,\ StackSetId,\ Status,\ StackInstanceStatus.DetailedStatus,\ OrganizationalUnitId,\ DriftStatus,\ LastOperationId]" \ --output text | column -t
実行例
# aws cloudformation list-stack-instances \ > --stack-set-name ${STACK_SETS_NAME} \ > --query "Summaries[].[\ > Account,\ > Region,\ > StackSetId,\ > Status,\ > StackInstanceStatus.DetailedStatus,\ > OrganizationalUnitId,\ > DriftStatus,\ > LastOperationId]" \ > --output text | column -t 111111111111 ap-northeast-1 cfn-fk-iam:438d2659-231c-47e0-9d67-f2a51ce19dbc CURRENT SUCCEEDED r-xxxx NOT_CHECKED 1f1ac7ce-7d8c-4af6-987a-ff4858941947 111111111111 ap-northeast-3 cfn-fk-iam:438d2659-231c-47e0-9d67-f2a51ce19dbc CURRENT SUCCEEDED r-xxxx NOT_CHECKED 1f1ac7ce-7d8c-4af6-987a-ff4858941947 111111111111 us-east-1 cfn-fk-iam:438d2659-231c-47e0-9d67-f2a51ce19dbc CURRENT SUCCEEDED r-xxxx NOT_CHECKED 1f1ac7ce-7d8c-4af6-987a-ff4858941947 222222222222 ap-northeast-1 cfn-fk-iam:438d2659-231c-47e0-9d67-f2a51ce19dbc CURRENT SUCCEEDED r-xxxx NOT_CHECKED 1f1ac7ce-7d8c-4af6-987a-ff4858941947 222222222222 ap-northeast-3 cfn-fk-iam:438d2659-231c-47e0-9d67-f2a51ce19dbc CURRENT SUCCEEDED r-xxxx NOT_CHECKED 1f1ac7ce-7d8c-4af6-987a-ff4858941947 #
各列の説明
- 1列目
アカウントID - 2列目
リージョン - 3列目
スタックセットのID - 4列目
ステータス - 5列目
詳細なステータス - 6列目
デプロイターゲットとなるOU - 7列目
ドリフトステータス - 8列目
最後のオペレーションID
StackSetsのオペレーション一覧
変数の設定
STACK_SETS_NAME="" # 例: STACK_SETS_NAME="cfn-fk-iam"
以下のコマンドでスタック名を確認できます。
aws cloudformation list-stack-sets \ --query "Summaries[].[StackSetName]" \ --output text
実行コマンド
aws cloudformation list-stack-set-operations \ --stack-set-name $STACK_SETS_NAME \ --query "Summaries[].[\ '${STACK_SETS_NAME}',\ OperationId,\ ActionmStatus,\ CreationTimestamp,\ EndTimestamp,\ StatusDetails.FailedStackInstancesCount,\ OperationPreferences.RegionConcurrencyType,\ OperationPreferences.RegionOrder[0],\ OperationPreferences.RegionOrder[1],\ OperationPreferences.RegionOrder[2],\ OperationPreferences.FailureToleranceCount,\ OperationPreferences.FailureTolerancePercentage,\ OperationPreferences.MaxConcurrentCount,\ OperationPreferences.MaxConcurrentPercentage\ ]" --output text | column -t
実行例
# aws cloudformation list-stack-set-operations \ > --stack-set-name $STACK_SETS_NAME \ > --query "Summaries[].[\ > '${STACK_SETS_NAME}',\ > OperationId,\ > ActionmStatus,\ > CreationTimestamp,\ > EndTimestamp,\ > StatusDetails.FailedStackInstancesCount,\ > OperationPreferences.RegionConcurrencyType,\ > OperationPreferences.RegionOrder[0],\ > OperationPreferences.RegionOrder[1],\ > OperationPreferences.RegionOrder[2],\ > OperationPreferences.FailureToleranceCount,\ > OperationPreferences.FailureTolerancePercentage,\ > OperationPreferences.MaxConcurrentCount,\ > OperationPreferences.MaxConcurrentPercentage\ > ]" --output text | column -t cfn-fk-iam 1f1ac7ce-7d8c-4af6-987a-ff4858941947 None 2023-05-19T04:08:03.470000+00:00 2023-05-19T04:08:24.853000+00:00 0 PARALLEL None None None None None 10 None cfn-fk-iam 9ad52a4c-2bc0-4fb6-8967-c30d12d51dff None 2023-05-19T04:07:03.162000+00:00 2023-05-19T04:07:39.901000+00:00 0 PARALLEL None None None None None 10 None cfn-fk-iam 1c98b3e5-84b2-4ddc-a575-f989ca61a508 None 2023-05-19T04:04:21.051000+00:00 2023-05-19T04:05:53.052000+00:00 0 None None None None None None 10 None cfn-fk-iam 11197b97-ef0a-4319-bf9f-2cc455f93816 None 2023-05-19T01:56:47.140000+00:00 2023-05-19T01:57:16.745000+00:00 0 None None None None None None None None cfn-fk-iam 1831f294-96e9-45d5-b4f1-b61d098f973c None 2023-05-19T01:52:28.940000+00:00 2023-05-19T01:55:30.866000+00:00 0 None None None None None None None None cfn-fk-iam fb2f28b0-db14-2ce5-4410-650e59551e22 None 2023-05-19T01:40:17.395000+00:00 2023-05-19T01:48:02.378000+00:00 0 SEQUENTIAL ap-northeast-1 ap-northeast-3 us-east-1 0 None 1 None #
各列の説明
- 1列目
スタック名 - 2列目
オペレーションID - 3列目
アクションステータス - 4列目
作成開始時刻 - 5列目
耐障害性の設定 - 6列目
リージョンの同時実行設定 - 7列目 - 9列目
リージョンの実行順序(3番目まで表示) - 10列目
オペレーションが失敗する可能性があるリージョンごとのアカウントの数。(ロールバックの基準) - 11列目
オペレーションが失敗する可能性があるリージョンごとのアカウントの割合。(ロールバックの基準) - 12列目
オペレーションの同時実行数 - 13列目
オペレーションの同時実行割合
StackSetsのオペレーション結果一覧
変数の設定
STACK_SETS_NAME="" OPERATION_ID="" # 例: STACK_SETS_NAME="cfn-fk-iam" OPERATION_ID="1f1ac7ce-7d8c-4af6-987a-ff4858941947"
以下のコマンドでスタックインスタンスごとの最後のオペレーションIDを確認できます。 (1列目がスタック名、最終列がオペレーションIDになります。)
aws cloudformation list-stack-sets \ --query "Summaries[].[StackSetName]" \ --output text | while read line do aws cloudformation list-stack-instances \ --stack-set-name ${line} \ --query "Summaries[].[\ '${line}', Account,\ Region,\ StackSetId,\ Status,\ StackInstanceStatus.DetailedStatus,\ OrganizationalUnitId,\ DriftStatus,\ LastOperationId]" \ --output text done
実行コマンド
aws cloudformation list-stack-set-operation-results \ --stack-set-name ${STACK_SETS_NAME} \ --operation-id ${OPERATION_ID} \ --query "Summaries[].[\ Account,\ Region,\ Status,\ AccountGateResult.Status,\ AccountGateResult.StatusReason,\ OrganizationalUnitId\ ]" --output text | column -t
実行例
# aws cloudformation list-stack-set-operation-results \ > --stack-set-name ${STACK_SETS_NAME} \ > --operation-id ${OPERATION_ID} \ > --query "Summaries[].[\ > Account,\ > Region,\ > Status,\ > AccountGateResult.Status,\ > AccountGateResult.StatusReason,\ > OrganizationalUnitId\ > ]" --output text | column -t 222222222222 ap-northeast-1 SUCCEEDED SKIPPED Function not found: arn:aws:lambda:ap-northeast-1:222222222222:function:AWSCloudFormationStackSetAccountGate r-xxxx 111111111111 ap-northeast-1 SUCCEEDED SKIPPED Function not found: arn:aws:lambda:ap-northeast-1:111111111111:function:AWSCloudFormationStackSetAccountGate r-xxxx 111111111111 ap-northeast-3 SUCCEEDED SKIPPED Function not found: arn:aws:lambda:ap-northeast-3:111111111111:function:AWSCloudFormationStackSetAccountGate r-xxxx 222222222222 ap-northeast-3 SUCCEEDED SKIPPED Function not found: arn:aws:lambda:ap-northeast-3:222222222222:function:AWSCloudFormationStackSetAccountGate r-xxxx 111111111111 us-east-1 SUCCEEDED SKIPPED Function not found: arn:aws:lambda:us-east-1:111111111111:function:AWSCloudFormationStackSetAccountGate r-xxxx 222222222222 us-east-1 SUCCEEDED SKIPPED Function not found: arn:aws:lambda:us-east-1:222222222222:function:AWSCloudFormationStackSetAccountGate r-xxxx #
各列の説明
- 1列目
アカウントID - 2列目
リージョン - 3列目
ステータス - 4列目
AccountGateResultのステータス - 5列目
AccountGateResultのステータスの詳細 - 6列目
デプロイターゲットとなるOU
終わりに
今回は、AWS CLIによるCloudFormation StackSetsの情報を取得するコマンドをご紹介いたしました。
どなかたのお役に立てれば幸いです。