web-dev-qa-db-ja.com

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)
158
user1172468

私は次のことをしたときに同じエラーメッセージが表示されました:

  1. バケットを作成しました-デフォルトで米国リージョンに行きました(AWSCLIを使用)

  2. バケットはEUリージョンに移動して削除されます(AWSコンソールを使用)

  3. (数分後)EU地域を指定してバケットを作成しようとしました

ステップ3で、AWSコンソールは質問のタイトルからエラーメッセージを表示しました。

したがって、米国のバケットは削除されたと思いますが、同期プロセスがいくつかあり、時間がかかる可能性があります。そして、数時間待って、バケット名が再び作成できるようになることを願っています-今回は適切な(EU)地域で。

修正:-編集:約1時間後、バケット(EUリージョン)を作成する試みが成功しました。

416
Jan Vlcinsky

Googleからこのスレッドに出くわした他のすべてのユーザーについては、このエラーメッセージの検索の最初の結果として:

バケットを削除した場合、新しいリージョンで再作成するには、このバックグラウンド同期が完了するまで「手動で」待機しないでください、代わりに小さな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!"

数秒ごと(「スリープ」に依存)に「バケットの作成」操作を再試行し、可能な限りすぐに作成します。したがって、誰も間違ってバケット名を盗むことはできません:)

それが役に立てば幸い :)

25
Dmitry Shmakov

この例の要求は、バケットを作成することです。作成しようとしているバケットが多すぎる場合や、バケットを交換しようとしている場合、健全ではありません。

アカウントには10​​0バケットの制限があることに注意してください( here を参照)。編集:この制限は「ソフト制限」であり、必要に応じて増やすことができます。

また、バケットの作成には時間がかかることに注意してください。

...アプリケーションの高可用性コードパスで呼び出しを作成または削除するバケットを作成することは適切ではありません...

バケットを一度作成してから、既存のバケット(または単一のバケット)に好きなだけオブジェクトを配置できます。

とにかく、ときどき失敗するようにバインドされているシステムで作業するとき、エラーを処理し、そのようなエラーを受け取ったときにプロセスを遅くすることができるはずです。詳細は AWS Docs をご覧ください。

21
Guy

このエラーは通常、バケットが削除され、古いバケットと同じ名前で新しいバケットが作成されたときに発生します。

同じ名前で新しいバケットを作成できるようになるまで、一定の時間待つ必要があると思います。

8
Srivignesh KN

簡単でわかりやすい:新しいバケット名を変更するか、1時間待ちます。

6
raphadko