s3TransferManager.downloadFile и s3Client.getObject не работают для файла с пробелом в имени

Я использую software.amazon.awssdk.transfer.s3.S3TransferManager для загрузки файлов из корзины s3 в экземпляр ECS. Ниже приведен код.

      
final GetObjectRequest getObjectRequest = GetObjectRequest.builder()
                .bucket(bucket)
                .key(key)
                .versionId(versionId)
                .build();

        final DownloadFileRequest downloadFileRequest = DownloadFileRequest.builder()
                .destination(destination)
                .getObjectRequest(getObjectRequest)
                .build();
        transferManager.downloadFile(downloadFileRequest);

Это хорошо работает, когда я даю имя файла без пробела. Но это не удается с приведенной ниже ошибкой, если имя файла содержит пробел.

      java.util.concurrent.CompletionException: software.amazon.awssdk.services.s3.model.S3Exception: The specified version does not exist.

Если я не передам версию во входном запросе, я получаю следующую ошибку.

       java.util.concurrent.CompletionException: software.amazon.awssdk.services.s3.model.NoSuchKeyException: The specified key does not exist.

Затем я попытался использовать S3 getObject API, как показано ниже. Все еще получаю ту же проблему.

      final GetObjectRequest getObjectRequest = GetObjectRequest.builder()
                .bucket(bucket)
                .key(key)
                .versionId(versionId)
                .build();

        s3Client.getObject(getObjectRequest, destination);

Как решить эту проблему?

0 ответов

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