

# サービスマネージド型のアクセス許可を持つ CloudFormation StackSets の作成
<a name="stacksets-orgs-associate-stackset-with-org"></a>

サービスマネージド型のアクセス許可を使用すると、AWS Organizations が管理する特定のリージョン内のアカウントにスタックをデプロイできます。このモデルを使用すると、ターゲットアカウントと AWS リージョンそれぞれに IAM ロールを作成する必要がなくなります。IAM ロールは CloudFormation がユーザーに代わって作成します。詳細については、「[信頼されたアクセスをアクティブ化する](stacksets-orgs-activate-trusted-access.md)」を参照してください。

**Topics**
+ [考慮事項](#stacksets-orgs-considerations)
+ [サービスマネージド型のアクセス許可を持つ StackSet の作成 (コンソール)](#stacksets-orgs-associate-stackset-with-org-console)
+ [サービスマネージド型のアクセス許可を持つ StackSet 作成 (AWS CLI)](#stacksets-orgs-associate-stackset-with-org-cli)

## 考慮事項
<a name="stacksets-orgs-considerations"></a>

サービスマネージド型の許可を持つ StackSet を作成する前に、次の点を考慮してください。
+ サービスマネージド型の許可を持つ StackSet は、組織の管理アカウントまたは委任管理者アカウントのいずれかが開始できますが、すべてのオペレーションは管理アカウントが実行します。
+ CloudFormation は、管理アカウントが組織の一部であったり、組織単位 (OU) に属していたりする場合でも、スタックを管理アカウントにデプロイしません。
+ StackSet は、組織全体 (すべてのアカウントを含む) または指定した OU をターゲットにすることができます。StackSet が親 OU をターゲットにするときは、子 OU も自動的にターゲットになります。デフォルトで、StackSet が特定の OU をターゲットにする場合は、それらの OU 内にあるすべてのアカウントもターゲットになります。ただし、アカウントフィルターオプションを使用して特定のアカウントをターゲットにすることはできます。
+ 複数の StackSets で同じ組織または OU をターゲットにすることができます。
+ 組織外のアカウントをターゲットにすることはできません。
+ StackSet にデプロイする認可は、管理アカウントへのサインインに使用される、IAM プリンシパル (ユーザー、ロール、グループ) に割り当てられた許可に応じて異なります。組織にデプロイする許可を付与する IAM ポリシーの例については、「[リージョンとリソースタイプに基づいてスタックセットのオペレーションを制限する](security_iam_id-based-policy-examples.md#resource-level-permissions-service-managed-stack-set)」を参照してください。
+ 委任管理者は、組織内の任意のアカウントにデプロイするための完全な許可を持っています。管理アカウントは、特定の OU や StackSet オペレーションにデプロイする委任管理者の許可を制限できません。
+ 自動デプロイ設定は StackSet レベルで適用されます。OU、アカウント、リージョンを選択して自動デプロイを調整することはできません。
+ サービスマネージド型の許可を使用する StackSet は、マクロまたは変換が含まれるネストされたスタックやテンプレートをサポートしません。

## サービスマネージド型のアクセス許可を持つ StackSet の作成 (コンソール)
<a name="stacksets-orgs-associate-stackset-with-org-console"></a>

**StackSet を作成するには**

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

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

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

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

1. **[アクセス権限]** で、**[Service-managed permissions (サービスマネージド型のアクセス許可)]** を選択します。
**注記**  
AWS Organizations との信頼されたアクセスが無効になっている場合は、バナーが表示されます。サービスマネージド型のアクセス許可を持つ StackSet を作成または更新するには、信頼されたアクセスが必要です。組織の管理カウントの管理者のみが、[AWS Organizations を使用して StackSets のための信頼されたアクセスをアクティブ化する](stacksets-orgs-activate-trusted-access.md) のアクセス許可を持ちます。

1. [**前提条件 − テンプレートの準備**] で、[**テンプレートの準備完了**] を選択します。

1. [**Specify template (テンプレートの指定)**] で、スタックテンプレートを含む S3 バケットの URL を指定するか、スタックテンプレートファイルをアップロードするかを選択します。その後、**[Next]** を選択します。

1. **[StackSet の詳細を指定]** ページで、StackSet の名前を指定し、パラメータを指定して、**[次へ]** を選択します。

1. [**StackSet オプションの設定**] ページの [**タグ**] で、スタックのリソースに適用するタグを指定します。AWS でのタグの使用方法に関する詳細については、*AWS Billing and Cost Management ユーザーガイド*の「[AWS コスト配分タグを使用してコストを整理および追跡する](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)」を参照してください。

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

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

1. テンプレートに IAM リソースが含まれる場合は、[**機能**] で[**I acknowledge that this template may create IAM resources (このテンプレートが IAM リソースを作成する可能性を認識しています)**] を選択して、テンプレート内の IAM リソースを使用することを指定します。詳細については、「[CloudFormation テンプレートでの IAM リソースの承認](control-access-with-iam.md#using-iam-capabilities)」を参照してください。

1. [**次へ**] を選択して続行し、信頼されたアクセスがまだアクティブ化になっていない場合はアクティブ化します。

1. [**デプロイオプションの設定**]ページの[**デプロイターゲット**] で、次のいずれかを実行します。
   + 組織内のすべてのアカウントにデプロイするには、[**Deploy to organization (組織にデプロイ)**] を選択します。
   + 特定の OU のすべてのアカウントにデプロイするには、[**Deploy to organizational units (OUs) (組織単位 (OU) にデプロイ)**] を選択します。[**Add an OU (OU の追加)**] を選択し、テキストボックスにターゲット OU ID を貼り付けます。新しいターゲット OU ごとに繰り返します。

   **[組織単位 (OU) へのデプロイ]** を選択した場合、**[アカウントフィルタータイプ]** で、次のいずれかのオプションを選択し、アカウント番号を指定することで、デプロイターゲットを特定の個々のアカウントに設定できます。
   + **[なし]** (デフォルト) – 指定した OU 内のすべてのアカウントにスタックをデプロイします。
   + **[共通集合]** – 選択した OU 内の特定の個々のアカウントにスタックをデプロイします。
   + **[差異]** – 特定のアカウントを除く、選択した OU 内のすべてのアカウントにスタックをデプロイします。
   + **[和集合]** – 指定した OU と追加の個々のアカウントにスタックをデプロイします。

1. **[自動デプロイ]** で、今後ターゲットの組織または OU に追加されるアカウントに自動デプロイを行うかどうかを選択します。詳細については、「[AWS Organizations で StackSets の自動デプロイを有効または無効にする](stacksets-orgs-manage-auto-deployment.md)」を参照してください。

1. 自動デプロイを有効にした場合、[**Account removal behavior (アカウントの削除の動作)**] で、ターゲットの組織または OU からアカウントを削除するときに、スタックリソースを保持するか削除するかを選択します。
**注記**  
**[スタックを保持]** を選択すると、スタックは StackSet から削除されますが、スタックとそれに関連付けられたリソースは保持されます。リソースは現在の状態のままですが、StackSet には含まれなくなります。

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

1. **[デプロイオプション]** で、次の操作を行います。
   + **[同時アカウントの最大数]** で、同時に処理されるアカウントの数を指定します。
   + **[耐障害性]** には、リージョンごとに許可されるアカウント障害の最大数を指定します。この制限に達すると、オペレーションは停止し、他のリージョンには進みません。
   + **[リージョンの同時実行]** で、リージョンの処理方法を選択します。**[順次]** (一度に 1 つのリージョン) または **[並列]** (複数のリージョンを同時に) を選択できます。
   + **[同時実行モード]** で、オペレーションの実行中に同時実行がどのように動作するかを選択します。
     + **[厳格な耐障害性]** – 障害発生時の同時実行レベルを下げ、**[耐障害性]** の値を \$11 の範囲内にとどめます。
     + **[ソフトな障害耐性]** – 障害に関係なく、指定された同時実行レベル (**[同時アカウントの最大数]** の値) を維持します。
   + StackSet の**依存関係**では、依存する StackSet ARN を追加して、最大 10 個以内で依存関係を維持します。詳細については、「[AWS Organizations で StackSets の自動デプロイを有効または無効にする](stacksets-orgs-manage-auto-deployment.md)」を参照してください。

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

1. **[レビュー]** ページで、StackSet が正しいリージョンに正しいアカウントをデプロイすることを確認し、**[StackSet の作成]** を選択します。

   [**StackSet の詳細**] ページが開きます。StackSet 内のスタックの作成の進行状況とステータスを表示できます。

## サービスマネージド型のアクセス許可を持つ StackSet 作成 (AWS CLI)
<a name="stacksets-orgs-associate-stackset-with-org-cli"></a>

このセクションの手順に従い、AWS CLI を使用して次の操作を実行します。
+ StackSet コンテナを作成します。
+ スタックインスタンスをデプロイします。

**注記**  
委任管理者として操作する場合は、コマンドに `--call-as DELEGATED_ADMIN` を含める必要があります。

------
#### [ Deploy to your organization ]

**StackSet を作成するには**

1. [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-set.html) コマンドを使用して、`my-stackset` という名前の新しい StackSet を作成します。次の例では、S3 バケットに保存されているテンプレートを使用し、自動デプロイを有効にして、アカウントが削除されたときにスタックを保持します。詳細については、「[AWS Organizations で StackSets の自動デプロイを有効または無効にする](stacksets-orgs-manage-auto-deployment.md)」を参照してください。

   ```
   aws cloudformation create-stack-set \
     --stack-set-name my-stackset \
     --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \
     --permission-model SERVICE_MANAGED \
     --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true,DependsOn=ARN1,ARN2
   ```

1. [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-sets.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-sets.html) コマンドを使用して、StackSet が作成されたことを確認します。新しい StackSet が結果に表示されます。

   ```
   aws cloudformation list-stack-sets
   ```
   + メンバーアカウントにサインインしているときに `--call-as` オプションを `DELEGATED_ADMIN` に設定した場合、**list-stack-sets** は組織の管理アカウント内のサービスマネージド型のアクセス許可を持つすべての StackSets を返します。
   + AWS アカウント にサインインしているときに `--call-as` オプションを `SELF` に設定した場合、**list-stack-sets** は AWS アカウント 内のすべてのセルフマネージド型の StackSets を返します。
   + 組織の管理アカウントにサインインしているときに `--call-as` オプションを `SELF` に設定した場合、**list-stack-sets** は組織の管理アカウント内のすべての StackSets を返します。

1. [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-instances.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-instances.html) コマンドを使用して、StackSet にスタックを追加します。`--deployment-targets` オプションには、組織内のすべてのアカウントにデプロイする組織のルート ID を指定します。

   `--operation-preferences` オプションを使用して、同時アカウント処理およびその他のデプロイ設定を設定します。この例では、カウントベースの設定を使用します。`MaxConcurrentCount` は `FailureToleranceCount` \$1 1 を超えることはできません。パーセンテージベースの設定の場合は、代わりに `FailureTolerancePercentage` または `MaxConcurrentPercentage` を使用します。

   ```
   aws cloudformation create-stack-instances --stack-set-name my-stackset \
     --deployment-targets OrganizationalUnitIds=r-a1b2c3d4e5 \
     --regions us-west-2 us-east-1 \
     --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0
   ```

   詳細については、「*AWS CloudFormation API リファレンス*」の「[CreateStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackInstances.html)」を参照してください。

1. **create-stack-instances** 出力の一部として返された `operation-id` を使用して、次の [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html) コマンドを使用し、スタックが正常に作成されたことを確認します。

   ```
   aws cloudformation describe-stack-set-operation \
     --stack-set-name my-stackset \
     --operation-id operation_ID
   ```

------
#### [ Deploy to organizational units (OUs) ]

**StackSet を作成するには**

1. [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-set.html) コマンドを使用して、`my-stackset` という名前の新しい StackSet を作成します。次の例では、S3 バケットに保存されているテンプレートを使用し、`KeyPairName` に値 `TestKey` を設定するパラメータが含まれています

   ```
   aws cloudformation create-stack-set \
     --stack-set-name my-stackset \
     --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \
     --permission-model SERVICE_MANAGED \
     --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
   ```

1. [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-sets.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/list-stack-sets.html) コマンドを使用して、StackSet が作成されたことを確認します。新しい StackSet が結果に表示されます。

   ```
   aws cloudformation list-stack-sets
   ```
   + メンバーアカウントにサインインしているときに `--call-as` オプションを `DELEGATED_ADMIN` に設定した場合、**list-stack-sets** は組織の管理アカウント内のサービスマネージド型のアクセス許可を持つすべての StackSets を返します。
   + AWS アカウント にサインインしているときに `--call-as` オプションを `SELF` に設定した場合、**list-stack-sets** は AWS アカウント 内のすべてのセルフマネージド型の StackSets を返します。
   + 組織の管理アカウントにサインインしているときに `--call-as` オプションを `SELF` に設定した場合、**list-stack-sets** は組織の管理アカウント内のすべての StackSets を返します。

1. [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-instances.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack-instances.html) コマンドを使用して、StackSet にスタックを追加します。`--deployment-targets` オプションで、デプロイ先の OU ID を指定します。

   `--operation-preferences` オプションを使用して、同時アカウント処理およびその他のデプロイ設定を設定します。この例では、カウントベースの設定を使用します。`MaxConcurrentCount` は `FailureToleranceCount` \$1 1 を超えることはできません。パーセンテージベースの設定の場合は、代わりに `FailureTolerancePercentage` または `MaxConcurrentPercentage` を使用します。

   ```
   aws cloudformation create-stack-instances --stack-set-name my-stackset \
     --deployment-targets OrganizationalUnitIds=ou-rcuk-1x5j1lwo,ou-rcuk-slr5lh0a \
     --regions us-west-2 us-east-1 \
     --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0
   ```

   詳細については、「*AWS CloudFormation API リファレンス*」の「[CreateStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStackInstances.html)」を参照してください。

1. **create-stack-instances** 出力の一部として返された `operation-id` を使用して、次の [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html) コマンドを使用し、スタックが正常に作成されたことを確認します。

   ```
   aws cloudformation describe-stack-set-operation \
     --stack-set-name my-stackset \
     --operation-id operation_ID
   ```

------
#### [ Deploy to specific accounts in OUs ]

特定の組織単位 (OU) をターゲットにし、アカウントフィルタリングを使用して、スタックデプロイを受信するアカウントを正確に制御できます。デフォルトでは、アカウントフィルタリングが指定されていない場合、スタックは指定された OU 内のすべてのアカウントにデプロイされます。

AWS CLI で、`--deployment-targets` オプションを使用してアカウントフィルタリングを指定します。詳細については、「[DeploymentTargets](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeploymentTargets.html)」を参照してください。

**create-stack-set** コマンドを使用して StackSet コンテナを作成したら、次のいずれかの例を使用してスタックを特定のアカウントにデプロイします。

**OU 内の特定のアカウントをターゲットにする**  
次の例では、OU1 内のアカウント A1 と A2 にのみスタックをデプロイします。

```
aws cloudformation create-stack-instances --stack-set-name my-stackset \
  --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=INTERSECTION \
  --regions us-west-2 us-east-1
```

**OU からアカウントを除外する**  
次の例では、アカウント A1 と A2 を除く OU1 内のすべてのアカウントにスタックをデプロイします。

```
aws cloudformation create-stack-instances --stack-set-name my-stackset \
  --deployment-targets OrganizationalUnitIds=OU1,Accounts=A1,A2,AccountFilterType=DIFFERENCE \
  --regions us-west-2 us-east-1
```

------