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

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

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

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

您为 CodeDeploy 创建的服务角色必须授予对您的 计算平台 所需的权限。如果您部署到多个 计算平台,请为每个平台创建一个服务角色。要添加权限,请附加以下一个或多个 AWS 提供的策略:

对于 EC2/本地 部署,附加 AWSCodeDeployRole 策略。该策略为您的服务角色提供针以下权限:

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

  • 读取、创建、更新和删除 Amazon EC2 Auto Scaling 组、生命周期挂钩和扩展策略。

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

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

  • 读取和更新 Elastic Load Balancing。

对于 Amazon ECS 部署,附加 AWSCodeDeployRoleForECS 策略。该策略为您的服务角色提供针以下权限:

  • 读取、更新和删除 Amazon ECS 任务集。

  • 更新 Elastic Load Balancing 目标组、侦听器和规则。

  • 调用 AWS Lambda 函数。

  • 访问 Amazon S3 存储桶中的修订文件。

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

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

对于 AWS Lambda 部署,附加 AWSCodeDeployRoleForLambda 策略。该策略为您的服务角色提供针以下权限:

  • 读取、更新和调用 AWS Lambda 函数和别名。

  • 访问 Amazon S3 存储桶中的修订文件。

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

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

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

您可以使用 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. 选择您的使用案例下,选择您的使用案例:

    • 对于 EC2/本地 部署,选择

    • 对于 Amazon ECS 部署,选择

    • 对于 AWS Lambda 部署,选择

  5. 选择 Next: Permissions

  6. 附加的权限策略页面上,会显示权限策略。选择下一步: 标签。

  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。