Step 3: Create a service role for CodeDeploy - AWS CodeDeploy
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Step 3: Create a service role for CodeDeploy

在 AWS 中,服务角色用于向 AWS 服务授予权限,以便能访问 AWS 资源。The policies that you attach to the service role determine which resources the service can access and what it can do with those resources.

您为 CodeDeploy 创建的服务角色必须授予对您的计算平台所需的权限。如果您部署到多个 计算平台,请为每个平台创建一个服务角色。To add permissions, attach one or more of the following AWS supplied policies:

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

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

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

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

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

  • 读取和更新 Elastic Load Balancing。

    注意

    如果您使用启动模板创建 Auto Scaling 组,则必须添加以下权限:

    • ec2:RunInstances

    • ec2:CreateTags

    • iam:PassRole

    有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的Step 3: Create a service role、创建 Auto Scaling 组的启动模板以及启动模板支持

对于 Amazon ECS 部署,如果您想要针对支持服务的完全访问权限,请附加 AWSCodeDeployRoleForECS 策略。该策略为您的服务角色提供以下权限:

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

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

  • 调用 AWS Lambda 函数。

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

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

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

对于 Amazon ECS 部署,如果您想要针对支持服务的有限访问权限,请附加 AWSCodeDeployRoleForECSLimited 策略。该策略为您的服务角色提供以下权限:

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

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

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

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

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

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

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

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

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

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

Create a service role (console)

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

  2. 在导航窗格中,选择角色,然后选择创建角色

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

  4. 选择您的使用案例下,选择您的使用案例:

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

    • 对于 Amazon ECS 部署,选择 CodeDeploy - ECS

    • 对于 AWS Lambda 部署,选择 适用于 Lambda 的 CodeDeploy

  5. 选择 Next: Permissions

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

  7. Review (审核) 页面的 Role name (角色名称) 中,输入服务角色的名称(例如, CodeDeployServiceRole), and then choose Create role.

    您还可以在 Role description (角色描述) 中输入此服务角色的描述。

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

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

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

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

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

For more information about creating service roles, see Creating a role to delegate permissions to an AWS service in the IAM User Guide.

Create a service role (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
    重要

    务必在文件名前包含 file://。此命令中需要该项。

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

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

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

For more information about creating service roles, see Creating a role for an AWS service in the IAM User Guide.

Get the service role ARN (console)

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

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

  2. 在导航窗格中,选择 Roles (角色)

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

  4. 选择 CodeDeployServiceRole

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

Get the service role ARN (CLI)

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

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

返回值是服务角色的 ARN。