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

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

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

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

您添加到服务角色的权限指定了 AWS CodeDeploy 在访问您的 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 策略为您的服务角色提供针对以下内容的权限:

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

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

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

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

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

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

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

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

  9. Trust relationships 选项卡上,选择 Edit trust relationship

  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 的文本文件。使用此文件可允许 AWS 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.

    在命令输出中,记录 Role 对象下方 Arn 条目的值。稍后创建部署组时将需要它。如果您忘记了值,请按照获取服务角色 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. Filter 框中,键入 CodeDeployServiceRole,然后按 Enter。

  4. 选择 CodeDeployServiceRole

  5. 记录 Role ARN 字段的值。

获取服务角色 ARN (CLI)

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

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

返回值是服务角色的 ARN。