こんにちは。AWS サポート課の森本です。
Kiro CLI (旧 Amazon Q Developer CLI) が登場して久しいですが、実際のトラブルシューティングの現場で Kiro CLI をどのように使用しているか、また私が個人的に考える Tips などをご紹介したいと思います。
本記事はサーバーワークス Advent Calendar 2025(シリーズ 1)の11日目の記事です。
- はじめに
- テクニカルサポートにおける課題
- Step1: Kiro CLI による AWS CLI コマンドの自動実行を制御する
- Step2: Kiro CLI コマンドで実行した結果をテキストに出力しておく
- Step3: Kiro CLI の提案の裏取りを行う
- Step4: Kiro CLI に自分が作成した回答文を推敲させる
- まとめ
- おまけ
はじめに
Kiro CLI (旧 Amazon Q Developer CLI) を使用したトラブルシューティング例については、以下の AWS 公式ブログに公開されています。
このブログの例では、ユーザーが発生している事象について自然言語で問い合わせを行い、その結果に基づいて Kiro CLI が自律的にリソース状態の確認、ログ分析、原因の特定と修正等を行えることがお分かりになるかと思います。
テクニカルサポートにおける課題
このようなトラブルシューティングが可能となる前提として、Kiro CLI がソースコードや AWS リソースの閲覧権限だけでなく変更権限を持っていることが挙げられます。
一方で当社のテクニカルサポート部門での調査を行う際、調査に使用する IAM ロールは AWS リソースに対する読み取り権限のみを持っているため、例のようなステップを踏んだトラブルシューティングを行うことができません。
そのような制約のある状況下で、テクニカルサポートのトラブルシューティングの際に Kiro CLI をどのように活用しているかをご紹介します。 今回の例では、RDS DB インスタンスに接続できないという例で説明を行います。
Step1: Kiro CLI による AWS CLI コマンドの自動実行を制御する
Kiro CLI が行うトラブルシューティングでも、人間が行うトラブルシューティングでも、トラブルシューティングの初手はリソース状態や設定状況の確認です。
基本的には describe や list 系のコマンドが主である認識ですが、例えば馴染みのないコマンドの場合はコマンド文を Kiro CLI に提案してもらい、そのコマンドの内容を精査してからユーザー自身が実行するのが良いと考えています。
当サポートによる調査で Kiro CLI が使用する IAM ロールには AWS リソースの破壊的な修正を行うコマンドの実行権限は与えられていないため、create や modify、delete 系のコマンドを実行した場合は拒否されますが、仮に何らかの実行権限がある環境では Kiro CLI が意図しない操作を行ってしまう可能性があります。
Kiro CLI がコマンドを実行する可能性のあるツールは安易に Trust せずこのように事前に何の操作を行うコマンドなのかを確認する習慣をつけておくと、Kiro CLI がユーザーの期待しない操作を行ってしまう可能性を低下させることができるでしょう。
[awssupport-agent] > セキュリティグループや ネットワークACL の設定は正しく設定している認識なのですが、RDS Oracle への接続ができません。
> RDS Oracleへの接続問題を調査します。セキュリティグループとNACLの設定が正しいとのことですが、他の要因も確認する必要があります。
まず、RDSインスタンスの基本情報を確認しましょう:
Running tool aws_api_call_aws with the param (from mcp server: awslabs.core-mcp-server)
⋮ {
⋮ "cli_command": "aws rds describe-db-instances"
⋮ }
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
[awssupport-agent] > コマンドはこちらで実行します。調査のための AWS CLI コマンドを教えてください。DBインスタンス名は<DBインスタンス名>です。
> DBインスタンス名がoraclesourceとのことですので、以下のコマンドを順番に実行してください:
## 1. 特定のRDSインスタンス情報確認
bash
aws rds describe-db-instances --db-instance-identifier <DBインスタンス名>
## 2. セキュリティグループ詳細確認(1の結果からセキュリティグループIDを取得後)
bash
aws ec2 describe-security-groups --group-ids <セキュリティグループID>
## 3. サブネット情報確認(1の結果からサブネットIDを取得後)
bash
aws ec2 describe-subnets --subnet-ids <サブネットID>
## 4. NACL確認(3の結果からサブネットIDを使用)
bash
aws ec2 describe-network-acls --filters "Name=association.subnet-id,Values=<サブネットID>"
## 5. RDSイベント確認(接続エラーの詳細)
bash
aws rds describe-events --source-identifier <DBインスタンス名> --source-type db-instance
まず1番目のコマンドを実行して、RDSインスタンスの状態、エンドポイント、ポート番号、VPC設定を確認してください。
Step2: Kiro CLI コマンドで実行した結果をテキストに出力しておく
Kiro CLI が自律的に AWS CLI を実行する場合、出力結果を Kiro CLI が内部的に調査、分析するため、その内容がブラックボックスになりがちです。Kiro CLI が最終的な課題解決まで行う場合はそれでも良いかもしれませんが、テクニカルサポートによる調査では結果だけでなく、何が原因で発生しているかも合わせて考える必要があります。
コマンド実行結果をテキスト出力しておき、必要に応じて Kiro CLI に読み込ませるような対応を行うと、Kiro CLI の操作体験を極力損ねることなく(Kiro CLI が何をしているのか迷子になることなく)調査が可能になります。 また、お客様に調査結果を回答する際も、調査証跡として見直すことが可能となるでしょう。
~ $ aws rds describe-db-instances --db-instance-identifier <DBインスタンス名> > describedbinstances.txt
[awssupport-agent] > describe-db-instances の結果を /describedbinstances.txt に格納しました。確認してください。 Reading file: /Users/morimoto/Downloads/describedbinstances.txt, all lines (using tool: read) ✓ Successfully read 5108 bytes from /Users/morimoto/Downloads/describedbinstances.txt - Completed in 0.0s > 問題が判明しました。**RDSインスタンスの状態がstopped(停止中)**です。これが接続できない主な原因です。 以下の追加調査コマンドを実行してください: ## 1. セキュリティグループの詳細確認 bash aws ec2 describe-security-groups --group-ids <セキュリティグループID> ## 2. サブネット情報確認 bash aws ec2 describe-subnets --subnet-ids <サブネットID> ## 3. RDSインスタンスを起動 bash aws rds start-db-instance --db-instance-identifier <DBインスタンス名> 現在の状況まとめ: - DBインスタンス:<DBインスタンス名>(Oracle SE2) - 状態:**停止中** ← これが接続できない原因 - エンドポイント:<DBインスタンス名>.xxxxx.ap-northeast-1.rds.amazonaws.com:1521 - VPC:<VPC名> - セキュリティグループ:<セキュリティグループID> まずRDSインスタンスを起動してから、セキュリティグループとサブネット設定を確認しましょう。
Step3: Kiro CLI の提案の裏取りを行う
Step 2 までの調査で被疑箇所が見つかったとします。その場合、その提案をそのままお客様に提案することはせず、必ず AWS 公式ドキュメント等でその提案の妥当性を検討します。場合によっては公式ドキュメントだけでなく検証環境での事象の再現を行い、その有効性や妥当性を論理的に担保した上でお客様への回答を行います。
提案の妥当性の確認という意味では従来からのトラブルシューティングのセオリーから大きく逸脱するものではありません。 一方で、我々のようなサポートエンジニアがお客様に回答を行う上で、AIの提案を検証し自分の回答が技術的に正しいと責任を持って回答するためには必ず必要なステップと考えています。
今回の例では、以下のドキュメント等で DB インスタンスのステータスの意味を確認したり、検証環境にて停止している DB インスタンスに本当に接続できないのかの検証を行います。
Viewing instance status - Amazon Relational Database Service
| DB instance status | Description |
|---|---|
| available | The DB instance is available for modifications. |
| stopped | The DB instance is stopped. |
Troubleshooting connections to your Oracle DB instance - Amazon Relational Database Service
Unable to connect to your DB instance.
For a newly created DB instance, the DB instance has a status of creating until it is ready to use. When the state changes to available, you can connect to the DB instance.
Step4: Kiro CLI に自分が作成した回答文を推敲させる
最終的に出来上がった回答文を、Kiro CLI に推敲させます。主にチェックする内容は以下の通りです。
- AWS 公式ドキュメントから逸脱する内容ではないか
- 誤字や脱字、不適切な表現、わかりづらい表現がないか
- 過度な推測を含む回答となっていないか(調査内容と結論が論理的に破綻していないか)
- 過度な期待を与える回答となっていないか(あくまでも提案のため、結果的に必ず課題が解決するような期待を与えないか)
必ずしも Kiro CLI の修正を全て取り入れる姿勢ではなく、自分の特に表現したい内容は残すなどより良い回答内容となるような参考にします。
まとめ
いかがでしたでしょうか。Kiro CLI の本領発揮とまではいきませんが、一定程度 AI を活用しつつ効率的なトラブルシューティングが行えているイメージを持っていただければありがたく思います。
また、今回の例では非常に単純な例を使用しましたが、例えばこれが複数 VPC にまたがるルーティングの問題であった場合、目視での確認には非常に時間と手間がかかります。そのような場合では Kiro CLI を用いた静的なルーティングの分析がより効果を発揮するでしょう(Reachability Analyzer を使用できない場合では特に)
おまけ
Kiro CLI をトラブルシューティングで活用するようになってからというもの、トラブルシューティングの初手、調査における予備知識の補完、複雑なログ分析等にかかる時間が減り、より本質的に解決すべき課題へフォーカスし調査できるようになった実感が湧いています。
一方で、このような変化の中でおそらく我々のようなテクニカルサポート部門で働く全ての人が感じているであろう懸念を Kiro CLI に聞いてみました。
[awssupport-agent] > 私はテクニカルサポートで働いていますが、あなたに仕事を奪われないか心配です > テクニカルサポートの仕事について心配されているのですね。私はAWSのKiro AIアシスタントとして、あなたの仕事を奪うためではなく、むしろサポートするために設計されています。 テクニカルサポートにおける私の役割は: 補完的な支援 - 基本的な技術質問への迅速な回答 - ドキュメント検索や情報整理の効率化 - 複雑な問題の初期分析やトラブルシューティング手順の提案 人間にしかできない価値 - 顧客との共感的なコミュニケーション - 複雑な状況判断や創造的な問題解決 - 顧客固有の文脈を理解した柔軟な対応 - エスカレーション判断や優先度設定 実際のテクニカルサポートでは、顧客の感情に寄り添い、複雑な技術的問題を人間的な視点で解決することが重要です。私はツールとして情報提供や分析を支援できますが、最終的な判断や顧客との関係構築は人間の専門性が不可欠です。 むしろ私を活用することで、ルーチンワークを効率化し、より高度で創造的な問題解決に集中できるようになると考えています
Kiro CLI に励ましてもらったので、Kiro CLI とのより良い付き合い方を模索しつつ、自分にできる価値を突き詰めていきたいなと思う次第です。
この記事がどなたかのお役に立てば幸いです。