[アップデート]AWS CloudFormationのスタックをStackSetsにインポートできるようになりました

2021.07.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、オンジー(@onzuka_muscle)です!

AWS CloudFormation のスタックを後から AWS CloudFormation StackSets を使って「他のアカウントにも展開したくなった」「他のリージョンにも展開したくなった」という場合、

今までは改めて template を指定して、CloudFormation StackSets を作成して、といった手順を踏む必要があったのがインポートによって少しショートカットできるようになりました。

また既に存在している StackSets にインポートすることもできます。

やってみた

次のユースケースを想定してやってみます。

  • アカウントAでIAMロールを作成した
  • アカウントBでもそのIAMロールを使いたくなっった

スタックを新しい StackSets にインポート

今後、IAMロールを展開したいアカウントが増えるかもしれない。というモチベーションでスタックをインポートして新しく StackSets を作成してみます。

アカウントAに存在するスタックです。

このスタックによってIAMロールが作成されています。

なお CloudFormation StackSets の事前準備・使い方については割愛します。(下記ブログ参照してください)

スタックのARNが必要になるので控えておきましょう。

アカウントAで StackSets を作っていきます。

StackSets 作成画面にいくと「スタックIDから」という選択肢が新しく選べるようになっています。これが今回のアップデート部分ですね!

先ほど確認したスタックのARNを入力してください。

その先は普通に StackSets を作成する流れと変わりません。

IAMロールを展開したいアカウントBのIDを指定しています。

StackSets を作成してスタックインスタンスが正常に作成されたことを確認しました。

アカウントB側にいって見てみましょう。

スタックが展開されてます!狙い通りにIAMロールも作成されてました。

スタックを既存の StackSets にインポート

今度は既存の StackSets にスタックをインポートしてみます。

「StackSet にスタックを追加」からインポートを選択するとARNを入力する欄が出てくるのでここに入力する形になります。

「IMPORT」というタイプで表示されました。

インポートした既存のスタックがスタックインスタンスとして登録されました。(下の行)

インポートしたスタックを他のターゲットアカウントに展開できています。(上の行)

以上です。

所感

可能であればスタックを一度削除して StackSets を作り直すほうが綺麗だと思うのですが、既にスタックによって展開されたリソースを一時的でも削除したくない場合はインポートの出番かなと思います。

今回は検証なので小規模でやってますが対象アカウント・リージョンが多い既存 StackSets にインポートしたいケースで恩恵が大きいと思いました。

参考