Amazon Web Services ブログ

Amazon Q Developer を活用し自然言語を使って簡単に AWS CLI コマンドを実行

本記事は 2025 年 1 月 14 日に公開された “Effortlessly execute AWS CLI commands using natural language with Amazon Q Developer” を翻訳したものです。

CLI のつらみ

コマンドラインツールは、インフラストラクチャや DevOps のワークフローを簡素化するためのものですが、実際には逆効果になることが多くあります。作業の効率化を図るはずが、膨大な数のコマンド、フラグ、構文により、CLI はまるでパズルのように感じられることがあります。生産性を向上させるためのツールのはずが、基本的なコマンドを見つけるためだけに、検索やフォーラム、ドキュメントをひたすら行き来する羽目になっています。

CLI の習得は、新しい言語を学ぶのと同様に、複雑で馴染みのない構文を理解する必要があります。現実世界ではコミュニケーションギャップを埋めるために翻訳者の助けを借りますが、これからは Amazon Q Developer があなたと CLI の翻訳者になってくれます!

この記事では、コマンドライン上での Amazon Q Developer のセットアップ方法を解説し、Amazon Q Developer が複雑なタスクをいかに簡単にしてくれるかをご紹介します。

はじめ方

スムーズに記事を読み進めるために、AWS CLI がインストールされ、設定が完了していることを確認してください。

CLI で Amazon Q Developer を使用するには、まず Amazon Q をインストールする必要があります。現在、Amazon Q の CLI 機能は macOS と Linux ユーザーのみが利用可能です。適切なプラットフォームを使用していることを確認してください。

Amazon Q Developer を使用するには、AWS Builder ID を持っているか、AWS IAM Identity Center インスタンスが設定された組織に所属している必要があります。

この記事では Amazon S3 と Amazon CloudFront を使用するため、AWS アカウントに必要な権限があることを確認してください:

s3:CreateBucket 
s3:PutObject 
s3:PutBucketPolicy 
cloudfront:CreateDistribution 
cloudfront:CreateOriginAccessControl 
cloudfront:GetDistributionConfig 
cloudfront:UpdateDistribution
Plain text

ここまでの手順を完了すれば、Amazon Q Developer がどのようにして CLI ワークフローを簡素化できるのかを確認する準備が整います。それでは、始めていきましょう。

CLI 体験の変革

新しいターミナルウィンドウを開き、q translate と入力し、続けて複雑なコマンドを実行するための自然言語プロンプトを入力します。Amazon Q Developer は入力を受け取り、Large Language Model (LLM) を通して処理し、対応する bash コマンドを生成します。

まずはシンプルで楽しい作業から始めてみましょう。ターミナルで10秒からカウントダウンしてみましょう:

q translate "Count down from 10 second by second"
Bash

(※Count down from 10 second by second : 訳者注: 10から1秒ずつカウントダウンして)

コマンドを実行すると、Amazon Q が実行可能なシェルコマンドといくつかのアクション項目を提案します:

  • Execute command: 提案されたコマンドをすぐに実行
  • Edit command: 提案されたコマンドを編集
  • Regenerate answer: 別のコマンドを提案
  • Ask another question: 新しいプロンプトを入力
  • Cancel: セッションを終了

ここではコマンドを実行して、その動作を確認してみましょう:

AWS の CLI からウェブサイトを構築する

基本的な操作を理解したところで、実践的な作業に取り組んでみましょう。このチュートリアルでは、コマンドラインだけを使用して、AWS 上で静的ウェブサイトをホスティングする方法を説明します。

Step 1: ウェブサイトをホストする S3 バケットを作成する

Amazon S3 は静的ウェブサイトのホスティングに最適です。まず、ウェブサイトのコンテンツファイルを保存する S3 バケットを作成する必要があります。Amazon Q Developer に「us-west-2 に ‘ai-generated-bucket’ という名前の S3 バケットを作成」するように指示するだけです:

