Amazon Q Developer で運用上の問題を調査する

:::note info
2025/05 現在プレビュー
:::


# 概要

運用診断を通じてガイドし、ワークロードの問題の根本原因分析を自動化してくれる。

オブザーバビリティデータを分析し、ワークロードの問題の根本原因分析を行なってくれるようだ。

https://aws.amazon.com/jp/about-aws/whats-new/2025/04/amazon-q-developer-operational-investigations-preview/


# 調査がサポートされている AWS サービス

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Investigations-Services.html


# Amazon Q Developer が調査で表示できるインサイト

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Investigations-SuggestionTypes.html


# 調査の設定

https://aws.amazon.com/jp/blogs/news/getting-started-with-amazon-q-developer-operational-investigations/

「セットアップを開始」をクリック。
![スクリーンショット 2025-05-09 1.45.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/98245d3a-9cd0-4327-9c38-b5fbecdbd75f.png)

ここでは調査の保持期間と必要に応じて調査データを AWS カスタマーキーで暗号化するかを選択します。
![スクリーンショット 2025-05-10 17.48.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/cda228cd-3a46-4cb7-97a6-2402d8ebf229.png)

Amazon Q Developer が調査のためにテレメトリーデータへアクセスするために使用する IAM ロールを設定します。
![スクリーンショット 2025-05-10 17.48.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/c7eb39d5-c16e-4a1b-b83c-325c7e9b86c7.png)

アプリケーションで使用する既存のカスタムタグキーを指定できます。これらのタグは、Amazon Q Developer がリソースの関係を検出する際に検索を絞り込むのに役立ちます。
![スクリーンショット 2025-05-10 20.46.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/3807d829-6d8c-46ad-aec8-cef9a1b892ef.png)

Amazon Q Developer が CloudTrail データにアクセスし、システム内の問題と根本原因の仮説を作成するのに役立ちます。
![スクリーンショット 2025-05-10 17.56.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/136aff8f-cbb4-487b-b4d5-a90966773d51.png)

選択したチャットクライアントに通知を配信することができます。Amazon Q Developer in chat applications の SLACK に飛ばすように設定してみました。
![スクリーンショット 2025-05-10 18.08.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/ec374c7f-a91e-46ed-9cef-e75e25f58d29.png)


# サンプルの準備

サンプルとして意図的にエラーを発生させるために以下のような Lambda を作成しておき、Lambda の「Errors」メトリクスから、アラームを作成しておきます。

```python
import time

def lambda_handler(event, context):
    # Lambda関数のタイムアウト時間が3秒なら、5秒スリープするとタイムアウトが発生
    time.sleep(5)
    return {
        'statusCode': 200,
        'body': 'This line will never be reached due to timeout.'
    }
```


# 調査する

https://aws.amazon.com/jp/blogs/news/investigate-and-remediate-operational-issues-with-amazon-q-developer/

※ 以下、Amazon Q Developer からの回答は日本語になっていますが、Google 翻訳しているので実際に回答は英語です。

## 手動で実行

CloudWatch アラームの画面で、「調査」から「新しい調査を追加」もしくは「既存の調査に追加」から可能です。
![スクリーンショット 2025-05-10 20.05.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/0b442df7-8799-4c82-8e0e-b6d230dfdafa.png)

「仮説」と「観測結果」が提案されました。ここは、実際には Lambda コードの中身を見ている訳ではないはずですので原因と言うよりも影響範囲としての「仮説」がたてられているようです。
![スクリーンショット 2025-05-10 19.48.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/67413e79-c034-4845-ab8e-eeabc74206d7.png)

次に「アクションを表示」をクリックしてみます。「Lambda 関数のコードと構成を分析して〜」と提案してきているので、次に何を確認したらよいか曖昧ではありますがある程度のトラブルシューティングは提案してくれているように見受けられました。
![スクリーンショット 2025-05-10 19.57.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/14c2463e-b9fe-4360-8863-595432fc8dbf.png)

## 自動で実行

 CloudWatch アラームのアクションで、「調査アクション」を選択することで自動実行してくれるようです。
![スクリーンショット 2025-05-10 19.04.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/b370616d-ff3d-4877-b077-686e07befde1.png)

「仮説」と「観測結果」が提案されました。うーん、SQS や SNS など関係ないものまで拾ってきて提案してきているのでこれは微妙ですね。
![スクリーンショット 2025-05-10 20.10.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/48f6f44e-3fa3-413a-9377-c010ccb3f62b.png)

「AI_Operations_Lambda 関数の設定ミスや非互換性〜」などと提案してきていますが、関係のない SQS や SNS のトラブルシューティングなども提案してきたのでこれではトラブルシューティングの範囲が広くちょっと大変で工夫を必要かもしれません。
![スクリーンショット 2025-05-10 20.43.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/14427e31-2197-45da-a49b-075ef49242f0.png)


# 通知

先程「調査の設定」で SLACK へ通知する設定をしました。「仮説」と「観測結果」にある内容と同じものが以下の通り通知されるようです。
![スクリーンショット 2025-05-10 20.54.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/03dc697f-b154-4c28-b974-cfb7f3d2f3f5.png)


# ベストプラクティス

当たり前の話ですが、より多くの情報をあった方がより良い提案を行えるので、以下のような AWS サービスと機能を有効にすることがベストプラクティスとして推奨されています。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Investigations-RecommendedServices.html