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

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:GetObjectVersion" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }

以下所示的 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:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/UseWithCodeDeploy": "true" } }, "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsTaskExecutionRole", "arn:aws:iam::*:role/ECSTaskExecution*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ecs-tasks.amazonaws.com" ] } } } ] }

为 CodeDeploy 创建 IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。

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

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

  5. 对于 Select your use case(选择您的使用案例),选择 CodeDeploy - ECSNext(下一步)。

  6. Attach permissions policy(附加权限策略)页面上,执行以下操作:

    1. 搜索 AWSCodeDeployRoleForECS,然后选择策略。

    2. Set permissions boundary - optional(设置权限边界 - 可选)下,选择 Create role without a permissions boundary(创建没有权限边界的角色)。

    3. 选择 Next (下一步)

  7. Role details(角色详细信息)下,执行以下操作:

    1. 对于 Role name(角色名称),键入 ecsCodeDeployRole,并输入可选描述。

    2. 对于 Add tags (optional)(添加标签(可选)),指定要与策略关联的任何自定义标签。

  8. 选择 Create role(创建角色)。

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

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

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

    1. 依次选择 Add Permissions(添加权限)和 Attach policies(附加策略)。

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

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

  4. 选择 Trust Relationships(信任关系)。

  5. 验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel。如果信任关系不符合,请选择 Edit trust policy(编辑信任策略),将策略复制到 Policy Document(策略文档)窗口中并选择 Update 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 角色任务的 IAM 角色

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

    1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/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. 对于名称,键入添加的策略的名称,然后选择创建策略