繁体   English   中英

AWS ECS服务定义:角色属性

[英]AWS ECS Service Definition: Role property

我正在使用cloudformation和yaml语法设置AWS ECS服务。

有时,相关文档中有一个名为Role的属性,其定义如下:

角色

AWS Identity and Access Management(IAM)角色的名称或ARN,允许您的Amazon ECS容器代理调用您的负载均衡器。

注意在某些情况下,您可能需要添加对服务角色策略的依赖关系。 有关更多信息,请参阅DependsOn属性中的IAM角色策略。 必需:否类型:字符串更新需要:替换

由于我打算将特定服务放在Application Load Balancer后面,是否需要此属性?

如果是这样,我是否需要创建一个新策略,或者是否有任何可以满足此目的的预定义策略?

如果仅在EC2容器实例级别上添加角色/策略,就足够了(例如,将其添加到创建由亚马逊提供的ECS集群的相关模板中)吗?

如果有任何示例或用例,我将不胜感激,因为文档含糊不清且不完整。

如果要将ECS serviceApplication Load balancer一起使用,则需要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"
    }
  ]
}

要向应用程序负载平衡器注册服务,您需要服务本身的角色,但是ECS容器需要向集群注册一些权限。

Amazon Elastic Container Service使用与AWS Identity and Access Management(IAM)服务链接的角色。 服务链接角色是一种直接与Amazon ECS链接的IAM角色的独特类型。 与服务相关的角色由Amazon ECS预定义,并且包含该服务代表您调用其他AWS服务所需的所有权限。

与服务相关的角色使您更容易设置Amazon ECS,因为您不必手动添加必要的权限。 Amazon ECS定义其服务链接角色的权限,除非另有定义,否则只有Amazon ECS可以承担其角色。 定义的权限包括信任策略和权限策略,并且该权限策略不能附加到任何其他IAM实体。

因此,如果您检查此角色,则此包含属性

"elasticloadbalancing:RegisterInstancesWithLoadBalancer",

要进行调试,请删除要服务的角色,它将不会注册。

如果默认情况下使用控制台创建服务,它将附加角色。

创建和停止任务时,Amazon ECS需要具有使用负载平衡器注册和注销容器实例的权限。

在大多数情况下,将在Amazon ECS控制台的首次运行体验中自动为您创建Amazon ECS服务角色。 您可以使用以下过程检查并查看您的帐户是否已经具有Amazon ECS服务角色。

由具有ARN的AWS管理的策略

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM