我很好奇为什么我在S3存储桶中的对象的版本化URL上收到SignatureDoesNotMatch
错误(通过附加versionId=abdcd
)。
当网址具有以下格式时:
https://s3.amazonaws.com/bucket/object.tar.gz
一切似乎都很好。但是,只要我添加versionId
查询字符串,就会出现签名不匹配错误
https://s3.amazonaws.com/bucket/object.tar.gz?versionId=abcde
访问对象的方法由CloudFormation::Init
的{{1}}属性控制,如描述here
S3 Bucket
以下示例从Amazon S3存储桶下载zip文件 并将其解压缩到/ etc / myapp:
注意您可以为源使用身份验证凭据。但是,你 无法在源块中放置身份验证密钥。代替, 在S3AccessCreds块中包含一个存储桶键。有关示例,请参阅 示例模板。有关Amazon S3身份验证的更多信息 凭据,请参阅AWS :: CloudFormation :: Authentication。 JSON
"来源" :{" / etc / myapp" : " https://s3.amazonaws.com/mybucket/myapp.tar.gz" }
这不是权限问题,因为在没有source
查询字符串时它可以正常工作。我很好奇为什么签名方法失败只是添加?我该如何解决?
我读了AWS's Signature V4但我没有看到任何可以解释为什么这不起作用的东西?看来查询字符串只能用于auth headers?