Лимиты и ошибки
Жёсткие лимиты изменить нельзя. Квоты с пометкой «изменяемая» поддержка может поднять для пространств Team и Enterprise.
Объекты
| Лимит | Значение |
|---|---|
| Максимальный размер объекта | 5 ТиБ |
| Максимальный одиночный PUT | 5 ГиБ |
| Размер части multipart | 5 МиБ – 5 ГиБ |
| Частей в загрузке | 10 000 |
| Длина ключа объекта | 1 024 байта |
| Пользовательские метаданные | 2 КиБ |
| Тегов на объект | 10 |
| Максимальный срок presigned URL | 7 дней |
| Жизнь незавершённой multipart-загрузки | 7 дней (по умолчанию) |
Частота запросов
Пропускная способность растёт с числом префиксов. Распределяйте горячие ключи по префиксам, чтобы выйти за пределы значений на префикс.
| Лимит | Значение |
|---|---|
| Запросов записи на префикс | 3 500 / с |
| Запросов чтения на префикс | 5 500 / с |
| Management API на токен | 1 200 / мин |
| Запросов очистки edge на пространство | 60 / мин |
| Доставок webhook на бакет | 500 / с |
Квоты
| Лимит | Значение |
|---|---|
| Бакетов на пространство (изменяемая) | 1 000 |
| Ключей на пространство (изменяемая) | 500 |
| Правил жизненного цикла на бакет | 1 000 |
| Правил репликации на бакет | 100 |
| Своих edge-хостов на бакет (изменяемая) | 25 |
| Подписок webhook на бакет | 20 |
Коды ошибок S3
Ошибки S3 API возвращаются в стандартном XML-формате с элементами Code, Message, RequestId и HostId.
| HTTP | Code | Значение |
|---|---|---|
| 400 | InvalidArgument | Параметр или заголовок имеет неверный формат. |
| 400 | EntityTooSmall | Часть multipart, кроме последней, меньше 5 МиБ. |
| 400 | EntityTooLarge | Одиночный PUT больше 5 ГиБ. Используйте multipart. |
| 403 | AccessDenied | Ключ или политика не разрешают это действие. |
| 403 | SignatureDoesNotMatch | Неверная подпись запроса. Проверьте секретный ключ и расхождение часов. |
| 403 | RequestTimeTooSkewed | Часы клиента отличаются от серверных больше чем на 15 минут. |
| 404 | NoSuchBucket | Бакета нет в этом регионе. |
| 404 | NoSuchKey | Объекта нет, или это маркер удаления. |
| 409 | BucketAlreadyExists | Имена бакетов глобальны. Выберите другое имя. |
| 409 | BucketNotEmpty | Удалите все объекты и версии перед удалением бакета. |
| 412 | PreconditionFailed | Не выполнено условие If-Match или If-None-Match. |
| 429 | TooManyRequests | Превышен лимит Management API. Учитывайте Retry-After. |
| 503 | SlowDown | Слишком высокая частота запросов к префиксу. Повторите с экспоненциальной задержкой. |
Повторы
Повторяйте 500, 503 и сетевые ошибки с экспоненциальной задержкой и случайным разбросом: от 100 мс до 20 с. AWS SDK делают это по умолчанию в режиме standard.
Python
from botocore.config import Config
config = Config(retries={"mode": "standard", "max_attempts": 8})