<aside> 💡
java-basicのハンドラクラスを触ってみる
</aside>
// Handler value: example.Handler
public class Handler implements RequestHandler<Map<String,String>, Void>{
@Override
public Void handleRequest(Map<String,String> event, Context context)
{
LambdaLogger logger = context.getLogger();
logger.log("EVENT TYPE: " + event.getClass());
return null;
}
}
@Override
これは親クラスやインターフェースのメソッドをオーバーライド(上書き)しますよっていうアノテーション。
この場合、AWSの RequestHandler
インターフェースの handleRequest
メソッドを上書きしてる。
public Void handleRequest(Map<String,String> event, Context context)
public
→ どこからでもアクセスできるメソッド
Void
→ **戻り値が無い(nullを返す)型
※ void
と違って、Void
はクラス型。ここではAWS Lambdaの制約上Void
を使ってる。
handleRequest
→ Lambdaのエントリポイント(実行時に呼ばれるメソッド)
Map<String, String> event
→ イベントデータ(今回ならinput.jsonの内容)をキーと値がStringのMapで受け取る
Context context
→ Lambdaの実行環境に関する情報(ログ用のLoggerとか、残り時間とか)が入ってるオブジェクト
Javaの Map<String, String>
は、
String
(文字列)String
(文字列)でペアを保存する箱
public Void handleRequest(Map<String,String> event, Context context) ここで event は「リクエストパラメータを入れたMap(辞書)」になってる。 つまり、Lambdaにリクエストが来たとき、 リクエストボディの中身がMapに変換されて受け取れるってわけ!
例えば、リクエストボディがこんなだったら: