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

181

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

У меня есть программа, которая использует 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)
user1172468
источник
1
Вы пытаетесь поместить объекты в S3 и сразу же прочитать их?
jamieb
@jamieb, на самом деле нет, не сейчас.
user1172468 16.12.12
1
Хотел бы я иметь ответ для вас. Вы пытаетесь переписать те же ключи в быстрой последовательности? S3 построен на «в конечном итоге непротиворечивой» модели, где PUT нужно время для урегулирования.
jamieb
@jamieb, спасибо за трату мозговых циклов, но я думаю, что ответ Гая правильный. Я думаю, что в своем коде я повторяю попытку создать сегмент, ожидая изящного сбоя, - это происходит в 99,99% случаев, а иногда выдает эту ошибку. Снова очень ценю, что вы нашли время, чтобы помочь мне. Не унывайте!
user1172468 17.12.12
Спасибо за продолжение. Удачи!
jamieb

Ответы:

464

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

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

  2. понял, ведро должно пойти в регион ЕС и удалить его (используется консоль AWS)

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

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

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

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

Ян Влчинский
источник
4
Я просто столкнулся с той же ситуацией. Я отправлю ответ, если смогу создать свое ведро в течение следующего часа или около того.
AJB
27
Я могу это подтвердить. Это заняло около 1,5 часов, и нет никакой гарантии, что кто-то еще не будет выкопать название корзины в это время, но вы можете получить его обратно, как кажется, в течение разумного периода времени и с небольшой удачей.
AJB
1
Я согласен с @jan. Чтобы решить эту проблему: создайте новый контейнер с новым именем, не используйте имя удаленного контейнера, называя его новым.
Динеш Санни
5
Для меня это заняло менее 70 минут.
offby1
4
Amazon говорит, что это может занять где-то до 10 часов forum.aws.amazon.com/thread.jspa?threadID=37532
TomDotTom
37

Для всех остальных, кто наткнулся на эту тему от Google, как 1-й результат в поиске этого сообщения об ошибке:

Если вы удалили корзину, чтобы воссоздать ее в новом регионе, не ждите «вручную», пока не завершится эта фоновая синхронизация , вместо этого установите небольшой сценарий 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
Спасибо за это! В моем случае, я уже имел определенную область в конфигурации AWS и запуске сценария , как приведен в следующей ошибке: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128). Решение было убрать --regionфлаг.
MagentoAaron
23

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

Обратите внимание, что у вас есть ограничение в 100 ведер для учетной записи (см. Здесь ). РЕДАКТИРОВАТЬ: Теперь этот предел является «мягким пределом», и вы можете увеличить его при необходимости.

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

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

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

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

парень
источник
11

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

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

Сривиньеш К.Н.
источник
8

Просто и понятно: измените имя нового ведра или подождите 1 час.

raphadko
источник
0

Вы также получаете это сообщение, когда у вас уже есть более 100 сегментов в учетной записи. Существует мягкий предел в 100 ведер.

Джон Ми
источник
-1

Измените название вашего ведра или подождите. Я ждал менее 30 минут для себя. Мне не нужно было менять имя, и я не мог изменить его, поскольку я был настроен на него - оно должно было соответствовать моему уже существующему доменному имени для статического веб-сайта, который я искал для размещения. В любом случае, менее чем за 30 минут он был создан автоматически.

vel12171
источник