はじめに
AWSの勉強をしていて、X-Rayって名前だけ聞いて何に使えるかなんとなく雰囲気では知ってるけど
使ったことないなとおもったので、どういう風に各サービスの実行時間が見えるのか試してみた記事です。
実行環境
・scala: 2.13.3
・sbt: 1.3.13
・aws-cdk: 1.57.0
はこんな感じでサンプルコードは以下になります。
https://github.com/hiroyuki-nishi/xray
AWS構成図
とりあえず最小限のAWS構成で試してみます
CDKの設定ポイント
LambdaのX-Rayをアクティブにするだけなら tracing(Tracing.ACTIVE)
を追加してあげるだけで
設定できます。
より詳しい解説公式ドキュメントを参照してください
private val function = new Function(
this,
"account-test",
FunctionProps
.builder()
.functionName(s"notify-days-shift-test")
.code(
Code.fromAsset(
s"${presentationPath}/notifydaysshift/target/scala-2.13/notifyDaysShift.jar"
)
)
.runtime(Runtime.JAVA_8)
.handler("shiftdays.App::handleRequest")
.timeout(Duration.seconds(180))
.memorySize(1024)
.environment(Map("REGION" -> "ap-northeast-1").asJava)
.tracing(Tracing.ACTIVE) // ココ
.build()
)
X-Rayの結果
トレースはこのような感じで結果が残ります。
コールドスタート時
GraalVMとか何もしてないので流石に立ち上がりが遅い・・・
GetQueueURLの取得?も思った以上に時間がかかっているのがわかります。
おわりに
Lambdaの設定一つでX-Rayを使えるようになるのはいいですね。
あとは、コスト面やKinesisを使ったEventSourcingなどどこまでトレースされるのかは色々試してみたいところです。