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」になるようですね。
以上です。