我正在签署S3上的私人资源,以暂时公开发布。这是我使用协议的v3版本签署URL后得到的结果:
假设我想将s3.amazonaws.com替换为其他域名,为此我在DNS设置中输入新的CNAME条目(我将my.stuff.net映射为s3.amazonaws.com的别名。) 。如果我现在尝试查询以下URL,我将从亚马逊获得签名验证失败的详细描述。
v3签名不包括主机名,所以我的猜测是签名实际上是正确的,但亚马逊验证请求来自哪个域并拒绝来自s3.amazonaws.com的所有内容。
有人知道我的猜测是否正确以及是否有一些解决方法?
答案 0 :(得分:1)
存储桶名称必须与
相同CNAME
http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
因此,您通过CNAME
指向bucketname.s3.amazonaws.com的主机名必须与存储桶名称相同。如果广告素材的名称不是有效的DNS名称,则无法使用。
如果你走这条路线,那么你还需要从路径的开头删除存储桶名称(不是从字符串到符号,而是从URL),因为S3会对Host:
作出反应浏览器发送的标头,用于确定请求URI路径是否以存储桶名称开头。
这是唯一可以在不使用代理的情况下在S3的路上重写请求的方法,如果上述情况不适用,您可以考虑另一种方法。