const AWS = require("aws-sdk"); var fs = require('fs'); exports.GetImage = async(event) => { try { let image = event['pathParameters']['img'] let ImageKey = `${process.env.IMAGE_FOLDER}/${image}`; const cloudfrontAccessKeyId = process.env.CLOUDFRONT_KEY_ID; const cloudFrontPrivateKey = fs.readFileSync('cloudfront-pk.pem', 'utf8'); const signer = new AWS.CloudFront.Signer( cloudfrontAccessKeyId, cloudFrontPrivateKey ); const signedUrl = signer.getSignedUrl({ url: `https://${process.env.CLOUDFRONT_DOMAIN_NAME}/${ImageKey}`, expires: Math.floor((Date.now() + process.env.URL_EXPIRE) / 1000), }); let body = { signed_image_url: decodeURI(signedUrl) }; return { statusCode: 200, body: JSON.stringify(body), }; } catch (err) { console.log(err) return { statusCode: err.statusCode || 400, body: err.message || JSON.stringify(err.message), }; } };