我一直在尝试使用以下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上找到了对这个问题的引用,但没有明确说明如何解决它。
答案 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中打开,但尚未添加。