AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

先决条件

要开始使用 AWS CloudFormation StackSets,您应了解 AWS CloudFormation 的工作原理,并有一些使用 AWS CloudFormation 模板和堆栈的经验。

您需要先在 AWS 账户中创建下列资源和权限,然后才能开始创建第一个堆栈集。

  • 确定哪个 AWS 账户是管理员账户。将在此账户中创建堆栈集。目标账户是在其中创建属于堆栈集的各个堆栈的账户。

  • 按照此部分中的说明操作来创建设置正确的管理员和目标账户信任关系的角色。确保您在目标账户中创建的角色 (步骤 2) 具有权限,以便 AWS CloudFormation 能够在您的模板中定义的资源上运行。

主题

账户设置

在开始之前,您的管理员账户和目标账户必须已配置服务角色 (在账户之间创建信任关系并授予目标账户对模板中所述资源的创建和管理权限)。

设置所需服务角色

  1. 在管理员账户中,创建一个名为 AWSCloudFormationStackSetAdministrationRole 的 IAM 角色。您可通过从以下 AWS CloudFormation 模板 (可在线访问 https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml 来获取该模板) 创建堆栈来做到这一点。此模板创建的角色将在您的管理员账户上启用以下策略。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }

    以下信任关系是由上述模板创建的。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 在每个目标账户中,创建一个信任管理员账户的名为 AWSCloudFormationStackSetExecutionRole 的服务角色。您可通过从以下 AWS CloudFormation 模板 (可在线访问 https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml 来获取该模板) 创建堆栈来做到这一点。当您使用此模板时,系统将提示您提供目标账户必须与其具有信任关系的管理员账户的名称。

    重要

    请注意,此模板将向管理员授予访问权限。在您使用此模板创建目标账户执行角色之后,您必须将策略声明中的权限的范围限定为您正使用 StackSets 创建的资源的类型。

    目标账户服务角色需要权限才能执行 AWS CloudFormation 模板中指定的任何操作。例如,如果您的模板正在创建 S3 存储桶,则您需要权限才能为 S3 创建新对象。您的目标账户始终需要完整的 AWS CloudFormation 权限,其中包含创建、更新、删除和描述堆栈的权限。此模板创建的角色将在目标账户上启用以下策略。

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

    以下示例显示了一个包含让 StackSets 运行所需的最低权限的策略声明。要在使用除 AWS CloudFormation 之外的服务中的资源的目标账户中创建堆栈,您必须将这些服务操作和资源添加到每个目标组的 AWSCloudFormationStackSetExecutionRole 策略声明。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "s3:*", "sns:*" ], "Resource": "*" } ] }

    以下信任关系是由此模板创建的。管理员账户的 ID 显示为 admin_account_id

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:root" }, "Action": "sts:AssumeRole" } ] }

    您可以配置现有目标账户执行角色的信任关系以信任管理员账户中的特定角色。如果您在管理员账户中删除此角色并创建一个新角色来替代它,则您必须使用新的管理员账户角色 (由上一示例中的 admin_account_id 表示) 配置您的目标账户信任关系。

本页内容: