Amazon CloudWatch Canary が「Cannot find module '/opt/nodejs/node_modules/myfunction」というエラーで失敗するのはなぜですか?
解決方法
関数と依存関係の .zip ファイルを作成するときに CloudWatch で必要な構造を使用しないと、エラーが発生します。エラーメッセージは、次のようになります: Cannot find module '/opt/nodejs/node_modules/myfunction。
.zip ファイルは、nodejs/node_modules のファイルパス (nodejs/node_modules/myCanaryFilename.js など) の下に作成する必要があります。.zip ファイルを正しいファイルパスに作成するには、次の操作を行います。
1. 必要な構造を作成します。
mkdir -p /nodejs/node_modules/
2. CloudWatch Canary 関数を /nodejs/node_modules/ にコピーします。
注意: ハンドラの命名規則は filename.handler です。
cp CanaryFunction.js /nodejs/node_modules/
cp -R /lib /nodejs/node_modules/
3. /nodejs の先頭でディレクトリを圧縮します。
zip -r Canary.zip ./nodejs/*
注意: Synthetics Canary を最初から作成する場合、複数の .js ファイルまたはスクリプトの依存関係がある場合は、すべてのファイルを 1 つの .zip ファイルにバンドルします。次のフォルダ構造を使用します:「nodejs/node_modules」。たとえば、nodejs/node_modules/myCanaryFilename.js ファイルやその他のフォルダおよびファイルです。
関連情報
Canary ファイルのパッケージング