在不同的应用程序中部署 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. 为您的 Amazon EC2 实例.
注意 记录此 IAM 实例配置文件的 ARN。您需要将它添加到接下来创建的跨存储桶策略中。
-
在开发账户中,请访问 Amazon S3 您在开发账户中创建的 IAM 您刚才在生产帐户中创建的实例配置文件。有关信息,请参阅 示例2: 桶业主授予跨账户的权限.
完成授予跨账户存储桶权限的过程时,请注意以下内容:
-
在示例演练中,账户 A 表示您的开发账户,账户 B 表示您的生产账户。
-
当您 执行账户A(开发账户)任务,修改以下桶策略以授予跨帐户权限,而不是使用演示中提供的示例策略。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Cross-account permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws-cn:iam::
account-id
:role/role-name
" }, "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws-cn:s3:::bucket-name
/*" ] } ] }account-id
表示您刚创建的生产帐户的账号 IAM 实例配置文件。role-name
代表该 IAM 您刚创建的实例配置文件。bucket-name
表示在步骤1中创建的桶的名称。请确保在存储桶名称之后包括/*
,以提供对存储桶中各个文件的访问权限。
-
步骤 3 在生产账户中创建资源和跨客户角色
在生产账户中:
-
创建您的 CodeDeploy 资源 — 应用、部署组、部署配置、 Amazon EC2 实例, Amazon EC2 实例配置文件、服务角色等 — 使用本指南中的说明。
-
创建额外角色,一个跨客户 IAM 角色,您的发展帐户中的用户可以假设执行 CodeDeploy 该生产账户中的操作。
使用 演练: 授权访问权限 AWS 账户使用 IAM 角色 作为帮助您创建跨客户角色的指南。您不应将演练中的示例权限添加到策略文档,而是至少应将以下两个 AWS 提供的策略附加到角色:
-
AmazonS3FullAccess
: :只有当 S3 存储桶位于开发账户中时才需要。提供对开发账户(修订存储在其中)中的 Amazon S3 服务和资源具有完整访问权限的已代入生产账户角色。 -
AWSCodeDeployDeployerAccess
: :允许 IAM 用户注册和部署修订。
如果您想创建和管理部署组,而不是只是启动部署,请添加
AWSCodeDeployFullAccess
政策而非AWSCodeDeployDeployerAccess
政策。有关使用 IAM 授权权限的管理策略 CodeDeploy 任务,请参阅 适用于 的 AWS 托管(预定义)策略CodeDeploy.如果您希望在使用此跨账户角色时在其他 AWS 服务中执行任务,可以附加其他策略。
-
在您创建跨账户 IAM 角色时,请记录详细信息,您需要这些详细信息来获取对生产账户的访问权限。
要使用 AWS 管理控制台 来切换角色,您需要提供以下内容之一:
-
用于通过所代入角色的凭证来访问生产账户的 URL。您将在 审核 页面,在跨客户角色创建过程结束时显示。
-
跨账户角色的名称以及账户 ID 编号或别名。
要使用 AWS CLI 切换角色,您需要提供以下内容:
-
您将代入的跨账户角色的 ARN。
步骤 4. 上传应用程序修订版 Amazon S3 桶
在您创建了 Amazon S3 存储桶的账户中:
-
将您的应用程序修订上传到 Amazon S3 存储桶。有关信息,请参阅将 CodeDeploy 的修订推送到 Amazon S3(仅限 EC2/本地部署).
步骤 5. 假设跨客户角色和部署应用程序
在开发账户中,您可以使用 AWS CLI 或 AWS 管理控制台 承担跨客户角色,并在生产帐户中启动部署。
如何使用 AWS 管理控制台 要切换角色并启动部署,请参阅 切换到角色(AWS管理控制台) 和 创建 EC2/本地 计算平台 部署(控制台).
如何使用 AWS CLI 要承担跨客户角色并启动部署,请参阅 切换到iam角色(AWS命令行界面) 和 创建 EC2/本地 计算平台 部署 (CLI).
如需更多关于假设 AWS STS,参见 假设 在 AWS安全令牌服务用户指南 和 假定角色 在 AWSCLI命令参考.
相关主题: