From de189106f1c70be4160f9ee14366e4ba65bf4542 Mon Sep 17 00:00:00 2001 From: John Fortner <108406653+fortnerj@users.noreply.github.com> Date: Tue, 15 Nov 2022 14:51:53 -0600 Subject: [PATCH] function to get a signedUrl to upload file to s3 --- lib/resources/s3-bucket-uploadurl.ts | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lib/resources/s3-bucket-uploadurl.ts diff --git a/lib/resources/s3-bucket-uploadurl.ts b/lib/resources/s3-bucket-uploadurl.ts new file mode 100644 index 0000000..7780708 --- /dev/null +++ b/lib/resources/s3-bucket-uploadurl.ts @@ -0,0 +1,35 @@ +import { APIGatewayProxyHandler, APIGatewayProxyResult } from 'aws-lambda'; +import { S3 } from "aws-sdk"; +import * as uuid from "uuid"; + +export function getUploadURL() { + const s3 = new S3(); + const bucket = "ishihara-app-uploads-stage"; + const key = uuid.v4(); + + const params = { + Expires: 60, + Bucket: bucket, + Conditions: [["content-length-range", 100, 10000000]], // 100Byte - 10MB + ContentType: 'image/jpeg', + // ACL: 'public-read' + }; + + try { + const uploadURL = s3.getSignedUrl('putObject', params); + console.log + return { + statusCode: 200, + body: JSON.stringify({ + uploadURL: uploadURL, + photoFilename: `${key}.jpg` + }) + }; + + } catch (err) { + console.log(err); + const message = `Error adding object ${key} to bucket ${bucket}. Make sure your bucket is in the same region as this function.`; + console.log(message); + throw new Error(message); + } +};