こんにちは。株式会社日本オープンシステムズの坂高です。
この記事は「2025 Japan AWS Jr. Chanpions 夏のQiitaリレー 」の34日目の記事です。
過去の投稿(リンク集)はこちらからご覧ください!
はじめに
2025年7月9日、AWS マネジメントコンソールのAmazon Q Developerチャット機能において、AWS のサービスに保存されているデータを直接クエリして分析できるようになりました。
また、2025年7月31日に多言語サポートを拡大し、 AWS マネジメントコンソールのAmazon Q Developerで日本語対応が可能となりました。
これにより、SlackやTeamsから自然言語での会話によるクエリが容易になりました。
本記事では、実際にSlackから自然言語でAmazon DynamoDB テーブル内のレコード取得を試してみようと思います。
Amazon Q Developer in chat applications (旧称: AWS Chatbot)とは
AWS Chatbot は、Microsoft Teams および Slack チャンネルで AWS のリソースをより簡単にモニタリングおよび操作できるようにしてくれるインタラクティブエージェントです。AWS Chatbot を使用することで、アラートを受信することや、診断情報の取得、AWS Lambda 関数の呼び出し、AWS サポートケースの作成を行うコマンドを実行することができ、チームでの共同作業やイベント対応がさらに迅速になります。
とのことです。
CodeBiuildのビルド状態やEC2インスタンスの起動/停止をSlackで通知するなど、ChatOpsを実現するためのサービスです。
ChatOpsとは、主にチャットツール(Slack、Microsoft Teams、Mattermostなど)を用いて、ITオペレーションや開発プロセスを管理・自動化する技術や手法のことです。
なお、 AWS Chatbot は2025 年 2 月 26 日にAmazon Q Developerへ名称変更されました。
マネジメントコンソール上では、「Amazon Q Developer in chat applications (旧称: AWS Chatbot)」と表示されるようになっています。
通常のAmazon Qと混合しやすく分かりづらくなってしまうため、本記事では AWS Chatbotと記載させていただきます。
やってみる
1. AWS Chatbotの設定
まずは、AWS Chatbotのコンソールに移動します。
AWS ChatbotとSlackの連携を可能とするために、チャットクライアントでSlackを選択し、クライアントを設定していきます。
チャットを許可するSlackワークスペースを選択し、許可します。
※ここの操作はSlackに対して管理者権限のある方しか操作できないようです。
許可したワークスペースを選択し、「新しいチャネルを設定」をクリックします。
設定名やロール名は、任意の名前を登録してください。
ポリシーテンプレートは、デフォルトで以下が設定されていると思うので、そのままで問題ないです。
(今回はDynamoDBのデータを取得したいので、のちほど「AmazonDynamoDBReadOnlyAccess」を設定します)
- 通知のアクセス許可
- Amazon Q Developerのアクセス許可
ガードレールポリシーは、デフォルトで設定されているReadOnlyAccessに加えて、以下2つを追加していきます。
- AmazonQDeveloperAccess
- AmazonDynamoDBReadOnlyAccess
通知 - オプションは、AWS側トリガーから通知したい場合に設定するため、今回は設定不要です。
2. Slackの設定
通知を受け取りたいチャンネルで、「@Amazon Q
」と入力し、Amazon Qアプリを追加します。
一旦確認してみる
「DynamoDBとはなんですか。」とプロンプトを入力してみます。
日本語でAmazon Qとやり取りできることを確認できました。
3. IAMロールに許可ポリシーを追加
チャットでDynamoDBをクエリするために、AWS Chatbotを作成した際に一緒に作成されたIAMロールに対し、以下のポリシーを追加します。
4. DynamoDBテーブルの準備
DynamoDBテーブルには、下記の属性を持つレコードを5件登録しました。
- id(パーティションキー)
- create_date
- name
DynamoDBテーブルの作成手順は、今回の趣旨から外れるため割愛させていただきます。
5. Slackでのレコード取得
「東京リージョンにあるDynamoDBテーブル「sakataka-test-ddb」で、create_dateが2025/08/04 16:00:00のデータを取得してください。」とプロンプトを入力した結果、ほしいレコードが正しく取得できました。
また、注意事項により効率的なクエリ方法についても記載してくれていました。この辺り非常に親切で、血が通った温かい心を持っているようです。
おわりに
今回はSlackから自然言語でAWS内のサービスのデータをクエリする方法を紹介しました。
これにより、従来より容易に、かつ素早くAWS内のサービスのデータをクエリできるよになりました。
また、Slackチャンネルに参加していれば、IAMユーザーを持たなくてもクエリすることができるようになりました。
一方で、IAMユーザーを持たなくてもクエリできるというのはリスクにもなりうるので、AWS Chatbot側でのIAM制御には注意が必要です。
最後までご覧いただきありがとうございました!