2

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

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

4

4 回答 4

4

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

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

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

请注意,此类是在八月末发布的 SDK 1.5.2.0 版本中添加的

于 2012-11-13T22:31:27.173 回答
2

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

于 2012-11-22T05:43:57.733 回答
1

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

https://github.com/DigitalBodyGuard/S3SignURL

于 2012-12-15T20:31:39.943 回答
-1

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

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

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);
于 2012-11-12T18:27:36.267 回答