首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS ECS服务定义:角色属性

AWS ECS服务定义:角色属性
EN

Stack Overflow用户
提问于 2018-09-06 07:14:44
回答 2查看 1.4K关注 0票数 0

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

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

角色 AWS标识和访问管理(IAM)角色的名称或ARN,该角色允许Amazon容器代理调用负载均衡器。 在某些情况下,Note可能需要添加对服务角色策略的依赖。有关更多信息,请参见DependsOn属性中的IAM角色策略。要求:无类型:字符串更新要求:替换

既然我打算将特定的服务放在应用程序负载均衡器后面,那么是否需要这个属性?

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

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

如果有的话,我会非常感谢任何示例或用例,因为文档在这个主题上是模糊和不完整的。

EN

回答 2

Stack Overflow用户

发布于 2018-09-06 09:19:26

如果要将Application Load balancerECS service一起使用,则需要角色属性。根据描述,角色允许您的ECS服务代理连接到负载均衡器。如果您没有使用负载均衡器,则该字段是可选的。

另外,不需要在EC2实例级别上设置角色。由于有一些与ECS服务相关的策略,因此在实例级别添加它是无效的。

请在下面找到AWS托管策略以创建该角色:

代码语言:javascript
复制
{
"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"
    }
 ]
}

信任关系

代码语言:javascript
复制
{
  "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"
    }
  ]
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-06 13:42:34

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

使用AWS标识和访问管理(IAM)服务链接角色。服务链接角色是一种独特的IAM角色,它直接链接到Amazon。服务链接角色由Amazon预定义,包括服务代表您调用其他AWS服务所需的所有权限。 服务链接角色使得设置Amazon更容易,因为您不必手动添加必要的权限。Amazon定义其服务链接角色的权限,除非另有定义,否则只有Amazon可以承担其角色。定义的权限包括信任策略和权限策略,该权限策略不能附加到任何其他IAM实体。

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

代码语言:javascript
复制
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",

要删除要服务的角色,Debug将不注册。

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

在创建和停止任务时,Amazon需要使用负载均衡器注册和注销容器实例的权限。 在大多数情况下,Amazon服务角色是在Amazon控制台首次运行体验中自动为您创建的。您可以使用以下过程检查和查看您的帐户是否已经具有Amazon服务角色。

这个由具有ARN的AWS管理的策略

代码语言:javascript
复制
arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole
Policy ARN

Amazon服务角色的arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole描述默认策略。

代码语言:javascript
复制
{
    "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集群中显示,并且会引发错误。

代码语言:javascript
复制
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

代码语言:javascript
复制
tail -f ecs-agent.log.2018-09-06

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52198433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档