AWS ECS Docker Container Boto3 IAM Permisos

Estoy intentando ejecutar un script de python de boto3 dentro de un contenedor acoplable usando AWS ECS. Mi secuencia de commands necesita acceso a SQS (get y eliminar posts) y a Lambda (permiso para search y ejecutar).

Para poder ejecutar el contenedor acoplable en mi máquina local, pude pasar mis cnetworkingenciales Aws al contenedor acoplable mediante el siguiente command de ejecución del acoplador.

docker run -v ~/.aws:/root/.aws

Recientemente ECS ha anunciado:

Amazon ECS now supports IAM roles for tasks. When you specify an IAM role for a task, its containers can then use the latest versions of the AWS CLI or SDKs to make API requests to authorized AWS services. Learn More

Adjunto un rol IAM de tarea a la tarea pero al ejecutar la tarea aparece el siguiente error:

Unable to run task ECS was unable to assume the role that was provided for this task. Please verify that the role being passed has the proper trust relationship and permissions and that your IAM user has permissions to pass this role.

Cualquier idea sería apreciada.

Boto3 usa la biblioteca de botocore para sus funciones de API, y permite una gama de versiones de botocore para cada versión de Boto3, por lo que incluso si tiene la última versión de Boto3, es posible que no tenga el último botocore.

Botocore admite funciones IAM de ECS para tareas a partir de la versión 1.4.37 , por lo que si actualiza el núcleo subyacente subyacente en su entorno al less a esa versión, debería poder utilizar los roles ECS IAM para tareas.

Parece que los roles de tareas de IAM ahora son compatibles con Boto, pero independientemente de eso, eso sería un problema cuando el cliente de Boto intentaba realizar una request, no cuando intentaba iniciar una tarea.

El problema aquí está definido en el post de error. Ya sea:

1) Su usuario no tiene el permiso iam: PassRole definido para el rol de la tarea. Esto se puede agregar editando la política de su usuario para tener una statement similar a la siguiente:

{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<account>:role/<role name>" }

2) El rol de tarea que está intentando asignar a la tarea no tiene la relación de confianza adecuada. Agregue la siguiente política de confianza a la function de tarea de ECS para asegurarse de que la tarea pueda asumirla.

{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Intereting Posts