AIインフラ実践ノート:Amazon Q Developer

はじめに

LLMの活用は急速に広がり、その可能性を疑う人はほとんどいません。
しかし一方で、AIの活用をインフラでどう支えるかという視点が、今後ますます重要になっていくと感じています。

その答えを探る中で、 AWS MCP ServerAWS Bedrock AgentCore に注目しました。

筆者のモットーは「まず動かしてみること」。
今回の「AIインフラ実践ノート」では、Amazon Q Developer for CLI を試してみました

[参考]
https://docs.aws.amazon.com/ja_jp/amazonq/latest/qdeveloper-ug/what-is.html

AWS Q Developerとは

Amazon Q Developer は、AWS 開発に特化した AI ペアプログラマー です。
コードの生成だけでなく、テスト、セキュリティ、運用まで幅広くカバーします。

GitHub Copilot のような補完ツールを超えて、AWSネイティブな開発効率化を実現できる点が大きな強みです。

言うなれば、AWS版の Claude Code や Codex のような存在であり、
AWS 基盤と透過的に自然言語でやり取りできるという利点があります。

主な機能

  • コード生成・補完:IDEやCLIでリアルタイムにコード提案、テストコードやドキュメントも自動生成。
  • エージェント機能
    • /dev:機能開発
    • /test:ユニットテスト生成
    • /doc:ドキュメント作成
    • /review:コードレビュー
    • /transform:コード変換(例:Java 8→17)
  • AWSリソース最適化:コスト分析、セキュリティチェック、CloudFormation/CDKテンプレート生成。
  • ChatOps対応:SlackやTeamsでAWS操作やトラブルシューティングを実行。

前提

  • Linuxまたは同等のOS
    • 筆者の環境はUbuntu22.04
  • AWS CLI v2がインストールされていること
  • ~/.aws/credentials
    • Q Developer自体はAWSリソースへの権限は持っていませんが、AWS基盤に対する操作権限(認可)は、AWSアカウントに付与されているロールに依存しています。

Amazon Builder IDの取得

Amazon Q Developerを動かすための認証方法としてAmazon Builder IDという方式を取っています。これは、AWSアカウントを持っていても別途取得する必要があります。

概要

  • AWSアカウントとは別物:課金やリソース管理を行うAWSアカウントとは異なり、個人の学習や開発活動に特化したIDです。
  • 無料で作成可能:クレジットカード登録不要で、誰でも簡単に作成できます。
  • 利用目的
    • AWS Skill Builder(600以上の無料学習コース)
    • Amazon Q Developer(生成AI開発支援ツール)
    • AWS Builder Center(コミュニティ交流・技術支援)
    • AWS re:Post(技術Q&Aコミュニティ)
    • 個人プロフィールの作成と公開(builder.aws.com エイリアス)

プロフィール登録

Builder ID取得のためのプロファイルを登録してください。

[参照]

https://docs.aws.amazon.com/signin/latest/userguide/sign-in-builder-id.html

以下をクリックして開始画面に移動してください。
https://profile.aws.amazon.com/

1.eメールアドレスを入力してください。

2.表示名称を入力してください。

3.パスワードを設定してください。

4.以下のような画面が表示されたら、設定は完了です。

これで画面を閉じても大丈夫です。

Amazon Q Developerをインストール

1.Ubuntu にコマンドライン用の Amazon Q をダウンロード

wget https://desktop-release.q.us-east-1.amazonaws.com/latest/amazon-q.deb

2.パッケージをインストール

sudo apt update
sudo dpkg -i amazon-q.deb
sudo apt-get install -f

Amazon Q Developerへログイン

1.コマンドライン用の Amazon Q を起動

q login
? Select login method ›
❯ Use for Free with Builder ID
  Use with Pro license

2.Builder IDでログイン

 q login
✔ Select login method · Use for Free with Builder ID

Confirm the following code in the browser
Code: XXXX-XXXX 

