CloudFormationのStackSetsを使うと複数リージョンに一括でリソースを作成できます。 一括で設定できるのは嬉しいのですが、リージョンごとに一部の設定を変更したい場合もあるかと思います。 例えば、以下のような要望が出てくるかもしれません。
- リージョンごとにインスタンスタイプを異なるものにしたい
- リージョンごとに通知メールアドレスを分けたい
- リージョンごとに機能の有効・無効を分けたい
StackSetsにはパラメータの上書き機能があり、これで対応可能です。 実際に試してみました。
- StackSetとStack insntanceとパラメータの関係
- 新規Stack instanceへのパラメータ指定する方法
- 既存Stack instanceへのパラメータ変更する方法
- 後から上書きパラメータを確認する方法
StackSetとStack insntanceとパラメータの関係
1つのStackSetから各リージョンへ同じ設定のStack instanceを作成できます。
基本的にはStackSetに与えたパラメータがそのまま各Stack instanceに適用されます。 しかし、特定のStack instanceに対し、パラメータを上書きすることも可能です。
新規Stack instanceへのパラメータ指定する方法
例として、3つのリージョンでStack instanceがあり、新しくリージョンを追加したいとします。 この新しいリージョンには、既存リージョンとは異なるパラメータを与えたいと思っています。
Stack instanceの追加
新しくリージョンを追加するため、Add new stacks to StackSetを選択します。
リージョンの選択
追加したいリージョンを選択します。この例では2つ追加しています。
パラメータの確認・上書き
ここで新しく追加するリージョンに対しパラメータの上書きが可能です。
今回はメールアドレスを変更してみます。
上書きしたいパラメータを選択し、Override StackSet valueを選択します。
新しいパラメータ値を入力します。
Override valueに変更値が表示されました。
これであとはNextを押していけば、上書きしたパラメータでStack instanceが作成されます。
既存Stack instanceへのパラメータ変更する方法
構築後に一部のリージョンのパラメータ値を変更したいという場合もあるかと思います。 既に運用に入っているので、作り直しは避けたいところです。
Override StackSet parametersから変更可能です。
あとの手順は「2. 新規Stack instanceへのパラメータ指定する方法」と全く同じです。
実行後、OperationsのTypeはDELETEやCREATEではなく、UPDATEとなっているのがわかります。
後から上書きパラメータを確認する方法
どのような値で上書きされたかは、StackSet設定を見ても後から確認できません。
各リージョンのStack設定を見れば、上書きされた値がわかります。
渡辺 信秀(記事一覧)
2017年入社 / 地味な内容を丁寧に書きたい