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

我间歇性地得到这个错误。

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

在网上快速search后找不到任何有用的答案。

注意调用程序是单线程的。 基础aws java sdk似乎使用工作线程。

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. 创build了一个存储桶 – 默认情况下转到美国地区(使用AWSCLI)

  2. 实现了,桶应该去EU地区并删除它(使用AWS控制台)

  3. (几分钟后)试图创build桶,指定欧盟地区

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

所以我想,在美国的桶被删除,但可能有一些同步过程,这是需要时间。 我希望,等待几个小时,我会再次find桶名称 – 这次是在适当的(欧盟)地区。

修正: – 编辑:大约一个小时后,我试图创build桶(在欧盟地区)成功。

您示例中的请求是创build一个存储桶。 如果您尝试创造太多的水桶或更换水桶,那就不健康。

请注意,您有一个账户的限额为100桶(见这里 )。 编辑:现在这个限制是一个“软限制”,你可以增加它,如果需要的话。

另外请注意,创build一个存储桶需要时间,并且:

…在应用程序的高可用性代码path上创build或删除调用是不合适的…

最好是一次性创build你的桶,你可以在你现有的桶(甚至是一个单一的)中放入你喜欢的多个对象。

无论如何,当一个不可避免的失败的系统工作时,你应该能够处理错误,并在收到这样的错误时减缓你的过程。 在AWS Docs中查看更多详细信息。

对于所有其他谁从谷歌绊倒这个线程,作为search这个错误消息的第一个结果:

如果您删除了存储桶,为了在新的区域重新创build, 请不要等到这个后台同步完成后再手动等待 ,而应该运行一个小的bash脚本,并且每5秒钟重新创build一次您需要的存储桶创build。

例:

 #!/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!" 

它会每隔几秒钟(取决于“睡眠”)重试“创build存储桶”操作,并尽可能快地为您创build,所以没有人可以错误地窃取您的存储桶名称:)

希望能帮助到你 :)

这个错误通常发生在一个桶被删除,并且一个新的桶被创build为和旧桶相同的名字时。

我相信我们需要等待一段时间,直到我们可以用相同的名字创build一个新的存储桶。