Определение сервиса AWS ECS: свойство роли
Я настраиваю сервис AWS ECS, используя облачную информацию и синтаксис yaml.
В какой-то момент в соответствующей документации есть свойство под названием Role
чьи определения следующие:
Роль
Имя или ARN роли AWS Identity and Access Management (IAM), которая позволяет вашему агенту контейнера Amazon ECS совершать вызовы к вашему балансировщику нагрузки.
Примечание. В некоторых случаях может потребоваться добавить зависимость от политики роли службы. Дополнительные сведения см. В разделе Политика ролей IAM в атрибуте DependsOn. Требуется: Нет Тип: Строка Обновление требует: Замена
Поскольку я намереваюсь разместить конкретную службу за балансировщиком нагрузки приложений, нужно ли это свойство?
Если да, нужно ли мне создавать новую политику или есть какие-то заранее определенные политики, которые могут служить этой цели?
Было бы достаточно, если бы я просто добавил роль / политику на уровне экземпляра контейнера EC2 (например, добавил бы его в соответствующий шаблон, который создает кластер ECS, предлагаемый amazon?)
Я был бы очень признателен за любые примеры или варианты использования, если таковые имеются, потому что документация является неопределенной и неполной по теме.
2 ответа
Чтобы зарегистрировать свой сервис с помощью балансировщика нагрузки приложения, вам нужна роль для самого сервиса, но для контейнера ECS требуется некоторое разрешение для регистрации в кластере.
Amazon Elastic Container Service использует связанные с сервисом роли AWS Identity and Access Management (IAM). Роль, связанная со службой, - это уникальный тип роли IAM, которая напрямую связана с Amazon ECS. Связанные с услугами роли предопределены Amazon ECS и включают в себя все разрешения, которые требуются службе для вызова других служб AWS от вашего имени.
Роль, связанная со службой, упрощает настройку Amazon ECS, поскольку вам не нужно вручную добавлять необходимые разрешения. Amazon ECS определяет разрешения своих ролей, связанных с услугами, и, если не указано иное, только Amazon ECS может выполнять свои роли. Определенные разрешения включают в себя политику доверия и политику разрешений, и эту политику разрешений нельзя прикрепить к любому другому объекту IAM.
Так что, если вы проверите эту роль, это содержит свойство
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
Для отладки удалите роль для службы, она не будет зарегистрирована.
Если вы создаете сервис, используя консоль по умолчанию, он присоединяется к роли.
Amazon ECS необходимы разрешения для регистрации и отмены регистрации экземпляров контейнеров с помощью балансировщика нагрузки при создании и остановке задач.
В большинстве случаев сервисная роль Amazon ECS создается автоматически при первом запуске консоли Amazon ECS. Вы можете использовать следующую процедуру, чтобы проверить и проверить, имеет ли ваша учетная запись роль службы Amazon ECS.
Это управляемая полиция с помощью АРС
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
Вам нужен атрибут 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"
}
]
}