AWS 错误消息:当前正在针对此资源执行冲突的条件操作

2022-08-31 06:22:55

我间歇性地收到此错误。

我有一个使用java aws sdk的程序,并将数万个小文件加载到s3。我间歇性地看到此错误。

在互联网上快速搜索后找不到任何有用的答案。

请注意,调用程序是单线程的。底层 aws java 开发工具包似乎确实使用工作线程。

Status Code: 409, AWS Service: Amazon S3, AWS Request ID: 75E16E8DE2193CA6, AWS Error Code: OperationAborted, AWS Error Message: A conflicting conditional operation is currently in progress against this resource. Please try again., S3 Extended Request ID: 0uquw2YEoFamLldm+c/p412Lzd8jHJGFBDz3h7wN+/4I0f6hnGLkPMe+5LZazKnZ
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:552)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:289)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:170)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2648)
    at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:578)
    at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:503)

答案 1

当我执行以下操作时,我收到了相同的错误消息:

  1. 创建了一个存储桶 - 默认情况下,它转到美国区域(使用 AWSCLI)

  2. 实现后,存储桶应转到欧盟区域并将其删除(使用 AWS 控制台)

  3. (几分钟后)尝试创建存储桶,指定欧盟区域

在步骤 3 中,AWS 控制台向我显示了问题标题中的错误消息。

所以我猜,美国的存储桶已被删除,但可能有一些同步过程,这需要时间。我希望,等待几个小时后,我会再次找到可用于创建的存储桶名称 - 这次是在适当的(欧盟)区域。

修复 :- 编辑:大约一个小时后,我尝试创建存储桶(在欧盟区域)成功。


答案 2

对于从Google偶然发现此线程的所有其他人,作为搜索此错误消息的第1个结果:

如果您删除了存储桶,要在新区域中重新创建,请不要“手动”等待此后台同步完成,而是放置一个小的 bash 脚本来运行,然后每隔 5 秒左右重试一次所需的存储桶创建。

例:

#!/bin/bash 
RESULT=2 
until [  $RESULT -eq 0 ]; do
    aws s3 mb s3://your.bucket.name --region us-west-2
    RESULT=$?
    sleep 5 
done 
echo "Bucket created!"

它将每隔几秒钟(取决于“睡眠”)为您重试“创建桶”操作,并尽快为您创建它,因此没有人可以错误地窃取您的桶名:)

希望它能帮助:)


推荐