chatGPTの活用(大それたことでなく)

chatGPTを気軽に使ってもらえるよう、社員には、mattermostとLINEで使えるようにしています。

ただ、意外と利用頻度は少ないのが現状です。実際に利用するとなると、大それたことを考えてしまいがちですが、まずはちょっとしたことに利用してみることが、活用の第一歩だと思います。

先日、AWSのEC2にteratermでログインする機会がありました。そのEC2は、常時立ち上がっているものではなく(コストカット!)、必要な際に立ち上げて利用するものでした。

普段利用しているサーバもそうしたものが多いため、EC2の起動とteratermでのログインをWindowsのバッチファイルにて自動化しています。

aws ec2 start-instances --instance-ids i-xxxxxxxx --region us-west-2
powershell sleep 20
"C:\Program Files (x86)\teraterm\ttermpro.exe" ubuntu@xx.xxx.xxx.xx:22 /ssh2 /auth=publickey /user=ubuntu /keyfile=C:\Users\xxx\Desktop\xxx\xxxxxxx.pem

ところが、今回のEC2はEIP(永続的なIP)をアタッチしていないため、立ち上げるたびにグローバルIPアドレスが更新されることになり、上記のバッチでは自動化できません。

今後のためにも、自動化を考えたい。aws cli にインスタンスの情報を取得するコマンドがあるので、それを調べればいいのですが、詳しく見る時間がない。

はい、chatGPTの出番です。

aws ec2 start-instances にてインスタンス起動する場合に、グローバルIPアドレスを追加で表示する方法は?

と質問してみました。すると、以下のように返ってきます

aws ec2 start-instances --instance-ids <インスタンスID>
aws ec2 describe-instances --instance-ids <インスタンスID> --query 'Reservations[0].Instances[0].PublicIpAddress' --output text

さすが!と思いましたが、残念ながらWindowsのプロンプトからは、上記では動きません。ここは経験上、シングルクォーテーションが悪いと思われ、ダブルクォーテーションにすると動きました。

さて、あとは、上記で取得したIPアドレスを変数にいれて渡してあげればいい。bashなら簡単だけど、dosのバッチではどうするんだ?これ調べるのもちょっと時間がない

はい、chatGPTの出番です。正しくないことを承知で、こんな聞き方をしてみました。

dos のバッチファイルで以下のスクリプトは正しいか?
IPADDRESS =aws --profile TSC ec2 describe-instances --instance-ids i-xxxxxxxxxx --region us-west-2 --query "Reservations[0].Instances[0].PublicIpAddress" --output text
echo "IPADDRESS = ${IPADDRESS}"

すると、修正後のスクリプトを提示してくれました。

FOR /F "usebackq" %%I IN (`aws --profile TSC ec2 describe-instances --instance-ids i-xxxxxxxxxx --region us-west-2 --query "Reservations[0].Instances[0].PublicIpAddress" --output text`) DO SET IPADDRESS=%%I
echo "IPADDRESS = %IPADDRESS%"

え、FOR使うとか、こんなに面倒なの?とちょっと調べてみましたが、やっぱりこのやり方みたいです。

結果、最初のバッチファイルは、以下のように修正して利用できるようになりました。

aws --profile TSC ec2 start-instances --instance-ids i-xxxxxxxx --region us-west-2
powershell sleep 20
FOR /F "usebackq" %%I IN (`aws --profile TSC ec2 describe-instances --instance-ids i-xxxxxxxxxx --region us-west-2 --query "Reservations[0].Instances[0].PublicIpAddress" --output text`) DO SET IPADDRESS=%%I
"C:\Program Files (x86)\teraterm\ttermpro.exe" ubuntu@%IPADDRESS%:22 /ssh2 /auth=publickey /user=ubuntu /keyfile=C:\Users\xxx\Desktop\xxx\xxxxxxx.pem

–profile をつけているのは、複数のAWSアカウントを操作できるようにしたためです。参考:https://wellknowledge.org/aws-cli-profile/

しっかりとした開発をやる場合には、きちんと調査し、理解したほうが間違いがないです。

ただ、ちょっと効率化したいなと思ったときに、いちから調べていたのでは、逆に効率が悪くなります。タスクをディスパッチしてAIに調査やチェックさせ、自分の知識を補完するという使い方でも、十分恩恵を受けれます。

ちょっとしたことから活用して、作業効率をあげたいですね。

タイトルとURLをコピーしました