Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TelemetryAPIでLambda関数の外側を覗く
Search
Hiroshi Kato
May 24, 2026
4
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TelemetryAPIでLambda関数の外側を覗く
Hiroshi Kato
May 24, 2026
More Decks by Hiroshi Kato
See All by Hiroshi Kato
20260318_AIによるデザインレビュ〜「画像の美しさ」をスコアに変換する〜
kahiro
0
81
DurableExecutionを実装検証から理解する.pdf
kahiro
1
45
20260110_オンプレ思考からクラウドネイティブ思考への転換レシピ
kahiro
0
13
20251114_Amazon_Q_DeveloperでMCPを使う_最初の一歩__.pdf
kahiro
0
15
20250829_LambdaとStepFunctionsどちらを選ぶべき_コスト視点で考えてみる.pdf
kahiro
1
460
Step_Functions_をはじめよう_JSONataによる進化_.pdf
kahiro
2
160
20250706_AWSでランサムウェア対策_バックアップが最大の防御_.pdf
kahiro
0
390
20250701_VMwareワークロードのAWS移行を学ぶ.pdf
kahiro
0
140
20250412_JAWS-UG北陸新幹線.pdf
kahiro
0
130
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
320
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Context Engineering - Making Every Token Count
addyosmani
9
940
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
A better future with KSS
kneath
240
18k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
260
Transcript
TelemetryAPIでLambda関数の外側を覗く Media-JAWS × JAWS-UG 静岡支部 × 浜松支部 コラボ会 2026年5月22日(金)
TelemetryAPIでLambda関数の外側を覗く Media-JAWS × JAWS-UG 静岡支部 × 浜松支部 コラボ会 2026年5月22日(金)
自己紹介 加藤 寛士(かとう ひろし) • クラウドエンジニア • JAWS-UG 名古屋運営 •
AWS community builders(serverless) @Hircha12
Otel(OpenTelemetry)を初めて知る 「システムの内部を標準化された形式で観測できる」 カンファレンスで知ったこと ・OpenTelemetryはベンダー依存しないオブザーバビリティ標準規格 ・Traces / Metrics / Logsを同じ形式で収集できる ・DatadogやNewRelicも内部的にOTelを使っている
OpenTelemetryとは? オブザーバビリティ標準規格 主な概念 Traces:リクエストの全体の流れ Metrics:数値データ (CPU・レイテンシー) Logs:テキストログ (アプリケーション出力) 主なコンポーネント SDK:アプリに計測を埋め込む
Collector:データを受け取り ・加工・転送 Exporter:バックエンドへ送信 なぜ大事か ベンダーロックインしない Datadog・New Relicなどへ同じ コードで送信できる 「計測の仕方」を標準化し、アプリ・インフラが同じ形式でテレメトリーを出せるようになる
LambdaにTelemetryAPIがあった Lambdaのディベロッパーガイドを眺めていたところ…
TelemetryAPIとは?(概念図)
TelemetryAPIを使うと… 通常のLambda関数の実装からは「どこで何ミリ秒かかっているか」がわからない Lambda 関数から見えること ✓ 自分で出力したログ ✓ returnした結果 → 関数の「内側」しか見えない
→ 実行時間はCloudWatchLogsの Duration / Init Durationのみ (合計値・内訳なし) 実はLambdaはRuntimePlatform ✓ Runtimeの起動に何ms? ✓ importに何ms? → Lambda関数の「外側」で起きていることが CloudWatchLogsで見ることができない
TelemetryAPIで見える世界 Before:Lambda関数側の視点 API Gateway等から実行 ↓ lambda_handler() を書く ↓ CloudWatchLogs →
Lambda =「関数を実行するもの」 → 遅ければ「コールドスタートが遅い」 としか言えなかった → 詳細な原因は語れず After:TelemetryAPIで見える世界 Lambda Runtime Environment └─ Extension Init(何ms?) └─ Runtime Init(何ms?) └─ Module Import(何ms?) └─ lambda_handler()(何ms?) → Lambda = RuntimePlatform → コールドスタートは複数処理の合計 → どの処理が重いか特定できる TelemetryAPI を使うことで、Lambda関数の「外側」で何が起きているかが分かる
TelemetryAPIでLambda関数の外側を観測 Lambda関数の変更は不要 Extension(レイヤー)を追加するだけで、Runtime内部が見えるようになる Lambda関数の外側にExtensionを追加 Collectorをレイヤーとして追加 TelemetryAPIでRuntime内部をサブスクライブ platformイベント(initStart / initReport /
runtimeDone など) functionログ(print() の出力)を同じ時系列で受信 各処理を個別に計測 INIT_START → Extension Init → Runtime Init → Module Import
Lambdaの内部Phase 「Init Duration: 2,500ms」では内訳は不明だが、 Telemetry API なら各処理を個別計測できる INIT START 実行環境
起動開始 → Extension Init 拡張機能 初期化 → Runtime Init ランタイム 起動 → Module Import import boto3 など実行 → INIT REPORT 初期化完了 レポート Lambda関数の実行ログにある Init Duration はこの全体合計のみ(内訳は不明) Telemetry API で各処理の時間を個別に取得できる!どの処理が重いか特定できる
拡張機能の作り方 — 4ステップ
INITからSHUTDOWNまで、全Phaseが見える
INITからSHUTDOWNまで、全Phaseが見える
関数 × Collector × CloudWatch の関係
platformとfunctionとして受け取れる
Cold Start の内部構造
色々やってみて違いを見てみる • Memory変更でINITは短縮する? • ARM64で何が変わる? • boto3 importでINITはどれだけ増える?
と、思ったのですが、、、
ADOT???
ADOT
ADOT
OpenTelemetry Collector とは? テレメトリーの収集・加工・転送を担うエージェント Receiver テレメトリーを受信 OTLP / HTTP /
gRPC Processor 加工・バッファリング batch / memory_limiter Exporter バックエンドへ転送 Jaeger / OTLP / X-Ray 公式配布の 4 種類のビルド otelcol-otlp OTLP受信・送信のみ。超軽量 otelcol OSSとして標準的なコンポーネント入り otelcol-k8s otelcol + Kubernetes向け追加 otelcol-contrib 全コンポーネント入り。巨大だが何でもできる 自分でCollectorを作った意義 ✓ register → subscribe → HTTP受信 の流れが理解できた ✓ print() でそのままCloudWatchに流せた → でも本番で使うにはもっと考慮が必要… → AWS公式版を発見した! Receiver / Processor / Exporter のパイプラインを設定ファイルで自由に組み合わせられる
ADOT — AWS が公式に配布する Collector AWS Distro for OpenTelemetry ADOT
とは otelcol-contrib をベースに AWS向けコンポーネントだけを追加した軽量ビルド 同梱されているもの ・AWS X-Ray Exporter ・Amazon CloudWatch Exporter ・Amazon Managed Service for Prometheus ・AWS ECS / EKS リソース検出 配布形態 ・Lambda レイヤーとして追加可能 ✓ ・ECS / ECS Fargate / EC2 / EKS 対応 自作 vs ADOT 自作C ollector ADOT セキュリティ 自己責任 AWS検証済み AWS統合 自分で実装 同梱済み Lambda対応 レイヤー自作 公式レイヤーあり 保守 自分でアップデー ト AWSがサポート 結論:仕組みを理解するために自作したのは正解。本番では ADOT をレイヤーに追加するだけ で同じことがで きる。
学び TelemetryAPIを自分で動かしてみて、 LambdaとOpenTelemetryの理解が変わった。 • Lambdaは「関数を実行するもの」ではなくRuntimePlatform として動いている • 関数コードを一切変えずに、レイヤーを追加するだけで 内部観測できる •
OpenTelemetryは標準規格であり、利用可能なコレク ターが配布されている(自作しなくてもいい)