如何为 CloudFront using.NET 公开的 Amazon S3 生成签名 URL

How to generate signed URLs for Amazon S3 exposed by CloudFront using.NET

我想要实现的是生成一个指向 CloudFront 分布的单点URL,它源自 S3 存储桶。

我已经成功签署 URL,它直接指向 S3 存储桶,如以下 AWS 规范所述 - Generate a Presigned Object URL Using AWS SDK for .NET 并且工作正常。

但我真正需要的是生成签名的 CloudFront URL。

我假设我的 Distribution 已正确配置,因为我可以使用 (https://d298o8yem5c56d.cloudfront.net/123.pdf) 访问它,假设限制查看者访问:在行为设置中设置为 No . 改成Yes后没有signedURL就不能访问了。

我尝试使用 AWS 开发人员指南中的示例代码:Create a URL Signature Using C# and the .NET Framework

已生成 URL,但我得到的是以下错误消息:

<Error> <Code>AccessDenied</Code> <Message>Access denied</Message> </Error>

知道我应该检查什么吗?

最后,我使用 AWS 开发人员指南中的示例代码解决了这个问题:Create a URL Signature Using C# and the .NET Framework

这个问题似乎与 PrivateKey.xml

记得将 PrivateKey.xml 替换为您的私钥(可以从 AWS 根账户设置中生成/下载)。 作为下一步,它必须从 PEM 转换为 XML(.NET 要求)

从 PEM 转换为 XML 的简便方法是使用 - online converter