V4 Подписание для aws S3 с использованием aws java sdk - PullRequest
0 голосов
/ 04 февраля 2020

В соответствии с документацией aws запроса на подпись,

https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html

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

Я понял шаги, которые мне нужно выполнить при выполнении запроса GET без SDK.

Так что было бы здорово, если кто-нибудь, пожалуйста, помогите мне уточнить, нужно ли мне что-либо делать для включения подписи v4 для какой-либо операции (выгрузка / получение / удаление) в s3?

A cc для официального do c,

Amazon S3 поддерживает Signature Version 4, протокол для проверки подлинности входящих запросов API к AWS сервисам во всех AWS регионах. В настоящее время AWS Регионы, созданные до 30 января 2014 года, будут продолжать поддерживать предыдущий протокол, подпись версии 2. Любые новые регионы после 30 января 2014 года будут поддерживать только подпись версии 4, и поэтому все запросы к этим регионам должны быть выполнены. с подписью версии 4.

, поэтому я хочу сохранить поддержку v2 для более старых регионов и v4 для новых регионов.

Пожалуйста, помогите мне с этим.

1 Ответ

1 голос
/ 04 февраля 2020

Все регионы поддерживают подпись v4. Некоторые (старые) регионы также поддерживают подпись v2. Я бы порекомендовал вам всегда использовать подпись v4.

Вот Java пример настройки подписи v4:

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");

AmazonS3Client s3 = new AmazonS3Client(
    new ProfileCredentialsProvider(), clientConfiguration);

GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(
    myBucket, myKey, HttpMethod.PUT);
URL puturl = s3.generatePresignedUrl(request);
...