How can I troubleshoot the 404 "NoSuchKey" error from Amazon S3?

Last updated: 2019-05-30

My users are trying to access objects in my Amazon Simple Storage Service (Amazon S3) bucket. However, Amazon S3 is returning the 404 "NoSuchKey" error. How can I troubleshoot this error? 

Resolution

Amazon S3 generally returns 404 errors if the requested object is missing from the bucket. Before users make GET or HEAD requests for an object, be sure that the object is created and is available in the bucket. To check if an object is available in a bucket, you can review the contents of the bucket from the Amazon S3 console. Or, you can run the head-object AWS Command Line Interface (AWS CLI) command:

aws s3api head-object --bucket awsexamplebucket --key object.jpg

Note: If a user makes a GET or HEAD request for an object before the object is created, Amazon S3 provides eventual consistency for read-after-write.

If the requested object is available in the bucket and users are still getting the 404 NoSuchKey error from Amazon S3, check the following:

  • Confirm that the request matches the object name exactly, including the capitalization of the object name. Requests for S3 objects are case sensitive. For example, if an object is named myimage.jpg, but Myimage.jpg is requested, then requester receives a 404 NoSuchKey error.
  • Confirm that the requested path matches the path to the object. For example, if the path to an object is awsexamplebucket/Downloads/February/Images/image.jpg, but the requested path is awsexamplebucket/Downloads/February/image.jpg, then the requester receives a 404 NoSuchKey error.
  • If the path to the object contains any spaces, be sure that the request uses the correct syntax to recognize the path. For example, if you're using the AWS CLI to download an object to your Windows machine, you must use quotation marks around the object path, similar to: aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3T000000.vbk".
  • Optionally, you can enable server access logging to review request records in further detail for issues that might be causing the 404 error.

Note: If an object is missing from the bucket and the requester doesn’t have s3:ListBucket access, then the requester receives a 403 Access Denied error instead of a 404 error. If this is the case, you must resolve the issue related to the missing object to resolve the 403 Access Denied error.


Did this article help you?

Anything we could improve?


Need more help?