为什么“缺少键对ID查询参数或Cookie值”

Ant*_*ong 7 amazon-s3 amazon-cloudfront

我正在尝试使用签名的URL通过AWS Cloudfront将S3存储桶作为私有内容提供。

但是,我一直收到此错误“缺少密钥对ID查询参数或cookie值”

<Error>
<Code>MissingKey</Code>
<Message>
Missing Key-Pair-Id query parameter or cookie value
</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)

这是一个示例网址

http://test.example.com/TestContent/test.html?Expires=1431195459&Signature=DSk8HwFScg6EFJla1p8UHB9EM28zXB7k5AwrXZjzByzdlTSMCG-md6MvUFT~pneaahfPbCcvxNWqZNYu5Dc1IE1JrjOhFP52APFsVmJDlPmqoQzOoCECclEsSvMpTPgva8L4TazDLtI6E5EuV632y76ZA8XoT2KHhzcj7ux9XhvQ6wyiiQxK9rb13sZJ~Cm~4qI-028dd6UkEIu1tUIM~SFh72wYjik7v8sfz2z5T5bZGZJrrfryO0zA9wpkabFA8JkrmfuBm55XWqcVk5OSOkrNn7iyuXwmrEeBJxufaiWE84UbfS8He12fh6~-seTr7UnOCtC4mBf4qlGsxCzKiw__&Key-Pair-Id=my-test-key

我已验证签名中没有任何无效字符(“ +”,“ =”,“ /”)。

Key-Pair-Id明确存在于签名的URL中。

我的问题:

1)my-test-key是使用我的IAM创建的。这是个问题吗?

2)是否必须在签名的URL中提供策略?

3)我是否需要向TestContent/test.htmlOAI 授予对该对象的任何许可?

编辑

如果我将Key-Pair-Id值更改为其他值,则会收到其他错误消息

<Error>
<Code>InvalidKey</Code>
<Message>Unknown Key</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)

因此,很显然,aws cloudfront接受Key-Pair-Id。