広告枠を募集中 ご相談ください

CLIでAmazon Q Developerを活用する方法:コマンド自動補完・エラー解説・Bashスクリプト生成

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

DevOpsエンジニアや開発者にとって、ターミナルはインフラ構築、デプロイパイプラインの管理、障害調査を迅速に進める中核環境です。しかし、aws、kubectl、docker、terraformなどのツールで無数のオプションを暗記したり、障害発生時に難解なシェルエラーの調査に追われたりすることは、大きな認知負荷となります。Amazon Q Developerコマンドラインインターフェイス(CLI)は、macOS、Linux、WSL(Windows Subsystem for Linux)のターミナルへ生成AIとコンテキスト対応の自動補完を統合することで、この課題を解決します。

FigおよびAmazon CodeWhisperer CLIの技術基盤を受け継いだAmazon Q Developer CLIは、インタラクティブなシェルアシスタントとして動作します。500種類以上の主要CLIツールに対する視覚的なリアルタイム補完ポップアップの表示、自然言語からのBashコマンド即時生成、ターミナル内チャットによるエラーや権限不足の根本原因診断、そして堅牢なBash自動化スクリプトの作成を強力に支援します。


1. 事前準備とインストール

Amazon Q Developer CLIはmacOSおよびLinuxにネイティブ対応しており、Windows環境でもWSL経由で利用可能です。シェルの環境としてはzsh、bash、fishを幅広くサポートしています。

インストール手順

macOS環境では、Homebrewを使用してインストールします。

brew install amazon-q

LinuxまたはWSL環境では、公式インストーラーを実行します。

curl --proto '=https' --tlsv1.2 -sSf https://desktop-release.q.us-east-1.amazonaws.com/install.sh | bash

インストール完了後、新しいターミナルセッションを開くか、初期化コマンドを実行してシェル統合を有効化します。

q

認証モデルと利用プラン

Amazon Q Developerには、利用規模に応じた2種類の認証方式が用意されています。

  1. Free Tier(個人開発者向け): 無料のAWS Builder IDでサインインします。AWSアカウントやクレジットカードの登録は不要で、CLIのコマンド自動補完、自然言語翻訳、十分な月間チャット利用枠を無料で活用できます。
  2. Pro Tier(組織・チーム向け): AWS IAM Identity Centerを通じて統合管理します(1ユーザーあたり月額19ドル)。エンタープライズシングルサインオン(SSO)、組織ガバナンスと監査ポリシー、一元課金、プライベートリポジトリとの連携が可能です。

ターミナルでログインコマンドを実行します。

q login

ブラウザで認証を完了させた後、動作環境の正常性を確認するために診断コマンドを実行します。

q doctor

このコマンドは、シェルフックの設定、バックグラウンドデーモンプロセスの稼働状態、認証情報の有効性、AWSエンドポイントへのネットワーク接続を包括的に検証します。


2. 500以上のCLIに対応するインテリジェントなコマンド自動補完

従来のタブ補完は静的スクリプトや完全一致に依存することが一般的でしたが、Amazon Q Developerはキーストロークに合わせてインタラクティブなポップアップメニューを表示します。

自動補完の仕組み

git、docker、kubectl、aws、npm、helmなどの対応コマンドを入力すると、カーソルの直下にサブコマンド、オプションフラグ、詳細説明、動的引数の候補リストが現れます。

実例:複雑なAWS CLIフィルター引数の入力支援

特定状態のEC2インスタンスを抽出する際、従来はAPIリファレンスを確認する必要がありました。Amazon Q CLIを使用すると次のようにスムーズに入力できます。

# 次のように入力すると、状態の列挙値とフラグの説明が自動表示されます:
aws ec2 describe-instances --filters "Name=instance-state-name,Values=

メニュー上にrunning、stopped、pendingなどの有効な値が即座に提示されるため、構文ミスを防ぎ、Webブラウザへの画面切り替えを最小限に抑えられます。


3. シェルエラーの解説と障害の根本原因診断

