localstackでsqsとlambda(kotlin)を動かしたりlog4j2とslf4jでログ吐くサンプル
概要
タイトルがおおよそ全て(ラノベ)
localstackでAWS SQS, Lambdaをつくる
SQSとLambdaを紐付ける
shellscriptでSQSにメッセージを送り、LambdaはSQSからメッセージを吸い上げて起動する
※ SQSなしでLambda単体をつくり起動するパターンもつくった
Lambdaのfunctionはkoltinで書いてロギングはLog4j2とSlf4j
gradle(groovy)で頑張る
ついでにLambdaの単体テストもJUnit5で書いた
コード
https://github.com/0mmadawn/localstack-sqs-lambda
だいたいこれ読めばわかるのであんまり書くことがないけど一応メモ
大変だったこと
- Log4j2とSlf4jのことなんも知らなかった
- Log4jとLog4j2の違いも知らんかった
- gradleがよくわからない(深刻に)
- localstackのログ出力がよくわからない
- 最終的にLS_LOGではなくてDEBUGの方で解決させたけど、特にそのへん設定せず親切にログが出ると思っていると痛い目を見る
- とにかく最初からエラーの物量がたくさんだった
- 最終的にもよくわからないエラーがいくつかあった
- 小さい状態から徐々に大きくしたほうがいい...(仕事ではそうもいかなかった)
参考
リポジトリに書いてあるのは省略
Lambdaいろいろ
- https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html
- https://docs.aws.amazon.com/lambda/latest/dg/java-logging.html
- https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html
- https://github.com/aws/aws-lambda-java-libs
Log4j2 + Slf4j
- https://stackoverflow.com/questions/48033792/log4j2-error-statuslogger-unrecognized-conversion-specifier
- https://github.com/aws/aws-lambda-java-libs/tree/master/aws-lambda-java-log4j2
- https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/java-basic
- https://stackoverflow.com/questions/49973441/logging-using-log4j2-on-aws-lambda-class-not-found/49973486#49973486
- https://qiita.com/NagaokaKenichi/items/9febd2e559331152fcf8
- https://kagamihoge.hatenablog.com/entry/2015/01/20/212230
- https://www.nextdoorwith.info/wp/se/slf4j/