我已经尝试了很多事情,我承认失败了(我在这里读了很多回应,但到目前为止没有一个对我有帮助)。我正在尝试为CloudFont上保存的文件设置签名URL。我可以为S3创建签名的URL,但我不能为CloudFront工作。对于cloudfront,我使用AWS SDK中的以下内容:
var url = AmazonCloudFrontUrlSigner.GetCannedSignedURL( AmazonCloudFrontUrlSigner.Protocol.http, "cdn.coffeebreakgrooves.com", privateKey,
file, cloudFrontKeyPairID, DateTime.Now.AddDays(2));
我得到一个签名的URL生成,但我得到访问拒绝时,跟随链接,当我读到它建议我设置起源访问标识。因此,我转到我的分发设置和设置来源访问标识,并选择:
然后,所有文件在Cloudfront上都可以公开使用,而不管我在S3中对ACL有什么设置(因此,即使File.txt对S3中的任何人都没有权限,它也可以通过Cloudfront访问),我也无法判断签名的URL是否有效,因为下载可以使用或不使用querystring,文件也可以公开使用。从本质上讲,我如何使我的文件私有,但可以通过签名的URL下载(以及我的签名方法是否正确?)。如果删除生成的桶策略,访问将再次受到限制。我想我需要知道如何设置bucket策略,以便原始访问标识只能访问带有签名URL的bucket...也许吧。
非常感谢您的帮助!
经过一段时间的Rest和重新思考,这里是我出错的地方。在同一发行版中,不可能有一些内容被保护而其他内容不被保护。整个发行版是否安全。以下是我的解决方案。
我不得不说,如果没有Torsten在https://forums.aws.amazon.com/thread.jspa上的帖子的帮助,我不可能解决这个问题?messageID=421768是PHP中的,但它为我指明了正确的方向:
string cloudFrontKeyPairID = "myaccesskeyidfrompoint4";
string pathtokey = HttpContext.Current.Request.MapPath("~/").Replace("wwwroot", "ssl") + "pk-mykeyidfilenamesavedin4.pem";
FileInfo privateKey = new FileInfo(pathtokey);
string file = "folder/mytrack.mp3?response-content-disposition=" +
HttpContext.Current.Server.UrlEncode("attachment;filename='a_filename_with_no_spaces.mp3'");
//I can't figure out how to do spaces or odd characters.
url = AmazonCloudFrontUrlSigner.GetCannedSignedURL(
AmazonCloudFrontUrlSigner.Protocol.http,
"customcname.mydomain.com",
privateKey,
file,
cloudFrontKeyPairID,
DateTime.Now.AddDays(2));
我希望这能帮助别人,我会把这作为个人资源无论如何!在没有设置“限制查看器访问”的现有bucket上启用原始访问标识,它实质上打开了bucket上所有项目的权限。这可能是可取的,也可能是不可取的!如果我有什么问题请告诉我,这对我来说都是很新的。
如何使用AWS SDK创建云端签名URL? 这看起来真的很容易做到,但我就是看不到。我基本上了解它的工作原理,可能可以自己编写简单的Java代码。AWS SDK没有为此提供方法似乎很奇怪。 前面的问题,但使用C#:cloudfront private time limited url 该链接从理论上解释了此类cloudfront URL是如何生成的,但没有代码示例 这个链接解释了如何使用Java实
我有所有的参数,像Key-id,cloudfront domain和pem文件。但我不知道如何实现它。谁能帮我拿些样品。 我找了很多,但没有找到。我得到了使用node.js创建签名url的示例代码,但我不想使用node.js。
我正试图使用一个以S3 bucket为起点的Cloudfront私有发行版来提供内容。 我的存储桶中有一个图像文件,用于测试目的,其权限设置为私有。我已经设置了我的存储桶策略,因此Cloudfront Origin Access Idbody具有获得权限 当我将Cloudfront发行版设置为public(不使用签名URL)时,它可以正常工作。该对象不能通过直接S3链接访问,但可以使用Cloudf
问题内容: 简短版:如何使用Python使用Amazon CloudFront / S3使签名的URL“按需”以模仿Nginx的X-Accel- Redirect行为(即保护下载)。 我已经安装了Django服务器,并在Nginx前端上运行。我一直对它的请求感到困惑,最近不得不将其安装为Tornado WSGI应用程序,以防止它在FastCGI模式下崩溃。 现在由于服务器对媒体的请求过多,我的服务
除了签名url,Amazon最近还引入了Cloudfront签名cookie。 关于签名url也有类似的问题。显然,CloudFrontSDK中支持签名url 然而,我在aws python SDK中找不到对该功能的支持。
我在执行cloudfront签名的cookies时遇到以下错误 CORS 策略已阻止从源“https://b.xyz.com”在“https://a.xyz.com/test.html”处访问 XMLHttpRequest:请求的资源上不存在“访问控制-允许-源”标头。 我正在访问a.xyz上的文件。com(域1)从b.xyz。com(域2)。在限制云前端(域1)分发的查看器访问(使用签名cook