AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

在其他 AWS 账户中部署应用程序

组织通常会有多个 AWS 账户用于不同用途(例如,一个用于系统管理任务,另一个用于开发、测试和生产任务;或者一个与开发和测试环境关联,而另一个与生产环境关联)。

虽然您可能在不同账户中执行相关工作,不过 AWS CodeDeploy 部署组和所部署到的 Amazon EC2 实例严格绑定到创建它们时所使用的账户。例如,您无法将在一个账户中启动的实例添加到另一个账户中的部署组。

假设您有两个 AWS 账户:开发账户和生产账户。您主要使用开发账户进行工作,但是希望能够在生产账户中启动部署而无需完整的一组凭证,或者不希望注销开发账户并登录生产账户来进行工作。

完成以下跨账户配置步骤之后,您可以启动属于您组织的另一个账户下的部署,而无需另一个账户的一组完整权限。在此操作过程中,您需要使用 AWS Security Token Service (AWS STS) 提供的功能,该功能可授予您对该账户的临时访问权限。

步骤 1:在任一账户中创建 S3 存储桶

在开发账户或生产账户中:

  • 如果您还未创建,则创建将在其中存储生产账户的应用程序修订的 Amazon S3 存储桶。有关信息,请参阅在 Amazon S3 中创建存储桶。您甚至可以为两个账户使用相同的存储桶和应用程序修订,将您在开发账户中测试和验证的相同文件部署到您的生产环境。

步骤 2:将 Amazon S3 存储桶权限授予生产账户的 IAM 实例配置文件

如果您在步骤 1 中创建的 Amazon S3 存储桶位于您的生产账户中,则不需要此步骤。稍后您将承担的角色具有对此存储桶的访问权限,因为该存储桶也位于生产账户中。

如果您在开发账户中创建了 Amazon S3 存储桶,则执行以下操作:

  • 在生产账户中,创建 IAM 实例配置文件。有关信息,请参阅 步骤 4:创建 IAM 实例配置文件

    注意

    记录此 IAM 实例配置文件的 ARN。您需要将它添加到接下来创建的跨存储桶策略中。

  • 在开发账户中,将您在开发账户中创建的 Amazon S3 存储桶的访问权限授予刚刚在生产账户中创建的 IAM 实例配置文件。有关信息,请参阅示例 2:存储桶拥有者授予跨账户存储桶权限

    完成授予跨账户存储桶权限的过程时,请注意以下内容:

    • 在示例演练中,账户 A 表示您的开发账户,账户 B 表示您的生产账户。

    • 当您执行账户 A(开发账户)任务时,修改以下存储桶策略以授予跨账户权限,而不是使用演练中提供的示例策略。

      Copy
      { "Version": "2012-10-17", "Statement": [ { "Sid": "Cross-account permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::bucket-name/*" ] } ] }

      account-id 表示您刚刚创建了 IAM 实例配置文件的生产账户的账户编号。

      role-name 表示您刚刚创建的 IAM 实例配置文件的名称。

      bucket-name 表示您在步骤 1 中创建的存储桶的名称。请确保在存储桶名称之后包括 /*,以提供对存储桶中各个文件的访问权限。

步骤 3:在生产账户中创建资源和跨账户角色

在生产账户中:

  • 按照本指南中提供的说明创建 AWS CodeDeploy 资源:应用程序、部署组、部署配置、Amazon EC2 实例、Amazon EC2 实例配置文件、服务角色等等。

  • 创建附加角色,即跨账户 IAM 角色,您开发账户中的用户可以代入该角色以在此生产账户中执行 AWS CodeDeploy 操作。

    使用演练:使用 IAM 角色委派跨 AWS 账户的访问权限作为指南来帮助您创建跨账户角色。您不应将演练中的示例权限添加到策略文档,而是至少应将以下两个 AWS 提供的策略附加到角色:

    • AmazonS3FullAccess:只有当 S3 存储桶位于开发账户中时才需要。提供对开发账户(修订存储在其中)中的 Amazon S3 服务和资源具有完整访问权限的已代入生产账户角色。

    • AWSCodeDeployDeployerAccess:允许 IAM 用户注册和部署修订。

    如果要创建和管理部署组而不是启动部署,请添加 AWSCodeDeployFullAccess 策略而不是 AWSCodeDeployDeployerAccess 策略。有关使用 IAM 托管策略为 AWS CodeDeploy 任务授予权限的更多信息,请参阅适用于 AWS CodeDeploy 的 AWS 托管(预定义)策略

    如果您希望在使用此跨账户角色时在其他 AWS 服务中执行任务,可以附加其他策略。

重要

在您创建跨账户 IAM 角色时,请记录详细信息,您需要这些详细信息来获取对生产账户的访问权限。

要使用 AWS 管理控制台 来切换角色,您需要提供以下内容之一:

  • 用于通过所代入角色的凭证来访问生产账户的 URL。您可以在 Review 页面上找到该 URL,该页面在跨账户角色创建过程结束时显示。

  • 跨账户角色的名称以及账户 ID 编号或别名。

要使用 AWS CLI 切换角色,您需要提供以下内容:

  • 您将代入的跨账户角色的 ARN。

步骤 4:将应用程序修订上传到 Amazon S3 存储桶

在您创建了 Amazon S3 存储桶的账户中:

  • 将您的应用程序修订上传到 Amazon S3 存储桶。有关信息,请参阅 推送修订

步骤 5:代入跨账户角色和部署应用程序

在开发账户中,您可以使用 AWS CLI 或 AWS 管理控制台 来代入跨账户角色并在生产账户中启动部署。

有关如何使用 AWS 管理控制台 来切换角色和启动部署的说明,请参阅切换到角色(AWS 管理控制台)创建部署 (控制台)

有关如何使用 AWS CLI 来代入跨账户角色和启动部署的说明,请参阅切换到 IAM 角色(AWS 命令行界面)创建部署 (CLI)

有关通过 AWS STS 代入角色的更多信息,请参阅 AWS Security Token Service 用户指南中的 AssumeRoleAWS CLI 命令参考中的 assume-role

相关主题: