我正尝试使用以下命令从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
答案 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-sha256
和x-amz-date
。
特别是
x-amz-date
AWS要求的,必须包含请求的时间戳;可接受的格式非常灵活,我使用的是ISO8601基本格式。 示例:20150915T124500Z
x-amz-content-sha256
AWS必需,必须是有效负载的SHA256摘要
该请求将不携带任何有效载荷(即主体为空)。这意味着无论何时需要“有效负载哈希”,我们都将提供一个空字符串的SHA256哈希。这是e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855的常数。这也与x-amz-content-sha256标头有关。