I want to connect to oracle database hosted in RDS inside aws lambda nodejs runtime . after research i found out that i need to download node-oracledb package and create a layer for node module and binary lib files. so i created folder structure as shown below, and zip folder and uploaded to aws layer and attached layer to lambda, however i get "errorMessage": "Cannot find module 'oracledb' any clue Why AWS node cannot find module?, thank you
Lambda-Layer-1(version 1)
|
|__lib
| |__libaio.so.1
| |__libclntsh.so.12.1
| |__libclntschcore.so.12.1
| |__libipc1.so
| |__libmql1.so
| |__libnnz12.so
| |__libociicus.so
| |__libons.so
|
|__nodejs
|
|__node_modules
|
|__oracledb
Error from lambda:
"errorMessage": "Cannot find module 'oracledb'",
"errorType": "Error",
"stackTrace": [
"Module.require (module.js:596:17)",
"require (internal/module.js:11:18)",
"Object.<anonymous> (/var/task/src/services/oracleDb.service.js:10:18)",
"Module._compile (module.js:652:30)",
"Object.Module._extensions..js (module.js:663:10)",
"Module.load (module.js:565:32)",
AWS runtime:
Nodejs:8.10
node-oracledb:"3.1.2"
code:
const oracledb = require("oracledb");
let connection;
static async init() {
try {
if (!connection) {
const connectionAtrribute = {
connectionString: 'uat-*******',
password: '*******',
user: '*******'
};
connection = await oracledb.getConnection(connectionAtrribute);
}
}
catch (error) {
console.log('ERROR', JSON.stringify(error));
}
}

libdir in your project directory. Addlibaio.soorlibaio.so.1(downloaded from linux repo) tolibdir. Remove libcIntsh.so.x.1 and libocci.so.x.1 files for versions you don't need (and .jar files can go too I think). With these files in place, regularoracledbmodule works in a lambda. Also, for space, remember aws-sdk is included in lambda env. - phhu