Amazon Q に触れたことがない方へ

こんにちは

ついに今年初めてre:Inventに参加してきました。噂では聞いていましたが、最高に楽しかったですね。今回もAWSの色々なサービスや機能が発表されました。やはり生成AI系が多かったです。その中にはQに関するリリースもたくさんありました。

セオリーではイベントを通した振り返り記事を書くところですが、私は遅ればせながらAmazon Qに魅了されてしまって、その感動を分かち合いと思い筆をとりました。

# 質問です

みなさん、Amazon Q 使ってますか？

「いまさらAmazon Q？おそ！使ってるに決まってるじゃん！」という方はすぐ閉じてください。今回は私みたいな「Amazon Q？知ってるけどリリース当初評判悪かったからそれ以来触ったこともないですね」という方に向けた記事です。

# Amazon Qとは

Amazon Q は、AWSが開発した企業向けのAIアシスタントです。主な特徴は以下の通りです。

1. ビジネス用途に特化した対話型AI
1. AWSのサービスやシステムについての質問に答えることができる
1. データセキュリティを重視し、企業の機密情報を安全に扱える
1. 社内文書や業務関連の質問に対して、的確な回答を提供

簡単に言えば、企業の従業員がより効率的に仕事を進められるよう支援する「デジタルアシスタント」のような存在です。一般のチャットボットとは異なり、ビジネス環境での利用に特化して設計されています。

https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwiTnp7slZiKAxVk8hYFHUQ5C80YABAAGgJ0bA&co=1&ase=2&gclid=Cj0KCQiApNW6BhD5ARIsACmEbkXWLFwcClLemKMXzMQNx-WdNcwsMxe3XqF0-5yq_fA9pWtgWeUbud4aAovmEALw_wcB&ohost=www.google.com&cid=CAESVeD2ZdYPjQTB4S-4mLe2_KxR3B3uoBJPg3ARzunm2sVSzqTexy-oQnI7qOYrNnLWI6kKUd7KRZ3a_Fxnl21DpgqgOzjtCxaGclJ2x_py6D__TvdXq6E&sig=AOD64_1grYm0ur92e9CyeRbyN6y7-C4f8w&q&nis=4&adurl&ved=2ahUKEwjctJnslZiKAxXlnq8BHRDZDR0Q0Qx6BAgOEAE

## ChatGPTとの違い

Q に ChatGPT との違いを聞いてみました。

| 比較項目 | Amazon Q | ChatGPT |
|----------|-----------|----------|
| 用途 | 企業向け・ビジネス用途に特化 | 一般利用者向けの幅広い用途 |
| セキュリティ | 企業データのセキュリティを重視<br>**AWS環境との統合** | 一般的な情報セキュリティ対策 |
| 知識領域 | **AWS関連サービス**・企業システム・業務文書に特化 | 一般的な知識全般を広くカバー |
| アクセス方法 | AWS環境を通じて企業が契約して利用 | 個人でも利用可能な一般公開サービス |
| カスタマイズ性 | 企業独自のデータや文書での学習が可能 | 標準の学習データのみを使用 |
| 主なユーザー | 企業の従業員 | 一般ユーザー |
| 利用環境 | AWS環境 | ウェブブラウザ、APIなど |

なんと言ってもAWS環境との統合というのがめちゃくちゃ強いですね。AWSを利用する開発者なら使わない手はない。

## 利用プラン

3つの有料プランがあります。Q にそれぞれの特徴を聞いてみました。

| プラン名 | 月額料金　　 | 主な機能 |
|----------|----------|-----------|
| **Amazon Q Business Lite** | 3 USD<br>/ユーザー | ・基本的な質問応答機能<br>・エンタープライズデータソースからの情報取得<br>・エンタープライズログインによる安全なサインオン |
| **Amazon Q Business Pro** | 20 USD<br>/ユーザー | ・問題解決、コンテンツ生成、データ分析インサイト取得<br>・Generative BIツールAmazon QuickSightへのアクセス<br>・カスタムプラグインの利用 |
| **Amazon Q Developer Pro** | 19 USD<br>/ユーザー | ・コード提案、デバッグ、テスト追加<br>・ソフトウェア開発用のAmazon Q Developerエージェントによるタスク迅速化<br>・コード変換によるアプリのアップグレード<br>・セキュリティ脆弱性スキャン<br>・AWSアカウントリソースに関する回答取得 |

- _Business Lite_ は基本的な機能に特化した低価格プラン
- _Business Pro_ はビジネス向けの包括的な機能を提供
- _Developer Pro_ は開発者に特化した専門的な機能を提供

となります。各プランには無料トライアル期間が設けられており、詳細は公式ページで確認できます。  
## さわってみた

マネジメントコンソールを開くと右上に Q がいるのはご存知でしょうか。
これ実は _Amazon Q Developer_ の無料利用枠です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/93b47a96-3f4a-8f27-20c1-8eb8a351a9e2.png)

無料のため制限は多い（ex.日本語が使えない）ですが、これだけでも効果は抜群なので早速さわってみましょう。

最初に開いたとき、Q がアカウント上のリソースを読み取っていいか？と聞かれます。セキュリティポリシー的に問題なければ継続します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/a011c58f-6cb0-7d5d-9985-cf0dee76bd85.png)

