我有一个想要在线销售教程视频的客户。我已经预览了他的CF教程(这是公开的)。现在我想使用c#sdk生成私有的,有时间限制的URL,以允许购买教程的客户在有限的时间内下载它们。 付款确认后,我想生成一个URL并通过电子邮件发送给客户。
CF / .NET SDK是否支持此功能? 有人可以指点我的样本。我搜索了谷歌,并获得了一些信息超载。来自不同版本的sdk /管理控制台的不同示例。请帮助我理解这一切:)
答案 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或代码对您的网址进行签名
答案 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);