【AWS CLI】CloudFormation StackSetsの情報取得編

記事タイトルとURLをコピーする

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

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。

AWS資格12冠。2023 Japan AWS Partner Ambassador/APN ALL AWS Certifications Engineer。