我可以通过https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html上的亚马逊文档获得AWS签名版本4的查询参数,但我无法在具有查询参数的静态网站上进行GET。例如,如果a有一个存储区testbucket
,https://s3.amazonaws.com/testbucket/key?<QUERY_PARAMS>
工作正常,但http://testbucket.s3-website-us-east-1.amazonaws.com/key?<QUERY_PARAMS>
不起作用。最终我会使用Cloudfront地址来获取https,因为静态网站不支持开箱即用的https,但第一步是让它与静态网站一起使用。
我想让这个在静态网站上工作,所以我可以关注https://aws.amazon.com/blogs/compute/resize-images-on-the-fly-with-amazon-s3-aws-lambda-and-amazon-api-gateway/,这需要将404(和403)GET响应转发给另一个主机。该博客文章并未假设有人使用签名版本4查询参数,这就是让我失望的原因。
我的问题是:如何设置签名版本4查询参数以使用静态网站?
我已尝试将签名者的端点网址更改为http://testbucket.s3-website-us-east-1.amazonaws.com/key
。
答案 0 :(得分:2)
AWS预签名签名仅适用于S3 API调用。针对s3.amazonaws.com
执行的操作。
网站端点不支持API AWS身份验证。这就是为什么它不适合你的原因。
当您使用S3来托管使用预签名URL保护的文件时(例如),必须使用API端点而不是网站端点来提供文件。