调用ListObjects操作时:缺少此请求所需的标头:x-amz-content-sha256

时间:2016-09-18 08:56:38

标签: amazon-web-services amazon-s3

我正尝试使用以下命令从aws中的一个存储桶复制到另一个存储桶

aws s3 cp s3:// bucket1 / media s3:// bucket2 / media --profile xyz --recursive

返回错误

An error occurred (InvalidRequest) when calling the ListObjects operation: Missing required header for this request: x-amz-content-sha256
Completed 1 part(s) with ... file(s) remaining

4 个答案:

答案 0 :(得分:3)

检查您所在的地区。如果您的地区设置不正确,则会发生此error

答案 1 :(得分:2)

感谢您的回答,问题是在使用配置文件的情况下获得许可,凭证必须具有对S3存储桶的访问权限

答案 2 :(得分:0)

我确认这是设置错误区域的问题,但现在的问题是:

  

如何知道S3的区域是什么?

答案是在那里托管的任何资产的链接。

因此,假设您在bucket-1下托管的某个资产有一个链接:

https://s3.eu-central-2.amazonaws.com/bucket-1/asset.png

这意味着您的REGION eu-central-2

好的,运行:

aws configure

并相应地更改您的地区。

答案 3 :(得分:0)

我在没有任何SDK的bash脚本中收到此错误。

在我的修复程序中,我没有在我的cURL请求中添加x-amz-content-sha256x-amz-date

特别是

x-amz-date

AWS要求的

,必须包含请求的时间戳;可接受的格式非常灵活,我使用的是ISO8601基本格式。 示例:20150915T124500Z

x-amz-content-sha256

AWS必需,必须是有效负载的SHA256摘要

该请求将不携带任何有效载荷(即主体为空)。这意味着无论何时需要“有效负载哈希”,我们都将提供一个空字符串的SHA256哈希。这是e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855的常数。这也与x-amz-content-sha256标头有关。

详细说明: https://czak.pl/2015/09/15/s3-rest-api-with-curl.html