CloudFormation スタックに与えたパラメータをCLIで出力したい

AWS CLIコマンドとRainコマンドでスタックに与えたパラメータを出力してみました。
2021.05.18

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

CloudFormationのスタックのパラメータをCLIで出力する機会がありました。AWS CLIコマンドとRainコマンドで出力した結果を紹介させていただきます。

管理コンソールからだとここで確認できる値です。これをCLIで出力します。

AWS CLIコマンド

AWS CLIコマンドならなんとなくできそうな気がしますよね?jqでフィルタすれば見やすく出力できます。

スタック名一覧を出力。

aws cloudformation describe-stacks | jq '.Stacks[].StackName'

一覧から確認できたスタック名blog-test-vpc-stackのパラメータを出力してみます。

実行結果

"blog-test-vpc-stack"
"a-stack"
"b-stack"

特定のスタック名からパラメータを出力。

aws cloudformation describe-stacks --stack-name 'blog-test-vpc-stack' | jq '.Stacks[].Parameters'

JSON形式で出力できました。

出力結果

[
  {
    "ParameterKey": "PublicSubnetCidr1",
    "ParameterValue": "10.0.1.0/24"
  },
  {
    "ParameterKey": "ProjectName",
    "ParameterValue": "blog"
  },
  {
    "ParameterKey": "VPCCidr",
    "ParameterValue": "10.0.0.0/16"
  },
  {
    "ParameterKey": "EnableNatGateway",
    "ParameterValue": "false"
  },
  {
    "ParameterKey": "Environment",
    "ParameterValue": "dev"
  },
  {
    "ParameterKey": "PrivateSubnetCidr1",
    "ParameterValue": "10.0.17.0/24"
  },
  {
    "ParameterKey": "PrivateSubnetCidr2",
    "ParameterValue": "10.0.18.0/24"
  },
  {
    "ParameterKey": "PublicSubnetCidr2",
    "ParameterValue": "10.0.2.0/24"
  }
]

Rainコマンド

blog-test-vpc-stackスタックはもともとRainでデプロイしたスタックではありません。それでもRainならいい感じに出力できるのではないかと興味本位で試します。

Version 1.2.0で試します。

$ rain -v
Rain v1.2.0 darwin/amd64

スタック名一覧出力。覚えやすいコマンドでいいですね。

rain ls

スタック名とステータスも確認できます。

出力結果

CloudFormation stacks in ap-northeast-1:
  blog-test-vpc-stack: UPDATE_COMPLETE
  a-stack: CREATE_COMPLETE
  b-stack: CREATE_COMPLETE

rain ls -aにすると全リージョンを対象にスタック名一覧を出力してくれます、便利。

特定のスタック名からパラメータを出力。-aをつけないとOutputsの内容しか出力されませんでした。

rain ls -a  blog-test-vpc-stack

YAML形式で出力できました。Parametes以下の値だけの出力は難しい。

出力結果

Stack blog-test-vpc-stack: UPDATE_COMPLETE
  Parameters:
    PublicSubnetCidr1: 10.0.1.0/24
    ProjectName: blog
    VPCCidr: 10.0.0.0/16
    EnableNatGateway: false
    Environment: dev
    PrivateSubnetCidr1: 10.0.17.0/24
    PrivateSubnetCidr2: 10.0.18.0/24
    PublicSubnetCidr2: 10.0.2.0/24
  Resources:
    AttachGateway: CREATE_COMPLETE
      blog-Attac-10ZSXM0NAA8S7
      --- snip ---
  Outputs:
    ExportPublicSubnet2: subnet-09ee813780b84b083 # exported as blog-test-vpc-stack-PublicSubnet2

おわりに

出力した結果を再利用するのであればJSON形式で出力されるAWS CLIを使ったほうが便利でした。

参考