早速EC2インスタンスの一覧を取得してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/e0e32068-9b2b-d0eb-74ae-bf67cf4f4ea7.png)

こんな感じで今回のテスト用に起動したインスタンスが表示されました。パブリックサブネット上に起動しているAL2023インスタンスです。

関連リソースとしてEBSの情報も教えてくれました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/3c97777c-588b-65f5-f910-88402b16218e.png)



:::note warn
注意
今回の記事作成後に本記事で利用したリソースは削除しています。そのため、Instance IDなどもマスクせずに記載していますが、情報の取り扱いにはくれぐれもお気をつけください。
:::

このインスタンスへは 自宅IP から22ポートでのアクセスが出来ます。ここでQを試します。セキュリティグループのインバウンドルールを削除して、インスタンスに接続できない状態にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/0d7fba42-3871-306d-b815-ee8d1151b983.png)

その上で、接続できない原因を聞いてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/c15d48f8-aae7-a95d-7061-3b2a553e9578.png)

日本語訳

>確かに、ポート 22 (SSH) を使用して自宅から EC2 インスタンス i-08f1305c347410db3 に接続できない理由を調査するお手伝いはできます。インスタンスとそのネットワーク構成に関する情報を収集して、潜在的な原因を特定しましょう。
>
>まず、インスタンスに関する情報を取得しましょう。

調べてくれるみたいです。そしてしばらくすると....

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/59175143-2303-2979-e612-5964cb945a93.png)
>収集した情報に基づいて、ポート 22 (SSH) を使用した EC2 インスタンス i-08f1305c347410db3 への接続問題の原因を特定できます。調査結果を分析してみましょう
>~~
>2. セキュリティ グループ (sg-081b6e3435c28c87f):
>　- セキュリティ グループには受信ルールが定義されていません。
>　- これが接続問題の主な原因です。
>~~
>主な問題は、インスタンス (aws-lecture-web-sg) に関連付けられたセキュリティ グループに、SSH (ポート 22) 用のものも含め、受信ルールがないことです。これにより、インスタンスへの受信接続が妨げられます。


おお！正しくセキュリティグループが問題であることを特定できました。この問題を解決するにはどうしたら良いかも書いてくれています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/8e8de7ce-51bc-bb49-3ff4-c6098a0df0d9.png)

インスタンス情報とセキュリティグループ、ACLを調査してくれたようですね。次はもう少しお題を難しくしてルートテーブルを設定しましょう。

セキュリティグループの設定は戻し、パブリックサブネットのルートテーブルの `0.0.0.0/0` -> `igw` のルートを削除します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/1b3f4c6a-b3c1-9aa9-20d9-c2dbf23b3adc.png)

さっきはルートテーブルまで調査してませんでしたが、果たして。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/c421af32-dca8-370e-ee7b-0568422189c8.png)

さっきと同様にインスタンス情報とセキュリティグループ、ACLを調査してくれたようです。すると結果は

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/99db19ca-9503-d12b-7e1f-1381fb3643ed.png)


>ポート 22 を使用して自宅からインスタンスに接続できない主な理由は、セキュリティ グループが特定の IP アドレス (※my own home ip) からの SSH アクセスのみを許可するように設定されているためです。この IP アドレスは、自宅の IP アドレスではない可能性があります。

セキュリティグループが問題だと回答してきました。
セキュリティグループは正しく設定されているので、この回答は間違いです。伝えてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/e52d814a-f770-b5e6-0337-d21585eb98e1.png)

すると今度はルートテーブルも調査してくれました。そして

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471646/37931a84-807e-c40c-1309-96ab404eab5f.png)


>４. ルート テーブル:
>　- サブネット (subnet-0aa4fc130f34534fa) は、ルート テーブル rtb-0eb12e48805beb680 に関連付けられています。
>　- ただし、このルート テーブルには、VPC CIDR (10.0.0.0/24) のローカル ルートしかありません。
>　- インスタンスとの間のインターネット アクセスを許可するために重要なインターネット ゲートウェイへのルートがありません。
>
>接続の問題の根本的な原因は、インスタンスのサブネットに関連付けられたルート テーブルにインターネット ゲートウェイ ルートがないことです。このルートがないと、インスタンスはパブリック IP アドレスを持っていても、インターネットからの着信トラフィックを受信できません。

今度は正しく回答を導いてくれました。

# さわってみた感想

今更ながら私はめちゃくちゃ便利だと思いました（何を今更そんなこと言ってるんだと言う方が多いかもしれないですが・・・）。AWSさわって間もない頃は今回のような設定ミスでもたくさん躓いていたので、その時に欲しかったです。

ルートテーブルやセキュリティグループの情報などの調査に必要な情報を Q 自身が収集してくれるのが本当にでかい。これは Chat GPT などには真似できない、Amazon Q ならではですね。

Amazon Q は他にもCFnテンプレートから構成を可視化したり、その逆に構成図からCFnテンプレートを作成したり、他にもかなりたくさんのことが出来るそうで今回のは序の口の序の口らしいので、次はもっと踏み込んだ使い方を紹介しようと思います。

それではまた