Function Computeのチュートリアルを実行している途中502 UnhandledInvocationErrorで詰まりました。
ログを見るとこんなエラーが出ていて、raw-bodyでコケているみたいです。
FC Invoke Start RequestId: c3c1871c-8a39-9acc-144e-7a9a20d0d4e2
2018-07-04T05:00:57.370Z c3c1871c-8a39-9acc-144e-7a9a20d0d4e2 [error] TypeError: stream.on is not a function
at readStream (/usr/local/lib/node_modules/raw-body/index.js:190:10)
at getRawBody (/usr/local/lib/node_modules/raw-body/index.js:108:12)
at module.exports.handler (/code/test_http.js:20:3)
FC Invoke End RequestId: c3c1871c-8a39-9acc-144e-7a9a20d0d4e2
さて、ではこのrequest
を見てみましょう。handlerの先頭にconsole.logを仕込んでaliyunコンソールから実行してログを見ます。
2018-07-04T05:28:56.214Z e8d3fcb6-9a71-efc0-e7b6-a1722afda2eb [verbose] <Buffer 22 7b 5c 6e 20 20 5c 22 6b 65 79 5c 22 3a 20 5c 22 76 61 6c 75 65 5c 22 5c 6e 7d 22>
HTTPトリガーインターフェイスのオブジェクトが欲しいのに、なんか違うのが入ってますね。
BufferだったのでとりあえずtoString()
してみます。
2018-07-04T05:35:56.884Z 94236568-9921-16dc-9638-72e013488549 [verbose] "{\n \"key\": \"value\"\n}"
なんか出てきました。テスト用のイベントのJSONをStringifyしてBufferにしたものがrequestに入っているようです。
これはOSSをトリガーにした時と同じ形式ですね。。。
結論
HTTPトリガーの作成忘れでした。