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

use*_*468 166 java amazon-s3 amazon-web-services

我间歇地得到这个错误.

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

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

请注意,调用程序是单线程的.底层的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)
Run Code Online (Sandbox Code Playgroud)

Jan*_*sky 433

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

  1. 创建了一个存储桶 - 它默认为美国地区(使用AWSCLI)

  2. 实现后,存储桶将进入欧盟地区并删除它(使用AWS控制台)

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

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

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

FIX: - 编辑:大约一个小时后,我创建存储桶(在欧盟地区)的尝试成功了.

  • 我可以证实这一点.花了大约1.5小时,并且不能保证其他人不会在此期间舀出桶名,但是你可以在一段合理的时间内把它拿回去,并带点运气. (22认同)
  • 对我来说,花了不到70分钟. (5认同)
  • 我刚遇到同样的情况.如果我能在接下来的一个小时左右创建我的水桶,我会回复. (4认同)
  • 亚马逊表示可能需要长达10小时的时间https://forums.aws.amazon.com/thread.jspa?threadID=37532 (4认同)

Dmi*_*kov 30

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

如果您删除了存储桶,要在新区域中重新创建,请不要等待"手动"直到此后台同步完成,而是放置一个小的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!"
Run Code Online (Sandbox Code Playgroud)

它将每隔几秒(取决于"睡眠")重试"创建桶"操作,并且一旦可能 - 将为您创建它,因此没有人可以错误地窃取您的桶名称:)

希望能帮助到你 :)

  • 谢谢你!在我的实例中,我已经在 aws 配置中定义了区域并运行脚本,结果出现以下错误:`UnicodeDecodeError: 'ascii' 编解码器无法解码位置 17 中的字节 0xe2: 序数不在范围内(128) `。解决方案是删除“--region”标志。 (2认同)

Guy*_*Guy 23

您的示例中的请求是创建存储桶.如果您尝试创建太多桶或更换桶,则它不健康.

请注意,您的帐户限制为100个(请参阅此处).编辑:现在这个限制是一个"软限制",如果需要你可以增加它.

另请注意,创建存储桶需要时间并且:

...在应用程序的高可用性代码路径上创建或删除调用是不合适的...

最好一次创建你的桶,然后,你可以在你现有的桶(甚至一个桶)中放置你喜欢的任意数量的对象.

无论如何,当使用一个偶然发生故障的系统时,你应该能够处理错误并在收到这样的错误时减慢你的进程.在AWS Docs中查看更多详细信息.


Sri*_* KN 10

删除Bucket并且创建与旧存储桶同名的新存储桶时,通常会发生此错误.

我相信我们需要等待一段时间才能创建一个同名的新桶.


rap*_*dko 7

简单明了:更改新的存储桶名称或等待1小时.


Dmi*_*pov 7

最后,AWS 现在在自己的知识中心有了明确的答案。请参阅此内容:当我尝试重新创建存储桶时,为什么会从 Amazon S3 收到错误“当前正在针对此资源执行冲突的条件操作”?

我刚刚删除了一个存储桶(因为 S3 存储桶名称是全局唯一的,我需要在另一个 AWS 账户中创建相同的存储桶),而创建同名存储桶的脚本失败并出现相同的错误。所以我必须要有耐心,等一个小时。

作为确认:大约一小时后,我可以成功创建一个与已删除的存储桶同名的存储桶。