

# サンプルテンプレートを使用して StackSets の使用を開始する
<a name="stacksets-getting-started"></a>

このチュートリアルは、AWS マネジメントコンソール を使用して StackSets の使用を開始するのに役立ちます。サンプルテンプレートを使用して StackSet を作成する手順を説明します。複数のリージョンにスタックをデプロイし、StackSet オペレーションをモニタリングして、結果を表示する方法について説明します。

このチュートリアルでは、米国西部 (オレゴン) リージョン (`us-west-2`) および米国東部 (バージニア北部) リージョン (`us-east-1`) 内の AWS アカウント で AWS Config を有効にする StackSet を作成します。StackSets を使用すると、1 回のオペレーションで複数のアカウントとリージョンにまたがるスタックを作成、更新、または削除できるため、大規模なインフラストラクチャを管理するのに最適なソリューションです。このチュートリアルでは、簡素化のために 1 つのアカウントを使用していますが、StackSets のマルチリージョン機能を効果的に示す内容となっています。

サンプルテンプレートは、次の S3 バケットにあります: [https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml](https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml)。

**注記**  
StackSets は無料ですが、このチュートリアルで作成する AWS Config などの AWS リソースに対して課金されます。詳細については、「[AWS Config 料金表](https://aws.amazon.com/config/pricing/)」を参照してください。

**Topics**
+ [前提条件](#stacksets-tutorial-prerequisites)
+ [コンソールからサンプルテンプレートを使用して StackSet を作成する](#stacksets-tutorial-create-stackset)
+ [StackSet の作成をモニタリングする](#stacksets-tutorial-monitor-creation)
+ [StackSet の結果を表示する](#stacksets-tutorial-view-results)
+ [StackSet を更新する](#stacksets-tutorial-update-stackset)
+ [スタックを StackSet に追加する](#stacksets-tutorial-add-stacks)
+ [クリーンアップ](#stacksets-tutorial-clean-up)
+ [次のステップ](#stacksets-tutorial-next-steps)

## 前提条件
<a name="stacksets-tutorial-prerequisites"></a>

このチュートリアル開始する前に、以下の前提条件を満たしていることを確認してください。
+ セルフマネージド型のアクセス許可に必要な IAM ロールを設定しておく必要があります。StackSet を作成して 1 つのアカウント内にスタックをデプロイするには、アカウントで次のロールが必要です。
  + `AWSCloudFormationStackSetAdministrationRole`
  + `AWSCloudFormationStackSetExecutionRole`

  これらのロールの設定手順の詳細については、「[セルフマネージドのアクセス許可の付与](stacksets-prereqs-self-managed.md)」を参照してください。

## コンソールからサンプルテンプレートを使用して StackSet を作成する
<a name="stacksets-tutorial-create-stackset"></a>

**AWS Config を有効にする StackSet を作成するには**

1. [ クラウドフォーメーション コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

1. 画面の上部のナビゲーションバーで、StackSet を管理する AWS リージョン を選択します。

   StackSets がサポートされているリージョンはいずれも選択できます。選択したリージョンは、StackSet でデプロイできるリージョンには影響しません。

1. ナビゲーションペインから [**StackSets**] を選択します。

1. [**StackSets**] ページの上部から [**StackSets の作成**] を選択します。

1. **[アクセス許可]** で、**[セルフサービスのアクセス許可]** を選択し、前提条件で作成した IAM ロールを選択します。
   + IAM 管理者ロールで、**[AWSCloudFormationStackSetAdministrationRole]** を選択します。
   + IAM 実行ロール名で、**[AWSCloudFormationStackSetExecutionRole]** を選択します。

1. [**Prerequisite - Prepare template (前提条件 - テンプレートの準備)**] で [**Use a sample template (サンプルテンプレートの使用)**] を選択します。

1. **[サンプルテンプレートの選択]** で、ドロップダウンメニューから **[AWS Config の有効化]** テンプレートを選択します。その後、**[Next]** を選択します。

   このテンプレートは、設定レコーダーや配信チャネルなど、アカウントで AWS Config を有効にするために必要なリソースを作成します。

1. **[StackSet の詳細を指定]** ページで、**[StackSet 名]** に **my-awsconfig-stackset** と入力します。

1. **[StackSet の説明]** には、**A StackSet that enables Config across multiple Regions** と入力します。

1. **[パラメータ]** で、次のように AWS Config 設定を行います。

   1. **[すべてのリソースタイプをサポート]** で、デフォルト値の **true** のままにして、サポートされているすべてのリソースタイプを記録します。

   1. **[グローバルリソースタイプを含める]** で、デフォルト値の **false** のままにして、IAM ロールなどのグローバルリソースを除外します。

   1. **[すべてがサポートされていない場合のリソースタイプのリスト]** を **<All>** のままにしておきます

   1. **[Config サービスにリンクされたロールのリソースを含むリージョン]** で、**<DeployToAnyRegion>** を **us-west-2** に置き換えます。

      つまり、`AWSServiceRoleForConfig` という名前のサービスにリンクされたロールは、スタックが米国西部 (オレゴン) リージョンにデプロイされている場合にのみ作成されます。デプロイリージョンは、この手順の後半で選択します。

   1. **[設定レコーダーの記録頻度]** で、**[DAILY]** 記録を選択します。

1. **[次へ]** を選択して続行します。

1. **[StackSet オプションの設定]** ページで、**[新しいタグの追加]** を選択し、キーと値のペアを指定してタグを追加します。

   1. [**キー**] に「**Stage**」と入力します。

   1. [**Value (値)**] に「**Test**」と入力します。

   StackSets に適用するタグは、スタックによって作成されるリソースに適用されます。

1. **[実行設定]** で、**[アクティブ]** を選択して CloudFormation の最適化されたオペレーション処理を有効にします。
   + 競合しないオペレーションは、デプロイ時間を短縮するために同時に実行されます。
   + 競合するオペレーションは自動的にキューに入れられ、リクエストされた順序で処理されます。

   オペレーションが実行中またはキューに入れられている間、CloudFormation ではオペレーションが競合しない場合でもすべての受信オペレーションがキューに入ります。この間は実行設定を変更できません。

1. [**次へ**] を選択します。

1. **[デプロイオプションの設定]** ページの **[StackSet にスタックを追加]** で、**[新しいスタックのデプロイ]** オプションを選択します。

1. [**アカウント**] で [**Deploy stacks in accounts (スタックをアカウントにデプロイ)**] を選択します。

1. テキストボックスに AWS アカウント ID を入力します。

1. **[リージョンの指定]** では、次のリージョンをこの順序で選択します。

   1. 米国西部 (オレゴン) リージョン (`us-west-2`)

   1. 米国東部 (バージニア北部) リージョン (`us-east-1`)

   必要に応じて、米国西部 (オレゴン) リージョンの横にある上矢印を使用して、リストの最初の項目になるように移動します。リージョンの順序に従って、デプロイの順序が決まります。

1. **[デプロイオプション]** では、次の設定を行います。

   1. **[Maximum concurrent accounts (同時アカウントの最大数)]** については、デフォルト値の **[数値]** と **1** をそのまま使用します。

      つまり、マルチアカウントデプロイの場合、この設定では、CloudFormation は一度に 1 つのアカウントのみでスタックをデプロイします。

   1. [**Failure tolerance (耐障害性)**] については、デフォルトの [**数値**] と [**0**] をそのまま使用します。

      つまり、CloudFormation が現在のリージョンでデプロイを停止し、残りのリージョンでのデプロイをキャンセルする前に、最大で 0 個のスタックデプロイが、指定されたリージョンのうちいずれかで失敗できるということを意味します。

   1. **[リージョンの同時実行]** では、**[順次]** (デフォルト) を選択します。

      この設定により、CloudFormation は 1 つのリージョンでデプロイを完了してから次のリージョンに移動します。

   1. **[同時実行モード]** では、**[厳格な耐障害性]** のデフォルト設定を維持します。

      マルチアカウントデプロイの場合、これにより障害発生時のアカウントの同時実行レベルが下がり、**[耐障害性]** \$11 の範囲内に維持されます。

1. [**次へ**] を選択します。

1. **[確認]** ページで選択内容を確認します。変更するには、関連セクションで [**編集**] をクリックします。

1. StackSet を作成する準備ができたら、**[送信]** を選択します。

## StackSet の作成をモニタリングする
<a name="stacksets-tutorial-monitor-creation"></a>

**[送信]** を選択すると、CloudFormation は StackSet の作成と、アカウント内の指定されたリージョンへのスタックのデプロイを開始します。StackSet の詳細ページが自動的に開き、オペレーションの進行状況をモニタリングできます。

**StackSet の作成をモニタリングするには**

1. StackSet の詳細ページで、**[オペレーション]** タブがデフォルトで表示され、進行中の現在のオペレーションが表示されます。

1. オペレーションのステータスは、最初は `RUNNING` である必要があります。CloudFormation は、設定したデプロイオプションに従って、指定したリージョンにスタックを作成します。

1. オペレーションの詳細については、リストでオペレーション ID を選択します。

1. オペレーションの詳細ページで、各リージョンで作成されているスタックインスタンスのステータスを表示できます。

1. オペレーションステータスが `SUCCEEDED` に変わるまで待ちます。これは、StackSet とそのすべてのスタックインスタンスが正常に作成されたことを示します。

## StackSet の結果を表示する
<a name="stacksets-tutorial-view-results"></a>

StackSet の作成が完了したら、デプロイされたスタックインスタンスを表示し、指定したリージョンのアカウントで AWS Config が有効になっていることを確認できます。

**StackSet の結果を表示するには**

1. StackSet の詳細ページで、**[スタックインスタンス]** タブを選択します。

1. 指定したリージョンのアカウントで作成されたスタックインスタンスのリストが表示されます。各スタックインスタンスのステータスは `SUCCEEDED` である必要があり、これは正常にデプロイされたことを示します。

1. アカウントで AWS Config が有効になっていることを確認するには、デプロイされた各リージョンで AWS Config コンソールを確認します。

## StackSet を更新する
<a name="stacksets-tutorial-update-stackset"></a>

StackSet を作成したら、それを更新してパラメータ値を変更したり、リージョンを追加したりできます。このセクションでは、AWS Config 記録頻度パラメータを更新する方法について説明します。

**StackSet を更新するには**

1. **[StackSets]** ページで、**my-awsconfig-stackset** を選択します。

1. StackSet を選択した状態で、**[アクション]** メニューから **[StackSet の詳細を編集]** を選択します。

1. **[テンプレートの選択]** ページの **[前提条件 - テンプレートの準備]** で、**[現在のテンプレートの使用]** を選択します。

1. [**次へ**] を選択します。

1. **[StackSet の詳細を指定]** ページの **[パラメータ]** で、**[設定レコーダーの記録頻度]** を見つけて、**[DAILY]** から **[CONTINUOUS]** に変更します。

1. [**次へ**] を選択します。

1. **[StackSet オプションの設定]** ページで、設定をそのままにして **[次へ]** を選択します。

1. **[デプロイオプションの設定]** ページで、アカウント ID と StackSet の作成時に使用したのと同じリージョンを指定します。

1. **[デプロイオプション]** では、以前と同じ設定のままにします。

1. [**次へ**] を選択します。

1. **[レビュー]** ページで変更内容を確認し、**[送信]** を選択します。

1. CloudFormation が StackSet の更新を開始します。StackSet の詳細ページの **[オペレーション]** タブで進行状況をモニタリングできます。

## スタックを StackSet に追加する
<a name="stacksets-tutorial-add-stacks"></a>

追加のリージョンにデプロイすることで、StackSet にさらにスタックを追加できます。このセクションでは、新しいリージョンにスタックを追加する方法を示します。

**StackSet にスタックを追加するには**

1. **[StackSets]** ページで、**my-awsconfig-stackset** を選択します。

1. StackSet を選択した状態で、**[アクション]** メニューから **[StackSet にスタックを追加]** を選択します。

1. **[デプロイオプションの設定]** ページの **[StackSet にスタックを追加]** で、**[新しいスタックのデプロイ]** オプションを選択します。

1. **[アカウント]** で、**[スタックをアカウントにデプロイ]** を選択し、アカウント ID を入力します。

1. **[リージョンの指定]** には、**[欧州 (アイルランド)]** (`eu-west-1`) などの新しいリージョンを選択します。

1. **[デプロイオプション]** では、以前と同じ設定のままにします。

1. [**次へ**] を選択します。

1. **[上書きの指定]** ページでは、プロパティ値を指定されたままにして、**[次へ]** を選択します。

1. [**確認**] ページで選択内容を確認し、[**送信**] を選択します。

1. CloudFormation は、指定されたリージョンで新しいスタックの作成を開始します。StackSet の詳細ページの **[オペレーション]** タブで進行状況をモニタリングできます。

## クリーンアップ
<a name="stacksets-tutorial-clean-up"></a>

不要な AWS Config リソースに対して料金が発生しないようにするには、StackSet からスタックを削除し、StackSet 自体を削除し、このチュートリアル用に作成した IAM ロールを削除してクリーンアップする必要があります。すべてのリソースはアカウント内にデプロイされるため、クリーンアップは簡単です。

**StackSet からスタックを削除するには**

1. **[StackSets]** ページで、**my-awsconfig-stackset** を選択します。

1. StackSet を選択した状態で、**[アクション]** メニューから **[StackSet からスタックを削除]** を選択します。

1. **[デプロイオプションの設定]** ページの **[アカウント]** で、**[スタックをアカウントにデプロイ]** を選択し、アカウント ID を入力します。

1. **[リージョンの指定]** で、スタックをデプロイしたすべてのリージョンを選択します。

1. **[デプロイオプション]** では、デフォルト設定のままにします。

1. スタックとそのリソースが削除されるように、**[スタックを保持]** が有効になって*いない*ことを確認します。

1. [**次へ**] を選択します。

1. [**確認**] ページで選択内容を確認し、[**送信**] を選択します。

1. CloudFormation は StackSet からのスタックの削除を開始します。StackSet の詳細ページの **[オペレーション]** タブで進行状況をモニタリングできます。

**StackSet を削除するには**

1. すべてのスタックが削除されたら、**[StackSets]** ページで **my-awsconfig-stackset** を選択します。

1. StackSet を選択した状態で、**[アクション]** メニューから **[StackSet の削除]** を選択します。

1. 確認を求められたら、**[削除]** を選択します。

**IAM サービスロールを削除するには**

一つのアカウントにのみデプロイしたため、このアカウントから IAM ロールを削除するだけで済み、マルチアカウントデプロイに比べてクリーンアップが非常に簡単です。

1. [[IAM コンソール]](https://console.aws.amazon.com/iam/) を開きます。

1. ナビゲーションペインで、[**Roles**] を選択します。

1. 検索ボックスに **AWSCloudFormationStackSet** と入力して、このチュートリアル用に作成したロールを見つけます。

1. **[AWSCloudFormationStackSetAdministrationRole]** の横にあるチェックボックスをオンにします。

1. ページの上部から、**[削除]** を選択します。

1. 確認ダイアログボックスで、**delete** と入力し、**[削除]** を選択します。

1. 同じプロセスを繰り返して、**[AWSCloudFormationStackSetExecutionRole]** を削除します。

StackSet を削除すると、`AWS::S3::Bucket` リソースの `DeletionPolicy` 属性により、Amazon S3 バケットが各 AWS リージョン に残ります。これにより、AWS Config 履歴データが保持されます。このデータが不要になった場合は、バケットを手動で削除しても問題ありません。バケットを削除するには、パケットを空にする必要があります。バケットを空にすると、バケット内のすべてのオブジェクトが削除されます。

**Amazon S3 バケットを空にして削除するには**

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/)を開きます。

1. コンソールの左側のナビゲーションペインで、[**バケット**] を選択します。

1. **[バケット]** リストには、デプロイした各リージョンでこの StackSet 用に作成されたバケットが表示されます。この StackSet 用に作成されたバケットの名前の横にあるオプションを選択し、**[空]** を選択します。

1. **[バケットを空にする]** ページで、テキストフィールドに **permanently delete** と入力して、**[空にする]** をクリックします。

1. [**バケットを空にする: ステータス**] ページで、バケットを空にするプロセスの進行状況をモニタリングします。

1. バケットリストに戻るには、[**Exit (終了)**] を選択します。

1. バケットの名前の横にあるオプションを選択し、**[削除]** を選択します。

1. 確認を求められたら、バケットの名前を入力し、**[バケットを削除]** を選択します。

1. **[バケット]** リストで、バケット削除プロセスの進捗状況を確認します。Amazon S3 がバケットの削除を完了すると、バケットはリストから消えます。

1. 異なるリージョンで StackSet によって作成された各バケットに対して、このプロセスを繰り返します。

## 次のステップ
<a name="stacksets-tutorial-next-steps"></a>

お疲れ様でした。サンプルテンプレートを使用した StackSet の作成、アカウント内の複数のリージョンへのスタックのデプロイ、StackSet の更新、スタックの追加、リソースのクリーンアップが正常に完了しました。シングルアカウントデプロイに焦点を当てることで、StackSets のマルチリージョン機能の核心を学習しながら、クリーンアッププロセスを簡素化しました。

StackSets の詳細については、次のトピックをご覧ください。
+ [CloudFormation StackSet 内のスタックのパラメータ値を上書きする](stackinstances-override.md) – 特定のアカウントとリージョンのパラメータ値を上書きする方法を説明します。
+ [サービスマネージド型のアクセス許可を持つ CloudFormation StackSets の作成](stacksets-orgs-associate-stackset-with-org.md) – AWS Organizations を使用したマルチアカウントデプロイ用の StackSets の作成について説明します。