CloudFormation StackSetsでリージョンごとに異なるパラメータを使う

記事タイトルとURLをコピーする

CloudFormationのStackSetsを使うと複数リージョンに一括でリソースを作成できます。 一括で設定できるのは嬉しいのですが、リージョンごとに一部の設定を変更したい場合もあるかと思います。 例えば、以下のような要望が出てくるかもしれません。

  • リージョンごとにインスタンスタイプを異なるものにしたい
  • リージョンごとに通知メールアドレスを分けたい
  • リージョンごとに機能の有効・無効を分けたい

StackSetsにはパラメータの上書き機能があり、これで対応可能です。 実際に試してみました。

docs.aws.amazon.com

StackSetとStack insntanceとパラメータの関係

1つのStackSetから各リージョンへ同じ設定のStack instanceを作成できます。

基本的にはStackSetに与えたパラメータがそのまま各Stack instanceに適用されます。 しかし、特定のStack instanceに対し、パラメータを上書きすることも可能です。

f:id:swx-watanabe:20210210130934p:plain

新規Stack instanceへのパラメータ指定する方法

例として、3つのリージョンでStack instanceがあり、新しくリージョンを追加したいとします。 この新しいリージョンには、既存リージョンとは異なるパラメータを与えたいと思っています。

f:id:swx-watanabe:20210210102421p:plain

Stack instanceの追加

新しくリージョンを追加するため、Add new stacks to StackSetを選択します。

リージョンの選択

追加したいリージョンを選択します。この例では2つ追加しています。

f:id:swx-watanabe:20210210103245p:plain

パラメータの確認・上書き

ここで新しく追加するリージョンに対しパラメータの上書きが可能です。
今回はメールアドレスを変更してみます。

上書きしたいパラメータを選択し、Override StackSet valueを選択します。

f:id:swx-watanabe:20210210104032p:plain

新しいパラメータ値を入力します。

Override valueに変更値が表示されました。

f:id:swx-watanabe:20210210110524p:plain

これであとはNextを押していけば、上書きしたパラメータでStack instanceが作成されます。

既存Stack instanceへのパラメータ変更する方法

構築後に一部のリージョンのパラメータ値を変更したいという場合もあるかと思います。 既に運用に入っているので、作り直しは避けたいところです。

Override StackSet parametersから変更可能です。

あとの手順は「2. 新規Stack instanceへのパラメータ指定する方法」と全く同じです。

f:id:swx-watanabe:20210210132134p:plain

実行後、OperationsのTypeはDELETEやCREATEではなく、UPDATEとなっているのがわかります。

後から上書きパラメータを確認する方法

どのような値で上書きされたかは、StackSet設定を見ても後から確認できません。
各リージョンのStack設定を見れば、上書きされた値がわかります。

f:id:swx-watanabe:20210210122719p:plain

渡辺 信秀(Nobuhide Watanabe) (記事一覧)

2017年入社。好きな言語は日本語。