签名URL .NET CloudFront拒绝访问



我正在尝试为我的S3存储桶设置一个云,这只会允许用户使用签名的URL读取或写入。(读取文件,上传和下载(

S3没有公共读/写许可。

CloudFront是:HTTP和HTTPS。它已信任签名者是自我。它具有限制的视图访问。它具有原始域名作为Origin Domain-Name/public。最后,它具有原始访问身份作为Origin-access-endistity/cloudfront/xxxxxxx。

我有我的CloudFront PEM文件和AWS私钥ID。

我的C#代码生成签名的URL是:

  StreamReader sr = new StreamReader("../../keys/CloudFront-PrivateKey.pem");
var url = AmazonCloudFrontUrlSigner.GetCannedSignedURL(
            AmazonCloudFrontUrlSigner.Protocol.http,
            "http://xxxxxxxxxx.cloudfront.net",
            sr,
            "public/AddinJudgeIssue.png",
            "<AWS Private Key ID>",
            DateTime.Now.AddDays(2));

每次执行代码时,都会生成URL。但是,当我将其复制并粘贴到URL时,它说"访问被拒绝"。

首先,有人知道为什么会发生这种情况吗?

其次,这可以以某种方式起作用,我可以使用相同的技术将资产上传到存储桶?

谢谢您,对我的无知表示歉意。我挖了AWS白皮书,但没有找到直接的指导。

查看文档提出了两个问题:

"http://xxxxxxxxxx.cloudfront.net"不应包括http://,因为该字段是distributionDomain,并且期望域名,而不是基本URL。

"public/AddinJudgeIssue.png"应该具有领先的/,因为此字段是resourcePath。路径以/开头,即使对象键没有。

进行一些实验后,我使它起作用。尽管我使用根凭证和PEM密钥来生成签名的URL,但我仍然必须对我的S3存储桶进行公众读取/写入访问。这就是为什么我被访问被拒绝错误的原因。在CloudFront设置中,"限制存储键访问"选项无论如何都会限制我的存储桶。

最新更新