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

时间:2012-12-16 02:23:19

标签: java amazon-web-services amazon-s3

我间歇性地收到了这个错误。

我有一个使用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)

9 个答案:

答案 0 :(得分:404)

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

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

  2. 意识到,存储桶将进入欧盟区域并将其删除(使用AWS控制台)

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

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

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

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

答案 1 :(得分:25)

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

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

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

希望它有所帮助:)

答案 2 :(得分:21)

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

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

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

  

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

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

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

答案 3 :(得分:8)

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

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

答案 4 :(得分:6)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

我在运行 Cloud Formation 模板时遇到错误。

结果是 EC2 假定我在其上运行 CFN 模板的 IAM 角色没有创建 S3 存储桶的权限。

要么提供 IAM 访问权限,要么通过执行具有创建 S3 存储桶的必要权限的 AWS Configureprogrammatically assume a role 来使用不同的 IAM 角色。

答案 8 :(得分:-1)

更改存储桶名称或等待。我等不到30分钟。我不需要更改名称,也无法按照设置的名称进行更改-它必须与我要托管的静态网站的现有域名匹配。无论如何,它是在不到30分钟的时间内自动创建的。