マットfreake:
私は、Java AWSラムダ使用してサーバレスを書いてしようとしています。私のラムダが正しくHTTPエンドポイントのデプロイおよび作業によってトリガが、予定の1時で私の試みは失敗します。
コンフィグルックスが好き:
serverless.ymlから
functions:
timedHandler:
handler: com.serverless.TimedHandler
events:
- schedule:
rate(1 minute)
私のようなのRequestHandlerを実装しようとした場合:
public class TimedHandler implements RequestHandler<Request, Response> {
private static final Logger LOG = LogManager.getLogger(Handler.class);
@Override
public Response handleRequest(Request request, Context context) {
LOG.info("Started up");
return null;
}
ログはそれを文句を言います:
java.lang.RuntimeException java.lang.RuntimeExceptionを:エラーが解析するJSON中に発生したエラーは、構文解析をJSON中に発生した
java.io.UncheckedIOException:com.fasterxml.jackson.databind.JsonMappingException:によって引き起こさCOMのインスタンスを作成することはできません。 amazonaws.Request
スケジュールされたイベントは渡していないので、私は仮定しRequest
、スケジュールトリガーにオブジェクトが、何か具体的な。しかし、私は(AWSのドキュメントは罰金が示唆)インターフェースを実装していない場合はAWSのログが文句を言います
com.serverless.TimedHandler:クラスは、適切なハンドラインタフェースを実装していません。
AWSは、私は適切な引数に渡す予定のラムダのために実装する必要があるインターフェイスの特定はありますか?
マットfreake:
だから、彼らは例えば、RequestStreamHandlerインタフェースを実装する必要があることが判明しました:
public class TimedHandler implements RequestStreamHandler {
private static final Logger LOG = LogManager.getLogger(TimedHandler.class);
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
LOG.info("Started up");
return;
}
}
これは現在正常に実行しても例外をスローしません