AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon 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 权限。

    Copy
    { "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

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

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

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