q translate "Create an S3 bucket called 'ai-generated-bucket' on us-west-2"
Bash

(※Create an S3 bucket called ‘ai-generated-bucket’ on us-west-2 :訳者注: ‘ai-generated-bucket’というS3バケットを us-west-2 に作って)

注:同じ名前のバケットがすでに存在する場合は、別の名前に変更してください。

Amazon Q Developer が正しくコマンドを生成したことが確認できます:

aws s3 mb s3://ai-generated-bucket --region us-west-2
Bash

コマンドの内容が適切でない場合は、「Edit command」または「Regenerate answer」を試すことができます。ここでは、生成されたコマンドを実行し、Amazon S3 コンソールで S3 バケットが実際に作成されたことを確認します。

Step 2: “Hello World” と書かれた HTML ファイルを作る

次に、基本的な HTML ファイルをバケットにアップロードする必要があります。手動で記述する代わりに、Amazon Q Developer に案内してもらいましょう。プロンプトはこちら:

q translate "Create a simple index.html file with 'Hello World' message"
Bash

(※Create a simple index.html file with ‘Hello World’ message:訳者注: ‘Hello World’ と書かれたシンプルな index.html ファイルを作って)

Amazon Q Developer が提案した echo '<h1>Hello World</h1>' > index.html というコマンドは適切そうです。このコマンドを実行してみましょう。

Step 3: HTMLファイルを S3 にアップロードする

では、 index.html ファイルを S3 バケットにアップロードしましょう:

q translate "Upload index.html to the 'ai-generated-bucket' S3 bucket"
Bash

(※Upload index.html to the ‘ai-generated-bucket’ S3 bucket:訳者注: index.html ファイルを ‘ai-generated-bucket’ にアップロードして)

コマンドを実行したら、 Amazon S3 コンソールで index.html ファイルがバケットに正常にアップロードされたことを確認できます。

Step 4: CloudFront ディストリビューションを設定する

デフォルトでは、Amazon S3 はアカウントとバケットへのパブリックアクセスをブロックします。本番環境での使用では、パブリックアクセスのブロックを有効にしたまま、Amazon CloudFront を通じてサイトを安全に提供することをお勧めします。 Amazon CloudFront は、コンテンツを低レイテンシーと高速な転送速度で安全に配信するグローバルなコンテンツ配信ネットワーク(CDN)であり、静的ウェブサイトのホスティングに最適です。

Amazon Q Developer を使用して、 S3 バケット用の CloudFront ディストリビューションを作成しましょう:

q translate "Create a CloudFront distribution for my S3 bucket 'ai-generated-bucket'"
Bash

(※Create a CloudFront distribution for my S3 bucket ‘ai-generated-bucket’: 訳者注: ‘ai-generated-bucket’ のための CloudFront ディストリビューションを作って)

うーん、これは正しくないようですね。 Amazon Q Developer は、指定されていない設定ファイルで --distribution-config を提供しようとしています。これを修正するには、CloudFront ディストリビューションの設定を手動で提供するか、Amazon Q Developer の力を最大限活用するかを選ぶことができます。

より適切な結果を得るために、 --distribution-config フラグを使用しないようにプロンプトを改善してみましょう:

q translate "Create a CloudFront distribution for my S3 bucket 'ai-generated-bucket' without using the ‘—distribution-config' flag"
Bash

(※Create a CloudFront distribution for my S3 bucket ‘ai-generated-bucket’ without using the ‘–distribution-config’ flag: 訳者注: ‘ai-generated-bucket’ のための CloudFront ディストリビューションを ‘—distribution-config’ のフラグを使わずに作って)

ずっと良くなりました! ‘X’ を実際のオリジンドメイン名に置き換える必要があるようです。この場合、S3 バケットのオリジンは以下の形式を使用します:

bucket-name.s3.amazonaws.com

