I have a lambda written in node.js where i want to push the data to my dynamodb table. My end goal is for my api request to pull in the response and then push the results in the items section directly into dynamodb but at the moment my lambda is only pulling through the query and the createmessage function is being ignored (currently testing with static data). I presume my code is muddled somehow so need some help on how to have this running correctly, please see below:
// Loads in the AWS SDK const AWS = require('aws-sdk'); // Creates the document client specifing the region // The tutorial's table is 'in eu-west-2' const ddb = new AWS.DynamoDB.DocumentClient({region: 'eu-west-2'}); exports.handler = async (event, context, callback) => { // Captures the requestId from the context message const requestId = context.awsRequestId; // Handle promise fulfilled/rejected states await createMessage(requestId).then(() => { callback(null, { statusCode: 201, body: '', headers: { 'Access-Control-Allow-Origin' : '*' } }); }).catch((err) => { console.error(err) }) }; // Function createMessage // Writes message to DynamoDb table Message function createMessage(requestId) { const params = { TableName: 'splunk-lambda', Item: { 'id' : '101', 'message' : 'Hello from lambda' } } return ddb.put(params).promise(); } var request = require('request'); var options = { 'method': 'POST', 'url': 'myurl', 'headers': { 'x-api-key': 'my-api-key', 'Content-Type': 'text/plain' }, body: 'query my graphql query' }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); }); my response from the lambda:
Test Event Name test Response null Function Logs {my graphql response} END RequestId: bdf23337-ca51-4f8b-868c-314f4d048055
async. Since you are using async handler, your lambda finishes before the rest of the code has a chance to run.