AWS CloudFormationのデプロイ済みスタックのテンプレートをYAMLで取得
デプロイ済みのスタックのテンプレートファイルがどうだったかを見たいときに、awscliのaws cloudformation get-template
コマンドで見ることができます。
$ aws cloudformation get-template --stack-name STACK_NAME
しかし、フォーマットはJSONで固定のようです。たとえデプロイ時はYAMLだったとしてもです。YAMLで見たい場合は、JSONからYAMLに変換する必要があります。
2021/03/08 追記
この記事を書いた当時なにを勘違いしていたのか不明ですが、YAMLでデプロイしたらYAMLで取得できます。↓もう一度記事にして整理しました。
AWS CloudFormationのデプロイ済みスタックのテンプレートを取得 - Qiita
yqコマンドでYAMLに変換
yq
というコマンドがあります。JSONを扱うjq
コマンドのYAML版です。
yq: Command-line YAML/XML processor - jq wrapper for YAML and XML documents — yq documentation
実行例
$ aws cloudformation get-template --stack-name STACK_NAME | yq . -y
YAMLはJSONの上位互換なので、yq
コマンドはYAML、JSONどちらも入力に受け付けます。出力はデフォルトではJSONで、 -y
を付けることでYAML出力になります。
yqコマンドのインストール
yq
はPythonで書かれており、pipでインストールできます。
$ pip install yq
内部でjq
を呼び出しているようで、jq
がないと次のようなエラーになります。
yq: Error starting jq: FileNotFoundError: [Errno 2] No such file or directory: 'jq'. Is jq installed and available on PATH?
jq
のインストールはUbuntuならば
$ sudo apt install -y jq
CentOS 8ならば
$ sudo yum install -y jq
RubyのワンライナーでYAMLに変換
JSONからYAMLへの変換はRubyのワンライナーでもできます。
$ aws cloudformation get-template --stack-name STACK_NAME | ruby -rjson -ryaml -e 'puts YAML.dump(JSON.load(ARGF))'
と書いてから、ついさっきYAMLはJSONの上位互換と書いたばかりなのを思い出しました。次のほうが短くて済みます。
$ aws cloudformation get-template --stack-name STACK_NAME | ruby -ryaml -e 'puts YAML.dump(YAML.load(ARGF))'
Author And Source
この問題について(AWS CloudFormationのデプロイ済みスタックのテンプレートをYAMLで取得), 我々は、より多くの情報をここで見つけました https://qiita.com/suzuki-navi/items/a16eca5b450c28e25671著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .