Сообщение об ошибке 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 удаляется, и создается новое ведро с тем же именем, что и старое ведро.
Я считаю, что нам нужно будет ждать определенное количество времени, пока мы не сможем создать новый ведро с тем же именем.