boto3 не может подключиться к S3 из контейнера Docker, запущенного в пакете AWS - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь запустить контейнер Docker, хранящийся в ECR, как пакетное задание AWS. Сценарий Python точки входа этого контейнера пытается подключиться к S3 и загрузить файл. Я прикрепил роль с AmazonS3FullAccess к обоим AWSBatchServiceRole в вычислительной среде, и я также прикрепил роль с AmazonS3FullAccess к вычислительным ресурсам.

Это следующая ошибка, которая регистрируется: botocore.exceptions.ConnectTimeoutError: Connect timeout on endpoint URL: "https://s3.amazonaws.com/"

Существует вероятность того, что эти экземпляры запускаются в пользовательском VPC, а не в VPC по умолчанию. Я не уверен, что это имеет значение, но, возможно, это является частью проблемы. У меня нет соответствующего доступа для проверки. Я протестировал этот образ Docker на экземпляре EC2, запущенном в том же VPC, и все работает, как ожидалось.

1 Ответ

0 голосов
/ 22 мая 2019

Вы упомянули вычислительную среду и вычислительные ресурсы. Вы добавили эту политику S3 в Job Role, как упоминалось здесь ?

После того, как вы создали роль и прикрепили к ней политику, вы можете запускать задачи, которые принимают роль. У вас есть несколько вариантов сделать это:

  1. Укажите роль IAM для ваших задач в определении задачи. Вы можете создать новое определение задачи или новую редакцию существующего определения задачи и указать роль, которую вы создали ранее. Если вы используете консоль для создания определения задачи, выберите свою роль IAM в поле «Роль задачи». Если вы используете CLI или SDK AWS, укажите свою роль ARN задачи с помощью параметра taskRoleArn. Для получения дополнительной информации см. Создание определения задачи.

  2. Укажите переопределение роли задачи IAM при запуске задачи. Вы можете указать переопределение роли задачи IAM при запуске задачи. Если вы используете консоль для запуска своей задачи, выберите «Дополнительные параметры», а затем выберите свою роль IAM в поле «Роль задачи». Если вы используете CLI или SDK AWS, укажите свою роль ARN задачи с помощью параметра taskRoleArn в переопределяющем объекте JSON. Для получения дополнительной информации см. Выполнение задач.

...