はじめに
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 以外のコマンドも色々答えてくれるので、是非活用しましょう