0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Cloud Formationのスタック一覧作成の一部自動化した話

Posted at

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とリソースの対応一覧表を作成する機能を作成できる。
これにより定型作業の大幅なカットになり、そのほかの運用業務に注力できる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?