NoSuchBucketException выдается при попытке скопировать файлы в уже существующую корзину Wasabi.JAVA

Программисты JAVA общаются здесь
Anonymous
NoSuchBucketException выдается при попытке скопировать файлы в уже существующую корзину Wasabi.

Сообщение Anonymous »

У меня есть приложение Spring Boot, которое управляет файлами, хранящимися в корзине Wasabi. Мне нужно скопировать файлы из одного места в корзине в другое, поэтому для выполнения этой операции я использую S3TransferManager. Однако всякий раз, когда я пытаюсь скопировать файл, SDK сообщает, что корзина не существует, хотя я визуально проверил ее наличие через консоль Wasabi, а также проверив наличие опечаток в имени корзины в своем коде.
Вот класс конфигурации, который создает компоненты, которые я использую для управления операциями S3.

Код: Выделить всё

@Configuration
public class Config {
@Bean(name = "wasabiCredentialsProvider")
public AwsCredentialsProvider wasabiCredentialProvider(@Value("${the.accessKey}") String accessKey,
@Value("${the.secretKey}") String secretKey) {
return StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey));
}

@Bean(name = "wasabiS3Async")
public S3AsyncClient wasabiS3Async(@Qualifier("wasabiCredentialsProvider") AwsCredentialsProvider awsCredentialsProvider,
@Value("${the.region}") String region,
@Value("${the.endpoint}") String endpoint) throws URISyntaxException {
SdkAsyncHttpClient nettyHttpClient = NettyNioAsyncHttpClient.builder()
.connectionAcquisitionTimeout(Duration.ofHours(3))
.connectionTimeout(Duration.ofHours(3))
.readTimeout(Duration.ofHours(3))
.writeTimeout(Duration.ofHours(3))
.maxConcurrency(100)
.build();
S3AsyncClientBuilder s3AsyncClientBuilder = S3AsyncClient.builder()
.credentialsProvider(awsCredentialsProvider)
.region(Region.of(region))
.httpClient(nettyHttpClient);
if (endpoint.contains("localhost")) {
s3AsyncClientBuilder.endpointOverride(new URI(endpoint))
.serviceConfiguration(S3Configuration.builder().pathStyleAccessEnabled(true).build());
}
return s3AsyncClientBuilder.build();
}

@Bean(name = "wasabiS3TransferManager")
public S3TransferManager wasabiS3TransferManager(final S3AsyncClient wasabiS3Async) {
return S3TransferManager.builder()
.s3Client(wasabiS3Async)
.build();
}
}
А вот и метод, при котором возникает проблема

Код: Выделить всё

private final S3TransferManager wasabiS3TransferManager;

public void copyFile(final String sourceFolder, final String targetFolder, final String sourceFileId, final String bucketName, final String targetFileId) {

S3TransferManager s3TransferManager = wasabiS3TransferManager;
String sourceBucketPath = String.format("%s/%s", sourceFolder, sourceFileId);
String targetBucketPath = String.format("%s/%s", targetFolder, targetFileId);

try {
CopyObjectRequest copyObjectRequest = CopyObjectRequest.builder()
.sourceBucket(bucketName)
.sourceKey(sourceBucketPath)
.destinationBucket(bucketName)
.destinationKey(targetBucketPath)
.build();
CopyRequest copyRequest = CopyRequest.builder()
.copyObjectRequest(copyObjectRequest)
.build();
Copy copy = s3TransferManager.copy(copyRequest);
copy.completionFuture().join();
} catch (Exception exception) {
log.error("There was an error", exception.getMessage());
//Exception handling happens here
}

}

Это сообщение об исключении

Код: Выделить всё

software.amazon.awssdk.services.s3.model.NoSuchBucketException: The specified bucket does not exist (Service: S3, Status Code: 404, Request ID: ,
Extended Request ID:)
Я думал, что это может быть проблема с регионом, установленным в компоненте S3AsyncClient, но я ввожу правильное значение.
Любое помощь приветствуется

Подробнее здесь: https://stackoverflow.com/questions/790 ... o-a-wasabi

Вернуться в «JAVA»