19

我正在尝试使用 EC2 容器服务。我使用 terraform 来创建它。我已经定义了一个 ecs 集群、自动缩放组、启动配置。一切似乎都奏效了。除了一件事。ec2 实例正在创建,但它们没有在集群中注册,集群只是说没有可用的实例。

在创建实例的 ecs 代理日志中,我发现日志被一个错误淹没:

注册错误:NoCredentialProviders:链中没有有效的提供者

ec2 实例是使用适当的角色 ecs_role 创建的。此角色有两个策略,其中一个是以下策略,例如所需的文档:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:CreateCluster",
        "ecs:DeregisterContainerInstance",
        "ecs:DiscoverPollEndpoint",
        "ecs:Poll",
        "ecs:RegisterContainerInstance",
        "ecs:StartTelemetrySession",
        "ecs:Submit*",
        "ecs:StartTask"
      ],
      "Resource": "*"
    }
  ]
}

我正在使用 ami ami-6ff4bd05。最新的地形。

4

6 回答 6

31

这是角色中信任关系的问题,因为角色应该包括 ec2。不幸的是,错误消息并没有那么有用。

信任关系示例:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": ["ecs.amazonaws.com", "ec2.amazonaws.com"]
      },
      "Effect": "Allow"
    }
  ]
}
于 2016-01-04T19:16:34.973 回答
2

确保在启动配置中选择正确的 ECS 角色。

在此处输入图像描述

于 2020-07-01T21:43:10.253 回答
1

您可能希望将 AmazonEC2RoleforSSM(或 AmazonSSMFullAccess)添加到您的 EC2 角色。

于 2019-05-29T08:28:40.817 回答
0

显然,当传递无效的 aws-profile 时,也会出现此错误消息。

于 2018-12-11T12:50:36.350 回答
0

我花了 2 天时间尝试一切,但没有任何运气。我有一个标准设置,即私有子网中的 ecs 集群实例,公共子网中的 ELB,在各自的安全组中正确设置 NAT 和 IGW,正确定义 IAM 角色,NACL 中的标准配置等。尽管如此,ec2 实例不会向ecs 集群。最后我发现我的自定义 VPC 的 DHCP 选项集是为我的组织内部 DNS IP 的“域名服务器:xx.xx.xx.xx,xx.xx.xx.xx”IP 地址配置的......

解决方案是为 DHCP 选项集设置以下值: 域名: us-west-2.compute.internal(假设您的 vpc 在 us-west-2 中), 选项:域名:us-west-2。 compute.internal 域名服务器: AmazonProvidedDNS

于 2020-05-08T17:51:35.663 回答
0

如果您使用 taskDefinition ,请检查您是否设置了执行和 taskRole ARN,并为该角色设置了正确的策略。

于 2021-08-20T23:58:14.317 回答