Amazon web services 注册错误:NoCredentialProviders:链ECS代理中没有有效的提供程序错误

Amazon web services 注册错误:NoCredentialProviders:链ECS代理中没有有效的提供程序错误,amazon-web-services,amazon-ec2,ec2-ami,terraform,amazon-ecs,Amazon Web Services,Amazon Ec2,Ec2 Ami,Terraform,Amazon Ecs,我正在尝试使用EC2容器服务。我正在使用terraform来创建它。 我已经定义了ecs集群、自动缩放组、启动配置。一切似乎都起作用了。除了一件事。ec2实例正在创建,但它们没有在集群中注册,集群只是说没有可用的实例 在创建实例的ecs代理日志中,我发现日志中充斥着一个错误: 注册错误:NoCredentialProviders:链中没有有效的提供程序 ec2实例是使用适当的角色ecs\U角色创建的。此角色有两个策略,其中一个策略如下,如所需的文档: { “版本”:“2012-10-17”, “

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

在创建实例的ecs代理日志中,我发现日志中充斥着一个错误:

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

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

{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“行动”:[
“ecs:CreateCluster”,
“ecs:取消注册容器状态”,
“ecs:发现端点”,
“ecs:Poll”,
“ecs:RegisterContainerInstance”,
“ecs:StartTelemetrySession”,
“ecs:提交*”,
“ecs:StartTask”
],
“资源”:“*”
}
]
}

我正在使用ami。最新的terraform。

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

信任关系示例:

{
“版本”:“2008-10-17”,
“声明”:[
{
“行动”:“sts:假设角色”,
“委托人”:{
“服务”:[“ecs.amazonaws.com”、“ec2.amazonaws.com”]
},
“效果”:“允许”
}
]
}

显然,当传递无效的aws配置文件时,也会出现此错误消息。

您可能需要将AmazonEC2RoleforSSM(或AmazonSmFullAccess)添加到EC2的角色中

我花了两天的时间尝试了所有的东西,但没有一点运气。我有一个标准设置,即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(假设您的专有网络位于us-west-2), 选项:域名:us-west-2.compute.internal
域名服务器:Amazon提供的DNS

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


OMFG,过去3-4天,我一直在做这件事,尝试了所有的方法,这一切都解决了问题。你是怎么偶然发现这个的,我在别的地方都没看到!!很多人提到公共IP、角色等,但你是唯一提到信任关系的人。非常感谢。它真的起作用了!这太愚蠢了!(希望您能听到)ECS集群是您第一次运行wizzard创建的,一切都是按照ECS开发者手册进行的,在我找到这个答案之前,你还是浪费了我3个小时。2018年11月27日-我在尝试该政策时得到了这个结论:该政策包含以下错误:已禁止现场原则同意。此问题的错误报告非常糟糕。这在terraform batch resource中适用。我必须将
arn:aws:iam::aws:policy/service role/amazonec2roleforsm
策略附加到
batch\u instance\u role