【CloudFormation】StackSetの実行(サービスマネージド型編)

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

こんにちは。AWS CLIが好きな福島です。

はじめに

今回は、先日記載したブログの続きとなり、StackSetの実行方法を記載いたします。 StackSetの実行は、サービスマネージド型またはセルフマネージド型により変わるため、 今回は、サービスマネージド型の場合の実行方法を記載いたします。 ※それぞれの型についての詳細は、以下のブログを参照ください。

blog.serverworks.co.jp

StackSet実行

StackSetの作成

CloudFormationサービス画面の左にあるStackSetsをクリックします。 f:id:swx-fukushima:20201109105820p:plain

「StackSetの作成」をクリックします。 f:id:swx-fukushima:20201109110112p:plain

テンプレートの選択

通常のスタック作成と同様に「テンプレートの選択」を行います。 f:id:swx-fukushima:20201109110749p:plain

StackSet の詳細を指定

通常のスタック作成と同様に「Stackset名」等を入力します。 f:id:swx-fukushima:20201109110843p:plain

StackSet オプションの設定

ここからStackSet特有の設定値になります。
今回は、Organizationsの機能を利用し、ターゲットアカウントにIAMロールを作成しているため、 「サービスマネージドアクセス許可」を選択します。 f:id:swx-fukushima:20201109111014p:plain

デプロイオプションの設定

デプロイオプション①

「組織へのデプロイ」を選択します。 デプロイ方法の違いは、以下の通りです。

  • 組織へのデプロイ:
    Organizations配下全部のメンバーアカウントにスタックを作成します。
    ※マネジメントアカウント(マスターアカウント)は除外されます。
  • 組織単位(OU)へのデプロイ:
    OUに所属しているメンバーアカウントにのみスタックを作成します。 ※OUに所属させることはないと思いますが、マネジメントアカウント(マスターアカウント)は除外されます。

f:id:swx-fukushima:20201109111942p:plain

デプロイオプション②

自動デプロイは、「有効」を選択します。

この設定が有効になっていると

  • 組織へのデプロイの場合:
    アカウントが追加される度に自動的にスタックをデプロイします。

  • 組織単位(OU)へのデプロイの場合:
    OUにアカウントが追加される度に自動的にスタックをデプロイします。

f:id:swx-fukushima:20201109112225p:plain

デプロイオプション③

OUからアカウント削除時の動作は、「スタックを削除」を選択します。

f:id:swx-fukushima:20201109113212p:plain

デプロイオプション④

リージョンの指定は、「アジアパシフィック(東京)」を選択します。
※すべてのリージョンを追加する場合、デフォルトで無効のリージョンである 中東 (バーレーン)、アフリカ (ケープタウン)なども追加されるため、注意が必要です。 f:id:swx-fukushima:20201109113349p:plain

デプロイオプション⑤

同時アカウントの最大数は、「数値:1」、障害耐性は、「数値:0」を設定します。

  • 同時アカウントの最大数
    スタックを並列にデプロイするAWSアカウント数になります。 AWSアカウント数が多い場合は、この値を増やすことでデプロイの時間を短縮することが可能です。

  • 障害耐性
    StackSetを停止する基準に利用されます。 StackSetは、テンプレートの内容やアカウント数によりますが、かなり時間がかかる場合があるため、この値は重要になります。

例) 数値が0の場合、1つのアカウントまたはリージョンでスタックの作成に失敗すると、StackSetが停止されます。 数値が10の場合、9つのアカウントまたリージョンでスタックの作成が失敗しても、StackSetは実行され続けます。

f:id:swx-fukushima:20201109113604p:plain

レビュー

最後に設定した内容を確認し、実行します。

ステータス確認

StackSetには、以下の2つの項目でステータスを確認することができます。

・オペレーション
 StackSet実行の全体ステータス。
・スタックインスタンス
 各インスタンス(AWSアカウント)ごとの実行ステータス。

それぞれのステータスの詳細は、以下を参照ください。

docs.aws.amazon.com

オペレーション

StackSet実行後は、ステータスが「RUNNING」となります。

f:id:swx-fukushima:20201130165022p:plain

全AWSアカウントへのスタック実行が完了すると、ステータスが「SUCCEEDED」となります。 各AWSアカウントごとの進捗は、「スタックインスタンス」の項目を確認します。

f:id:swx-fukushima:20201130164854p:plain

スタックインスタンス

StackSet実行後は、ステータスが「OUTDATED」となります。
OUTDATEDは、各AWSアカウントのスタックがStackSetと同じ最新状態になっていないことを示します。

f:id:swx-fukushima:20201130163805p:plain

時間が経過するとステータスが「CURRENT」となります。
CURRENTは、各AWSアカウントのスタックがStackSetと同じ最新状態になっていることを示します。

f:id:swx-fukushima:20201130164023p:plain

おまけ

実は、StackSetを更新する際は、以下の通り、
・組織単位(OU)へのデプロイ
・アカウントへのデプロイ
しかなく、 組織へのデプロイが存在しません。

f:id:swx-fukushima:20201130165317p:plain

しかし、Organizaionsのコンソールから確認できる「r-」から始まる識別子を入力することで 組織全体へのデプロイが可能となります。

f:id:swx-fukushima:20201130165757p:plain

f:id:swx-fukushima:20201130165928p:plain ※もし無効なIDが入力されている場合、「無効な OU ID」と表示されます。

おわりに

今回は、StackSet実行方法(サービスマネージド型編)について、記載いたしました。

次回は、セルフマネージド型編についてのブログを記載したいと思います。
※基本的には、サービスマネージド型を利用すれば問題ないかと思いますが、 ある特定のAWSアカウントにのみ適用したいスタックがある場合は、 セルフマネージド型を利用する必要があるかと思います。

福島 和弥 (記事一覧)

SRE3課

2019/10 入社

AWS CLIが好きです。