CLI で「Edit command」オプションを選択し、 ‘X’ を置き換えてください。この場合、置き換える値は ai-generated-bucket.s3.amazonaws.com となります。コマンドを実行すると、成功時にコンソールに CloudFront の設定が表示されるはずです:

出力から “Id” をコピーしてください。次のステップで必要になります。

Step 5: パブリックアクセスの準備をする

作成した CloudFront ディストリビューションのデフォルトルートオブジェクトとして index.html を設定します。これにより、ユーザーがウェブサイトのルート URL にアクセスする際、URL で明示的に指定しなくても CloudFront が自動的に index.html ファイルを提供するようになります。

q translate "Update my CloudFront distribution CLOUDFRONT_ID to have 'index.html' as default root object without using the --distribution-config flag"
Bash

(※Update my CloudFront distribution CLOUDFRONT_ID to have ‘index.html’ as default root object without using the —distribution-config flag: 訳者注: ‘—distribution-config’ フラグを使用せずに、 CloudFront ディストリビューション CLOUDFRONT_ID のデフォルトルートオブジェクトを ‘index.html’ に更新して)

前のステップで取得した Id で CLOUDFRONT_ID を置き換えることを忘れないでください。コマンドを実行すると、先ほどのステップと同様に、コンソールに CloudFront の設定が表示されるはずです。

次に、 HTML ファイルを安全に公開するために、以下の作業を行う必要があります:

  1. Origin Access Control (OAC) の設定
  2. その OAC を CloudFront ディストリビューションに設定
  3. S3 バケットポリシーの更新

まずは Amazon Q に OAC を生成してもらいましょう:

q translate "Create an OAC named 'ai-generated-oac' for my CloudFront distribution CLOUDFRONT_ID"
Bash

(※Create an OAC named ‘ai-generated-oac’ for my CloudFront distribution CLOUDFRONT_ID: 訳者注: CloudFront ディストリビューション CLOUDFRONT_ID 用に ‘ai-generated-oac’ という名前の OAC を作成して)

コマンドを実行すると、以下のようなエラーが表示されます:

An error occurred (MalformedXML) when calling the CreateOriginAccessControl operation: 1 validation error detected: Value 'origin-access-identity' at 'originAccessControlConfig.originAccessControlOriginType' failed to satisfy constraint: Member must satisfy enum value set: [s3, lambda, mediastore, mediapackagev2] 
Plain text

このエラーメッセージをインターネットに頼らずにデバッグするのは難しいかもしれません。幸いなことに、Amazon Q Developer には q chat という、ターミナル上のチャットボットのような強力な機能があります。これを使ってトラブルシューティングを試してみましょう:

q chat "@history An error occurred (MalformedXML) when calling the CreateOriginAccessControl operation: 1 validation error detected: Value 'origin-access-identity' at 'originAccessControlConfig.originAccessControlOriginType' failed to satisfy constraint: Member must satisfy enum value set: [s3, lambda, mediastore, mediapackagev2]. Help me resolve this error"
Bash

(※ Help me resolve this error : 訳者注: このエラーの解決方法を教えて)

プロンプトに @history を含めることで、シェルの履歴を Amazon Q に渡し、提供されたコンテキストに基づいて応答できるようになります。

ターミナル上で、ステップバイステップの手順と出典を含む詳細な AI 生成の応答が得られました! @history タグを使用することで、 Amazon Q Developer はエラーメッセージを実行した正しいシェルコマンドに関連付けることができます(私たちが明示的に伝えなくても、 ai-generated-oac という名前で OAC を作成しようとしていることを理解しています)。

修正された bash コマンドを実行してみましょう:

aws cloudfront create-origin-access-control \
    --origin-access-control-config \
    Name=ai-generated-oac,\
    OriginAccessControlOriginType=s3,\
    SigningBehavior=always,\
    SigningProtocol=sigv4
Bash

今回は成功しました:

Id フィールドをメモしておいてください。後で必要になります。

