Неожиданный подписанный URL-адрес версии 4 с использованием com.amazonaws:aws-java-sdk 1.11.18

Мы создаем подписанные URL-адреса amazon S3, используя (com.amazonaws:aws-java-sdk версия 1.11.18) -

AmazonS3 s3 = new AmazonS3Client(credentials);
s3.generatePresignedUrl(bucketName, objectName, expiration, method);

Мы ожидаем получить подписанный URL-адрес, который содержит параметр запроса с именем "signature" (подпись v2).

Мы заметили, что на наших серверах некоторые запросы приводят к подписанию v4, когда мы неожиданно получаем параметр запроса "x-amz-signature" как часть подписанного URL.

Как только это начнется - он воспроизводится на сервере для того же запрошенного объекта s3. Однако запросы на подпись других объектов все равно будут подписываться с использованием v2. Перезапуск службы tomcat на сломанном сервере "исправляет" проблему.

Любая идея, что может заставить библиотеку начать подписывать некоторые объекты с v4?

1 ответ

Решение

Эта проблема была воспроизведена в текущей версии SDK (1.11.244). В конце концов мы пошли о настройке вручную -

s3 = new AmazonS3Client(credentials,
                    new ClientConfiguration().withSignerOverride("NoOpSignerType"));

Мы подозреваем, что такое поведение было вызвано внутренней реализацией createSigner метод, подписывает запросы с V4, если ведро содержится в карте. -

private static final Map<String, String> bucketRegionCache
Другие вопросы по тегам