INTEGRITY Документация

Коды ошибок

Эта страница описывает коды ошибок, возвращаемые R2 при использовании API Workers или S3-совместимый API, а также рекомендуемые исправления для устранения неполадок.

Как возвращаются ошибки

Для API Workers, операции R2 выбрасывают исключения, которые можно перехватить. Код ошибки указывается в конце message свойство:

try {
  await env.MY_BUCKET.put("my-key", data, { customMetadata: largeMetadata });
} catch (error) {
  console.error(error.message);
  // "put: Your metadata headers exceed the maximum allowed metadata size. (10012)"
}

Для S3-совместимый API, ошибки возвращаются в виде XML в теле ответа:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>NoSuchKey</Code>
  <Message>The specified key does not exist.</Message>
</Error>

Справочник кодов ошибок

Ошибки аутентификации и авторизации

Код ошибки Код S3 HTTP-статус Подробности Рекомендуемое решение
10002 Unauthorized 401 Отсутствуют или недействительны учётные данные для аутентификации. Проверьте свой API-токен или учетные данные ключа доступа верны и не истекли.
10003 AccessDenied 403 Недостаточно прав для выполнения запрошенной операции. Проверьте, что ваш API-токен имеет необходимые разрешения для бакета и операции.
10018 ExpiredRequest 403 Срок действия presigned URL или подписи запроса истёк. Обновите presigned URL или подпись.
10035 SignatureDoesNotMatch 403 Подпись запроса не совпадает с вычисленной подписью. Проверьте секретный ключ и алгоритм подписи. Убедитесь в отсутствии проблем с кодированием URL.
10042 NotEntitled 403 У аккаунта нет доступа к этой функции. Убедитесь, что в вашем аккаунте есть Подписка R2.

Ошибки бакета

Код ошибки Код S3 HTTP-статус Подробности Рекомендуемое решение
10005 InvalidBucketName 400 Bucket name does not meet naming requirements. Bucket names must be 3-63 chars, lowercase alphanumeric and hyphens, start/end with alphanumeric.
10006 NoSuchBucket 404 Указанный бакет не существует. Убедитесь, что имя бакета указано верно и бакет существует в вашем аккаунте.
10008 BucketNotEmpty 409 Невозможно удалить бакет, содержащий объекты. Перед удалением бакета удалите все объекты в нём.
10009 TooManyBuckets 400 Превышен лимит бакетов аккаунта (по умолчанию: 1,000,000 бакетов). Запросите увеличение лимита через Форма запроса на увеличение лимитов.
10073 BucketConflict 409 Bucket name already exists. Выберите другое имя бакета. Имена бакетов должны быть уникальными в пределах вашего аккаунта.

Ошибки объектов

Код ошибки Код S3 HTTP-статус Подробности Рекомендуемое решение
10007 NoSuchKey 404 Указанный ключ объекта не существует. Для API Workers, get() и head() возвращать null вместо генерации исключения. Убедитесь, что ключ объекта указан верно и объект не был удалён.
10020 InvalidObjectName 400 Ключ объекта содержит недопустимые символы или слишком длинный. Используйте допустимые символы UTF-8. Максимальная длина ключа: 1024 байта.
100100 EntityTooLarge 400 Объект превышает максимальный размер (5 ГиБ для одиночной загрузки, 5 ТиБ для составной). Используйте составная загрузка для объектов размером более 5 GiB. Максимальный размер объекта составляет 5 TiB.
10012 MetadataTooLarge 400 Пользовательские метаданные превышают лимит в 8,192 байта. Уменьшите размер пользовательских метаданных. Максимальный суммарный размер всех пользовательских метаданных: 8,192 байт.
10069 ObjectLockedByBucketPolicy 403 Объект защищён правилом блокировки бакета, поэтому его нельзя изменить или удалить. Дождитесь окончания срока хранения. См. блокировки бакета.

Ошибки загрузки и запросов

Код ошибки Код S3 HTTP-статус Подробности Рекомендуемое решение
10033 MissingContentLength 411 Content-Length заголовок обязателен, но отсутствует. Включите Content-Length заголовок в запросах PUT/POST.
10013 IncompleteBody 400 Request body terminated before expected Content-Length. Убедитесь, что тело запроса передаётся полностью. Проверьте, не было ли обрывов сети или тайм-аутов на стороне клиента.
10014 InvalidDigest 400 Неверный формат заголовка контрольной суммы. Убедитесь, что контрольные суммы закодированы корректно (base64 для контрольных сумм SHA/CRC).
10037 BadDigest 400 Указанная контрольная сумма не совпадает с загруженным содержимым. Проверьте целостность данных и повторите загрузку.
10039 InvalidRange 416 Запрошенный диапазон байтов не может быть удовлетворён. Убедитесь, что начало диапазона меньше размера объекта. Проверьте Range формат заголовка.
10031 PreconditionFailed 412 Условные заголовки (If-Match, If-Unmodified-Since, и т. д.) не были выполнены. ETag или время изменения объекта не соответствуют указанному условию. Запросите объект заново и повторите попытку. Подробнее см. условные операции.

Ошибки составной загрузки

Код ошибки Код S3 HTTP-статус Подробности Рекомендуемое решение
10011 EntityTooSmall 400 Часть составной загрузки меньше минимального размера (5 MiB), за исключением последней части. Убедитесь, что размер каждой части (кроме последней) составляет не менее 5 МиБ.
10024 NoSuchUpload 404 Составная загрузка не существует или была прервана. Проверьте uploadId верно. По умолчанию незавершённые составные загрузки истекают через 7 дней. См. жизненные циклы объектов.
10025 InvalidPart 400 При завершении загрузки не удалось найти одну или несколько частей. Убедитесь, что каждая часть успешно загружена, и используйте точный ETag, возвращённый UploadPart.
10048 InvalidPart 400 Все части, кроме последней, должны быть одинакового размера. Убедитесь, что все части, кроме последней, имеют одинаковый размер. R2 требует единообразного размера частей при multipart-загрузке.

Ошибки сервиса

Код ошибки Код S3 HTTP-статус Подробности Рекомендуемое решение
10001 InternalError 500 Произошла внутренняя ошибка. Повторите запрос. Если ошибка сохраняется, проверьте Cloudflare Status или обратитесь в службу поддержки.
10043 ServiceUnavailable 503 Сервис временно недоступен. Повторите с экспоненциальной задержкой. Проверьте Cloudflare Status.
10054 ClientDisconnect 400 Клиент отключился до завершения запроса. Проверьте сетевое подключение и повторите попытку.
10058 TooManyRequests 429 Превышен лимит запросов. Часто возникает из-за нескольких одновременных запросов к одному и тому же ключу объекта (лимит: 1 запись в секунду на ключ). Проверьте, обращаются ли несколько клиентов к одному и тому же ключу объекта. См. Лимиты R2.