Определение сервиса AWS ECS: свойство роли - PullRequest
0 голосов
/ 06 сентября 2018

Я настраиваю сервис AWS ECS, используя облачную информацию и синтаксис yaml.

В какой-то момент в соответствующей документации есть свойство под названием Role, определения которого следующие:

Роль

Имя или ARN роли AWS Identity and Access Management (IAM), которая позволяет вашему агенту контейнера Amazon ECS совершать вызовы в вашбалансировщик нагрузки.

Примечание В некоторых случаях может потребоваться добавить зависимость от политики роли службы.Дополнительные сведения см. В разделе Политика ролей IAM в атрибуте DependsOn.Требуется: Нет Тип: Строка Требуется обновление: Замена

Поскольку я намереваюсь разместить конкретную службу за Application Load Balancer , требуется ли это свойство?

Если да, нужно ли создавать новую политику или есть какие-то заранее определенные политики, которые могут служить этой цели?

Было бы достаточно, если бы я только добавил роль / политику на уровне экземпляра контейнера EC2 (например, добавить его в соответствующий шаблон , который создает кластер ECS, предлагаемый amazon?)

Я был бы очень признателен за любые примеры или варианты использования, если таковые имеются, потому что документация по теме неясна и неполна.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Чтобы зарегистрировать свой сервис с помощью балансировщика нагрузки приложения, вам нужна роль для самого сервиса, но для контейнера ECS требуются некоторые разрешения для регистрации в кластере.

Amazon Elastic Container Service использует идентификатор и доступ AWS Управленческие (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: политика / сервис / роль 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

Вот как это выглядит

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

0 голосов
/ 06 сентября 2018

Вам необходим атрибут Role, если вы хотите использовать 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"
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...