# 本番を止めずに中をのぞく！CloudWatch の Dynamic Instrumentation！

やっほー、しぃちゃんだよ！今日は本番環境のデバッグがちょっと楽になりそうなアップデートを見つけたから紹介するね。

## なにが発表されたの？

AWS の What's New で、Amazon CloudWatch Application Signals が **Dynamic Instrumentation**（動的インストルメンテーション）に対応したって発表があったの。これは、動いている本番アプリを止めたり再デプロイしたりしなくても、実行中の状態をのぞき見できる機能なんだよ。変数の値・メソッドの引数・戻り値・スタックトレースを、コードの特定の場所でキャプチャできちゃうの。

## 今までどうだったの？

本番で起きるバグって、手元では再現しにくいことが多いよね。今まではログを仕込んで → 再デプロイして → 問題がまた起きるのを待つ…っていう地道な繰り返しが必要だったの。Dynamic Instrumentation はこの往復をまるっと不要にしてくれるから、再現が難しい問題も調べやすくなるんだよ。

## これで何が変わるの？

再起動もコード変更もいらないのがうれしいポイント！実行が指定した場所に到達した瞬間に、エージェントがその時のランタイム状態（ランタイムコンテキスト）をスナップショットとして記録して、CloudWatch Logs に届けてくれるの。しかもアクティブなトレースと紐づけてくれるから、「どのリクエストで何が起きてたか」を追いやすいんだよ。

## 深く潜ってみよう

使い始めるには、まずアプリを **AWS Distro for OpenTelemetry（ADOT）SDK** で計装しておくの。そのうえで、監視したいコードの場所を CloudWatch Application Signals の MCP サーバー、または AWS CLI・SDK から手動で設定するんだよ。どれくらいデータを集めるか（どの引数やローカル変数を拾うか）も調整できるのが細かくて助かるね。

対応言語は Java・Python・JavaScript/TypeScript の 3 つ。提供リージョンは全ての商用 AWS リージョンだよ。ただし ADOT SDK ではデフォルト無効になっていて、フラグで有効化する必要があるから、詳しくは [Debug applications with Dynamic Instrumentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-DynamicInstrumentation.html) を見てね。

データはログとしてキャプチャされるので、料金は標準の CloudWatch Logs の取り込み・保存レートがかかるの。詳細は [CloudWatch pricing](https://aws.amazon.com/cloudwatch/pricing/) を確認してね。

## まとめ

- 再起動・再デプロイなしで、本番アプリの変数・引数・戻り値・スタックトレースをのぞける新機能だよ
- ADOT SDK で計装して、MCP サーバーか AWS CLI/SDK で監視する場所を指定する仕組み
- 対応は Java・Python・JavaScript/TypeScript、全商用リージョンで利用可能（デフォルト無効・フラグで有効化）
- 料金は標準の CloudWatch Logs レート

再現しづらい本番バグに頭を抱えてきた運用・SRE の人にこそ刺さるアップデートだと思うな！
