代码之家  ›  专栏  ›  技术社区  ›  pkaramol

AWS ECS服务定义:角色属性

  •  0
  • pkaramol  · 技术社区  · 7 年前

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

    在某些方面,在相关的 documentation 有一个属性名为 Role 其定义如下:

    角色

    允许您的Amazon ECS容器代理调用您的 负载平衡器。

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

    因为我打算把特定的服务放在 应用程序负载平衡器 ,是否需要此属性?

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

    如果我只是在ec2容器实例级别上添加角色/策略(例如,将其附加到 relevant template 创建了Amazon提供的ecs集群?)

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

    2 回复  |  直到 7 年前
        1
  •  0
  •   Sangam Belose    7 年前

    如果要使用 Application Load balancer 与您的 ECS service . 根据描述,该角色允许 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"
        }
      ]
    }
    
        2
  •  0
  •   Adiii    7 年前

    要在应用程序负载平衡器中注册服务,您需要该服务本身的角色,但需要对ECS容器具有在集群中注册的某些权限。

    Amazon弹性容器服务使用AWS身份和访问 管理(IAM)服务链接角色。服务链接角色是 直接链接到Amazon ECS的IAM角色的唯一类型。 服务链接角色由Amazon ECS预定义,包括 服务调用其他AWS服务所需的权限 代表你。

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

    所以如果您检查这个角色,它包含属性

    "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
    

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

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

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

    在大多数情况下,会自动创建Amazon ECS服务角色 为您在亚马逊云服务器控制台的首次运行体验。你可以用 以下步骤检查并查看您的帐户是否已经 Amazon ECS服务角色。

    这是由美国焊接学会(AWS)管理的。

    arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole
    Policy ARN
    

    arn:aws:iam::aws:策略/服务角色/amazonec2容器服务角色 说明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

    这就是它的样子

    enter image description here

    如果不给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