尝试使用http post进行浏览器上传时,出现错误:
(Error)
(Code)AccessDenied(/Code)
(Message) Invalid according to Policy: Policy expired.
(/Message)
(RequestId) 6C79F2BC4E51766A (/RequestId)
(HostId)
4uzKezeAmS/y0EAz47QevCu9Jh/3ivPxYRbOYn/Df+JoQnAgXNK+faFOmkDSlOukwynxUPzp4Uk=
(/HostId)
(/Error)
我尝试更改系统时钟时间, 我检查过期时间设置为当前日期,未来日期最长为5分钟,1天,1个月,1年
邮政政策是:
{ "expiration": "2019-06-06T13:45:00.000Z",
"conditions": [
{"bucket": "tokendatabase"},
["starts-with", "$key", "user/user1/"],
{"acl": "public-read-write"},
{"success_action_redirect": ""},
["starts-with", "$Content-Type", "image/"],
{"x-amz-meta-uuid": "14365123651274"},
{"x-amz-server-side-encryption": "AES256"},
["starts-with", "$x-amz-meta-tag", ""],
{"x-amz-credential": "<Access KEY>/20180122/us-east-2/s3/aws4_request"},
{"x-amz-algorithm": "AWS4-HMAC-SHA256"},
{"x-amz-date": "20180122T000000Z" }
]
}
答案 0 :(得分:0)
您告诉服务您几乎在三个月前签署了此政策:
{"x-amz-credential": "<Access KEY>/20180122/us-east-2/s3/aws4_request"},
{"x-amz-date": "20180122T000000Z" }
现已过期,因为2018-01-22的凭证仅在2018-01-30之前有效。
您在签名计算中使用的签名密钥有效期最长为七天。
https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
以上引用的来源来自文档中的不同上下文,但在此处适用。与签名V4一起使用的签名密钥与您签署请求的日期(或您声称在此情况下的日期),AWS区域和特定服务相关联,并且在任何其他上下文中均无效,包括过去7天以上(如果在&#34;未来使用,&#34;相对于您提供的日期)。
x-amz-credential
和x-amz-date
的值需要相对于日期组件相互匹配,并且应该在您签署策略时从系统时钟派生。