デプロイパイプラインの失敗やインフラ構築エラーの際、ターミナルには難解な終了コードや不透明な権限拒否メッセージのみが出力されがちです。Amazon Q Developer CLIでは、q chatを通じてターミナル内で直接インタラクティブな原因究明が行えます。

ターミナル内チャットの起動

現在の作業ディレクトリで次のコマンドを実行します。

q chat

q chatセッション内では、現在のカレントディレクトリ、シェル履歴、ローカル環境のコンテキストが保持されます。

IAM権限不足とエラーログの診断例

コマンド実行が失敗した際、実行コマンドと標準エラー出力をそのままチャットに貼り付けます。

想定トラブル:AWS IAM S3書き込み拒否

An error occurred (AccessDenied) when calling the PutObject operation:
User: arn:aws:iam::123456789012:user/deployer is not authorized to perform:
s3:PutObject on resource: "arn:aws:s3:::prod-artifacts-vault/v2/app.tar.gz"
because no identity-based policy allows the s3:PutObject action.

q chatへの入力プロンプト:

「このPutObjectが拒否された理由を解説し、deployerユーザーがprod-artifacts-vaultバケットのみに書き込める最小権限のIAMポリシーJSONを作成してください。」

Amazon Q Developerは次の解決策を即座に提示します。

  1. 現在のアイデンティティにs3:PutObjectを許可するポリシーが不足している原因を特定。
  2. 最小権限の原則に沿ったIAMポリシー定義を生成。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowArtifactUpload",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::prod-artifacts-vault/*"
    }
  ]
}
  1. ポリシー適用後に権限を確認するためのAWS CLI検証手順を案内。

一般的なシステムエラーや終了コードの診断

クラウド固有のエラーだけでなく、Linux標準のエラーも診断できます。


4. q translateによる自然言語からコマンドへの即時変換

実行したい処理の内容は決まっているものの、正確なコマンド構文やオプションの組み合わせが思い出せない場合、q translateが自然言語を適切な実行コマンドに変換します。

実行方法とショートカット

明示的なコマンド呼び出しのほか、#プレフィックスによる短縮入力も可能です。

q translate "find all files in /var/log modified in the last 24 hours larger than 50MB"

またはショートカット形式:

# /var/logの中で過去24時間以内に更新された50MB以上のファイルを検索

Amazon Qが処理を解析し、実用的なBashコマンドを出力します。

find /var/log -type f -mtime -1 -size +50M

安全性を担保する実行確認オプション

Amazon Q Developer CLIは生成されたコマンドを独断で実行しません。必ず以下の選択肢が表示されます。

本番クラスタやクラウドリソースに対する誤操作を防止する上で、この確認ステップは極めて重要です。


5. 本番運用に耐えうる堅牢なBash自動化スクリプトの作成

条件分岐、エラーハンドリング、クリーンアップ処理を含む複雑なタスクには、複数行の堅牢なシェルスクリプトが必要です。エンジニアはq chatを活用して、保守性の高いBashスクリプトを対話形式で設計できます。

スクリプト設計の流れ

  1. 対象プロジェクトのリポジトリでq chatを開始します。
  2. 要件、例外処理のルール、環境条件をプロンプトとして入力します。

指示プロンプト例:

「prod-*で始まる名前のすべてのDockerコンテナを検出し、PostgreSQLデータベースをpg_dumpallでダンプしてgzip圧縮し、S3バケット『company-db-backups』にアップロードするBashスクリプトを作成してください。ローカルの3日以上前のバックアップは自動削除し、厳格なエラー制御とログ出力を実装してください。」

生成される自動化スクリプト構成

Amazon Qは、Linux運用のベストプラクティスを反映した防御的なBashコードを出力します。

#!/usr/bin/env bash
# backup_docker_postgres.sh - Docker PostgreSQL自動バックアップおよびS3転送スクリプト

set -euo pipefail
IFS=$'\n\t'

BACKUP_DIR="/var/backups/postgres"
S3_BUCKET="s3://company-db-backups"
TIMESTAMP="$(date +"%Y%m%d_%H%M%S")"
RETENTION_DAYS=3

log() {
  echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*"
}

