Пакетное задание AWS получает отказ в доступе на S3, несмотря на роль пользователя - PullRequest
0 голосов
/ 01 ноября 2018

Я развертываю свою первую пакетную работу на AWS. Когда я запускаю образ докера в экземпляре EC2, скрипт, вызываемый заданием, работает нормально. Я назначил роль IAM этому экземпляру, чтобы разрешить доступ S3.

Но когда я запускаю тот же сценарий, что и задание в AWS Batch, он завершается ошибкой из-за ошибок Access Denied при доступе S3. И это несмотря на то, что в определении задания я назначаю роль IAM (созданную для задачи обслуживания Elastic Container), которая имеет полный доступ S3.

Если я запускаю пакетное задание с командой, которая не обращается к S3, она работает нормально.

Поскольку использование роли IAM для определения задания кажется недостаточным, как я могу предоставить разрешения S3 в пакетном задании в AWS?

EDIT

Так что, если я просто запускаю aws s3 ls interlinked как свою работу, это также работает правильно. Что не работает, так это запуск сценария R:

 library(aws.s3)
 get_bucket("mybucket")[[1]]

Сбой при отказе в доступе.

Так что, похоже, проблема в пакете aws.s3 или, что более вероятно, в его использовании.

1 Ответ

0 голосов
/ 01 ноября 2018

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

В этом сценарии (где требуются учетные данные на основе ролей) пакет aws.s3 R использует aws.signature и aws.ec2metadata для извлечения временных учетных данных из роли. Он получает роль вычислительной среды (которая является ролью ec2), но не роль задания.

Мое решение состояло в том, чтобы просто предоставить необходимые разрешения S3 для роли моей вычислительной среды.

...