Why is my CloudWatch canary failing with the error "Cannot find module '/opt/nodejs/node_modules/myfunction"?

1 minute read
0

Why is my Amazon CloudWatch canary failing with the error "Cannot find module '/opt/nodejs/node_modules/myfunction"?

Resolution

If you don't use the structure required by CloudWatch when creating a .zip file of your function and dependencies, then you receive an error. The error message reads: Cannot find module '/opt/nodejs/node_modules/myfunction.

You must create your .zip file under the nodejs/node_modules file path (such as nodejs/node_modules/myCanaryFilename.js). To create your .zip file under the correct file path, do the following:

1.    Create the required structure.

mkdir -p /nodejs/node_modules/

2.    Copy your CloudWatch canary function to /nodejs/node_modules/.
Note: The handler naming convention is filename.handler.

cp CanaryFunction.js /nodejs/node_modules/
cp -R /lib /nodejs/node_modules/

3.    Zip your directory on the top of /nodejs.

zip -r Canary.zip ./nodejs/*

Note: When creating a Synthetics canary from scratch, if you have multiple .js files or script dependencies, then bundle all files into a single .zip file. Use the following folder structure: "nodejs/node_modules". For example, nodejs/node_modules/myCanaryFilename.js file and other folders and files.


Related information

Packaging your canary files

AWS OFFICIAL
AWS OFFICIALUpdated 2 years ago