2016-08-19 2 views
1

Я пытаюсь запустить сценарий boto3 python внутри контейнера докеров, используя AWS ECS. Мой скрипт нуждается в доступе к SQS (получить сообщения &) и Lambda (разрешение на поиск и запуск).AWS ECS Docker Container Boto3 Разрешения IAM

Чтобы получить контейнер-докер, запущенный на моей локальной машине, я смог передать свои учетные данные aws в контейнер докеров, выполнив следующую команду запуска docker.

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

Недавно ECS объявила:

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

прилагает задачу IAM роли задачи, но при выполнении задачи я получаю следующее сообщение об ошибке:

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.

Любые идеи будут оценены.

+1

Boto3 еще не поддерживает IAM ролей для ECS задач - http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#task-iam-roles- minimum-sdk (я также научился это трудно ... попытался развернуть что-то, не работал, тогда я понял это) –

+0

Спасибо, что ответили. Рад узнать, что роли IAM не будут работать для Boto3. Я рассматриваю этот пост как решение, но не смог заставить его работать. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html –

ответ

1

Boto3 использует библиотеку ботокорирования для своих функций API и позволяет использовать ряд версий ботокора для каждой версии Boto3, поэтому, даже если у вас есть последняя версия Boto3, у вас может не быть последнего ботокора.

Botocore поддерживает роли ECM IAM для задач с версии 1.4.37, поэтому, если вы обновляете базовый ботокур в своей среде по крайней мере до этой версии, вы должны иметь возможность использовать роли ECM IAM для функций задач.

4

Похоже, что Роли задач IAM теперь поддерживаются в Boto, но независимо от того, что было бы проблемой, когда клиент Boto пытался сделать запрос, а не при попытке запустить задачу.

Проблема здесь определена в сообщении об ошибке. Либо:

1) У вашего пользователя нет разрешения iam: PassRole, определенного для роли задачи. Это может быть добавлено путем редактирования политики вашего пользователя, чтобы иметь заявление, аналогичное следующему:

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

2) Роль задачи вы пытаетесь присвоить задачу не имеет надлежащее отношения доверия. Добавьте следующую политику доверия в роль задачи ECS, чтобы убедиться в ее выполнении.

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