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
AWS SAMとX-Rayで Lambdaの遅延を可視化
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
komakichi
September 24, 2024
Programming
0
110
AWS SAMとX-Rayで Lambdaの遅延を可視化
JAWS-UG朝会 #61での登壇資料です。
https://jawsug-asa.connpass.com/event/321687/
komakichi
September 24, 2024
Tweet
Share
More Decks by komakichi
See All by komakichi
AWS re:Invent 2025 で頻出の 生成 AI サービスをおさらい
komakichi
3
390
JAWS-UG千葉支部 x 彩の国埼玉支部 LTバトル形式勉強会 〜目黒より愛をこめて〜
komakichi
3
80
JAWS DAYS 2025 re_Cheers: WEB
komakichi
0
260
Lambda(Python)の リファクタリングが好きなんです
komakichi
5
420
JAWS Days 2025のインフラ
komakichi
1
620
Amazon Bedrock + AWS Chatbot ノーコードでAIボット作成
komakichi
0
420
マルチエージェントで AWSサービスと会話がしたい
komakichi
1
100
Amazon BedrockとIoTで 実家情シスを卒業する
komakichi
3
200
もう実家に手頃な情シス娘は不要!Bedrockでもう一人の娘を作る
komakichi
2
340
Other Decks in Programming
See All in Programming
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
130
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
CSC307 Lecture 04
javiergs
PRO
0
660
AI & Enginnering
codelynx
0
110
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
390
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
CSC307 Lecture 01
javiergs
PRO
0
690
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
130
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
130
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.6k
Grafana:建立系統全知視角的捷徑
blueswen
0
330
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
1
1.6k
GraphQLとの向き合い方2022年版
quramy
50
14k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
320
Designing for humans not robots
tammielis
254
26k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
190
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
76
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
430
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
[SF Ruby Conf 2025] Rails X
palkan
1
760
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
The Cult of Friendly URLs
andyhume
79
6.8k
Transcript
JAWS-UG朝会 #61 AWS SAMとX-Rayで Lambdaの遅延を可視化 小巻玖美(こまきち) 2024/09/26(木)
WHO AM I ? X:@komakichidev NEW! t 所w u アイレット株式会D
t 職s u Webエンジニ t コミュニテS G JAWSの各所にチラチラと参6 G JAWS Festa 2024 in 広島行きます! 小巻 玖美(こまきち)
本LTの対象 F AWS SAMを使ってリソースを管理してい6 F X-Rayをまだ使ったことがな' ÇF X-Rayの導入を検討している
1 X-Ray導入の背景 2 X-Rayとは 3 X-Rayを有効化する 4 関連サービスもトレース対象にする 5 トレース全般に関する注意
Agenda
X-Ray導入の背景 以下のようなサーバーレス構成 AWS SAM
X-Ray導入の背景 CloudWatch Logsのメトリクスで大きな遅延を確認
X-Ray導入の背景 CloudWatch Logsのメトリクスで大きな遅延を確認 タイムアウト? 他のAWSサービスとの接続部分の遅延? AWS外のAPIを叩いている部分?(こちらのせいではない?)
X-Ray導入の背景 CloudWatch Logsのメトリクスで大きな遅延を確認 ログを仕込むにしても多すぎるかも タイムアウト? 他のAWSサービスとの接続部分の遅延? AWS外のAPIを叩いている部分?(こちらのせいではない?)
X-Ray導入の背景 そこで、X-Rayの導入を実施
AWS SAMとは サーバーレスアプリケーションを簡単に構築、デプロイ、管理できるツール サーバーレスアプリケーションに特化したAWS CloudFormationの 拡張ツールのため、少ない記述量で同じことが書ける 例:Lambda関数をデプロイ スッキリ!!
X-Rayとは アプリケーションが処理するリクエストに関するデータを収集するサービス レスポンス待ち時間やサービス障害、リクエストパラメータやメタデータ などを収集できる
X-Rayとは:補足 去年、X-RayはCloudWatchと統合されました
X-Rayとは:補足 去年、X-RayはCloudWatchと統合されました
有効化した時の費用 ※東京リージョン 【永続的な無料利⽤枠 毎月、トレースの記録は 10 万回まで無 毎月、トレースの取得とスキャンは合わせて 100
万回まで無料 【無料枠超過後の追加料金】 ※100万件 トレース記録コスト 5.00USD (1トレースあたり 0.000005 ドル トレース取得コスト 0.50USD (1 トレースあたり 0.0000005 ドル スキャンされたトレースコスト 0.50USD (1トレースあたり 0.0000005 ドル) https://aws.amazon.com/jp/xray/pricing/
アプリケーションへのX-Ray導入方法
使用方法は3種類 AWSコンソール (今回は紹介しない) 有効化したいサービスからコンソール上で有効化にチェックを入れ7 V SDKを使用する P X-Ray
APIを使用する SDKが使用しているプログラミング言語に対応していない場合 ・AWS Distro for OpenTelemetry(ADOT) SDK ・X-Ray SDl
使用方法は3種類 AWSコンソール (今回は紹介しない) 有効化したいサービスからコンソール上で有効化にチェックを入れ7 V SDKを使用する P X-Ray
APIを使用する SDKが使用しているプログラミング言語に対応していない場合 ・AWS Distro for OpenTelemetry(ADOT) SDK ・X-Ray SD
X-Rayを有効化する
X-Rayを有効化する AWS SAM 先程のアーキテクチャでX-RayをSDKを使用して有効化してみる
X-Rayを有効化する 有効化が完了し、リクエストを受信するとこのような画面が表示可能
X-Rayを有効化する 有効化が完了し、リクエストを受信するとこのような画面が表示可能
X-Rayを有効化する AWS SAM まずはここから
X-Rayを有効化する(Lambdaの設定) Tracing Active PassThrough を または に設 e Active e
Lambda関数のX-Rayトレースを有効にすW e PassThrougr e デフォルトB e API Gateway から受け取ったトレースヘッダーを転送する
X-Rayを有効化する(Lambdaの設定) Lambda関数にX-Rayへトレースデータを送信するポリシーを追加
X-Rayを有効化する(API Gatewayの設定) TracingEnabled True を に設定 ※デフォルトは False
X-Rayを有効化する(API Gatewayの設定) TracingEnabled True を に設定 ※デフォルトは False これでAPI GatewayとLambdaの設定は完了
X-Rayを有効化する(API Gatewayの設定) TracingEnabled True を に設定 ※デフォルトは False これでAPI GatewayとLambdaの設定は完了
→ これだけだと、この2つのサービスしかトレース対象にならない
関連サービスもトレース対象にする AWS SAM ここもトレース対象としたい 設定済み
関連サービスもトレース対象にする Lambdaのコードにsdkを使用して を追加する patch_all() 例:サポートされているすべてのライブラリにパッチを適用
関連サービスもトレース対象にする 全体ではなく、特定のAWSサービスのみを対象としたい場合
関連サービスもトレース対象にする AWS X-Ray SDK for Pythonでサポートされているライブラリ S botocore、botod S pynamodV
S aiobotocore、aiobotod S requests、aiohttY S httplib、 http.cliene S sqlite3 S mysql-connector-pytho S pg800t S psycopg S pymong S pymysql https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-sdk-python.html
AWSではない外部APIもトレース対象にする 外部APIを呼び出している場合もX-Rayでトレースが可能
AWSではない外部APIもトレース対象にする 実際にトレース対象としたX-Rayの画面
AWSではない外部APIもトレース対象にする 実際にトレース対象としたX-Rayの画面
AWSではない外部APIもトレース対象にする 実際にトレース対象としたX-Rayの画面
AWSではない外部APIもトレース対象にする 実際にトレース対象としたX-Rayの画面
トレース全般に関する注意
トレース全般に関する注意 ① サンプリングはデフォルトのサンプリングルールで実行される ②データの完全性は保証されない ③ 直近30日間のみ追跡データを保存
① サンプリングはデフォルトのサンプリングルールで実行される 1秒間に2回リクエストされた場合 2回目のリクエストがトレースされる保証はない デフォルトのサンプリングルールに従ってリクエストが記録されP ルールは「1秒ごとに最初のリクエストは必ずトレースR それ以降のリクエストについては全体の5%がトレースされる
① サンプリングはデフォルトのサンプリングルールで実行される H サンプリングルールでデータの量を制御してい8 H またパフォーマンスへの影響をコントロールしている なぜサンプリングルールが必要なのか… X-Rayはトレース数で課金される 100%トレースする設定も可能だが、上記を考慮する必要あり
②データの完全性は保証されない AWS X-Rayは監査やコンプライアンスのツールとしては使用不可 データの完全性は保証されない 収集されるデータは統計的に有意なリクエスト数に基づいているが、 https://aws.amazon.com/jp/xray/faqs/
③ 直近30日間のみ追跡データを保存 X-Rayのトレースデータ保持期間は、直近30日間 https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-console-deeplinks.html ちなみにX-Rayのトレースを探す際の時間範囲は6時間まで > 時間範囲は UTC で、最大で6時間にすることができます。
実際にX-Rayを導入した感想
実際にX-Rayを導入した感想 h どこで遅延が発生しやすいのか調査可能 h 特にLambdaのタイムアウト調査の時に効果を発P h 費用面も(今回のサービスでは)問題になるほど、高くなくて良 h ただトレースが探しにくい!H h
コンソールでの範囲6時間制限や30日で消えてしまうのが、やっぱり 使いにくさに繋がっている https://aws.amazon.com/jp/xray/faqs/
おまけ
おまけ X-Rayの有効/無効をtemplate.ymlで制御してみる やりたかったこ0 SAMのテンプレート(template.yml)では、環境毎にリソースを定義済S 「商用環境はX-Rayを有効化」「開発環境は無効」のように環境毎に 有効/無効をパラメータでスイッチングしたい
XRAY_ENABLE_FLAG という変数を定義し、他のリソースでこの値を参照す ることにした
TracingEnabled: !If [ IsEnabledXRayTracing, True, False ] API GatewayでのX-Ray有効化
LambdaでのX-Ray有効化
まとめ P Lambdaのどの処理でレスポンスに遅延が発生するかを特定でき0 P SAMなどのIaCで管理もでき0 P 30日でログが追えなくなるので注意…
Thank You !!