要将您的服务注册到应用程序负载均衡器,您需要服务本身的角色,但 ECS 容器需要一些权限才能注册到集群。
Amazon Elastic Container Service 使用 AWS Identity and Access Management (IAM) 服务相关角色。服务相关角色是一种独特类型的 IAM 角色,直接链接到 Amazon ECS。服务相关角色由 Amazon ECS 预定义,包括该服务代表您调用其他 AWS 服务所需的所有权限。
服务相关角色使设置 Amazon ECS 变得更加容易,因为您不必手动添加必要的权限。Amazon ECS 定义其服务相关角色的权限,除非另有定义,否则只有 Amazon ECS 可以代入其角色。定义的权限包括信任策略和权限策略,并且该权限策略不能附加到任何其他 IAM 实体。
因此,如果您选中此角色,则此包含属性
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
要调试删除角色到服务,它不会注册。
如果您默认使用控制台创建服务,它会附加角色。
在创建和停止任务时,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