Повідомлення про помилку AWS: На цьому ресурсі зараз працює конфліктна умовна операція


181

Я отримую цю помилку з перервами.

У мене є програма, яка використовує java aws sdk і завантажує понад 10s тисяч невеликих файлів до s3. Я бачу цю помилку з перервами.

Не вдалося знайти корисної відповіді після швидкого пошуку в Інтернеті.

Зверніть увагу, що програма виклику є однопоточною. Основні ави 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
Ви намагаєтесь поставити об'єкти в S3, а потім негайно їх прочитати?
jamieb

@jamieb, насправді ні, не зараз.
користувач1172468

1
Я б хотів, щоб я мав відповідь за вас. Ви намагаєтесь швидко переписати ті самі ключі? S3 побудований на "послідовній послідовності" моделі, де PUT потрібен час, щоб влаштуватися.
jamieb

@jamieb, дякую, що витратив мозкові цикли, але відповідь, яку надав Гай, правильна, я думаю. Я думаю, що в своєму коді я намагаюся створити відро - очікуючи виходу з ладу - це подобається 99,99% часу, а іноді він видає цю помилку. Знову дуже вдячний, що знайшли час, щоб допомогти мені. Ура!
користувач1172468

Дякуємо за подальші дії. Удачі!
jamieb

Відповіді:


464

Я отримав те саме повідомлення про помилку, коли зробив наступне:

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

  2. Зрозуміло, відро перейде до регіону ЄС та видалить його (використана консоль AWS)

  3. (через кілька хвилин) спробували створити відро, вказавши регіон ЄС

На кроці 3 консоль AWS показала мені повідомлення про помилку із заголовка вашого запитання.

Тож я здогадуюсь, що відро в США було видалено, але, можливо, є деякі процеси синхронізації, які потребують часу. І я сподіваюся, що чекаючи декількох годин, я знову знайду назву відра для створення - цього разу у відповідному регіоні (ЄС).

Виправлення: - Редагувати: Приблизно через годину моя спроба створити відро (в регіоні ЄС) вдалася.


4
Я просто зіткнувся з тією ж ситуацією. Я відправлю повідомлення, якщо зможу створити своє відро протягом найближчої години.
AJB

27
Я можу це підтвердити. Це зайняло близько 1,5 годин, і немає жодної гарантії, що хтось інший не захопить назву відра тим часом, але ви можете повернути його, здається, протягом розумного періоду часу і з невеликою долею.
AJB

1
Я погоджуюся з @jan. Щоб вирішити це: Створіть нове відро з новим іменем. Не використовуйте ім'я видаленого відра, називаючи нове відро.
Дінеш Сонячний

5
Для мене це зайняло менше 70 хвилин.
offby1

4
Amazon каже, що це може зайняти десь до 10 годин forums.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 відра для облікового запису (див. Тут ). EDIT: Тепер ця межа є "м'якою межею", і ви можете її збільшити за потреби.

Також зауважте, що створення відра вимагає часу і:

... не доцільно змушувати створювати або видаляти дзвінки на шляху коду з високою доступністю вашої програми ...

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

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


11

Ця помилка, як правило, виникає, коли Bucket видаляється та створюється нове відро з тим же найменуванням, що і старе.

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



0

Ви також отримуєте це повідомлення, коли у вас на рахунку вже більше 100 відер. Існує м'який ліміт - 100 відер.


-1

Змініть ім’я відра або почекайте. Я почекав менше 30 хвилин. Мені не потрібно було змінювати ім’я, і я не міг його змінити, як було встановлено на ньому - воно повинно було відповідати моєму вже існуючому доменному імені для статичного веб-сайту, який я хотів розмістити. У всякому разі, менше ніж за 30 хвилин це було створено автоматично.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.