Open this URL: https://view.awsapps.com/start/#/device?user_code=QWXM-LJFT
→Ctrl+クリック
▰▰▰▰▱▱▱ Logging in...

この状態で、以下の「認証がリクエストされました」という画面が自動的に表示されます。

3.以下の画面で表示されているコードが上記の「2.Builder IDでログイン」のコードと一致しているか確認し、次に進んでください。前項で表示されたコードを入力するなどの操作の必要はありません。

4.「アクセスを許可」をクリックしてください。

5.以下のように表示されたら、コマンドライン画面に戻ってください。

6.次のように表示されていたらログインが正常に終了しています。

Device authorized
Logged in successfully

ここまで一通り実行できていると、Q CLIの操作で別途のログイン手続きは不要です。

Amazon Q Developerチャットを起動

では、Amazon Qでチャットを起動してみましょう。コマンドラインで「q chat」と入力すると、次のような画面が表示されます。

q chat

Claude Connect 4とチャットできるようですね。

  • Amazon Q Developerの利用料金について
    • 簡単な動作検証程度であれば、無料版でも利用可能です。
    • ただし、本格的な利用には「Pro版」が用意されているようです。
    • 詳細については、公式のAmazon Q Developer の料金ページをご確認ください。

お試しのコードを作成

簡単なPythonコードを作成してみましょう。コンソールから、要求を入力してみてください。

> Hello World!とプリントするPythonコードを作成してください。


🛠️  Using tool: fs_write
 ⋮
 ● Path: /home/ubuntu/projects/amazon-q-developer/hello.py

+    1: print("Hellol Word!")

 ⋮
 ↳ Purpose: Create Python script to print "Hellol Word!"

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> t

Creating: /home/ubuntu/projects/amazon-q-developer/hello.py
 ⋮
 ● Completed in 0.1s


> 「Hellol Word!」をプリントするPythonコードを作成しました。ファイルは hello.py として保存されています。

実行するには以下のコマンドを使用してください:

bash
python hello.py

別のコンソールからコードを確認し、実行してみてください。

ls
hello.py

python hello.py
Hello World!

まあ、簡単ではありますが、一応、雰囲気は伝わってきますね。Claude CodeやCodexなどと同様なツールであることが分かります。

Lambdaの一覧を取得

Q CLIの特徴は、AWSリソースと密接に統合されている点です。
AWS CLI の細かいコマンドやオプションをいちいち覚えていなくても、開発や運用に必要な便利な操作が自然言語で実行できる――それが大きな魅力です。

ここでは、一つの例として Lambda の一覧を取得してみましょう。

> 東京リージョンのLambda一覧を表示してください。

> 東京リージョン(ap-northeast-1)のLambda関数一覧を取得します。


🛠️  Using tool: use_aws (trusted)
 ⋮
 ● Running aws cli command:

Service name: lambda
Operation name: list-functions
Parameters:
Region: ap-northeast-1
Label: 東京リージョンのLambda関数一覧を取得 ⋮
 ● Completed in 5.850s


> 東京リージョン(ap-northeast-1)のLambda関数一覧:

