Répondre

5

Voici ce qui a fonctionné pour moi avec le SDK AWS et MVC 3 (basé sur les réponses ci-dessus et ce J'ai trouvé sur 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)); 
     } 
} 
1

this (mentionné dans this thread dans les forums de discussion AWS) bibliothèque de classes pour générer des URL signées dans Amazon S3. Si quelqu'un a des suggestions/méthodes supplémentaires à essayer, faites le moi savoir.

Modifier: ThreeSharp a la fonctionnalité que je recherchais. De l'application 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(); 
2

en utilisant l'amazone .net SDK vous pouvez obtenir 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); 
      } 
Questions connexes