Estoy usando CloudFormation de AWS, y recientemente pasé bastante tiempo tratando de averiguar por qué el rol que había creado y adjuntado políticas no permitía que mi tarea de ECS enviara un mensaje a una cola de Simple Queue Service (SQS).
Me di cuenta de que estaba adjuntando incorrectamente la política de permisos de SQS al Execution Role cuando debería haber adjuntado la política al Task Role . No puedo encontrar buena documentación que explique la diferencia entre los dos roles. La documentación de CloudFormation para los dos está aquí: ExecutionRole y TaskRole
En referencia a la documentación , puede ver que el rol de ejecución es el rol de IAM que ejecuta acciones de ECS, como extraer la imagen y almacenar los registros de la aplicación en cloudwatch.
El TaskRole, entonces, es el rol de IAM utilizado por la propia tarea. Por ejemplo, si su contenedor desea llamar a otros servicios de AWS como S3, SQS, etc., esos permisos deberán estar cubiertos por TaskRole.
Usar un TaskRole es funcionalmente lo mismo que usar claves de acceso en un archivo de configuración en la instancia del contenedor. El uso de claves de acceso de esta manera no es seguro y se considera una práctica muy mala. Incluyo esto en la respuesta porque muchas personas que leen esto ya entienden las claves de acceso.
El rol de ejecución de tareas de ECS son las capacidades del agente de ECS (y la instancia del contenedor), por ejemplo:
El rol de tarea de ECS son capacidades específicas dentro de la tarea misma, por ejemplo: