Сообщение об ошибке AWS: в настоящее время идет конфликтная условная операция против этого ресурса

Я получаю эту ошибку с перерывами.

У меня есть программа, которая использует java aws sdk и загружает более 10 тысяч тысяч файлов на 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)

Ответ 1

Я получил то же сообщение об ошибке, когда я сделал следующее:

  • создал ведро - по умолчанию он поступил в область США (используется AWSCLI)

  • ведро отправляется в регион ЕС и удаляет его (используется консоль AWS)

  • (несколько минут спустя) попытался создать ведро, указав регион ЕС

На шаге 3 консоль AWS показала мне сообщение об ошибке из заголовка вашего вопроса.

Итак, я думаю, что ведро в США было удалено, но, возможно, есть некоторые процессы синхронизации, которые требуют времени. И я надеюсь, что в ожидании нескольких часов я снова найду имя ковша для создания - на этот раз в правильном (ЕС) регионе.

ИСПРАВЛЕНИЕ: - Изменить: примерно через час моя попытка создать ведро (в регионе ЕС) преуспела.

Ответ 2

Запрос в вашем примере - создать ведро. Если вы пытаетесь создать слишком много ведер или замените ведра, это не здорово.

Обратите внимание, что у вас есть лимит в 100 копеек для учетной записи (см. здесь). EDIT: теперь этот предел является "мягким пределом", и вы можете увеличить его, если это необходимо.

Также обратите внимание, что создание ведра занимает время и:

... нецелесообразно создавать ведро для создания или удаления вызовов на код доступа с высокой доступностью вашего приложения...

Лучше создать свои ведра один раз, а затем вы можете разместить столько объектов, которые вам нравятся, в ваших существующих ковшиках (или даже одном).

Во всяком случае, при работе с системой, которая постоянно терпит неудачу, вы должны иметь возможность обрабатывать ошибки и замедлять процесс при получении такой ошибки. Подробнее см. Документация AWS.

Ответ 3

Для всех остальных, которые наткнулись на этот поток из google, в качестве первого результата поиска этого сообщения об ошибке:

Если вы удалили ведро, чтобы воссоздать новый регион, не дожидайтесь "вручную" до тех пор, пока эта фоновая синхронизация не будет завершена, вместо этого запустите небольшой bash script для запуска и повторите попытку необходимое создание ковша каждые 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!"

он повторит операцию "создать ведро" для вас, каждые несколько секунд (зависит от "сна" ), и как только это станет возможным - создаст ее для вас, поэтому никто не сможет красть ваше имя ведра по ошибке:)

надеюсь, что это поможет:)

Ответ 4

Эта ошибка обычно возникает, когда Bucket удаляется, и создается новое ведро с тем же именем, что и старое ведро.

Я считаю, что нам нужно будет ждать определенное количество времени, пока мы не сможем создать новый ведро с тем же именем.