Несколько микросервисов пытаются создать ведро 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». Вы можете узнать об этом больше здесь .

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