Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon ECS CodeDeploy IAM 角色

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

注意

IAM 用户还需要使用 CodeDeploy 的权限;蓝/绿部署所需的 IAM 权限中描述了这些权限。

提供了两个托管策略。以下所示的 AWSCodeDeployRoleForECS 策略向 CodeDeploy 授予使用相关操作更新任何资源的权限。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule", "lambda:InvokeFunction", "cloudwatch:DescribeAlarms", "sns:Publish", "s3:GetObject", "s3:GetObjectMetadata", "s3:GetObjectVersion" ], "Resource": "*", "Effect": "Allow" } ] }

以下所示的 AWSCodeDeployRoleForECSLimited 策略向 CodeDeploy 授予更多有限权限。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:DescribeServices", "ecs:CreateTaskSet", "ecs:UpdateServicePrimaryTaskSet", "ecs:DeleteTaskSet", "cloudwatch:DescribeAlarms" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:*:*:CodeDeployTopic_*", "Effect": "Allow" }, { "Action": [ "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:ModifyListener", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:ModifyRule" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:CodeDeployHook_*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectMetadata", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" } ] }

创建用于 CodeDeploy 的 IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 RolesCreate role

  3. Select type of trusted entity (选择受信任实体的类型) 部分中,选择 AWS 服务

  4. 对于选择将使用此角色的服务,选择 CodeDeploy

  5. 对于选择您的使用案例,选择 CodeDeploy,然后选择下一步: 权限

  6. 选择下一步: 标签

  7. 对于添加标签(可选),您可以向角色添加可选的 IAM 标签。完成后,选择下一步: 审核

  8. 对于角色名称,键入 ecsCodeDeployRole,输入可选描述,然后选择创建角色

将所需权限添加到 Amazon ECS CodeDeploy IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在角色列表中搜索 ecsCodeDeployRole。如果该角色不存在,请使用上述过程创建该角色。如果角色存在,请选择角色以查看附加的策略。

  3. Permissions policies (权限策略) 部分中,确保将 AWSCodeDeployRoleForECSAWSCodeDeployRoleForECSLimited 托管策略附加到角色。如果附加该策略,则将正确配置 Amazon ECS CodeDeploy 服务角色。否则,请执行以下子步骤来附加策略。

    1. 选择附加策略。​

    2. 要缩小要附加的可用策略的范围,请为筛选条件键入 AWSCodeDeployRoleForECSAWSCodeDeployRoleForECSLimited

    3. 选中 AWS 托管策略左侧的框并选择附加策略

  4. 选择信任关系,然后选择编辑信任关系

  5. 验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel。如果信任关系不符合,请将策略复制到 Policy Document 窗口中并选择 Update Trust Policy

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. 如果使用蓝/绿部署类型的 Amazon ECS 服务中的任务要求使用任务执行角色或任务角色覆盖,则必须将每个任务执行角色或任务角色覆盖的 iam:PassRole 权限作为内联策略添加到 CodeDeploy IAM 角色。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色Amazon ECS 任务角色

    按照以下子步骤创建内联策略。

    1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

    2. 在角色列表中搜索 ecsCodeDeployRole。如果该角色不存在,请使用上述过程创建该角色。如果角色存在,请选择角色以查看附加的策略。

    3. Permissions policies (权限策略) 部分中,选择 Add inline policy (添加内联策略)

    4. 选择 JSON 选项卡,然后添加以下策略文本。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>" ] } ] }

      注意

      指定您的任务执行角色或任务角色覆盖的完整 ARN。

    5. 选择查看策略

    6. 对于名称,键入添加的策略的名称,然后选择创建策略