【AWS】Amazon Q Developer の機能を整理する
Amazon Q Developer で行えることを整理する。雑メモ。
※ 現時点では日本語非対応
AWS 管理コンソール上で利用できる機能
Chatting about your resources
Chatting about your costs (Preview)
Diagnosing common errors in the console with Amazon Q Developer
- 対象サービス
- Amazon Elastic Compute Cloud (Amazon EC2)
- Amazon Elastic Container Service (Amazon ECS)
- Amazon Simple Storage Service (Amazon S3)
- AWS Lambda
Lambda で AWS サービスの API 呼び出す際に権限不足時に教えてくれるか?を試したかったのですが Diagnose ボタンは出てきませんでした。
Lambda 環境変数に日本語を入れてエラーを発生されるとでてきました。
Help me Resolve
を押下すると対処方法が出てきました。
Using Amazon Q Developer to chat with AWS Support
以下のようなサポートケースのドラフトを作ってもらえました。
ユーザ目線ではなく Amazon Q 目線になっているのがちょっと気になります。
The customer is receiving the error "amazon-q-test" function can not call ListFunctions API when trying to invoke their Lambda function. The agent provided suggestions to verify IAM permissions, check the execution role, examine the function code, test calling the API directly, and check for service quotas. When the customer requested more help, the agent recommended reaching out to AWS Support for further assistance troubleshooting the issue.
Chatting with Amazon Q Developer in AWS Chatbot
AWS Chatbot 経由で Teams もしくは Slack で Amazon Q に問い合わせできます。
IDE 上で利用できる機能
サポートされているプログラミング言語は以下を参照。
Chatting with Amazon Q Developer about code
SIEM on Amazon Opensearch Service のとある Lambda のコードを解説してもらいました。
こんな感じで返ってきます。(画像は一部見切れています)
Explain ではなく Refactor を選択するとリファクタリング案と実際のコードを提示してくれます。(すごい)
Fix ではコードのデバッグとエラー箇所の修正案を提示してくれます。
Optimize はコードのパフォーマンス向上とありましたが、リファクタリング要素も含まれていそうでした。
Adding workspace context to Amazon Q Developer chat in the IDE
@workspace を付けるとローカルインデックスをコンテキストに含めて回答してくれます
Generating inline suggestions with Amazon Q Developer
旧 Amazon CodeWhisperer に相当するコード補完機能です。
※ 上記ドキュメントより拝借
Lambda 等特定のサービス内の IDE でも利用することができます。
Upgrading language versions with the Amazon Q Developer Agent for code transformation
Java8,11 から 17 のコードに変換してくれます。
ドキュメント内にサンプルの Java アプリケーションがありますが、試せていません。
Developing software with the Amazon Q Developer Agent for software development
/dev を付けるとコード作成や変更をお願いすることができます。
ローカルインデックスを考慮した変更もしてくれます。
上記例だと Lambda を追加する際に CDK への提案も行ってくれています。
コード修正部分の一部ですが、以下のような感じになっています。
describe_instances のレスポンスに Reservations なんてあるの?と思いましたがありました。
一応上記コードを試してみます。
エラーなく処理されて、以下のように停止が開始されました!
Scanning your code with Amazon Q
vulnerable or low-quality code
のスキャンをしてくれます。
Amazon Q に作成してもらった Python コードにも指摘事項が生成されていました。
ページネーションしてないので EC2 インスタンスの数によっては全件取得できないというものですね。
Explain させると paginator 使ったコードがでてきます。
コマンドライン上で利用できる機能
Mac のみ利用可能
Chatting with Amazon Q in the CLI
以下のコマンドで Q とのチャットが開始できます。
q chat
以下のコンテキストを渡すことができます。
Amazon Q のクライアントアプリでは @hisotry @git を渡してマージコンフリクトを解消するには?という質問をしていました。
@history to pass your shell history
@git to pass information about your current git repository
@env to pass your shell environment
how to send local file to s3 ?
と聞いてみるとリファレンス付きで返答してくれました。
コマンドラインに限らず管理コンソールからと Transfer Family 使う方法も提示してくれました。
> how to send local file to s3 ?
There are several ways to upload a local file to an Amazon S3 bucket. Here are a few common methods: [1]
1. Using the AWS Management Console:
• Open the Amazon S3 console
• Navigate to the desired bucket
• Click the "Upload" button
• Select the file(s) from your local machine
• Click "Upload" to start the transfer
2. Using the AWS Command Line Interface (CLI):
• Install and configure the AWS CLI
• Run the following command, replacing the placeholders with your bucket name and file path:
aws s3 cp /path/to/local/file s3://your-bucket-name/
3. Using an AWS SDK:
• Install the AWS SDK for your preferred programming language (e.g., Python, Java, Node.js)
• Write code to interact with the S3 service and upload your file
Example in Python using boto3:
python
import boto3
# Create an S3 client
s3 = boto3.client('s3')
# Open the local file
with open('path/to/local/file', 'rb') as file_data:
# Upload the file to S3
s3.upload_fileobj(file_data, 'your-bucket-name', 'remote-file-name')
4. Using AWS Transfer Family services:
• AWS Transfer Family provides fully managed support for transferring files directly into and out of Amazon S3 [2]
• You can use the AWS Transfer Family console, CLI, or API to transfer files
Remember to configure your AWS credentials and permissions correctly before attempting any file transfers. Additionally, consider using server-side encryption to protect your data in transit and at rest.
1 https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-2-upload-file.html
2 https://docs.aws.amazon.com/AmazonS3/latest/userguide/example_s3_Scenario_UsingLargeFiles_section.html
Amazon Q inline on the command line
コマンドライン補完。以下 URL にあるデモの Gif を見るのが分かりやすいです。
Translating from natural language to bash
q translate [prompt]
or # [prompt]
で自然言語で書いた内容をコマンドに変換してくれる。
そのまま実行もできるし編集もできる。
> q translate send local sample.txt file to amazon s3 test bucket
Shell · aws s3 cp sample.txt s3://test-bucket/
❯ ⚡ Execute command
📝 Edit command
🔄 Regenerate answer
❓ Ask another question
❌ Cancel
カスタマイズ
社内やチーム内で独自に利用しているライブラリ等を考慮したインライン提案等ができるようになる。
Q Developer Pro のライセンスが必要。
以下のような制限事項もあるので要確認。
データソースには、少なくとも 2 MB、最大 20 GB のソースコードファイルが含まれている必要があります。 サポートされている言語から。10 MB を超えるファイルは無視されます。ファイル数に制限はありませんが、カスタマイズでサポートする言語ごとに少なくとも 10 個のファイルを含める必要があります。Amazon S3 データ内 source、すべてのソースコードがルートではなくディレクトリに配置されることを確認します。 レベル。ルートレベルのファイルは無視されます。
Amazon Q Customizations では、次の言語とファイル拡張子がサポートされています。
Java (.java)
JavaScript (.js、.jsx)
Python (.py)
TypeScript (.ts、.tsx)
カスタマイズ自体は Q Developer のコンソールから接続先を指定するくらいでできる模様。
ダッシュボード
↑のドキュメント上の画像をひっぱってきてますが、コード提案が受け入れられた数やセキュリティスキャンの回数が分かります。
Organizations 組んでやっている場合は組織全体のが(おそらく)表示されると思うので、Q developer 導入後の活用状況など KPI 周りで活用できるダッシュボードのようです。
Discussion