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);
Как решить эту проблему?