1. はじめに
PJにてS-in後の運用移管を行うにあたり、Git Hubで管理しているYAML(AWS Cloud Formationのスタック作成用ファイル)とそのYAMLで作成するスタック名、そのスタックによって作成されるAWSのリソースの一覧表を作成する必要があった。
全部で4基盤あり、スタック数は200近く、とても手作業で1つずつ確認して記載していては終わらない。
そこである程度のひな型はExcelで一覧表を作成したうえで、スタックが作成するリソースのResource TypeとResource IDの情報を一括で取得し、そのままExcelに添付できるように試みた。
本記事はこの時使用したスクリプトを紹介する。
2. スクリプト本文
#!/bin/bash
# スタック名のリスト
STACK_NAMES=(
"XXXXXX"
"YYYYYY"
"ZZZZZZ"
)
# 各スタックのリソースを取得
for STACK in "${STACK_NAMES[@]}"; do
echo "===== Stack: $STACK ====="
aws cloudformation list-stack-resources \
--stack-name "$STACK" \
--query "StackResourceSummaries[*].[ResourceType,PhysicalResourceId]" \
--output text | awk '{print $1 " " $2}'
echo
done
解説
まずスタックのリストを作成する。
(AWSアカウント内のスタック名をXXXXXに置き換える。)
STACK_NAMES=( "XXXXXX" "YYYYYY" "ZZZZZZ" )
スタックリストから1つずつスタックを取り出し、echo以下の処理を行う。
echo "===== Stack: $STACK ====="
は表示を分かりやすくする工夫である。
AWS CLIでスタックの情報を取得している。query以下を修正すれば、今回以外の値を取得することも可能。
今回は、Resourece TypeとResourece IDを取得。
aws cloudformation list-stack-resources \ --stack-name "$STACK" \ --query "StackResourceSummaries[*].[ResourceType,PhysicalResourceId]" \
Excelに転記する際に、スペース(半角1文字)で列に分割する機能を使用して、転記しやすいように、以下で出力を整える。
awk '{print $1 " " $2}'
3. 今後
今回は一部の自動化にとどまったが、今後はスタック名をまずAWS CLIで自動で取得し、そのリストに対して、上記の処理を行いたい。(今回手動で実施した部分の自動化)
ExcelにはGit HubのYAMLファイルの一覧とスタックの一覧を対応させているため、Git HubからYAMLの一覧を対象リポジトリ、ブランチから取得し、Excelに転記するプログラムも組みたい。
これらを組み合わせることで、実行すれば自動でYAMLとリソースの対応一覧表を作成する機能を作成できる。
これにより定型作業の大幅なカットになり、そのほかの運用業務に注力できる。