本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
任务 IAM 角色问题排查
如果在为自己集群中的任务配置 IAM 角色时遇到问题,您可以尝试使用这个已知良好的配置来帮助调试自己的配置。
下面的过程可帮助您:
-
创建 CloudWatch 日志组来存储您的测试日志。
-
创建具有完全 Amazon ECS 权限的任务 IAM 角色。
-
使用已知良好的 Amazon CLI 配置注册任务定义,该配置与任务的 IAM 角色兼容。
-
从该任务定义运行任务,测试您的容器实例是否支持任务的 IAM 角色。
-
在 “日志” 中查看该任务的容器 CloudWatch 日志,以验证其是否有效。
用已知良好的配置测试任务的 IAM 角色
-
创建名为的 CloudWatch 日志日志组
ecs-tasks
。打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/
。 -
在左侧导航窗格中,依次选择日志、操作和创建日志组。
-
对于日志组名称,输入
ecs-tasks
,然后选择创建日志组。
-
为任务创建一个要使用的 IAM 角色。
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。
-
对于 Select type of trusted entity (选择可信任的实体的类型),请选择 Elastic Container Service。
-
对于 Select your use case (选择您的使用案例),请选择 Elastic Container Service Task (Elastic Container Service 任务)、Next: Permissions (下一步: 权限)。
-
在附加权限策略页面上,选择 Amazonecs_ FullAccess,下一步:查看。
-
在 Review 页面上,对于 Role name,输入
ECS-task-full-access
,然后选择 Create role。
-
注册使用您的新角色的任务定义。
-
在导航窗格中,选择 Task definitions(任务定义)。
-
选择 Create new task definition(创建新的任务定义)、Create new task definition with JSON(使用 JSON 创建新的任务定义)。
-
在 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 }
-
验证您的信息并选择 Create。
-
从您的任务定义运行任务。
-
在 “任务定义: iam-role-test注册确认” 页上,选择 “部署”、“运行任务”。
-
在运行任务页面上,选择集群,然后选择部署来运行您的任务。
-
-
在日志控制台中查看容器 CloudWatch 日志。
打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/
。 -
在左侧导航窗格中,选择 Logs。
-
选择
ecs-tasks
日志组。 -
选择最新的日志流。
-
向下滚动以查看日志流的最后几行。您应该看到 aws ecs list-tasks 命令的输出。
{ "taskArns": [ "arn:aws:ecs:us-east-1:
aws_account_id
:task/d48feb62-46e2-4cbc-a36b-e0400b993d1d" ] }如果您收到一条“
Unable to locate credentials
”错误,则以下是可能的原因。-
任务的 IAM 角色功能未在您的容器实例上启用。有关更多信息,请参阅在 Amazon EC2 或外部实例上使用任务 IAM 角色。
-
凭证 URL 已受限。您可以使用
ECS_TASK_METADATA_RPS_LIMIT
容器代理参数来配置限制。有关更多信息,请参阅 Amazon ECS 容器代理配置。
-