次に、生成された OAC を CloudFront ディストリビューションに設定する方法について、 q chat に尋ねてみましょう:

q chat "@history Update my CloudFront distribution CLOUDFRONT_ID with the OAC we just generated, be specific"
Bash

(※Update my CloudFront distribution CLOUDFRONT_ID with the OAC we just generated, be specific: 訳者注: 先ほど生成した OAC を使用して、CloudFront ディストリビューション CLOUDFRONT_ID を設定して、具体的に説明して)

@history を使用することで、 Amazon Q が自動的に CLOUDFRONT_ID を補完してくれることに注目してください!

指示に従って最後のステップを完了すれば、コンソールの出力に更新された CloudFront ディストリビューションが表示されるはずです:

“Status” が “InProgress” と表示されています。次のステップに進むには、CloudFront のデプロイメントが完了するまで待つ必要があります。最新のステータスを取得する方法を Amazon Q Developer に尋ねてみましょう:

q translate "Get the status of my CloudFront distribution with CLOUDFRONT_ID on us-west-2"
Bash

(※Get the status of my CloudFront distribution with CLOUDFRONT_ID on us-west-2: 訳者注: us-west-2 で CLOUDFRONT_ID を持つ CloudFront ディストリビューションのステータスを取得して)

$CLOUDFRONT_ID を実際のものに置き換えてコマンドを実行し、最新のステータスを確認しましょう。完了までに数分かかる可能性があるので、コーヒーを飲んだり、短い散歩に行ったりするのにちょうど良い時間です!

ステータスが Deployed になったら、 CloudFront ディストリビューションにパブリック読み取りアクセスを許可するように S3 バケットポリシーを更新できます:

プロンプトはかなりあいまいなものを使用していますが、@history のおかげで Amazon Q は役立つレスポンスを生成するのに十分なコンテキストを持つことができました。

指示に従うだけで、サイトにアクセスする準備が整います!

Step 6: サイトにアクセスする 🎉

CloudFront ディストリビューションのパブリック URL を取得しましょう。

q translate "Get the public url of my CloudFront distribution CLOUDFRONT_ID"
Bash

(※Get the public url of my CloudFront distribution CLOUDFRONT_ID: 訳者注: CloudFront ディストリビューション CLOUDFRONT_ID の Public URL を取得して)

URL を取得したら、ブラウザで開いてください。「Hello World」が表示されるはずです!

まとめ

この記事では、以下を実施しました:

  1. ウェブサイトファイルをホストするための S3 バケットの作成
  2. 「Hello World」メッセージを含む簡単な HTML ファイルの生成
  3. HTML ファイルの S3 バケットへのアップロード
  4. ウェブサイトを安全に提供するための CloudFront ディストリビューションの作成
  5. CloudFront ディストリビューション用の Origin Access Control (OAC) の設定
  6. CloudFront からのアクセスを許可するための S3 バケットポリシーの更新
  7. CloudFront URL を通じたウェブサイトへのアクセス

これらすべてのステップは、 CLI 上の Amazon Q Developer を使用してターミナルで実行されました。

複雑な CLI コマンドを自然言語に変換できる手軽さを体験し、AWS がこれまで以上にアクセスしやすくなったことがお分かりいただけたと思います。しかし、これは始まりに過ぎません。ニーズが拡大するにつれて、Amazon Q もスケールし、より迅速なデプロイメント、生産性の向上、 AWS エコシステム全体へのシームレスなアクセスを提供します。

Amazon Q Developer が各ステップを簡素化してくれるので、まだ試していない AWS サービスもぜひ探索してみてください。ワークフローを効率化し、革新と成長のための新しい機会を開くことができます。

翻訳はApp Dev Consultantの宇賀神が担当しました。原文はこちらです。

著者について

Xipu Li

Xipu は AWS のソフトウェアエンジニアで、Amazon Q などの次世代開発ツールの開発に取り組んでいます。スタートアップ、スキー、ミームの作成に興味のある食通です。