Amazon CloudWatch 카나리에서 "Cannot find module '/opt/nodejs/node_modules/myfunction" 오류를 해결하고 싶습니다.
해결 방법
.zip 배포 패키지는 nodejs/node_modules 경로 아래에 함수 및 종속성이 구성된 필수 디렉터리 구조가 포함되어야 합니다. 필수 디렉터리 구조 없이 .zip 파일을 만들면 다음과 같은 오류가 표시됩니다.
"Cannot find module '/opt/nodejs/node_modules/myfunction."
이 오류를 해결하려면 다음 단계를 완료하십시오.
-
다음 명령을 실행하여 nodejs/node_modules 구조를 만듭니다.
mkdir -p /nodejs/node_modules/
-
CloudWatch 카나리 함수를 **/nodejs/node_modules/**에 복사합니다.
cp CanaryFunction.js /nodejs/node_modules/cp -R /lib /nodejs/node_modules/
참고: 카나리의 스크립트 진입점을 myCanaryFilename.functionName으로 설정하여 스크립트 진입점의 파일 이름과 일치하도록 합니다. 예를 들어 카나리 파일이 CanaryFunction.js인 경우 핸들러를 CanaryFunction.handler로 설정하십시오.
-
nodejs 디렉터리 맨 위에 있는 프로젝트 폴더의 내용이 포함된 .zip 파일을 만들려면 다음 명령을 실행합니다.
zip -r Canary.zip ./nodejs/*
.js 파일 또는 스크립트 종속성이 여러 개 있는 카나리 스크립트를 작성할 때는 모든 파일을 단일 .zip 파일로 묶습니다. nodejs/node_modules 폴더 구조를 사용합니다. 예를 들어 nodejs/node_modules/myCanaryFilename.js를 사용할 수 있습니다.