使用AWS CLI将嵌套目录上载到S3?

时间:2016-08-07 23:56:43

标签: amazon-web-services amazon-s3 aws-cli

我一直在尝试使用以下cli命令将静态网站上传到s3:

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

它成功上传了根目录中的每个文件,但在嵌套目录上失败,并带有以下内容:

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

我在GitHub上找到了对这个问题的引用,但没有明确说明如何解决它。

2 个答案:

答案 0 :(得分:2)

s3 sync命令以递归方式将本地文件夹复制到文件夹,如s3对象。

即使S3实际上不支持文件夹,sync命令也会创建s3对象,其格式将在其键中包含文件夹名称。

如以下亚马逊支持主题“forums.aws.amazon.com/thread.jspa?threadID=235135”所述,问题应该通过正确设置区域来解决。

答案 1 :(得分:0)

S3没有目录概念。 S3是对象存储,其中每个对象由密钥标识。 密钥可能是一个字符串,如“dir1 / dir2 / dir3 / test.txt”

在S3之上的AWS图形用户界面将“/”字符解释为目录分隔符,并在目录结构中“按原样”显示文件列表。

但是,在内部,没有目录的概念,S3具有平面命名空间。 有关详细信息,请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

由于S3上没有目录,这就是目录未同步的原因。

此功能请求也在https://github.com/aws/aws-cli/issues/912中打开,但尚未添加。