| 関数名 | ランタイム | メモリ | タイムアウト | 最終更新日 |
|--------|-----------|--------|-------------|-----------|
| dp-dojo-lambda-template | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-lambda-wkfw-2 | nodejs20.x | 128MB | 3s | 2024-08-04 |
| dp-dojo-saga-1 | nodejs20.x | 128MB | 3s | 2024-08-20 |
| m-mitsumata-dojo | nodejs20.x | 512MB | 30s | 2024-09-04 |
| dp-dojo-saga-2 | nodejs20.x | 512MB | 30s | 2024-08-20 |
| dp-dojo-lambda-mysql | nodejs20.x | 512MB | 30s | 2024-08-25 |
| m-mitsumata-lambda-mysql | nodejs20.x | 512MB | 30s | 2024-09-10 |
| dp-dojo-lambda-sqs-1 | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-saga-4 | nodejs20.x | 512MB | 30s | 2024-08-20 |
| s-mori-function | nodejs20.x | 128MB | 3s | 2024-09-04 |
| dp-dojo-lambda-mongodb | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-lamba-api-launch | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-lamba-wkfw-launch | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-saga | nodejs20.x | 512MB | 30s | 2024-08-20 |
| r-tomiyama-lambda-api-mysql | nodejs20.x | 128MB | 3s | 2024-09-05 |
| dp-dojo-lambda-tempEnforcementDate | nodejs20.x | 512MB | 30s | 2024-08-20 |
| r-tomiyama-lambda-api-launch | nodejs20.x | 512MB | 30s | 2024-09-10 |
| r-tomiyama-lambda-api-job-2 | nodejs20.x | 512MB | 30s | 2024-09-05 |
| ko-takahashi-test | nodejs20.x | 512MB | 30s | 2024-09-04 |
| r-tomiyama-lambda-api-mongodb | nodejs20.x | 128MB | 3s | 2024-09-05 |
| dp-dojo-lambda-sqs-2 | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-lamba-api-job-2 | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-lambda-wkfw-1 | nodejs20.x | 128MB | 3s | 2024-08-04 |
| a-ikeda-test | nodejs20.x | 512MB | 30s | 2024-09-04 |
| r-tomiyama-lambda-api-job-1 | nodejs20.x | 512MB | 30s | 2024-09-05 |
| dp-dojo-lambda-api-mongodb | nodejs20.x | 512MB | 30s | 2024-08-27 |
| dp-dojo-lambda-schema-check | nodejs20.x | 512MB | 30s | 2024-08-28 |
| dp-dojo-lambda-kafka-1 | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-lambda-kafka-2 | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-lamba-api-job-1 | nodejs20.x | 512MB | 30s | 2024-08-10 |
| dp-dojo-saga-3 | nodejs20.x | 512MB | 30s | 2024-08-20 |
| dp-dojo-lambda-project | nodejs20.x | 128MB | 3s | 2024-08-20 |
| dp-dojo-lambda-api-template | nodejs20.x | 512MB | 30s | 2024-08-12 |
| dp-dojo-lambda-api-mysql | nodejs20.x | 512MB | 30s | 2024-08-25 |
| dp-dojo-lambda-custom-metric | nodejs20.x | 512MB | 30s | 2024-08-11 |

合計35個のLambda関数が見つかりました。全ての関数がNode.js 20.xランタイムを使用し、VPC内で実行されています。

Amazon Q Developerのロールは

Amazon Q Developer 自体は、AWS リソースに関する権限(IAM ロール)を直接持っているわけではありません。そのため、AWS リソースを操作するには、適切な IAM ロールの設定が必要です。

そこで、SSO でログインしている場合は注意してください。
~/.aws/credentials に設定されたプロファイルを通じて、そのアカウントに付与されているロールに依存した操作が可能になります。

筆者の環境ではアドミン権限を持っており、実際に S3 バケットの作成ができました。

まとめ

インフラを自然言語で操作できるというのは、とても興味深い体験でした。
すべてのコマンドやオプションパラメーターを覚えておくのは現実的ではありませんし、
その都度調べるのも、開発や運用の効率を考えると無駄が多くなりがちです。

今後、インフラ領域において LLM がもたらす変化は、非常に楽しみです。

Author

モダンアーキテクチャー基盤のソリューションアーキテクトとして活動しています。

[著書]
・Amazon Cloudテクニカルガイド―EC2/S3からVPCまで徹底解析
・Amazon Elastic MapReduceテクニカルガイド ―クラウド型Hadoopで実現する大規模分散処理
・Cypherクエリー言語の事例で学ぶグラフデータベースNeo4j
・Neo4jを使うグラフ型データベース入門(共著)
・RDB技術者のためのNoSQLガイド(共著)

leeの記事一覧

新規CTA