在静态网站上使用 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。例如,如果有一个桶 testbuckethttps://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多次和重复抓取

asp网站今天百度统计出现:在静态页面上使用动态参数,会造成spider多次和重复抓取

使用 CloudFront 和目录重定向的 AWS S3 静态网站托管