AWS CodeDeploy
用户指南 (API 版本 2014-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

本指南中的过程支持新的控制台设计。如果您选择使用较旧版本的控制台,可以在本指南中找到许多仍然适用的概念和基本过程。要访问新控制台中的帮助,请选择信息图标。

步骤 3:为 CodeDeploy 创建服务角色

在 AWS 中,服务角色用于向 AWS 服务授予权限,以便能访问 AWS 资源。附加到服务角色的策略将确定服务可访问的 AWS 资源以及可使用这些资源执行的操作。

对于您为 CodeDeploy 创建的服务角色,必须向其授予对您将应用程序部署到的实例的访问权限。利用这些权限,CodeDeploy 能够读取已应用于实例的标签或与实例关联的 Amazon EC2 Auto Scaling 组名称。

您添加到服务角色的权限指定了 CodeDeploy 在访问您的 Amazon EC2 实例和 Amazon EC2 Auto Scaling 组时可执行的操作。要添加这些权限,请将 AWS 提供的策略 AWSCodeDeployRole 附加到服务角色。

在设置服务角色过程中,您还可以更新其信任关系,指定您希望向其授予访问权限的终端节点。

您可以使用 IAM 控制台、AWS CLI 或 IAM API 创建服务角色。

创建服务角色(控制台)

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Roles,然后选择 Create Role

  3. Create role (创建角色) 页面上,选择 AWS service (AWS 服务),然后从 Choose the service that will use this role (选择将使用此角色的服务) 列表中,选择 CodeDeploy.

  4. 选择您的使用案例中,选择 CodeDeploy

  5. 选择 Next: Permissions

  6. Attached permissions policy 页面上,如果有一个框紧挨着AWSCodeDeployRole,选择它,然后选择 Next: Review

    AWSCodeDeployRole 策略为您的服务角色提供针对以下内容的权限:

    • 阅读您实例上的标签或通过 Amazon EC2 Auto Scaling 组名称来识别您的 Amazon EC2 实例。

    • 将信息发布到 Amazon SNS 主题。

    • 检索有关 CloudWatch 警报的信息。

    • 检索有关 Elastic Load Balancing 的信息。

  7. Review 页面上的 Role name 中,键入服务角色 (例如, CodeDeployServiceRole), and then choose Create role.

    您还可以在 Deployment Description 框中键入此服务角色的说明。

  8. 如果您希望此服务角色有权访问所有当前支持的终端节点,则您已完成了此过程。

    要限制此服务角色访问一些终端节点,则在角色列表中,浏览并选择您创建的角色,然后继续下一步。

  9. 信任关系选项卡上,选择编辑信任关系

  10. 您应该看到以下策略,该策略向服务角色提供访问所有支持的终端节点的权限:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com.cn" ] }, "Action": "sts:AssumeRole" } ] }

有关创建服务角色的更多信息,请参阅 IAM 用户指南 中的创建向 AWS 服务委派权限的角色

创建服务角色 (CLI)

  1. 例如,在您的开发计算机上,创建一个名为 CodeDeployDemo-Trust.json 的文本文件。使用此文件可允许 CodeDeploy 代表您执行操作。

    在文件中保存以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com.cn" ] }, "Action": "sts:AssumeRole" } ] }
  2. 从相同的目录调用 create-role 命令,根据刚刚创建的文本文件中的信息创建名为 CodeDeployServiceRole 的服务角色:

    aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json

    重要

    Be sure to include file:// before the file name. It is required in this command.

    在命令输出中,记录 Arn 对象下方 Role 条目的值。稍后创建部署组时将需要它。如果您忘记了值,请按照获取服务角色 ARN (CLI) 中的说明操作。

  3. 调用 attach-role-policy 命令以根据名为 AWSCodeDeployRole 的 IAM 托管策略向名为 CodeDeployServiceRole 的服务角色授予权限。例如:

    aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws-cn:-cn:iam::aws:policy/service-role/AWSCodeDeployRole

有关创建服务角色的更多信息,请参阅 IAM 用户指南 中的为 AWS 服务创建角色

获取服务角色 ARN(控制台)

使用 IAM 控制台获取服务角色的 ARN:

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Roles

  3. 筛选条件框中,键入 CodeDeployServiceRole,然后按 Enter。

  4. 选择 CodeDeployServiceRole

  5. 记下 Role ARN (角色 ARN) 字段的值。

获取服务角色 ARN (CLI)

要使用 AWS CLI 获取服务角色的 ARN,请对名为 CodeDeployServiceRole 的服务角色调用 get-role 命令:

aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text

返回值是服务角色的 ARN。