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
komakichi
September 24, 2024
Programming
0
100
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
380
JAWS-UG千葉支部 x 彩の国埼玉支部 LTバトル形式勉強会 〜目黒より愛をこめて〜
komakichi
3
75
JAWS DAYS 2025 re_Cheers: WEB
komakichi
0
250
Lambda(Python)の リファクタリングが好きなんです
komakichi
5
410
JAWS Days 2025のインフラ
komakichi
1
590
Amazon Bedrock + AWS Chatbot ノーコードでAIボット作成
komakichi
0
370
マルチエージェントで AWSサービスと会話がしたい
komakichi
1
97
Amazon BedrockとIoTで 実家情シスを卒業する
komakichi
3
190
もう実家に手頃な情シス娘は不要!Bedrockでもう一人の娘を作る
komakichi
2
330
Other Decks in Programming
See All in Programming
CSC307 Lecture 03
javiergs
PRO
1
460
チームをチームにするEM
hitode909
0
430
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
460
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
120
ゆくKotlin くるRust
exoego
1
190
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
760
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
510
SQL Server 2025 LT
odashinsuke
0
120
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
7
4.3k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
240
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
160
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
First, design no harm
axbom
PRO
1
1.1k
The Cult of Friendly URLs
andyhume
79
6.7k
4 Signs Your Business is Dying
shpigford
187
22k
Paper Plane
katiecoart
PRO
0
45k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
190
ラッコキーワード サービス紹介資料
rakko
0
1.9M
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
420
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
360
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.1k
Agile that works and the tools we love
rasmusluckow
331
21k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
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 !!