CloudFormationの実行を少し楽にするスクリプトを書いた

2021年5月19日

AWS CloudFormation

AWS CloudFormation は AWS CLI から CloudFormation のスタック作成などができますが、ターミナルでコマンドを実行した後にブラウザで進捗や結果を確認するのが辛かったので、ターミナルで実行と進捗確認ができるスクリプトを書いてみました。

コードは GitHub に置いておきます。
https://github.com/karakaram/aws-cloudformation-helper

ターミナルで実行すると、こんな感じでイベントの出力を眺めながら終了を待つことができるようになります。

$ my-cfn create-stack \
  --template ec2.yaml \
  --parameter ec2.json \
  --region us-east-1
{
    "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/ec2/48d58b40-9a8e-11eb-ac25-0e211a4ad657"
}
"Timestamp"  "Logical Id"  "Status"  "Status reason"
"2021-05-19T06:22:26.346"  "ec2"  "CREATE_IN_PROGRESS"  "User Initiated"
"2021-05-19T06:22:31.609"  "EC2Instance"  "CREATE_IN_PROGRESS"
"2021-05-19T06:22:33.863"  "EC2Instance"  "CREATE_IN_PROGRESS"  "Resource creation Initiated"
"2021-05-19T06:22:49.731"  "EC2Instance"  "CREATE_COMPLETE"
"2021-05-19T06:22:51.016"  "ec2"  "CREATE_COMPLETE"

内部では CloudFormation を実行し終了を待ち、数秒おきにスタックのイベントをポーリングして jq で整形して出力をしています。今は CDK があるので新規に CloudFormation テンプレートを書く機会は減っているかと思いますが、参考にどうぞ。

使い方

AWS CLIjq のインストールと設定を済ませておきます。

スクリプトをダウンロードして PATH が通った場所に置きます。

curl https://raw.githubusercontent.com/karakaram/aws-cloudformation-helper/main/my-cfn -o /usr/local/bin/my-cfn

スクリプトに実行権限を与えます。

chmod +x /usr/local/bin/my-cfn

実行します。

my-cfn create-stack \
  -t ec2.yaml \
  --region us-east-1

このほか、update-stackdelete-stack などもあります。細かいことは README やヘルプをご確認ください。

コマンドの実行終了を通知する

CloudFormation の実行は結構時間がかかります。Mac の iTerm2 をお使いのかたは、こちらの方法で終了を通知することができます。

iTerm2
MacのiTerm2でコマンドが終了したら通知する

Mac の iTerm2 でコマンドが終了したら通知する方法を紹介します。時間がかかるコマンドを実行しながら、別の作業をやりたいときなどにおすすめの方法です。以前は terminal-notifie...

続きを見る

-技術ブログ
-