こんにちは。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の情報を取得するコマンドをご紹介いたしました。
どなかたのお役に立てれば幸いです。