コマンドラインからEC2のインスタンスの状態を確認できるec2instを作りました
概要
最近は機械学習の計算やJupyter Notebookなどを、ローカルやVPSではなくAWSのEC2で動かしたりしているのですが、そうなると気になるのがインスタンスの状態だったりパブリックIPアドレスだったりするわけです。普通ならブラウザからAWSのコンソールを開けば万事解決なのですが、自分の場合はブラウザのタブを開きすぎててどこに行ったか分からなかったり、あとはAWSコンソールのトップページからEC2のインスタンス一覧を見るには2回ほど画面遷移が必要だったりと、何かと不便に感じることが多くなってきました。
そこで、ターミナルのコマンドラインからEC2のインスタンス一覧を取得して、いい感じにリストアップしてくれるスクリプトを作りました。といっても、そもそもAWSはaws-cliというコマンドラインインターフェイスを作成していたり、boto3というPythonのSDKを作っていたりするので、今回作成したのはいわばその機能の一部を使って結果を見やすくするという、ラッパー程度のものです。n番煎じ、もしくは車輪の再発明になってしまったとは思うのですが、まあ勉強になったので良いでしょう……。
インストール
PyPIから取得します。
$ pip install ec2inst
基本的に上記の方法でインストールして問題ありませんが、以下のようにgithubから直接pipでインストールすることもできます。
$ pip install git+https://github.com/yagays/ec2inst.git
準備
ec2instはaws-cliもしくはboto3の設定ファイルを読み込んで、その中に登録されているaws_access_key_id
とaws_secret_access_key
を利用します。そのため、まず始めにAWSのウェブコンソールからアクセスキーIDと秘密アクセスキーを取得し、aws-cliで登録しておきましょう。ここでの設定は~/.aws/config
および~/.aws/credentials
に登録されます。なお、もし複数のプロファイルを使い分ける場合にはaws configure --profile yag_ays
のようにプロファイルに名前を付けておくと後々切り分けが楽になります。
- アクセスキー ID と秘密アクセスキーの取得 - Amazon Simple Queue Service
- Configuring the AWS Command Line Interface - AWS Command Line Interface
$ aws configure AWS Access Key ID [None]: XXX... AWS Secret Access Key [None]: YYY... Default region name [None]: ap-northeast-1 Default output format [None]: json
使い方
ec2inst
コマンドで以下のような結果が返ってきます。
$ ec2inst instance_id instance_type image_id instance_name public_ip_address private_ip_address instance_state ----------- ------------- ------------ --------------- ----------------- ------------------ -------------- i-00000000 t2.medium ami-00000000 instance_name_1 xxx.xxx.xxx.xxx 172.20.xxx.xxx running i-11111111 g2.2xlarge ami-11111111 gpu_instance - 172.20.yyy.yyy stopped i-22222222 c3.xlarge ami-22222222 - zzz.zzz.zzz.zzz 172.20.zzz.zzz running
ここでは色が付いていないですが、実際にはインスタンスの状態に色が付きます。
あとは-p/--profile
コマンドでaws-cli/boto3のプロファイルを指定したり、-c/--columns
で表示させるカラムを設定することができます。詳しくはec2inst -h
を参考下さい。
$ ec2inst -p yag_ays -c instance_type,instance_name,instance_state instance_type instance_name instance_state ------------- --------------- -------------- t2.medium instance_name_1 running g2.2xlarge gpu_instance stopped c3.xlarge - running
まとめ
EC2の利用は計画的に😇