AWS CodeDeploy
User Guide (API Version 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 New Role

  3. Role Name 框中,提供服务角色名(例如,CodeDeployServiceRole),然后选择 Next Step

  4. Select Role Type 页面上,在选中 AWS Service Roles 的情况下,在 AWS CodeDeploy 旁边选择 Select

  5. Attach Policy 页面上,选中 AWSCodeDeployRole 旁边的框,然后选择 Next Step

    AWSCodeDeployRole 策略为您的服务角色提供必要的权限,以便读取您实例上的标签或者按照 Auto Scaling 组名识别您的 Amazon EC2 实例、将信息发布到 Amazon SNS 主题以及检索有关 CloudWatch 警报的信息。默认情况下,此策略还包括信任关系,该信任关系授予您的服务角色对 AWS CodeDeploy 当前支持的所有终端节点的访问权限。您可以限制服务角色的访问权限,使该角色只能访问指定的这些终端节点。

  6. 记录 Role ARN 字段的值。稍后创建部署组时将需要它。如果您忘记了值,请按照获取服务角色 ARN(控制台) 中的说明操作。

  7. 选择 Create Role

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

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

  9. Trust Relationships 下,选择 Edit Trust Relationship

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

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

    重要

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

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

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

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

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

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

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

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

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

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

  3. Search 框中,键入 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。