Amazon ECS CodeDeploy IAM 角色 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon ECS CodeDeploy IAM 角色

在将 CodeDeploy 蓝色/绿色部署类型用于 Amazon ECS 之前,CodeDeploy 服务需要获得代表您更新 Amazon ECS 服务的权限。这些权限是由 CodeDeploy IAM 角色 (ecsCodeDeployRole) 提供的。

注意

用户还需要使用 CodeDeploy 的权限;所需的 IAM 权限 中介绍了这些权限。

提供了两个托管策略。有关更多信息,请参阅《Amazon 托管式策略参考指南》中的以下章节之一:

创建 CodeDeploy 角色

您可以使用以下过程为 Amazon ECS 创建 CodeDeploy 角色

Amazon Web Services Management Console
创建用于 CodeDeploy 的服务角色(IAM 控制台)
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在 IAM 控制台的导航窗格中,选择角色,然后选择创建角色

  3. 对于 Trusted entity type(可信实体类型),选择 Amazon Web Service

  4. 对于服务或使用案例,请选择 CodeDeploy,然后选择 CodeDeploy - ECS 使用案例。

  5. 选择下一步

  6. 附加权限策略部分中,确保选择了 AWSCodeDeployRoleForECS 策略。

  7. 选择下一步

  8. 对于在角色名称,输入 ecsCodeDeployRole

  9. 检查该角色,然后选择创建角色

Amazon CLI

将所有用户输入替换为您自己的信息。

  1. 创建一个名为 codedeploy-trust-policy.json 的文件,其中包含要用于 CodeDeploy IAM 角色的信任策略。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": ["codedeploy.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }
  2. 使用上一步中创建的信任策略创建命名为 ecsCodedeployRole 的 IAM 角色。

    aws iam create-role \ --role-name ecsCodedeployRole \ --assume-role-policy-document file://codedeploy-trust-policy.json
  3. AWSCodeDeployRoleForECSAWSCodeDeployRoleForECSLimited 托管策略附加到 ecsTaskRole 角色。

    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws::iam::aws:policy/AWSCodeDeployRoleForECS
    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws::iam::aws:policy/AWSCodeDeployRoleForECSLimited

当服务中的任务需要某个任务执行角色时,必须将每个任务执行角色或任务角色覆盖的 iam:PassRole 权限作为策略添加到 Codeploy 角色。

任务执行角色权限

当服务中的任务需要某个任务执行角色时,必须将每个任务执行角色或任务角色覆盖的 iam:PassRole 权限作为策略添加到 Codeploy 角色。有关更多信息,请参阅Amazon ECS 任务执行 IAM 角色Amazon ECS 任务 IAM 角色。然后,将该策略附加到该 CodeDeploy 角色

创建策略

Amazon Web Services Management Console
使用 JSON 策略编辑器创建策略
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在左侧的导航窗格中,选择策略

    如果这是您首次选择策略,则会显示欢迎访问托管式策略页面。选择开始使用

  3. 在页面的顶部,选择创建策略

  4. 策略编辑器部分,选择 JSON 选项。

  5. 输入以下 JSON 策略文档:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"] } ] }
  6. 选择下一步

    注意

    您可以随时在可视化JSON 编辑器选项卡之间切换。不过,如果您进行更改或在可视化编辑器中选择下一步,IAM 可能会调整策略结构以针对可视化编辑器进行优化。有关更多信息,请参阅《IAM 用户指南》中的调整策略结构

  7. 查看并创建页面上,为您要创建的策略输入策略名称描述(可选)。查看此策略中定义的权限以查看策略授予的权限。

  8. 选择创建策略可保存新策略。

创建策略后,将策略附加到 CodeDeploy 角色。有关如何将策略附加到角色的信息,请参阅《Amazon Identity and Access Management 用户指南》中的修改角色权限策略(控制台)

Amazon CLI

将所有用户输入替换为您自己的信息。

  1. 使用以下内容创建名为 blue-green-iam-passrole.json 的文件。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["arn:aws:iam::<aws_account_id>:role/<ecsCodeDeployRole>"] } ] }
  2. 使用以下命令通过 JSON 策略文档文件创建 IAM 策略。

    aws iam create-policy \ --policy-name cdTaskExecutionPolicy \ --policy-document file://blue-green-iam-passrole.json
  3. 使用以下命令检索您创建的 IAM 策略的 ARN。

    aws iam list-policies --scope Local --query 'Policies[?PolicyName==`cdTaskExecutionPolicy`].Arn'
  4. 使用以下命令将策略附加到 CodeDeploy IAM 角色。

    aws iam attach-role-policy \ --role-name ecsCodedeployRole \ --policy-arn arn:aws:iam:111122223333:aws:policy/cdTaskExecutionPolicy