Reference

Limits & errors

Hard limits cannot be changed. Quotas marked as adjustable can be raised by support for Team and Enterprise workspaces.

Objects

LimitValue
Maximum object size5 TiB
Maximum single PUT5 GiB
Multipart part size5 MiB – 5 GiB
Parts per upload10 000
Object key length1 024 bytes
User metadata per object2 KiB
Tags per object10
Presigned URL maximum expiry7 days
Incomplete multipart upload lifetime7 days (default)

Request rates

Rates scale automatically with the number of prefixes. Spread hot keys across prefixes to go beyond the per-prefix numbers.

LimitValue
Write requests per prefix3 500 / s
Read requests per prefix5 500 / s
Management API per token1 200 / min
Edge purge requests per workspace60 / min
Webhook deliveries per bucket500 / s

Quotas

LimitValue
Buckets per workspace (adjustable)1 000
Access keys per workspace (adjustable)500
Lifecycle rules per bucket1 000
Replication rules per bucket100
Custom edge hostnames per bucket (adjustable)25
Webhook subscriptions per bucket20

S3 error codes

S3 API errors follow the standard XML error format with Code, Message, RequestId and HostId elements.

HTTPCodeMeaning
400InvalidArgumentA parameter or header is malformed.
400EntityTooSmallA multipart part other than the last is smaller than 5 MiB.
400EntityTooLargeA single PUT exceeds 5 GiB. Use multipart upload.
403AccessDeniedThe key or policy does not allow this action.
403SignatureDoesNotMatchThe request signature is invalid. Check the secret key and clock skew.
403RequestTimeTooSkewedClient clock differs from server time by more than 15 minutes.
404NoSuchBucketThe bucket does not exist in this region.
404NoSuchKeyThe object does not exist, or is a delete marker.
409BucketAlreadyExistsBucket names are global. Choose another name.
409BucketNotEmptyDelete all objects and versions before deleting the bucket.
412PreconditionFailedAn If-Match or If-None-Match condition was not met.
429TooManyRequestsManagement API rate limit exceeded. Honour Retry-After.
503SlowDownRequest rate on a prefix is too high. Retry with exponential backoff.

Retries

Retry 500, 503 and network errors with exponential backoff and jitter, starting at 100 ms and capped at 20 s. The AWS SDKs do this by default in standard retry mode.

Python
from botocore.config import Config

config = Config(retries={"mode": "standard", "max_attempts": 8})