web-dev-qa-db-fra.com

Message d'erreur AWS: une opération conditionnelle conflictuelle est actuellement en cours pour cette ressource.

Je reçois cette erreur par intermittence.

J'ai un programme qui utilise le Java aws sdk et se charge sur les 10s de milliers de petits fichiers sur s3. Je vois cette erreur par intermittence.

Impossible de trouver une réponse utile après une recherche rapide sur Internet.

Notez que le programme appelant est à thread unique. L'aws sous-jacent Java sdk semble utiliser des threads de travail.

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

J'ai reçu le même message d'erreur quand j'ai suivi:

  1. créé un compartiment - il est allé par défaut à la région US (AWSCLI utilisé)

  2. réalisé, le compartiment ira dans la région de l’UE et l’a supprimé (console AWS utilisée)

  3. (quelques minutes plus tard) a essayé de créer le seau, en spécifiant la région de l'UE

À l'étape 3, la console AWS m'a montré le message d'erreur du titre de votre question.

Donc, je suppose que le compartiment aux États-Unis a été supprimé, mais il existe peut-être certains processus de synchronisation, qui prennent du temps. Et j'espère qu'attendre quelques heures me permettra de retrouver le nom du seau disponible pour la création - cette fois dans la région appropriée (de l'UE).

CORRECTIF: - Modifier: environ une heure plus tard, ma tentative de création du compartiment (dans la région de l'UE) a abouti.

416
Jan Vlcinsky

Pour tous les autres qui tombent sur ce fil à partir de Google, comme premier résultat à la recherche de ce message d'erreur:

Si vous avez supprimé un compartiment pour recréer dans une nouvelle région, n'attendez pas "manuellement" jusqu'à ce que la synchronisation en arrière-plan soit terminée, placez plutôt un petit script bash à exécuter et réessayez la création de votre compartiment nécessaire toutes les 5 secondes ou alors.

Exemple:

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

il va réessayer l'opération "créer un seau" pour vous, toutes les quelques secondes (en fonction du "sommeil") et dès que cela sera possible - le créera pour vous, afin que personne ne puisse voler votre nom de seau par erreur :)

j'espère que ça aide :)

25
Dmitry Shmakov

La demande dans votre exemple consiste à créer un compartiment. Si vous essayez de créer trop de seaux ou de les remplacer, cela n’est pas sain.

Notez que vous avez une limite de 100 compartiments pour un compte (voir here ). EDIT: Maintenant, cette limite est une "limite souple" et vous pouvez l'augmenter si nécessaire.

Notez également que la création d'un compartiment prend du temps et:

... il n'est pas approprié que le compartiment crée ou supprime des appels sur le chemin du code de haute disponibilité de votre application ...

Il est préférable de créer vos compartiments une fois, puis vous pouvez placer autant d’objets que vous le souhaitez dans vos compartiments existants (ou même un seul).

Quoi qu'il en soit, lorsque vous travaillez avec un système qui doit échouer de temps en temps, vous devriez être capable de gérer les erreurs et de ralentir votre processus lors de la réception d'une telle erreur. Voir plus de détails dans AWS Docs .

21
Guy

Cette erreur se produit généralement lorsqu'un compartiment est supprimé et qu'un nouveau compartiment est créé sous le même nom que l'ancien.

Je crois que nous devrions attendre un certain temps avant de pouvoir créer un nouveau seau du même nom.

8
Srivignesh KN

Simple et direct: Modifiez le nouveau nom du compartiment ou attendez 1 heure.

6
raphadko