如何解决多个微服务尝试创建 amazonaws 存储桶
我正在尝试使用 AmazonS3Client 类 (com.amazonaws) 的 createBucket(String bucketName) 方法创建 S3 存储桶,但在此处提供的文档中 https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/ 没有提到如果我的 2 个微服务尝试同时创建相同的存储桶。如果正在创建存储桶并且其他调用同时获取,它会抛出错误。 异常抛出也不清楚这种情况。
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>
解决方法
根据 these API 文档,方法签名看起来不同:
default CreateBucketResponse createBucket(CreateBucketRequest createBucketRequest)
throws BucketAlreadyExistsException,BucketAlreadyOwnedByYouException,AwsServiceException,SdkClientException,S3Exception
您应该会看到 BucketAlreadyExistsException
。
您使用的是旧版 SDK (v1) 吗?
通常,AWS API 通过拒绝第二个 API 调用并返回一个错误来处理这些冲突,该错误由 409 冲突 HTTP 状态代码表示,称为“BucketAlreadyExists”。您可以详细了解here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。