Создание устаревших ссылок на размещенный на S3 или Cloudfront контент с ASP .Net - PullRequest
2 голосов
/ 22 октября 2009

У кого-нибудь есть пример создания подписанного URL-адреса с истечением срока действия с использованием ASP .Net? Я исследую использование LitS3 или ThreeSharp в моем проекте, и не видел каких-либо конкретных способов сделать это в любом из этих проектов. Спасибо.

Ответы [ 3 ]

5 голосов
/ 15 февраля 2011

Вот что мне помогло с AWS SDK и MVC 3 (основываясь на ответах выше и на том, что я нашел на http://www.ec2studio.com/articles/s3.html):

public ActionResult GetS3Object(string bucket, string key)
{
    string accessKeyID = ConfigurationManager.AppSettings["AWSAccessKey"];
    string secretAccessKeyID = ConfigurationManager.AppSettings["AWSSecretKey"];
    using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKeyID, secretAccessKeyID))
        {
        GetPreSignedUrlRequest request = new GetPreSignedUrlRequest()
            .WithBucketName(bucket)
            .WithKey(key)
            .WithExpires(DateTime.Now.Add(new TimeSpan(7, 0, 0, 0)));
        return Redirect(client.GetPreSignedURL(request));
        }
}
2 голосов
/ 10 февраля 2011

с использованием amazon .net SDK Вы можете получить preSignedUrl

using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client("your access key ID", "you secret key"))
            {
                GetPreSignedUrlRequest getPreSignedUrl = new GetPreSignedUrlRequest().WithBucketName(bucketName);
                getPreSignedUrl.Key = key;
                getPreSignedUrl.Expires = DateTime.Now.AddSeconds(60);
            }
1 голос
/ 22 октября 2009

Найдена эта (упомянутая в эта ветка на форумах AWS) библиотека классов для создания подписанных URL-адресов в Amazon S3. Если у кого-то есть какие-либо дополнительные предложения / методы, попробуйте, дайте мне знать.

Редактировать: ThreeSharp обладает функциональностью, которую я искал. Из приложения ThreeSharpConsoleSample:

      using (UrlGetRequest request = new UrlGetRequest("mytestbucket", "mytestfile.txt"))
            {
                request.ExpiresIn = 60 * 10000;
                using (UrlGetResponse response = service.UrlGet(request))
                {
                    Console.WriteLine("Try this url in your web browser (it will only work for 60 seconds)\n");
                    string url = response.StreamResponseToString();
                    Console.WriteLine(url);
                }
            }
            Console.WriteLine("\npress enter >");
            Console.ReadLine();
...