cloudfront私密时间限制网址

时间:2012-11-10 21:46:44

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

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

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

4 个答案:

答案 0 :(得分:4)

如果您查看Amazon.CloudFront.AmazonCloudFrontUrlSigner类,该类具有帮助方法来创建私有分发的预签名URL。例如,此代码段会创建一个有效期为一天的网址。

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

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

请注意,此类已在SDK的版本1.5.2.0中添加,该版本在Augest后期出现

答案 1 :(得分:2)

是Amazon S3和CloudFront都支持preSignedUrl访问。如果您希望更快地交付内容,则应使用CloudFront。 Norm Johanson先生说得对。要生成签名网址,您需要公钥 - 私钥对。您可以使用自己的密钥对,并与Amazon S3帐户关联,也可以在amazon s3帐户生成并下载以生成预先签名的URL

答案 2 :(得分:1)

您可以使用S3SignURL中的GUI或代码对您的网址进行签名

https://github.com/DigitalBodyGuard/S3SignURL

答案 3 :(得分:-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);