AWS S3 Возвращает версию объекта. Код ошибки: 500 Внутренняя ошибка сервера

У меня следующая ошибка при получении версии объекта, хранящегося в моем S3, работающем в Localstack (docker):

com.amazonaws.services.s3.model.AmazonS3Exception: Внутренняя ошибка сервера (Сервис: Amazon S3; Код состояния: 500; Код ошибки: 500 Внутренняя ошибка сервера; Идентификатор запроса: пусто), S3 Расширенный идентификатор запроса: пусто

Я протестировал с версиями 1.11.163, 1.11.359, 1.11.383 из aws-java-sdk.

Перечисление и удаление файлов работает, но я не могу получить версию, используя SDK.

Дело в том, что при использовании кли я могу перечислить версии объектов в моем ведре.

При перечислении версий файлов в моем ведре:

aws --endpoint-url = http://localhost:4572/ s3api список-объект-версий -bucket my-bucket --prefix testFolder

Я получаю следующий вывод:

{
"Versions": [
    {
        "LastModified": "2018-08-10T08:52:06.193Z", 
        "VersionId": "0", 
        "ETag": "\"da9a0adf68f7fa4da720e10914283cc9\"", 
        "StorageClass": "STANDARD", 
        "Key": "testFolder/test.txt", 
        "Owner": {
            "DisplayName": "webfile", 
            "ID": "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
        }, 
        "IsLatest": true, 
        "Size": 7366
    }, 
    {
        "LastModified": "2018-08-10T08:52:06.188Z", 
        "VersionId": "0", 
        "ETag": "\"5f22390dd70444e4f3ea347313442a6d\"", 
        "StorageClass": "STANDARD", 
        "Key": "testFolder/0001/test.txt", 
        "Owner": {
            "DisplayName": "webfile", 
            "ID": "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
        }, 
        "IsLatest": true, 
        "Size": 2507
    }, 
    {
        "LastModified": "2018-08-10T08:52:06.191Z", 
        "VersionId": "0", 
        "ETag": "\"9001b739dd280ace7b6b7ae45377484a\"", 
        "StorageClass": "STANDARD", 
        "Key": "testFolder/0001/test-other.txt", 
        "Owner": {
            "DisplayName": "webfile", 
            "ID": "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
        }, 
        "IsLatest": true, 
        "Size": 4589
    }, 
    {
        "LastModified": "2018-08-10T08:52:06.185Z", 
        "VersionId": "0", 
        "ETag": "\"4d32ffe9a1f7e272c78aa80e95fb9cf3\"", 
        "StorageClass": "STANDARD", 
        "Key": "testFolder/test-other.txt", 
        "Owner": {
            "DisplayName": "webfile", 
            "ID": "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
        }, 
        "IsLatest": true, 
        "Size": 15549
    }
]
}

Вот как я создаю свою конфигурацию S3Configuration:

private static S3Configuration s3Configuration() {
    S3Configuration s3Configuration = new S3Configuration();
    s3Configuration.setBucket("my-bucket");
    return s3Configuration;
}

Вот как я создаю свой клиент AmazonS3:

private static AmazonS3 amazonS3() {
    final AWSCredentials credentials = new BasicAWSCredentials("foobar","foobar");
    final EndpointConfiguration endpointConfiguration = new EndpointConfiguration("http://localhost:4572",DEFAULT_REGION.getName());

    AmazonS3ClientBuilder amazonS3ClientBuilder = AmazonS3ClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(credentials))
            .withEndpointConfiguration(endpointConfiguration)
            .withPathStyleAccessEnabled(true);

    return amazonS3ClientBuilder.build();
}

Исключение возникает всякий раз, когда я пытаюсь перечислить версии файлов в моем ведре, используя:

VersionListing versionListing = amazonS3.listVersions(new ListVersionsRequest().withBucketName(bucketName));

Или пытаясь получить версию для определенного файла:

VersionListing versionListing = amazonS3.listVersions(bucketName, objectKey);

Где objectKey извлекается из S3ObjectSummary.getKey()

Есть идеи о том, что мне не хватает?

Спасибо за вашу помощь.

0 ответов

Похоже на ошибку

Это должно решить вашу проблему

new ListVersionsRequest()
                        .withEncodingType("")
                        .withBucketName(bucketName)
                        .withPrefix(key);

Другие вопросы по тегам