Сбой доступа S3 в развернутом Java-приложении Elastic Beanstalk, несмотря на правильную роль и регион IAMJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Сбой доступа S3 в развернутом Java-приложении Elastic Beanstalk, несмотря на правильную роль и регион IAM

Сообщение Anonymous »

Я хочу получить доступ к файлам в корзине AWS S3 из приложения Java Elastic Beanstalk.
Приложение (микросервис весенней загрузки) работает нормально при локальном запуске. Нет проблем с перечислением, чтением и записью объектов в корзине.
Вот как я создаю клиент S3:

Код: Выделить всё

AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withRegion(Regions.EU_WEST_2)
.build();
Вот как я перечисляю объекты в сегменте:

Код: Выделить всё

s3client.listObjects().getObjectSummaries();
В IAM я создал роль с разрешениями:
  • AmazonS3FullAccess
  • AWSElasticBeanstalkEnhancedHealth
  • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
  • AWSElasticBeanstalkMulticontainerDocker
  • AWSElasticBeanstalkWebTier
В среде Elastic Beanstalk я установил это как роль службы и профиль экземпляра EC2.
Однако при развертывании приложения доступ к корзине не удается:

com.amazonaws.services.s3.model.AmazonS3Exception: сегмент находится
в этом регионе: eu-central-1. Используйте этот регион, чтобы повторить запрос
(Сервис: Amazon S3; Код состояния: 301;

Это сообщение об ошибке неверно. Согласно обзор сегмента, сегмент расположен в регионе AWS
Европа (Лондон) eu-west-2
Я попробовал следовать рекомендации и использовать предложенный регион:

Код: Выделить всё

AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withRegion(Regions.EU_CENTRAL_1)
.build();
Затем возвращается сообщение об ошибке отказа в доступе:

Вызвано: com.amazonaws.services.s3.model .AmazonS3Exception: Доступ
Отказано (Сервис: Amazon S3; Код состояния: 403; Код ошибки:
Доступ запрещен;

The Elastic Домен приложения Beanstalk показывает, что оно работает в том же регионе, что и корзина S3, к которой оно пытается получить доступ:

.eu-west- 2.elasticbeanstalk.com

Для ясности: корзина была создана мной с использованием моей учетной записи через консоль AWS S3. Моя учетная запись является владельцем корзины. Приложение также было создано мной с использованием моей учетной записи. через консоль Elastic Beanstalk у меня есть другие приложения Java Elastic Beanstalk, которые при развертывании без проблем получают доступ к корзинам S3, что означает отсутствие причины, связанной со всей учетной записью.
Я также пробовал следующее, что также приводит к ответу об отказе в доступе.

Код: Выделить всё

AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.enableForceGlobalBucketAccess()
.build();
Как мне предоставить этому приложению доступ к S3 при развертывании?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -correct-i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»