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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

任务 IAM 角色问题排查

如果在为自己集群中的任务配置 IAM 角色时遇到问题,您可以尝试使用这个已知良好的配置来帮助调试自己的配置。

下面的过程可帮助您:

  • 创建 CloudWatch 日志组来存储您的测试日志。

  • 创建具有完全 Amazon ECS 权限的任务 IAM 角色。

  • 使用已知良好的 Amazon CLI 配置注册任务定义,该配置与任务的 IAM 角色兼容。

  • 从该任务定义运行任务,测试您的容器实例是否支持任务的 IAM 角色。

  • 在 “日志” 中查看该任务的容器 CloudWatch 日志,以验证其是否有效。

用已知良好的配置测试任务的 IAM 角色
  1. 创建名为的 CloudWatch 日志日志组ecs-tasks

    1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

    2. 在左侧导航窗格中,依次选择日志操作创建日志组

    3. 对于日志组名称,输入 ecs-tasks,然后选择创建日志组

  2. 为任务创建一个要使用的 IAM 角色。

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

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

    3. 对于 Select type of trusted entity (选择可信任的实体的类型),请选择 Elastic Container Service

    4. 对于 Select your use case (选择您的使用案例),请选择 Elastic Container Service Task (Elastic Container Service 任务)、Next: Permissions (下一步: 权限)。

    5. 附加权限策略页面上,选择 Amazonecs_ FullAccess下一步:查看。

    6. Review 页面上,对于 Role name,输入 ECS-task-full-access,然后选择 Create role

  3. 注册使用您的新角色的任务定义。

    1. https://console.aws.amazon.com/ecs/v2 打开控制台。

    2. 在导航窗格中,选择 Task definitions(任务定义)。

    3. 选择 Create new task definition(创建新的任务定义)、Create new task definition with JSON(使用 JSON 创建新的任务定义)。

    4. 在 JSON 编辑器框中,编辑您的 JSON 文件,

      将下面的示例任务定义 JSON 粘贴到文本区域 (替换预填充的 JSON),然后选择 保存

      注意

      cluster-name 值替换为您的集群名称。将该region值替换为您创建集群的区域。

      将该awslogs-region值替换为您创建 CloudWatch 日志组的区域。

      { "taskRoleArn": "ECS-task-full-access", "containerDefinitions": [ { "memory": 128, "essential": true, "name": "amazonlinux", "image": "amazonlinux", "entryPoint": [ "/bin/bash", "-c" ], "command": ["yum install -y aws-cli; aws ecs list-tasks --cluster cluster-name --region us-west-2"], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "ecs-tasks", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "iam-role-test" } } } ], "family": "iam-role-test", "requiresCompatibilities": ["EC2"], "volumes": [], "placementConstraints": [], "networkMode": null, "memory": null, "cpu": null }
    5. 验证您的信息并选择 Create

  4. 从您的任务定义运行任务。

    1. 在 “任务定义: iam-role-test注册确认” 页上,选择 “部署”、“运行任务”。

    2. 运行任务页面上,选择集群,然后选择部署来运行您的任务。

  5. 在日志控制台中查看容器 CloudWatch 日志。

    1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

    2. 在左侧导航窗格中,选择 Logs

    3. 选择 ecs-tasks 日志组。

    4. 选择最新的日志流。

    5. 向下滚动以查看日志流的最后几行。您应该看到 aws ecs list-tasks 命令的输出。

      { "taskArns": [ "arn:aws:ecs:us-east-1:aws_account_id:task/d48feb62-46e2-4cbc-a36b-e0400b993d1d" ] }

      如果您收到一条“Unable to locate credentials”错误,则以下是可能的原因。