AWS LambdaでProcess exited before completing request
ちょっとしたメモです。
AWS SDK (Java)を使ってLambda関数をコールしていると、たまーに以下のようなLambdaFunctionExceptionがでてきます。
com.amazonaws.services.lambda.invoke.LambdaFunctionException: Process exited before completing request
at com.amazonaws.services.lambda.invoke.LambdaInvokerFactory$LambdaInvocationHandler.getExceptionFromPayload(LambdaInvokerFactory.java:239)
at com.amazonaws.services.lambda.invoke.LambdaInvokerFactory$LambdaInvocationHandler.processInvokeResult(LambdaInvokerFactory.java:191)
at com.amazonaws.services.lambda.invoke.LambdaInvokerFactory$LambdaInvocationHandler.invoke(LambdaInvokerFactory.java:106)
at com.sun.proxy.$Proxy6.findRssUrl(Unknown Source)
at com.tsukaby.c_antenna.service.SiteService$$anonfun$crawlNewSite$3$$anonfun$apply$2.apply(SiteService.scala:126)
at com.tsukaby.c_antenna.service.SiteService$$anonfun$crawlNewSite$3$$anonfun$apply$2.apply(SiteService.scala:125)
at scala.collection.immutable.List.foreach(List.scala:381)
at com.tsukaby.c_antenna.service.SiteService$$anonfun$crawlNewSite$3.apply(SiteService.scala:125)
at com.tsukaby.c_antenna.service.SiteService$$anonfun$crawlNewSite$3.apply(SiteService.scala:124)
at scala.util.Success$$anonfun$map$1.apply(Try.scala:237)
at scala.util.Try$.apply(Try.scala:192)
at scala.util.Success.map(Try.scala:237)
at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.pollAndExecAll(ForkJoinPool.java:1253)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1346)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
ぐぐってもなかなか良い答えが出てこなかったのですが、
ふとそういえばCloudWatch Logsに関数実行時のログが出ていることを思い出して、見てみたところ。
ビンゴでした。
dispatchというScalaのHttpライブラリを使っているのですが、そこでエラーになっていますね。
というわけで、どうやら関数実行中にエラーになって正常にレスポンスを返さなかった場合は上記のように「Process exited before completing request」になるようですね。
以上です。