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

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

我有一个程序,它使用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)
76064 次浏览

您的示例中的请求是创建一个存储桶。如果您试图创建太多的存储桶或替换存储桶,这是不健康的。

请注意,您的帐户限制为100个时段(请参阅在这里)。编辑:现在这个限制是一个“软限制”,如果需要,你可以增加它。

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

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

最好创建一次存储桶,然后可以在现有的存储桶(甚至是单个存储桶)中放置任意多个对象。

无论如何,当使用一个注定要失败的系统时,你应该能够处理错误,并在收到这样的错误时减慢你的进程。请参阅AWS文档中的详细信息。

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

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

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

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

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

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

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

对于所有其他谁偶然发现这个主题从谷歌,作为第一个结果,在搜索这个错误信息:

如果您删除了存储桶,要在新区域中重新创建,请请勿“手动”等待此后台同步完成,而不是运行一个小的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!"

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

希望能有所帮助:)

此错误通常发生在删除存储桶并以与旧存储桶相同的名称创建新存储桶时。

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

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

更改您的存储桶名称或等待。我等了不到30分钟。我不需要改变名称,我不能改变它,因为我设置了它-它必须匹配我已经存在的静态网站的域名,我正在寻找主机。总之,在不到30分钟的时间里,它就自动创建了。

当您的帐户中已有超过100个存储桶时,您也会收到此消息。有100个存储桶的软限制。

最后,AWS现在在他们自己的知识中心有了一个明确的答案,请参阅https://aws.amazon.com/premiumsupport/knowledge-center/s3-conflicting-conditional-operation/

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

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

我在运行云形成模板时出错了。

事实证明,EC2假设我运行CFN模板的IAM角色没有创建S3存储桶的权限。

请提供IAM访问权限,或者通过执行AWS Configure以编程方式承担角色(具有创建S3存储桶所需的权限)来使用不同的IAM角色。

我碰到了这个。我创建了一个桶,然后意识到我在错误的区域创建了这个桶:US-WEST-2

然而,它应该在美国东部-1。我删除了出错的存储桶,然后尝试在正确的区域重新创建它。

此命令每10秒运行一次bucket create命令(MacOS或Linux)。花了一个多小时才成功。

watch -n 10 aws s3api create-bucket --bucket com.xenial.deploy.uat-us-east-1 --region us-east-1