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

在 AWS CloudFormation StackSets 中配置目标账户门

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

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

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

设置要求

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

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

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

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

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

示例 Lambda 账户门函数

您可以使用以下示例 AWS CloudFormation 模板创建 Lambda AWSCloudFormationStackSetAccountGate 函数。有关如何使用任一模板创建新堆栈的更多信息,请参阅此指南中的创建堆栈

模板位置

描述

https://s3.amazonaws.com/cloudformation-stackset-templates-us-east-1/cloudformation-stack-set-accountgate-succeeded.template

创建一个堆栈以实施返回 SUCCEEDED 状态的 Lambda 账户门函数。

https://s3.amazonaws.com/cloudformation-stackset-templates-us-east-1/cloudformation-stack-set-accountgate-failed.template

创建一个堆栈以实施返回 FAILED 状态的 Lambda 账户门函数。