function main()

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);
  }
}