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

はじめに
LLMの活用は急速に広がり、その可能性を疑う人はほとんどいません。
しかし一方で、AIの活用をインフラでどう支えるかという視点が、今後ますます重要になっていくと感じています。
その答えを探る中で、 AWS MCP Server と AWS 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 がもたらす変化は、非常に楽しみです。
