Closed kevin-omi closed 6 months ago
@kevin-omi The error says the processor architecture of system where you installed ibm_db and where you copied are not same. If processor architecture is different, you need to install ibm_db locally. Try below commands:
cd /opt/nodejs/node12/node_modules/ibm_db
npm install
Also, we need complete output of below commands from Amazon Linux 2 system:
uname
uname -m
node -v
npm ls ibm_db
db2level
echo $IBM_DB_HOME
echo $PATH
echo $LD_LIBRARY_PATH $DYLD_LIBRARY_PATH
npm install ibm_db
If you see architecture is arm64, ibm_db will not work as ibm_db is not supported for arm64 architecture. Thanks.
Linux x86_64 node v18.18.2 task@ /var/task └── (empty) db2level = bash: db2level: command not found echo $IBM_DB_HOME = blank PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib npm install ibm_db results: added 48 packages, and audited 49 packages in 19s
3 packages are looking for funding
run npm fund
for details
found 0 vulnerabilities npm notice npm notice New major version of npm available! 9.8.1 -> 10.2.4 npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.2.4 npm notice Run npm install -g npm@10.2.4 to update! npm notice
The following command is pointless because the ibm_db need write permissions to the license file and other directories, and the Lambda function does not have write permissions to its file system except for the mounted EFS or /tmp folder.
cd /opt/nodejs/node12/node_modules/ibm_db
npm install
@kevin-omi I suspect the odbc_bindings.node file is getting corrupted when ibm_db get copied from S3 to EFS via AWS DataSync. Please check the transfer mode. If it is not a binary transfer, the binary files will get corrupted. You may try to install ibm_db under /tmp folder where lambda function has the write permission. Thanks.
@kevin-omi Let us know if you tried file transfer in binary mode and any update about the issue? Thanks.
Please provide below information while opening an issue to understand your problem
db2level
command from Db2 database system:For non-Windows system, output of below commands from terminal:
uname uname -m node -v npm ls ibm_db db2level echo $IBM_DB_HOME echo $PATH echo $LD_LIBRARY_PATH $DYLD_LIBRARY_PATH
node v18.18.2 PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib
LAMBDA_TASK_ROOT=/var/task NODE_PATH=/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules:/var/runtime/node_modules:/mnt/efs/node/node_modules
Please provide below problem specific info:
=========================================
I'm having an issue loading the ibm_db module in my AWS Lambda function code. The node_modules is inside the mounted EFS at /mnt/efs/node/node_modules. The node_modules is built from a CI/CD pipeline (Ubuntu linux) and then uploaded to S3 from within the pipeline, and then copied from S3 to EFS via AWS DataSync. The Lambda function is deployed via a custom container using the official base image from https://gallery.ecr.aws/lambda/nodejs using node version 18. I was able to run the application by running the container locally on my computer without any issues.
Dockerfile:
I got the following error message when executing the Lambda function: