

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用目標帳戶閘道來防止失敗的 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)。


|  範本位置  |  Description  | 
| --- | --- | 
| [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) | 建立實作 Lambda 帳戶閘道函數 (將傳回 `SUCCEEDED` 狀態) 的堆疊。 | 
| [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) | 建立實作 Lambda 帳戶閘道函數 (將傳回 `FAILED` 狀態) 的堆疊。 | 