I created the bucket before invoking S3AsyncClient.createMultipartUpload
, but it still throws NoSuchBucketException
:
private suspend fun initMultipartUpload(): CreateMultipartUploadResponse {
val ifExists = bucketExists(s3TargetClient, s3Bucket) // true
val initRequest = CreateMultipartUploadRequest.builder()
.bucket(s3Bucket)
.key(s3Key)
.build()
return s3TargetClient.createMultipartUpload(initRequest).await() // throws NoSuchBucketException: The specified bucket does not exist
}
private fun bucketExists(s3Client: S3AsyncClient, bucketName: String): Boolean {
runCatching {
s3Client.headBucket(
HeadBucketRequest.builder()
.bucket(bucketName)
.build()
)
return true
}.getOrElse {
return false
}
}