我正在使用cloudformation和yaml语法设置AWS ECS服务。
有时,在相关的documentation中有一个名为Role
的属性,其定义如下:
角色
AWS身份和访问管理(IAM)角色的名称或ARN,允许您的Amazon ECS容器代理对您的主机进行呼叫 负载均衡器。
注意,在某些情况下,您可能需要添加对服务角色策略的依赖。有关更多信息,请参阅《 IAM角色策略》。 DependsOn属性。 必填:否 类型:字符串 更新要求:更换
由于我打算将特定服务放置在 Application Load Balancer 之后,是否需要此属性?
如果是这样,我是否需要创建一个新策略,或者是否有任何可以满足此目的的预定义策略?
仅在EC2容器实例级别添加角色/策略就足够了(例如,将其附加到创建亚马逊提供的ECS集群的relevant template中)
我真的很感谢任何示例或用例,因为有关该主题的文档含糊不清且不完整。
答案 0 :(得分:0)
如果要将Application Load balancer
与ECS service
一起使用,则需要Role属性。按照说明,该角色允许您的ECS
服务代理连接到负载均衡器。如果您不使用负载均衡器,则该字段为可选。
也无需在EC2
实例级别上设置角色。由于存在与ECS服务相关的某些策略,因此在实例级别角色添加该策略无效。
请在下面 AWS管理的政策中找到该角色:
{
"AttachedPolicies": [
{
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceAutoscaleRole",
"PolicyName": "AmazonEC2ContainerServiceAutoscaleRole"
},
{
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role",
"PolicyName": "AmazonEC2ContainerServiceforEC2Role"
},
{
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole",
"PolicyName": "AmazonEC2ContainerServiceRole"
}
]
}
信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
答案 1 :(得分:0)
要向应用程序负载平衡器注册服务,您需要服务本身的角色,但是ECS容器需要向集群注册一些权限。
Amazon Elastic Container Service使用AWS Identity and Access 管理(IAM)服务相关角色。与服务相关的角色是 直接链接到Amazon ECS的IAM角色的唯一类型。 与服务相关的角色由Amazon ECS预定义,并且包括所有 该服务在以下位置调用其他AWS服务所需的权限 您的代表。
与服务相关的角色使您更容易设置Amazon ECS 不必手动添加必要的权限。亚马逊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