cleanup() {
  log "ローカルにある${RETENTION_DAYS}日以上前の古いバックアップを削除します..."
  find "${BACKUP_DIR}" -type f -name "*.sql.gz" -mtime +"${RETENTION_DAYS}" -delete
}

trap cleanup EXIT

mkdir -p "${BACKUP_DIR}"

# 対象の本番コンテナ一覧を取得
CONTAINERS=$(docker ps --filter "name=prod-*" --format "{{.Names}}")

if [[ -z "${CONTAINERS}" ]]; then
  log "名前が'prod-*'に一致する稼働中コンテナが見つかりませんでした。終了します。"
  exit 0
fi

for CONTAINER in ${CONTAINERS}; do
  ARCHIVE_FILE="${BACKUP_DIR}/${CONTAINER}_${TIMESTAMP}.sql.gz"
  log "コンテナ ${CONTAINER} のバックアップを開始します..."

  # ストリーム圧縮によりディスクへの一時非圧縮ファイルの書き込みを回避
  docker exec -t "${CONTAINER}" pg_dumpall -U postgres | gzip > "${ARCHIVE_FILE}"

  log "${ARCHIVE_FILE} を ${S3_BUCKET}/${CONTAINER}/ にアップロード中..."
  aws s3 cp "${ARCHIVE_FILE}" "${S3_BUCKET}/${CONTAINER}/"

  log "コンテナ ${CONTAINER} のバックアップとアップロードが完了しました。"
done

log "すべてのデータベースバックアップ処理が正常に完了しました。"

防御的スクリプト設計のポイント


6. 実践的なDevOps運用シナリオ比較

運用シナリオ直面しやすい課題Amazon Q Developer CLIによる解決手法
KubernetesのPod障害調査kubectlの引数やJSONPathフィルタ構文の記述が煩雑実行:q translate "productionネームスペース内で再起動が5回以上のPod名とステータスを表形式で一覧表示"
クラウドの遊休リソース監査未アタッチのEBSボリュームが不要なコストを発生実行:q translate "us-east-1でアタッチされていないEBSボリュームを検索しVolumeIdを出力"
Gitリベースと競合解決Detached HEAD状態や複雑なコンフリクトからの復旧q chatにgit statusの出力を貼り付け、段階的な解消手順と安全なロールバック策を取得
CI/CDパイプラインのビルド失敗数千行のログから障害の直接原因を特定することが困難q chatに失敗ログの要約を貼り付け、依存関係の不整合や環境変数不足を即座に診断

7. 本番環境における安全基準と利用指針

ターミナル環境でAI支援ツールを運用する際は、以下の安全基準を遵守することが推奨されます。

  1. 実行前のコード確認: rm、dd、kubectl delete、aws s3 rmなどの破壊的な操作では、安易にExecuteを選択せず、必ずEditで対象パスやオプションを目視確認してください。
  2. シークレット情報の保護: アクセスキー、パスワード、認証トークンの生データをq chatに直接入力せず、${AWS_SECRET_KEY}などの環境変数参照に置き換えてプロンプトを作成してください。
  3. IAM最小権限の徹底: Amazon Q CLI自体が特権を自動昇格させることはありません。実行可能な操作は、ターミナルで有効化されているAWS認証情報の権限範囲(aws sts get-caller-identityで確認可能)に限定されます。
  4. ステージング検証: 生成されたスクリプトを定期実行ジョブやパイプラインへ組み込む前に、検証環境やローカルコンテナで事前動作テストを行ってください。

8. まとめと選定の指針

Amazon Q Developer CLIは、ターミナル作業中にドキュメント検索やWeb検索を往復する手間を最小限に抑えます。個人開発者や少人数チームであれば、AWS Builder IDによるFree Tierを活用することで、追加費用なしで高度なコマンド自動補完、エラー解析、スクリプト生成を利用できます。一方、全社的なシングルサインオン(SSO)、監査ログ、一元課金管理を求めるエンタープライズ組織には、月額19ドル/ユーザーのPro Tierが堅牢な運用基盤を提供します。

Amazon Q Developer CLIを開発ワークフローに導入することで、日常的なコマンド入力ミスを減らし、信頼性の高い自動化環境を構築できます。


参考資料