在静态网站上使用 AWS 签名版本 4 查询参数
Posted
技术标签:
【中文标题】在静态网站上使用 AWS 签名版本 4 查询参数【英文标题】:Query parameters with AWS signature version 4 on static website 【发布时间】:2018-07-12 08:01:00 【问题描述】:按照https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html 上的亚马逊文档,我可以使用 AWS 签名版本 4 正确获取查询参数,但我无法在带有查询参数的静态网站上执行 GET。例如,如果有一个桶 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 查询参数以使用静态网站?
我已尝试将签名者的端点 URL 更改为 http://testbucket.s3-website-us-east-1.amazonaws.com/key
。
【问题讨论】:
【参考方案1】:AWS 预签名签名仅适用于 S3 API 调用。那些被s3.amazonaws.com
处决的人。
网站端点不支持 API AWS 身份验证。这就是它不适合您的原因。
当您使用 S3 托管使用预签名 URL(例如)保护的文件时,必须使用 API 端点而不是网站端点来提供文件。
【讨论】:
以上是关于在静态网站上使用 AWS 签名版本 4 查询参数的主要内容,如果未能解决你的问题,请参考以下文章
AWS 错误消息:使用 AWS KMS 托管密钥指定服务器端加密的请求需要 AWS 签名版本 4
关于aws-s3-bucket-静态网站托管相关的查询-S3.Client.get_bucket_website(**kwargs)
如何从AWS Lambda检索数据并将其显示在AWS S3托管的静态网站上?
asp网站今天百度统计出现:在静态页面上使用动态参数,会造成spider多次和重复抓取