Reputation: 3020
New to AWS and working on Lambda with Node.JS
I have the following code works on my local, but once I uploaded to Lambda (via CLI with successful status) .. however I realized it complaint about index.hanlder
issue. Hence after Googling, I updated my code to the 2nd version, it runs fine with Status 200 but return me a NULL.
I've tested the local code and it returns my data from DynamoDB. What seems to be the mistake here?
To provide extra information:
Local Code
const express = require('express');
const router = new express.Router();
const awsSDK = require('aws-sdk');
const dynamodb = new awsSDK.DynamoDB({region:'maskedData', apiVersion:'maskedData'});
router.get('/get', (req,res) => {
const params = {
TableName: "maskedData"
};
dynamodb.scan(params, function(err, data){
if(err){
console.log(err);
// callback(err);
res.send(err);
} else {
console.log(data);
// callback(null, data);
res.send(data);
}
})
})
module.exports = router;
2nd Version
const express = require('express');
const router = new express.Router();
const awsSDK = require('aws-sdk');
const dynamodb = new awsSDK.DynamoDB({region:'maskedData', apiVersion:'maskedData'});
exports.handler = router.get('/get', (req,res) => {
// router.get('/get', (req,res) => {
const params = {
TableName: "maskedData"
};
dynamodb.scan(params, function(err, data){
if(err){
console.log(err);
// callback(err);
res.send(err);
} else {
console.log(data);
// callback(null, data);
res.send(data);
}
})
})
// module.exports = router
// exports.handler = router;
Upvotes: 0
Views: 511
Reputation: 7770
To be used as lambda you need to have handler function which have event, context and callback parameter (optional). Something like this
const express = require("express");
const awsSDK = require("aws-sdk");
const dynamodb = new awsSDK.DynamoDB({"region": "maskedData", "apiVersion": "maskedData"});
exports.handler = async event => {
const params = {
"TableName": "maskedData"
};
const data = await dynamodb.scan(params).promise();
return data;
};
aws sdk supports promise version so you can use that instead of callback based.
Upvotes: 1