我已经尝试了很多事情并且我承认失败(我在这里阅读了很多回复,但到目前为止没有一个对我有帮助)。我正在尝试为 Cloudfont 上保存的文件设置签名 URL。我能够为 S3 创建签名 URL,但我无法为 Cloudfront 提供任何工作。对于云端,我使用 AWS SDK 中的以下内容:
var url = AmazonCloudFrontUrlSigner.GetCannedSignedURL( AmazonCloudFrontUrlSigner.Protocol.http, "cdn.coffeebreakgrooves.com", privateKey,
file, cloudFrontKeyPairID, DateTime.Now.AddDays(2));
我生成了一个签名的 URL,但是在访问该链接时访问被拒绝,当我读到它时建议我设置 Origin Access Identity。所以我然后去我的分发设置并设置原始访问身份并选择:
- 限制存储桶访问:是
- 源访问身份:使用现有身份
- 授予读取权限:是,更新存储桶策略
然后所有文件都在 Cloudfront 上公开可用,无论我对 S3 中的 ACL 有什么设置(所以即使 file.txt 对 S3 中的任何人都没有权限,它也可以通过 Cloudfront 访问),我无法判断是否已签名URL 是否有效,因为无论是否使用查询字符串,下载都有效,并且文件已公开可用。本质上,我怎样才能使我的文件私有但可以使用签名的 URL 下载(我的签名方法是否正确?)。如果我删除生成的存储桶策略,访问将再次受到限制。我想我需要知道如何设置存储桶策略,以便原始访问身份只能访问具有签名 URL 的存储桶......也许。
非常感谢您的帮助!