hally9k
hally9k

Reputation: 2583

Upload nested directories to S3 with the AWS CLI?

I have been trying to upload a static website to s3 with the following cli command:

aws s3 sync . s3://my-website-bucket --acl public-read

It successfully uploads every file in the root directory but fails on the nested directories with the following:

An error occurred (InvalidRequest) when calling the ListObjects operation: Missing required header for this request: x-amz-content-sha256

I have found references to this issue on GitHub but no clear instruction of how to solve it.

Upvotes: 2

Views: 3318

Answers (2)

Shibashis
Shibashis

Reputation: 8401

s3 sync command recursively copies the local folders to folder like s3 objects.

Even though S3 doesn't really support folders, the sync command creates the s3 objects with a format which will have the folder names in their keys.

As reported on the following amazon support thread "forums.aws.amazon.com/thread.jspa?threadID=235135" the issue should be solved by setting the region correctly.

Upvotes: 3

Piyush Patil
Piyush Patil

Reputation: 14523

S3 has no concept of directories. S3 is an object store where each object is identified by a key. The key might be a string like "dir1/dir2/dir3/test.txt"

AWS graphical user interfaces on top of S3 interpret the "/" characters as a directory separator and present the file list "as is" it was in a directory structure.

However, internally, there is no concept of directory, S3 has a flat namespace. See http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html for more details.

This is the reason directories are not synced as there is no directories on S3.

Also the feature request is open in https://github.com/aws/aws-cli/issues/912 but has not been added yet.

Upvotes: 0

Related Questions