Confundido por el requisito de rol de ECS

13

Estoy tratando de configurar un ECS, pero hasta ahora he encontrado algunos problemas de permisos para los cuales ya he creado algunas preguntas en este foro.

Creo que estoy atrapado hasta ahora porque, sinceramente, no puedo encontrar todos estos requisitos de roles en un solo lugar de manera concisa.

Parece que necesito definir al menos dos roles:

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

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

¿Es correcto?

¿Me perdí algo? ¿Hay algún requisito especial de IAM?

Anthony Kong
fuente
No está claro cuál es el problema. ¿Puedes editar tu pregunta para incluir detalles?
EEAA

Respuestas:

24

El único rol necesario es el rol IAM de instancia de contenedor . Esta función permite que el agente de ECS (que se ejecuta en su instancia de EC2) se comunique con Amazon ECS.

Hay otros cinco roles que también pueden ser útiles para diferentes propósitos:

  • Función de enlace de servicio (SLR) de ECS: esta función permite a Amazon ECS administrar una variedad de recursos de AWS asociados con su aplicación en su nombre. Cuando se utiliza un Servicio , este rol permite a Amazon ECS administrar el equilibrador de carga (equilibradores de carga clásicos, equilibradores de carga de aplicaciones y equilibradores de carga de red) y el descubrimiento de servicios (con la ruta 53 ) asociados con su servicio. Cuando se utiliza la red de tareas , esta función permite que Amazon ECS conecte y desconecte Elastic Network Interfaces (ENI) a sus tareas. Este rol es obligatorio cuando se usa AWS Fargate .
  • Función de IAM del planificador de servicios : antes de la introducción de la función vinculada con el servicio (SLR) de ECS, esta función se usaba junto con un servicio para permitir que Amazon ECS gestionara el equilibrador de carga asociado con su servicio. Si desea usar un Elastic Load Balancer (ya sea un Classic Load Balancer, un Application Load Balancer o un Network Load Balancer) con su servicio ECS, puede usar esta función. Ahora que ECS SLR está disponible, puede usar cualquiera de los dos roles, pero es posible que desee usar este rol si desea restringir los permisos que se otorgan a Amazon ECS para cubrir recursos específicos de equilibrador de carga.
  • Función IAM de Auto Scaling : esta función se usa junto con un Servicio y permite que el servicio de Auto Auto Scaling escale el recuento deseado de su Servicio dentro o fuera.
  • Rol de Tarea IAM : este rol se puede usar con cualquier Tarea (incluidas las Tareas iniciadas por un Servicio ). Esta función es muy similar a un perfil de instancia EC2 , pero le permite asociar permisos con tareas individuales en lugar de con la instancia EC2 subyacente que aloja esas tareas. Si está ejecutando una cantidad de aplicaciones diferentes en su clúster ECS con diferentes permisos requeridos, puede usar el rol Tarea IAM para otorgar permisos específicos a cada Tarea en lugar de asegurarse de que cada instancia EC2 en su clúster tenga el conjunto combinado de permisos que cualquier aplicación necesitaría.
  • Rol de ejecución de tarea : este rol se requiere cuando se usa AWS Fargate y reemplaza el rol de Contenedor de instancia de IAM , que no está disponible para el FARGATEtipo de inicio. Esta función le permite a AWS Fargate extraer sus imágenes de contenedor de Amazon ECR y reenviar sus registros a Amazon CloudWatch Logs . Este rol también se usa (tanto en los tipos de lanzamiento Fargate como en el EC2) para habilitar la autenticación de registro privado y los secretos de AWS Secrets Manager y AWS Systems Manager Parameter Store .
Samuel Karp
fuente
1

Además de esta muy buena explicación de @ samuel-karp, hoy me encontré con un problema al migrar de ELB clásico a ALB en combinación de servicios personalizados task_role_arnpara ECS.

Aunque seguí las instrucciones descritas detrás del enlace Task IAM role, el error fue

No se puede asumir el rol y validar el targetGroupArn especificado. Verifique que el rol de servicio ECS que se pasa tenga los permisos adecuados.

La cuestión es que el servicio parece registrarse en el equilibrador de carga. Solo funcionó cuando cambié el director de ecs.amazonaws.coma

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

mana
fuente