Open19

Scalaアプリケーションをlambdaで動かす

request handlerっぽいクラスを定義すればエントリーポイントとしては十分らしい

引用: https://tasotasoso.hatenablog.com/entry/2019/07/20/230824

package example

import scala.collection.JavaConverters._
import com.amazonaws.services.lambda.runtime.Context
import com.amazonaws.services.lambda.runtime.RequestHandler


trait RepeatBase {
  def repeat(testPhrase: String, context: Context) = {
    println(testPhrase)
  }
}

class Repeat extends RepeatBase

気軽にassemblyすると250mbの制限に引っかかるのでjarじゃなくてimageに固めるのがいいかもしれない

250超えたのは多分awssdkをまるまる入れたから臭い

software.amazon.awssdk.core.exception.SdkClientException: Unable to load an HTTP implementation from any provider in the chain. You must declare a dependency on an appropriate HTTP implementation or pass in an SdkHttpClient explicitly to the client builder.

例外発生

explicitに指定するやつで解決

メモリ512MBにしたらmetaスペースが足りなくてoutOfMemory
ヒープ設定いじっても面倒だからメモリ上げて解決

こんな感じでできた

cloud watch eventsでトリガーしてると、走らせるメソッドのインターフェースは

def run(data: Any, c: Context) = ...

とかdataをAnyにしておかないとパースエラーで死ぬ
もちろんデータ型調べてそれの型書いても可能

ログインするとコメントできます