11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社オーイーシーAdvent Calendar 2023

Day 21

GitHub Copilot in the CLI はどこまで AWS を操作できるか

Last updated at Posted at 2023-12-20

はじめに

GitHub Copilot in the CLI が 賢いので、  AWS CLI をどこまで操作できるのか試してみました

GitHub Copilot in the CLI の導入方法

機能の有効化

まずは GitHub Copilot を使えるようにしましょう

また、個人もしくは組織の設定から GitHub Copilot in the CLI を有効化してください

GitHub CLI のインストール

GitHub Copilot in the CLI は GitHub CLI の拡張機能として提供されます

まずは GitHub CLI をインストールしましょう

macOS の場合は Homebrew が一番簡単ですね

brew install gh

インストールしたら認証しておきましょう

gh auth login

GitHub Copilot in the CLI の拡張機能追加

GitHub CLI の拡張機能として Copilot を追加します

gh extension install github/gh-copilot

GitHub Copilot in the CLI の 基本的な使い方

gh copilot suggest -t shell で「やりたいこと」ができるシェルコマンドを返してくれます

-t git なら git コマンド、 -t gh なら GitHub CLI のコマンドを返してくれます

しかも日本語を理解してくれます

$ gh copilot suggest -t shell "macOS に git をインストールする"

Welcome to GitHub Copilot in the CLI!
version 0.5.3-beta (2023-11-09)

I'm powered by AI, so surprises and mistakes are possible. Make sure to verify any generated code or suggestions, and share feedback so that we can learn and improve.

Suggestion:

  brew install git

残念ながら日本語で返してはくれませんが、シェルコマンドがわからないときに助かります

GitHub Copilot に AWS CLI の問題を出そう

AWS S3 のバケット名一覧を取得する

まずは小手調べ

aws s3 ls | awk '{print $3}'

awk を使って名前だけ抜き出しています
完璧な回答です

AWS S3 から指定バケットの指定プレフィックス配下にあるファイルの合計サイズを取得する

aws s3 ls --summarize --human-readable --recursive s3://bucket-name/prefix/ | grep 'Total Size:'

複雑な要求にも応えてくれますね

AWS S3 のバージョニングを設定したバケット内でファイルを完全に削除する

aws s3 rm s3://<bucket-name>/<file-path> --version-id <version-id> --recursive

バージョン指定で削除する方法を教えてくれました

AWS CLI で SQS のキューを作成する

aws sqs create-queue --queue-name MyQueue

Amazon SQS のキューからメッセージを受信する

これは答えてくれませんでした

AWS CLI で SQS のキューからメッセージを受信する

aws sqs receive-message --queue-url <queue-url>

こっちだと大丈夫でした

AWS CLI で と指定した方が良いようです

AWS CLI で SQS のキューからメッセージを受信し、破棄する

aws sqs receive-message --queue-url <queue_url> && aws sqs delete-message --queue-url <queue_url> --receipt-handle <receipt_handle>

二つの要求に対して && で繋げて答えてくれました

ただ、これだと受信したメッセージの receipt_handle を使えないため微妙です

流石に難しかったか

AWS CLI で Lambda 関数の環境変数を取得する

aws lambda get-function-configuration --function-name FUNCTION_NAME --query 'Environment'

見事に --query を使っていますね

AWS CLI で 'prod' を含む Lambda 関数を取得する

aws lambda list-functions --query "Functions[?contains(FunctionName, 'prod')][]"

こちらもお見事ですね

AWS CLI で DynamoDB のテーブルにデータを格納する

残念、 Dynamo は上手く操作できなさそうです

AWS CLI で VPC のルートテーブルを取得する

aws ec2 describe-route-tables --query "RouteTables[?VpcId=='YOUR_VPC_ID']"

AWS CLI で CloudFormation の失敗したイベントを取得する

aws cloudformation describe-stack-events --stack-name YOUR_STACK_NAME --query "StackEvents[?ResourceStatus=='CREATE_FAILED'].[ResourceStatus, ResourceType, LogicalResourceId]" --output table

テーブル形式にしてくれるとは気が利いていらっしゃる

AWS CLI で API Gateway のAPIキー使用量を取得する

aws apigateway get-usage --key-id <API_KEY_ID> --start-date <START_DATE> --end-date <END_DATE>

惜しい

--usage-plan-id の指定が抜けていますね

AWS CLI で SageMaker のエンドポイントの状態を取得する

aws sagemaker describe-endpoint --endpoint-name <endpoint_name>

まとめ

実はうまくいかなかった例がもっといっぱいありますが、それなりに答えてくれた、という印象です

awk と組み合わせてくれたり、 query で検索、整形してくれるのが嬉しいですね

当然 AWS CLI 以外のコマンドも色々答えてくれるので、是非活用しましょう

11
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?