I am using aws-cdk to create the lambda function so for that I have created one folder at root name as lambda, inside that I have three folders functions, handlers and utils.
My folder structure is as below
-- lambda
-- handlers
-- createUserHandler.ts
-- functions
-- createUser.ts
-- utils
-- sqs
The folder handlers will have the handle function which will be the starting point of execution of lambda during invocation and folder functions have some business logic to perform some operations. I am calling one method which is written in the createUser.ts file from createUserHandler.ts. I am getting below error
{
"errors": [
{
"path": [
"createUser"
],
"data": null,
"errorType": "Runtime.ImportModuleError",
"errorInfo": null,
"locations": [
{
"line": 1,
"column": 23,
"sourceName": null
}
],
"message": "Error: Cannot find module '../functions/createUser'\nRequire stack:\n- /var/task/createUserHandler.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js"
}
]
}
AWS cdk code of lambda creation
const createPayment = new lambda.Function(this, 'CreatePayment', {
runtime: lambda.Runtime.NODEJS_12_X,
handler: 'createUserHandler.handler',
code: lambda.Code.fromAsset("src/lambda/handlers"),
timeout: cdk.Duration.minutes(5),
functionName: `createUser-${stage}`,
memorySize: 1024,
role: lambdaExecutionRole,
});
createUserHandler.ts
import createUser = require("../functions/createUser");
export async function handler(event:Event) {
return await createPayment.default(event.arguments.user);
}
createUser.ts
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();
async function createUser(user) {
const params = {
TableName: process.env.USER_TABLE,
Item: user
}
try {
await docClient.put(params).promise();
return user;
} catch (err) {
console.log('DynamoDB error: ', err);
return null;
}
}
export default createUser;
I am completely new to typescript and struggling for the last 24 hours please help me to get it resolved. Thanks