在 StackSets 中配置目标账户门 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 StackSets 中配置目标账户门

账户门是一项可选功能,可用于指定一个 Amazon Lambda 函数,以便在 Amazon CloudFormation StackSets 在目标账户中开始执行堆栈操作之前验证该账户是否满足特定要求。账户门的一个常见示例是确认目标账户上无有效或未解决的 CloudWatch 警报。StackSets 将在您每次在目标账户中开始堆栈操作时调用此函数,并且仅在此函数返回 SUCCEEDED 代码时继续。如果 Lambda 函数返回 FAILED 状态,则 StackSets 不会继续执行请求的操作。如果您未配置账户门 Lambda 函数,StackSets 将跳过检查并继续执行操作。

如果您的目标账户的账户门检查失败,则失败的操作将计入您指定的堆栈容错数量或百分比。有关容错能力的更多信息,请参阅堆栈集操作选项

账户门仅适用于 StackSets 操作。该功能不适用于 StackSets 外部的其他 Amazon CloudFormation 操作。

设置要求

下面的列表描述了账户门的设置要求。

  • 要使用 StackSets 账户门功能,Lambda 函数必须命名为 AWSCloudFormationStackSetAccountGate

  • AWSCloudFormationStackSetExecutionRole 需要具有权限以调用 Lambda 函数。如果没有这些权限,StackSets 将跳过账户门检查,并继续堆栈操作。

  • 必须在目标账户中添加 Lambda InvokeFunction 权限,账户门才能正常工作。目标账户信任策略必须具有与管理员账户的信任关系。下面是一个示例策略语句,可授予 Lambda InvokeFunction 权限。

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

示例 Lambda 账户门函数

您可以使用以下示例 Amazon CloudFormation 模板创建 Lambda AWSCloudFormationStackSetAccountGate 函数。有关如何使用任一模板创建新堆栈的更多信息,请参阅 通过 CloudFormation 控制台创建堆栈

模板位置

描述

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

创建实现 Lambda 账户门函数(将返回 FAILED 状态)的堆栈。