Confus par l'exigence de rôle d'ECS

13

J'essaie de mettre en place un ECS mais jusqu'à présent, j'ai rencontré quelques problèmes d'autorisation pour lesquels j'ai déjà créé quelques questions sur ce forum.

Je pense que je suis coincé jusqu'à présent car honnêtement, je ne peux pas trouver toutes ces exigences de rôle en un seul endroit de manière concise.

Il semble que je doive définir au moins deux rôles:

1) Conteneur ECS http://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html

2) Tâche ECS http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#enable_task_iam_roles

Est-ce correct?

Ai-je oublié quelque chose? Existe-t-il une exigence IAM spéciale?

Anthony Kong
la source
On ne sait pas quel est le problème. Pouvez-vous modifier votre question pour inclure des détails?
EEAA

Réponses:

25

Le seul rôle nécessaire est le rôle IAM de l'instance de conteneur . Ce rôle permet à l'agent ECS (exécuté sur votre instance EC2) de communiquer avec Amazon ECS.

Il existe cinq autres rôles qui peuvent également vous être utiles à différentes fins:

  • Rôle ECS Service-Linked (SLR) - Ce rôle permet à Amazon ECS de gérer une variété de ressources AWS associées à votre application en votre nom. Lorsque vous utilisez un service , ce rôle permet à Amazon ECS de gérer l'équilibreur de charge (équilibreurs de charge classiques, équilibreurs de charge d'application et équilibreurs de charge réseau) et la découverte de service (avec Route 53 ) associée à votre service. Lorsque vous utilisez la mise en réseau de tâches , ce rôle permet à Amazon ECS d'attacher et de détacher des interfaces réseau élastiques (ENI) à vos tâches. Ce rôle est requis lors de l'utilisation d' AWS Fargate .
  • Rôle IAM du planificateur de services - Avant l'introduction du rôle SLR (ECS), ce rôle était utilisé conjointement avec un service pour permettre à Amazon ECS de gérer l'équilibreur de charge associé à votre service. Si vous souhaitez utiliser un équilibreur de charge élastique (qu'il s'agisse d'un équilibreur de charge classique, d'un équilibreur de charge d'application ou d'un équilibreur de charge réseau) avec votre service ECS, vous pouvez utiliser ce rôle. Maintenant que le SLR ECS est disponible, vous pouvez utiliser l'un des deux rôles, mais vous pouvez toujours utiliser ce rôle si vous souhaitez restreindre les autorisations accordées à Amazon ECS pour couvrir des ressources d'équilibrage de charge spécifiques.
  • Rôle Auto Scaling IAM - Ce rôle est utilisé conjointement avec un service et permet au service Application Auto Scaling de mettre à l'échelle le nombre souhaité de votre service.
  • Rôle IAM de tâche - Ce rôle peut être utilisé avec n'importe quelle tâche (y compris les tâches lancées par un service ). Ce rôle est très similaire à un profil d'instance EC2 , mais vous permet d'associer des autorisations à des tâches individuelles plutôt qu'à l'instance EC2 sous-jacente qui héberge ces tâches. Si vous exécutez un certain nombre d'applications différentes sur votre cluster ECS avec différentes autorisations requises, vous pouvez utiliser le rôle Task IAM pour accorder des autorisations spécifiques à chaque tâche plutôt que de vous assurer que chaque instance EC2 de votre cluster dispose de l'ensemble combiné d'autorisations que tout l'application aurait besoin.
  • Rôle d'exécution de tâche - Ce rôle est requis lors de l'utilisation d' AWS Fargate et remplace le rôle IAM de l'instance de conteneur , qui n'est pas disponible pour le FARGATEtype de lancement. Ce rôle permet à AWS Fargate d'extraire vos images de conteneur d' Amazon ECR et de transférer vos journaux vers Amazon CloudWatch Logs . Ce rôle est également utilisé (sur les types de lancement Fargate et EC2) pour activer l'authentification du registre privé et les secrets d'AWS Secrets Manager et d'AWS Systems Manager Parameter Store .
Samuel Karp
la source
1

En plus de cette très bonne explication de @ samuel-karp, j'ai rencontré aujourd'hui un problème lors de la migration de l'ELB classique vers l'ALB en combinaison avec des task_role_arnservices personnalisés pour ECS.

Bien que j'aie suivi les instructions décrites derrière le lien Task IAM role, l'erreur était

Impossible d'assumer le rôle et de valider le targetGroupArn spécifié. Veuillez vérifier que le rôle de service ECS transmis possède les autorisations appropriées.

Le fait est que le service semble s'enregistrer sur l'équilibreur de charge. Il ne fonctionnait que quand je le principal de échangeai ecs.amazonaws.comà

"Principal": { "Service": "ecs-tasks.amazonaws.com" }

mana
la source