【发布时间】:2012-03-24 10:32:08
【问题描述】:
我有一个名为 foo.example.com 的 s3 存储桶,它的 CNAME 都是正确的。
我正在切换到最新的 AWS .net SDK。
我希望生成预签名的网址,例如:
http://foo.example.com/myfile.txt?s3_params_here
注意那里的虚荣名称。
我有:
string bucketName = "foo.example.com";
AmazonS3Client s3Client = new AmazonS3Client("bar", "xxx",
new AmazonS3Config
{
ServiceURL = bucketName,
CommunicationProtocol = Protocol.HTTP
});
string key = "myfile.txt";
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest()
.WithBucketName(bucketName)
.WithKey(key)
.WithExpires(DateTime.Now.AddMinutes(5))
.WithProtocol(Protocol.HTTP);
string url = s3Client.GetPreSignedURL(request);
我得到的网址是这样的:
这显然是错误的。
我已经尝试了 ServiceURL、bucketname 等多种不同的变体,但似乎没有任何效果。
我找不到任何好的文档 - 这样做的正确方法是什么?
谢谢。
【问题讨论】:
-
我刚刚再次删除了我的答案(永久有效),并且在我能够在 .NET 中真正重现端到端解决方案之前,我不会再添加一个答案。众所周知,自定义域的预签名 URL 原则上可以工作(例如,参见这个古老的 AWS 团队对 CNAME alias with pre-signed query 的回复,我也相应地使用了它们;Ruby 示例中的 VANITY 参数已被弃用,并且在 AWS 中不可用无论如何,适用于 .NET 的 SDK,它应该像这样工作,AFAIK - 再次抱歉给您带来麻烦!