Quelqu'un at-il un exemple de création d'une URL signée avec une expiration utilisant ASP .Net? J'explore en utilisant LitS3 ou ThreeSharp dans mon projet, et n'ai pas vu de méthodes spécifiques pour le faire dans l'un de ces projets. Merci.Création de liens expirant vers le contenu hébergé S3 ou Cloudfront avec ASP .Net
2
A
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);
}