Невозможно поместить объект в корзину S3, если он не имеет публичного доступа. - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь записать объект в корзину s3 в моей учетной записи AWS, но это не удается с ошибкой ниже.

com.amazonaws.services.s3.model.AmazonS3Exception: доступ запрещен (Сервис: Amazon S3; код состояния: 403; код ошибки: AccessDenied; идентификатор запроса: 34399CEF4B28B50D; расширенный идентификатор запроса S3:

Я попытался сделать хранилище общедоступным с полным доступом, а затем я смогу написать в него.

Код, который я написал для записи объекта в корзину S3:

......

private final AmazonS3 amazonS3Client;

........

  final PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, s3Key, stream,
                                                                           metadata);
            amazonS3Client.putObject(putObjectRequest);
            final URL url = amazonS3Client.getUrl(bucketName, s3Key);

Я строю свой клиент S3 как:

@Configuration
public class AWSConfig {

    @Bean
    public AmazonS3 amazonS3Client() {
        String awsRegion = System.getenv("AWS_REGION");
        if (StringUtils.isBlank(awsRegion)) {
            awsRegion = Regions.getCurrentRegion().getName();
        }
        return AmazonS3ClientBuilder.standard()
                                    .withCredentials(new DefaultAWSCredentialsProviderChain())
                                    .withRegion(awsRegion)
                                    .build();
    }
}

Пожалуйста, предложите мне, если я что-то упустил, и как я могу исправить ошибку, упомянутую выше.

Ответы [ 3 ]

0 голосов
/ 17 июня 2019

Убедитесь, что нижеприведенный параметр "выключен"

s3 -> mybucket -> Разрешения -> Заблокировать весь публичный доступ - >> off

0 голосов
/ 17 июня 2019

Я нашел решение для этого.Проблема заключалась в том, что java-сервис, с которого я пытался вызвать put object request, не имеет доступа к корзине s3.Для решения этой проблемы я добавил разрешение для экземпляра, на котором работала моя служба, для доступа к корзине s3, которая разрешила проблему.

0 голосов
/ 17 июня 2019

Вам не хватает Ключи доступа (идентификатор ключа доступа и секретный ключ доступа)

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

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

Вам потребуется:

.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(ACCESSKEY, SECRETKEY)));

См.официальная документация о том, как генерировать / получать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...