Billing for Amazon S3 error responses
Important
On May 13, 2024, we started deploying a change to eliminate charges for unauthorized requests that aren't initiated by the bucket owner.
After the deployment of this change is completed, bucket owners will never incur request or bandwidth charges for requests that
return AccessDenied
(HTTP 403 Forbidden
) errors when these requests are initiated from outside of their individual AWS account or AWS organization.
The current page shows a full list of HTTP 3XX
and 4XX
status codes that won't be billed. This billing change requires no updates to your applications and applies to all S3 buckets. When deployment of this change is completed in all AWS Regions, we’ll update our documentation.
In general, S3 bucket owners are billed for requests with
HTTP 200 OK
successful responses and HTTP 4XX
client error responses. Bucket owners aren't billed for HTTP 5XX
server error responses, such as HTTP 503 Slow Down
errors.
For more information about billing charges if your bucket is configured as a Requester Pays bucket, see How Requester Pays charges work.
The following table lists specific error codes under HTTP 3XX
and 4XX
status codes that aren't billed. For buckets configured with website hosting,
applicable request and other charges will still apply when S3 returns a custom error document or for custom redirects.
Note
For AccessDenied
(HTTP 403 Forbidden
), S3 doesn't charge the bucket owner when the request is initiated outside of the bucket owner's individual AWS account or the bucket owner's AWS organization.
HTTP status code | Error code | Description of error code |
---|---|---|
301 Moved Permanently | PermanentRedirect | The bucket that you are attempting to access must be addressed using the specified endpoint. Send all future requests to this endpoint. |
PermanentRedirectControlError | The API operation you are attempting to access must be addressed using the specified endpoint. Send all future requests to this endpoint. | |
307 Temporary Redirect | TemporaryRedirect | You are being redirected to the bucket while the Domain Name System (DNS) server is being updated. |
400 Bad Request | AuthorizationHeaderMalformed | The authorization header that you provided is not valid. |
AuthorizationQueryParametersError | The authorization query parameters that you provided are not valid. | |
ExpiredToken | The provided token has expired. | |
IllegalLocationConstraintException | You are trying to access a bucket from a different Region than where the bucket exists.
To avoid this error, use the --region option. For example:
aws s3 cp . |
|
InvalidArgument |
This error might occur for the following reasons:
|
|
InvalidDigest | The Content-MD5 or checksum value that you specified is not valid. | |
InvalidEncryptionAlgorithmError | The encryption request that you specified is not valid. The valid value is
AES256 . |
|
InvalidRequest |
This error might occur for the following reasons:
|
|
InvalidSOAPRequest | The SOAP request body is not valid. | |
InvalidStorageClass | The storage class that you specified is not valid. | |
InvalidTag | Your request contains tag input that is not valid. For example, your request might contain duplicate keys, keys or values that are too long, or system tags. | |
InvalidToken | The provided token is malformed or otherwise not valid. | |
InvalidURI | The specified URI couldn't be parsed. | |
KeyTooLongError | Your key is too long. | |
MalformedACLError | The ACL that you provided was not well formed or did not validate against our published schema. | |
MalformedPOSTRequest | The body of your POST request is not well-formed multipart/form-data. | |
MalformedXML | The XML that you provided was not well formed or did not validate against our published schema. | |
MaxPostPreDataLengthExceededError | Your POST request fields preceding the upload file were too large. | |
MetadataTooLarge | Your metadata headers exceed the maximum allowed metadata size. | |
MissingRequestBodyError | You sent an empty XML document as a request. | |
MissingSecurityHeader | Your request is missing a required header. | |
NoLoggingStatusForKey | There is no such thing as a logging status subresource for a key. | |
RequestHeaderSectionTooLarge | The request header and query parameters used to make the request exceed the maximum allowed sizes | |
UnexpectedContent | This request contains unsupported content. | |
UserKeyMustBeSpecified | The bucket POST request must contain the specified field name. If it is specified, check the order of the fields. | |
IncorrectEndpoint | The specified bucket exists in another Region. Direct requests to the correct endpoint. | |
403 Forbidden | RequestTimeTooSkewed | The difference between the request time and the server's time is too large. |
SignatureDoesNotMatch | The request signature that the server calculated does not match the signature that you provided. Check your AWS secret access key and signing method. For more information, see REST Authentication and SOAP Authentication. | |
NotSignedUp | Your account is not signed up for the Amazon S3 service. You must sign up before you can use
Amazon S3. You can sign up at the following URL: https://aws.amazon.com/s3 |
|
InvalidSecurity | The provided security credentials are not valid. | |
InvalidPayer | All access to this object has been disabled. For further assistance, see Contact Us |
|
InvalidAccessKeyId | The AWS access key ID that you provided does not exist in our records. | |
AccountProblem | There is a problem with your AWS account that prevents the operation from completing
successfully. For further assistance, see Contact Us |
|
UnauthorizedAccessError | Applicable in China Regions only. Returned when a request is made to a bucket that doesn't have an ICP license. For more information, see ICP Recordal |
|
404 Not Found | NoSuchUpload | The specified multipart upload does not exist. The upload ID might not be valid, or the multipart upload might have been aborted or completed. |
NoSuchWebsiteConfiguration | The specified bucket does not have a website configuration. | |
405 Method Not Allowed | MethodNotAllowed | The specified method is not allowed against this resource. |
409 Conflict | BucketAlreadyExists | The requested bucket name is not available. The bucket namespace is shared by all users of the system. Specify a different name and try again. |
InvalidBucketState | The request is not valid for the current state of the bucket. | |
OperationAborted | A conflicting conditional operation is currently in progress against this resource. Try again. | |
411 Length Required | MissingContentLength | You must provide the Content-Length HTTP header. |
412 Precondition Failed | RequestIsNotMultiPartContent | A bucket POST request must be of the enclosure-type multipart/form-data. |