在 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
权限,账户门才能正常工作。目标账户信任策略必须具有与管理员账户的信任关系。下面是一个示例策略语句,可授予 LambdaInvokeFunction
权限。{ "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 账户门函数(将返回 |
https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AccountGateFailed.yml |
创建实现 Lambda 账户门函数(将返回 |