はじめに
備忘録として、自分がよく使う&使ったaws-cliコマンドを書きます。
今回はCloudFormation編その2で、スタック更新関係です。
注意
- 公式ドキュメントがちゃんとあります
- 前述の通り自分がよく使う&使ったものしか書いてないので、すべては網羅しておりません
スタック更新その1 update-stack
①テンプレートがローカルにある時
aws cloudformation update-stack --stack-name スタック名 --template-body file://テンプレートのパス
②テンプレートがS3バケットにある時
aws cloudformation update-stack --stack-name スタック名 --template-url テンプレートのURL
create-stackと考え方は一緒ですね。
上記①、②に各種オプションを指定していきます。
スタック更新その2 change set作成→execute
①テンプレートがローカルにある時
aws cloudformation create-change-set --stack-name スタック名 --template-body file://テンプレートのパス --change-set-name change setの名前
②テンプレートがS3バケットにある時
aws cloudformation create-change-set --stack-name スタック名 --template-url テンプレートのURL --change-set-name change setの名前
こちらに関しても、create-stack、update-stackと同様です。
いきなりupdate-stackではなく、change setで「意図している変更以外の変更が加わらないこと」の確認のため、利用しました。
change setは細かい変更内容まで出してくれないので、結局テンプレート自体&コマンド実行内容が大事ということで、まあ保険でしょうか。
1ケースとして何かの参考になればですが、↓の使い方をしました。
- change setをcliで作成
- マネコンでchange set確認
- 問題なかったらマネコンでchange set実行
- あったらテンプレート見直し→修正して、初めからやり直し
ということで使ったことないのですが、change set確認&実行コマンドは↓のようです。
change set確認(list)
aws cloudformation list-change-sets --stack-name スタック名
change set確認(個々のchange set詳細)
aws cloudformation describe-change-set --stack-name スタック名 --change-set-name change set名
失念しましたが、運用担当の方にはマネコンの方がわかりやすいから、とかの理由でマネコンで確認、になった気がします。
cliでやるとjsonが返ってきます。
change set実行
aws cloudformation execute-change-set --stack-name スタック名 --change-set-name change set名
change setは、実行すると消えるので、わざわざ削除しなくてよいです。
いらない時は↓で消します。
change set削除
aws cloudformation delete-change-set --stack-name スタック名 --change-set-name change set名
スタックのステータス確認
aws cloudformation describe-stacks --stack-name スタック名 --query "Stacks[0].StackStatus"
describe-stackで各種情報がjsonで返ってくるので、そこからstatus部分をとってきます。
IAMロールのIDなんかも、jsonに--queryしてます。(IAMロールIDはマネコンではわからない……)
ステータス確認までがスタック更新ということで ^^
なんでかわからないですが、スタックで構築したリソースはなめるように確認&ステータスは確認しない、という方が結構いらっしゃいました。
前者についてはやるやらないはケースバイケースだと思いますが、個人的には、まあ最初の1回くらいやればよいと考えております。(awsの機能だし)
後者については、やりましょう。
おわりに
ステータス確認についてですが、代表サーバからprofile指定して100個強のアカウントでコマンド打ちまくっていたので、
- マネコンはアカウント変えるのが面倒
- jsonでstatus部分を見ればいいものの、目が滑る
ということでcliで確認してました。
運用時にはどうしてもGUIの方が可読性高い、となることは多いかもしれませんが、検証時にはぜひdescribe-stackをおすすめしたい次第です。