注意
この記事は2018年6月に作成された記事であり、AWSのアップデートによりこの内容が適用できない場合がありますのでご留意ください。
使用言語:node
バージョン:v8.11.1
過去に遭遇したエラー集
今まで動いていたlambda関数が(何もしてないのに)失敗するようになった,,,
s3に格納されているファイルのリストを返す関数なので、対象ファイルの増加に伴い実行時間が増加し、
timeoutの時間にひっかかった。timeoutの時間を伸ばすことにより解消。
aws lambda update-function-codeがtimeoutする,,,
timeoutの原因については家の回線とか送信ファイルの量とか色々あるが、
大体は --cli-connect-timeout でtimeout時間を長めにとればうまくいきやすい。
grpcのライブラリが原因で実行時にエラーが出る,,,(自分はfirebaseのライブラリを使った時に出ました)
Unable to import module 'index': Error
Expected directory: node-v48-linux-x64-glibc
Found: [node-v57-darwin-x64-unknown, node-v57-linux-x64-glibc]
This problem can often be fixed by running "npm rebuild" on the current system
Original error: Cannot find module '/var/task/node_modules/grpc/src/node/extension_binary/node-v48-linux-x64-glibc/grpc_node.node'
(略)
出力にもあるように期待されているライブラリはnode-v48-linux-x64-glibcだが見つからない,と出ている。
期待されているやつ得るには以下のコマンドでgrpcをリビルドする必要がある。
npm rebuild grpc --target=6.1.0 --target_arch=x64 --target_platform=linux --target_libc=glibc
参考:Make sure the Node library works on AWS Lambda #6443
Api Gatewayと紐付けたのに呼ばれない、、、
Apiをデプロイしていない。Apiにlambda関数を紐づけたのに実行されない(CloudWatchにlambdaのログが出ない)などの場合、
Api Gatewayに対して行った修正がデプロイされていないことが原因である場合が比較的多かった。
aws lambdaはそれ単独で使うより、AWSの他サービスと連携して実行する場合があるので、
想定通りの結果が得られない場合は他サービスの設定が問題ないか調べると良い。