要将您的服务注册到应用程序负载均衡器,您需要服务本身的角色,但 ECS 容器需要一些权限才能注册到集群。
Amazon Elastic Container Service 使用 AWS Identity and Access
管理 (IAM) 服务相关角色。服务相关角色是
直接链接到 Amazon ECS 的唯一类型的 IAM 角色。
服务相关角色由 Amazon ECS 预定义,包括所有
服务调用其他 AWS 服务所需的权限
代表你。
服务相关角色使设置 Amazon ECS 更加容易,因为您
不必手动添加必要的权限。亚马逊 ECS
定义其服务相关角色的权限,除非
否则,只有 Amazon ECS 可以担任其角色。定义的
权限包括信任策略和权限策略,以及
该权限策略不能附加到任何其他 IAM 实体。
所以如果你选中这个角色,这个包含属性
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
要Debug删除角色到服务,它不会注册。
如果您默认使用控制台创建服务,它会附加角色。
Amazon ECS 需要注册和注销容器的权限
创建和停止任务时使用负载均衡器的实例。
在大多数情况下,Amazon ECS 服务角色是自动创建的
为您在 Amazon ECS 控制台中的首次运行体验。您可以使用
以下程序检查您的帐户是否已经有
一个 Amazon ECS 服务角色。
此由 AWS 管理的具有 ARN 的策略
arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole
Policy ARN
arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole
说明 Amazon ECS 服务角色的默认策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupIngress",
"ec2:Describe*",
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
"elasticloadbalancing:DeregisterTargets",
"elasticloadbalancing:Describe*",
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
"elasticloadbalancing:RegisterTargets"
],
"Resource": "*"
}
]
}
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/check-service-role.html
这就是它的样子
如果您没有为 ECS 容器实例分配角色,它将永远不会在您的 ECS 集群中显示,并且会引发错误
2018-09-06T15:26:22Z [ERROR] Could not register: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
/var/logs/ecs下
tail -f ecs-agent.log.2018-09-06
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html