public string GetMomentUrl(Moment moment) { return(S3Client.GetPreSignedURL(new GetPreSignedUrlRequest() { BucketName = Constants.S3BucketName, Key = moment.MomentId, Expires = DateTime.UtcNow.AddHours(1) })); }
public async Task <MetaData> GenerateThumbnail(MetaData metaData, ILambdaContext context) { metaData.Thumbnail = new Thumbnail { BucketName = "image-thumbnails-lab04", ImageName = "resized-" + metaData.ImageName, ContentType = metaData.ContentType }; using (var response = await S3Client.GetObjectAsync(metaData.BucketName, metaData.ImageName)) using (var responseStream = response.ResponseStream) using (var stream = new MemoryStream()) { responseStream.CopyTo(stream); stream.Position = 0; GcBitmap bitmap = new GcBitmap(stream); var newHeight = 120; var newWidth = ImageUtilities.ScaleWidth((int)bitmap.Height, newHeight, (int)bitmap.Width); var resizedBitmap = bitmap.Resize(newWidth, newHeight, InterpolationMode.NearestNeighbor); var ms = new MemoryStream(); resizedBitmap.SaveAsJpeg(ms); PutObjectRequest putRequest = new PutObjectRequest { BucketName = metaData.Thumbnail.BucketName, Key = metaData.Thumbnail.ImageName, InputStream = ms, ContentType = metaData.Thumbnail.ContentType, }; // Put object PutObjectResponse putResponse = await S3Client.PutObjectAsync(putRequest); }; // Get url Address GetPreSignedUrlRequest requestUrl = new GetPreSignedUrlRequest(); requestUrl.BucketName = metaData.Thumbnail.BucketName; requestUrl.Key = metaData.Thumbnail.ImageName; requestUrl.Expires = DateTime.Now.Add(new TimeSpan(1, 0, 0, 0)); string Url = S3Client.GetPreSignedURL(requestUrl); metaData.Thumbnail.Url = Url.Substring(0, Url.IndexOf('?')); return(metaData); }
public virtual Task <string> GetPreSignedUrlAsync(string fullFileName) { CheckDisposed(); if (string.IsNullOrWhiteSpace(fullFileName)) { throw new ArgumentNullException(nameof(fullFileName)); } var request = new GetPreSignedUrlRequest { BucketName = BucketName, Key = AdjustKey(fullFileName), Expires = DateTime.UtcNow.AddMinutes(10) }; return(Task.FromResult(S3Client.GetPreSignedURL(request))); }
/// <summary> /// Retrieves an URL with the appropriate signature to access the file for a predetermined amount of time /// </summary> /// <param name="BucketName">S3 bucket name</param> /// <param name="Key">S3 object key</param> /// <param name="expirationInMinutes">Expiration of link in minutes</param> /// <returns>The URL that can be used to access the file</returns> public string GetS3SignedUrl(string BucketName, string Key, int expirationInMinutes) { if (!IsS3Valid) { return(null); } string url = null; S3FileInfo s3FileInfo = new Amazon.S3.IO.S3FileInfo(S3Client, BucketName, Key); if (s3FileInfo.Exists) { url = S3Client.GetPreSignedURL(new GetPreSignedUrlRequest { BucketName = BucketName, Key = Key, Expires = DateTime.UtcNow.AddMinutes(expirationInMinutes) //ResponseHeaderOverrides = new ResponseHeaderOverrides() { ContentDisposition = "attachment; filename=\"test.txt\"", } }); } return(url); }
public MetaData ExtractImageMetaData(Root input, ILambdaContext context) { MetaData metaData = new MetaData(); string bucketARN = input.detail.resources.First(x => x.type.Equals("AWS::S3::Bucket")).ARN; string objectARN = input.detail.resources.First(x => x.type.Equals("AWS::S3::Object")).ARN; string bucketName = bucketARN.Substring(bucketARN.LastIndexOf(":") + 1); string objectKey = objectARN.Substring(objectARN.LastIndexOf("/") + 1); Console.WriteLine($"Bucket: {bucketName}, Object: {objectKey}"); if (!SupportedImageTypes.Contains(Path.GetExtension(objectKey))) { Console.WriteLine($"Object {bucketName}:{objectKey} is not a supported image type"); metaData.ImageSupported = false; } else { // Get url Address GetPreSignedUrlRequest requestUrl = new GetPreSignedUrlRequest(); requestUrl.BucketName = bucketName; requestUrl.Key = objectKey; requestUrl.Expires = DateTime.Now.Add(new TimeSpan(1, 0, 0, 0)); string Url = S3Client.GetPreSignedURL(requestUrl); metaData.Url = Url.Substring(0, Url.IndexOf('?')); metaData.BucketName = bucketName; metaData.ImageName = objectKey; metaData.ContentType = "image/" + Path.GetExtension(objectKey).Substring(1); metaData.ImageSupported = true; } return(metaData); }