

# ターゲットアカウントゲートを使用して失敗した StackSets デプロイを防止する
<a name="stacksets-account-gating"></a>

アカウントゲートは、CloudFormation がターゲットアカウントで StackSets オペレーションを開始する前に、そのアカウントが特定の要件を満たしていることを検証できるオプション機能です。この検証は、前提条件チェックとして機能する AWS Lambda 関数を通じて実行されます。

アカウントゲートの一般的な例としては、ターゲットアカウントにアクティブまたは未解決の CloudWatch アラームがないことを検証することが挙げられます。CloudFormation は、ターゲットアカウントのスタックオペレーションを開始する度に Lambda 関数を呼び出し、`SUCCEEDED` コードが返る場合のみ次に進みます。Lambda 関数より `FAILED` ステータスが返される場合、CloudFormation は要求されたオペレーションを続行しません。Lambda 関数でアカウントゲートを設定していない場合、CloudFormation はこの確認をスキップし、オペレーションを継続します。

ターゲットアカウントでアカウントのゲートチェックを行うことができない場合、失敗したオペレーションは、スタックの指定した耐障害性の数または割合 (%) に含められます。耐障害性の詳細については、「[StackSet オペレーションのオプション](stacksets-concepts.md#stackset-ops-options)」を参照してください。

アカウントゲート機能は、StackSets オペレーションでのみ使用できます。この機能は、StackSets 以外の他の CloudFormation オペレーションでは使用できません。

## 要件
<a name="stacksets-accountgating_reqs"></a>

アカウントゲートでは、次の要件を満たす必要があります。
+ この機能を使用するには、Lambda 関数に `AWSCloudFormationStackSetAccountGate` という名前を付ける必要があります。
+ **AWSCloudFormationStackSetExecutionRole** では、Lambda 関数を呼び出すためのアクセス許可が必要です。これらのアクセス許可がない場合、CloudFormation はアカウントゲート機能の確認をスキップし、スタックオペレーションを続行します。
+ アカウントのゲート作成を行うには、Lambda `InvokeFunction` のアクセス許可をターゲットアカウントに追加する必要があります。ターゲットアカウントの信頼ポリシーには、管理者アカウントとの信頼関係が必要です。Lambda のアクセス許可 (`InvokeFunction`) を付与するポリシーステートメントの例を次に示します。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "lambda:InvokeFunction"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------

## Lambda 関数を作成するための CloudFormation テンプレート
<a name="stacksets-sample-accountgate"></a>

次のサンプルテンプレートを使用して Lambda `AWSCloudFormationStackSetAccountGate` 関数を作成します。これらのいずれかのテンプレートを使用して新しいスタックを作成するには、「[CloudFormation コンソールからスタックを作成する](cfn-console-create-stack.md)」を参照してください。


|  テンプレートの場所  |  説明  | 
| --- | --- | 
|  [https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AccountGateSucceeded.yml](https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AccountGateSucceeded.yml)  |  スタックを作成して、`SUCCEEDED` ステータスを返す Lambda アカウントゲート関数を実装します。  | 
|  [https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AccountGateFailed.yml](https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AccountGateFailed.yml)  |  スタックを作成して、`FAILED` ステータスを返す Lambda アカウントゲート関数を実装します。  | 