Skip to content

Instantly share code, notes, and snippets.

@jamesslomka
Last active February 16, 2022 01:43
Show Gist options
  • Save jamesslomka/12dc1c963b4c11ffa57f01d8194f2ca6 to your computer and use it in GitHub Desktop.
Save jamesslomka/12dc1c963b4c11ffa57f01d8194f2ca6 to your computer and use it in GitHub Desktop.
Lambda function that generated a pre-signed URL for uploading to S3
const AWS = require('aws-sdk')
const s3 = new AWS.S3();
exports.handler = async (event) => {
let folderName, fileName;
try {
folderName = event['queryStringParameters']['folder'];
fileName = event['queryStringParameters']['name'];
} catch(e) {
return new Promise((reject) => {
reject({
"statusCode": 422,
"headers": {
"Access-Control-Allow-Origin": "*"
},
"body": JSON.stringify({
"message": "Need to specify name, folder param"})
})
})
}
return await getUploadURL(folderName, fileName);
};
const getUploadURL = async function(folderName, fileName) {
const s3Params = {
Bucket: 'budds',
Key: `${folderName}/${fileName}.jpg`,
ACL: 'public-read',
ContentType: 'application/x-www-form-urlencoded',
};
return new Promise((resolve, reject) => {
let uploadURL = s3.getSignedUrl('putObject', s3Params)
resolve({
"statusCode": 200,
"isBase64Encoded": false,
"headers": {
"Access-Control-Allow-Origin": "*"
},
"body": JSON.stringify({
"uploadURL": uploadURL
})
})
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment