This document describes all error codes, HTTP status codes, error messages, and conditions that manta-buckets-api can send to S3 clients.
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
AccessDenied | 403 | "Access Denied" | User lacks permission for the operation | All S3 operations |
SignatureDoesNotMatch | 403 | "The request signature we calculated does not match the signature you provided." | S3 signature validation fails | All authenticated operations |
InvalidSignature | 403 | "The signature we calculated does not match the one you sent" | Signature validation fails | All S3 operations |
RequestTimeTooSkewed | 403 | "The difference between the request time and the current time is too large." | Request timestamp outside acceptable range | All timestamped operations |
AuthorizationRequired | 401 | "Authorization is required" | Authentication missing | All S3 operations |
InvalidKeyId | 403 | "the KeyId token you provided is invalid" | Key ID in auth is invalid | All S3 operations |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
NoSuchBucket | 404 | "The specified bucket does not exist." | Accessing non-existent bucket | All bucket operations |
BucketAlreadyExists | 409 | "The requested bucket name is not available." | Creating bucket with existing name | CreateBucket |
BucketNotEmpty | 409 | "{bucket} is not empty" | Deleting non-empty bucket | DeleteBucket |
InvalidBucketName | 422 | "{name} is not a valid bucket name" | Bucket name violates naming rules | CreateBucket |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
NoSuchKey | 404 | "The specified key does not exist." | Accessing non-existent object | GetObject, HeadObject, DeleteObject |
ObjectNotFound | 404 | "{object} was not found" | Object doesn't exist | All object operations |
InvalidBucketObjectName | 422 | "{name} is not a valid bucket object name" | Object name violates naming rules | All object operations |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
InvalidPart | 400 | "One or more parts have size discrepancies that prevent assembly" | Part references are invalid or parts are missing | CompleteMultipartUpload |
EntityTooSmall | 400 | "Your proposed upload is smaller than the minimum allowed object size." | Multipart part < 5MB (except last part) | UploadPart |
MultipartUploadInvalidArgument | 409 | "cannot create upload: {msg}" or "upload {id}: {msg}" | Invalid multipart upload arguments | InitiateMultipartUpload, UploadPart, CompleteMultipartUpload |
InvalidMultipartUploadState | 409 | "upload {id}: {msg}" | Multipart upload in wrong state | CompleteMultipartUpload, AbortMultipartUpload |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
ContentMD5Mismatch | 400 | "Content-MD5 expected {expected}, but was {actual}" | MD5 checksum mismatch | PutObject, UploadPart |
ContentLengthRequired | 411 | "Content-Length must be >= 0" | Missing/invalid Content-Length | PutObject, UploadPart |
MaxContentLengthExceeded | 413 | "request has exceeded {max} bytes" | Upload exceeds size limit | PutObject, UploadPart |
RequestedRangeNotSatisfiable | 416 | "{range} is an invalid range" | Invalid Range header | GetObject |
InvalidDurabilityLevel | 400 | "durability-level must be between {min} and {max}" | durability-level header out of range | PutObject, InitiateMultipartUpload |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
PreconditionFailed | 412 | "object was modified at '{timestamp}'; if-unmodified-since '{timestamp}'" | Conditional headers don't match | GetObject, HeadObject, PutObject |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
InternalError | 500 | "We encountered an internal error. Please try again." | Unexpected system errors, storage exhaustion | All S3 operations |
ServiceUnavailable | 503 | "manta is unable to serve this request" | Service temporarily unavailable | All S3 operations |
InsufficientStorage | 507 | "There is insufficient storage space to complete the request." | Storage nodes lack space | PutObject, UploadPart |
NotEnoughSpace | 507 | "not enough free space for {size} MB" | Insufficient storage space | PutObject, UploadPart |
ThrottledError | 503 | "manta throttled this request" | Rate limits exceeded | All S3 operations |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
AccountDoesNotExist | 403 | "{account} does not exist" | Account doesn't exist in Manta | All S3 operations |
AccountBlocked | 403 | "{login} is not an active account" | Account is blocked/inactive | All S3 operations |
UserDoesNotExist | 403 | "{account}/{user} does not exist" | Sub-user doesn't exist | All S3 operations |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
UploadAbandoned | 499 | "request was aborted prematurely by the client" | Client disconnects during upload | PutObject, UploadPart |
UploadTimeout | 408 | "request took too long to send data" | Upload times out | PutObject, UploadPart |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
InvalidArgumentError | 400 | "limit={limit} is invalid: must be between [1, 1024]" | List limit out of range | ListObjects, ListObjectsV2 |
InvalidParameter | 400 | "{value} is invalid for {parameter}" | Parameter value invalid | Various operations |
| Error Code | HTTP Status | Error Message | When/Why Occurs | S3 Operations |
|---|
SecureTransportRequired | 403 | "Manta requires a secure transport (SSL/TLS)" | HTTP used when HTTPS required | All S3 operations |
- Error Translation: Manta internal errors are automatically translated to S3-compatible error codes
- Conditional Operations: S3 conditional headers are fully supported and can trigger appropriate precondition errors
- Storage Exhaustion: When storage nodes are unavailable, errors are mapped to
InternalError with HTTP 500/503
- Multipart States: Complex state management with specific errors for each multipart operation phase
- Authentication Chain: Multiple authentication layers each produce specific error codes