はじめに

備忘録として、自分がよく使う&使った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をおすすめしたい次第です。

TOP