【问题标题】:cloudfront private time limited url云端私人限时网址
【发布时间】:2012-10-30 20:29:21
【问题描述】:

我有一个客户想在线销售教程视频。我已经从 CF 获得了他的教程的预览(这是公开的)。现在我想使用 c# sdk 生成私有的、限时的 URL,以允许购买教程的客户在有限的时间内下载它们。 确认付款后,我想生成一个 URL 并通过电子邮件发送给客户。

CF/.NET SDK 支持这个吗? 有人可以指点我的样本。我搜索了谷歌,并得到了一些信息过载。来自不同版本的 sdk/管理控制台的不同示例。请帮助我理解这一切:)

【问题讨论】:

    标签: c# amazon-web-services amazon-cloudfront


    【解决方案1】:

    您无法使用 CloudFront (CF) 执行此操作,但您可以直接使用 S3 执行此操作。您只需调用 GetPreSignedURL 函数即可为特定(私有)S3 项目生成限时 URL。这种方法在tutorial here 中有介绍。

    最简单的代码示例是这样的:

    AmazonS3 client;
    
    GetPreSignedUrlRequest request = new GetPreSignedUrlRequest();
    request.WithBucketName(bucketName);
    request.WithKey(objectKey);
    request.Verb = HttpVerb.GET; // Default.
    request.WithExpires(DateTime.Now.AddMinutes(5));
    
    string url = client.GetPreSignedURL(request);
    

    【讨论】:

    • 抱歉,这不是真的。 CloudFront 支持私有分配。我已经搞定了。回家后我会添加自己的解决方案。
    【解决方案2】:

    如果您查看 Amazon.CloudFront.AmazonCloudFrontUrlSigner 类,该类具有用于创建私有分配的预签名 URL 的辅助方法。例如这段代码 sn -p 创建一个有效期为一天的 url。

    var url = AmazonCloudFrontUrlSigner.GetCannedSignedURL(AmazonCloudFrontUrlSigner.Protocol.http, domainName, cloudFrontPrivateKey, file, cloudFrontKeyPairID, DateTime.Now.AddDays(1));
    

    该类中还有其他实用方法可用于添加更具体的访问规则。

    注意这个类是在8月底发布的SDK 1.5.2.0版本中添加的

    【讨论】:

      【解决方案3】:

      是的,Amazon S3 和 CloudFront 都支持 preSignedUrl 访问。如果您想更快地交付内容,您应该使用 CloudFront。诺姆·约翰逊先生说得对。要生成签名的 url,您需要公钥-私钥对。您可以使用自己的密钥对并与您的 Amazon S3 帐户关联,或者您也可以在 amazon s3 帐户生成它并下载以生成预签名 url

      【讨论】:

        【解决方案4】:

        您可以使用 S3SignURL 中的 GUI 或代码来签署您的 URL

        https://github.com/DigitalBodyGuard/S3SignURL

        【讨论】:

          猜你喜欢
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 2016-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多