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

Amazon ECS CloudWatch Events IAM 角色

CloudWatch Events 服务需要先获得代表您运行 Amazon ECS 任务的权限,然后您才能将 Amazon ECS 任务用于 CloudWatch Events 规则和目标。这些权限是由 CloudWatch Events IAM 角色 (ecsEventsRole)提供的。

当您配置计划任务时,系统会在 Amazon Web Services Management Console 中自动为您创建 CloudWatch Events 角色。有关更多信息,请参阅计划任务

AmazonEC2ContainerServiceEventsRole 策略如下所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "*" ], "Condition": { "StringLike": { "iam:PassedToService": "ecs-tasks.amazonaws.com" } } } ] }

如果计划任务需要使用任务执行角色、任务角色或任务角色覆盖,则必须将每个任务执行角色、任务角色或任务角色覆盖的 iam:PassRole 权限添加到 CloudWatch Events IAM 角色。有关任务执行角色的更多信息,请参阅Amazon ECS 任务执行 IAM 角色

注意

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

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

您可以使用以下过程检查您的账户是否已经拥有 CloudWatch Events IAM 角色,并根据需要手动创建。

检查 IAM 控制台中的 CloudWatch Events IAM 角色

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

  2. 在导航窗格中,选择 Roles(角色)。

  3. 在角色列表中搜索 ecsEventsRole。如果该角色不存在,请使用下一个过程创建该角色。如果角色存在,请选择角色以查看附加的策略。

  4. Permissions(权限)选项卡上,确保将 AmazonEC2ContainerServiceEventsRole 托管策略附加到该角色。如果附加该策略,则将正确配置 Amazon ECS 任务执行角色。否则,请执行以下子步骤来附加策略。

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

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

    3. 选中 AmazonEC2ContainerServiceEventsRole 策略左侧的框并选择 Attach policy(附加策略)。

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

  6. 验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel。如果信任关系不符合,请选择 Edit trust policy(编辑信任策略),将策略复制到 Policy Document(策略文档)窗口中并选择 Update policy(更新策略)。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

为 CloudWatch Events 创建 IAM 角色

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

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

  3. Trusted entity type(可信实体类型)部分,选择 Amazon service(Amazon 服务)、Elastic Container Service

  4. 对于 Use case(使用案例),选择 Elastic Container Service Task(Elastic Container Service 任务),然后选择 Next(下一步)。

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

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

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

    3. 选择 Next (下一步)

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

    1. 对于 Role name(角色名称),键入 ecsEventsRole

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

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

  8. 在角色列表中搜索 ecsEventsRole 并选择您刚刚创建的角色。

  9. Permissions(权限)选项卡上,选择 Add Permissions(添加权限)、Attach policies(附加策略)。

  10. 将现有信任关系替换为以下文本。选择 Edit trust policy(编辑信任策略),将策略复制到 Policy Document(策略文档)窗口中并选择 Update policy(更新策略)。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

添加任务执行角色的权限到 CloudWatch Events IAM 角色

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

  2. 在导航窗格中,选择 PoliciesCreate policy

  3. 选择 JSON,粘贴以下策略,然后选择 查看策略

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::<aws_account_id>:role/<ecsTaskExecutionRole_or_TaskRole_name>" ] } ] }
  4. 对于名称,键入 AmazonECSEventsTaskExecutionRole,也可输入描述,然后选择创建策略

  5. 在导航窗格中,选择 Roles(角色)。

  6. 搜索角色列表,找到 ecsEventsRole,选择该角色来查看附加的策略。

  7. 选择 Attach policy(附上策略)。

  8. 附加策略部分,选择 AmazonECSEventsTaskExecutionRole 策略,然后选择附加策略