in lambda/index.js [30:70]
function main(event, context, callback) {
// Initialize the 'dynamodb' variable if it has not already been done. This
// allows the initialization to be shared between Lambda runs to reduce
// execution time. This will be re-run if Lambda has to recycle the container
// or use a new instance.
if(!dynamodb) {
if(process.env.DAX_ENDPOINT) {
console.log('Using DAX endpoint', process.env.DAX_ENDPOINT);
dynamodb = new AmazonDaxClient({endpoints: [process.env.DAX_ENDPOINT]});
} else {
// DDB_LOCAL can be set if using lambda-local with dynamodb-local or another local
// testing envionment
if(process.env.DDB_LOCAL) {
console.log('Using DynamoDB local');
dynamodb = new AWS.DynamoDB({endpoint: 'http://localhost:8000', region: 'ddblocal'});
} else {
console.log('Using DynamoDB');
dynamodb = new AWS.DynamoDB();
}
}
}
let body = event.body;
// Depending on the HTTP Method, save or return the URL
if (event.requestContext.http.method == 'GET') {
return getUrl(event.pathParameters.id, callback);
} else if (event.requestContext.http.method == 'POST' && event.body) {
// if base64 encoded event.body is sent in, decode it
if (event.isBase64Encoded) {
let buff = Buffer.from(body, 'base64');
body = buff.toString('utf-8');
}
return setUrl(body, callback);
} else {
console.log ('HTTP method ', event.requestContext.http.method, ' is invalid.');
return done(400, JSON.stringify({error: 'Missing or invalid HTTP Method'}), 'application/json', callback);
}
}