Erstellen von auslaufenden Links zu S3 oder Cloudfront gehosteten Inhalte mit ASP .Net
-
05-07-2019 - |
Frage
Wer noch ein Beispiel für eine signierte URL mit einem Ablauf Erstellung mit ASP .Net? Ich erforsche mit LitS3 oder
Lösung Hier ist, was für mich mit dem AWS SDK und MVC 3 gearbeitet (basierend auf den Antworten oben und was ich gefunden auf 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));
}
}
Andere Tipps
mit der amazon .net SDK Sie können preSignedUrl bekommen
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);
}
Gefunden diese (erwähnt in diesem Faden in die AWS Diskussionsforen) Klassenbibliothek für signierte URLs in Amazon S3 zu erzeugen. Wenn jemand irgendwelche zusätzlichen Vorschläge / Methoden hat, um zu versuchen, lassen Sie es mich wissen.
Edit: ThreeSharp hat die Funktionalität, die ich suchte. Von der ThreeSharpConsoleSample App:
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();