2

I am triggering my lambda function from an api. The lambda function returns a query from a dynamoDB table, I am passing an ID to in api. but it returns an error. "Cannot destructure property 'Id' of 'event.pathParameters' as it is undefined".

'use strict'
const AWS = require('aws-sdk');
AWS.config.update({ region: "ap-south-1"})

exports.handler = async  (event, context)=> {
    const ddb = new AWS.DynamoDB({apiVerion: "2012-10-08"});
    const documentClient = new AWS.DynamoDB.DocumentClient({ region: "ap-south-1"})

    let responseBody = ""
    let statusCode=""

    const { Id } =event.pathParameters;// to get the id from api 
    const params = {
        TableName: "User",
        Key:{
            // Id: "1"
            Id: Id
        }
    }

    try{
        const data = await documentClient.get(params).promise();
        // console.log(data);
        let x = data.Iteml
        responseBody = JSON.stringify
        statusCode = 200
    }
    catch(err){
        // console.log(err);
        responseBody = " Unable to get User data"
        statusCode= 403;

    }
    const response={
        statusCode: statusCode,
        headers:{
            "myheader":"test"
        },
        body: responseBody
    }
   return response;
}
user12755352
  • 31
  • 1
  • 3
  • 1
    Can you print event object to cross check if id param is present or not, Check https://stackoverflow.com/questions/53975944/aws-lambda-getting-path-parameters-using-node-js if it helps – Vishal Jan 11 '21 at 12:00

1 Answers1

0

I too got the same issue, event.pathParameters was undefined, then got to know than use Lambda Proxy Integration is not checked during API creation.

It should look as below in Integration request of API gateway

image1