AWS Cloudfront 预签名 URL 错误 "no such key"

AWS Cloudfront Presigned URL error "no such key"

我正在创建一个 Amazon 预签名 url 来为我的 Cloudfront link 提供一个到期日期。

link 有效,显示对象可访问(粗体 中的部分受 Stack Overflow 保护):

http://MY CLOUDFRONT URL/3304686e4a1176617a0d515ec69abd1e4e765d4c3730e14c7.mp3

但是附加了策略的对象不起作用。

http://MY CLOUDFRONT URL/3304686e4a1176617a0d515ec69abd1e4e765d4c3730e14c7.mp3?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QzMGk2b214eWxiZ3FxLmNsb3VkZnJvbnQubmV0L2F1ZGlvLzEtODNiNjMzMDQ2ODZlNGExMTc2NjE3YTBkNTE1ZWM2OWFiZDFlNGU3NjVkNGMzNzMwZTE0YzcubXAzIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNTcyNTIwNDU2fX19XX0_&Signature=Ch4GtdMAKDe8cdBCzAMDEj3C6QeDoc68P76V0iDfH-gNawYlTqQ9M04jZB2PL4weJuV~6nLT8HlHImJvtVdD17J4P1Lva24r3IC5bTdWlMVDOqOlpAV81yMppmg7kNi6Y6ySBofZ~4e-WyDeDTqGLbcG~TQxOWOwppHaVN9nuPaLu8JX2iHD28BqHDghQXR-dGRjbCVfku5SHXsAVXPZMBEaAhpGxBMFE00gho6rGUKtgH8-TOiUmGWsxlBNjx1SGBKAwwiV~m-uKBR~6m5qLrEgJI28XmESZKjidrQsaH~qbYVVyr-cyYTsJOunOSPgpyI52RJg4jkg7kJLqU9kzQ__&Key-Pair-Id=MY KEY PAIR ID

导致以下错误

如何确定我的签名政策有什么问题?是否可以调试这个签名的url?据我可以从文档中确定它应该工作。

谢谢。

看起来即使您创建了 CloudFront 签名 URL(未预签名 URL),您还没有在缓存行为中启用 "Restrict Viewer Access",您没有'启用它,它不会工作。 CloudFront Signed URL

由于您没有启用限制查看者访问并且您有 "Cache based on query string" select 到 ALL ,CloudFront 将对象名称和查询字符串发送到 Origin S3 而 S3 没有对象使用此完整名称(对象+查询字符串)。

错误来自 S3,而不是 CloudFront,您的 CloudFront 签名 url 看起来是正确的。

{"Statement":[{"Resource":"http://xxxxxxxxxxxxx.cloudfront.net/audio/1-83b63304686e4a1176617a0d515ec69abd1e4e765d4c3730e14c7.mp3","Condition":{"DateLessThan":{"AWS:EpochTime":1572520456}}}]}