Несколько микросервисов пытаются создать ведро amazonaws
Я пытаюсь создать ведро S3 с помощью метода createBucket (String bucketName) класса AmazonS3Client (com.amazonaws), но в документации, представленной здесь https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/ , не упоминается каков будет сценарий, если два моих микросервиса попытаются создать одно и то же ведро одновременно. Будет ли он вызывать ошибку, если создается корзина, а другие вызовы поступают одновременно. Исключения также не совсем понятны для этого сценария.
public Bucket createBucket(CreateBucketRequest createBucketRequest)
throws SdkClientException,
AmazonServiceException
Я использую следующую версию s3 sdk
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.184</version>
</dependency>
1 ответ
Согласно документам этимAPI подпись метода выглядит иначе:
default CreateBucketResponse createBucket(CreateBucketRequest createBucketRequest)
throws BucketAlreadyExistsException,
BucketAlreadyOwnedByYouException,
AwsServiceException,
SdkClientException,
S3Exception
Вы должны увидеть
BucketAlreadyExistsException
.
Вы используете старый SDK (v1)?
Как правило, API AWS обрабатывает эти конфликты, отклоняя второй вызов API и возвращая ошибку, которая обозначается кодом состояния HTTP-конфликта 409 и называется «BucketAlreadyExists». Вы можете узнать об этом больше здесь .