第 2 步:为 CodeDeploy 创建服务角色 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

第 2 步:为 CodeDeploy 创建服务角色

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

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

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

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

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

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

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

  • 阅读和更新 Elastic Load Balancing。

    注意

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

    • ec2:RunInstances

    • ec2:CreateTags

    • iam:PassRole

    有关更多信息,请参阅 。第 2 步:创建服务角色、为 Auto Scaling 组创建启动模板, 和启动模板支持中的Amazon EC2 Auto Scaling 用户指南.

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

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

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

  • 调用 Amazon Lambda 函数。

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

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

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

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

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

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

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

适用于Amazon对于 Lambda 部署,如果您想要允许向 Amazon SNS 发布,请附加AWSCodeDeployRoleForLambda政策。该策略为您的服务角色提供针以下权限:

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

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

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

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

适用于Amazon对于 Lambda 部署,如果您想要限制对 Amazon SNS 的访问权限,请附加AWSCodeDeployRoleForLambdaLimited政策。该策略为您的服务角色提供针以下权限:

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

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

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

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

您可以使用 IAM 控制台创建服务角色,Amazon CLI,或者 IAM API。

创建服务角色(控制台)

  1. 登录 Amazon Web Services Management Console,打开 IAM 控制台 https://console.aws.amazon.com/iam/

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

  3. 在存储库的创建角色页面上,选择Amazon服务,从中找到选择将使用此角色的服务。选择列表,选择CodeDeploy.

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

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

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

    • 适用于Amazon选择 Lambda 部署,选择针对 Lambda CodeDeploy.

  5. 选择 Next:Permissions (下一步:权限)

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

  7. 在存储库的审核在页面上,Role name (角色名称),输入服务角色的名称(例如,CodeDeployServiceRole),然后选择创建角色.

    您还可以在中输入此服务角色的说明。角色描述.

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

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

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

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

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

有关创建服务角色的更多信息,请参阅创建角色以将权限委托给Amazon服务中的IAM 用户指南.

创建服务角色 (CLI)

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

    在文件中保存以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "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 条目的值。稍后创建部署组时将需要它。如果您忘记了值,请按照获取服务角色 ARN (CLI) 中的说明操作。

  3. 调用attach-role-policy命令来指定名为的服务角色CodeDeployServiceRole基于名为的 IAM 托管策略的权限AWSCodeDeployRole. 例如:

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

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

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

要使用 IAM 控制台获取服务角色的 ARN,请执行以下操作:

  1. 登录 Amazon Web Services Management Console,打开 IAM 控制台 https://console.aws.amazon.com/iam/

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

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

  4. 选择 CodeDeployServiceRole

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

获取服务角色 ARN (CLI)

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

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

返回值是服务角色的 ARN。