はじめに
- AWS上で多数の仮想マシン(EC2)を起動していると、どのような仮想マシンが存在し、どのような状態なのかがパッと分からないことがあります。
- そこで今回は、AWS CLIを使って仮想マシンの一覧を取得した後、リストを絞り込んで所望のインスタンスを探す方法をまとめてみました。
前提条件
- 以下のページの内容に沿って、AWS CLIの初期設定が行われていることが前提となります。
- 出力フォーマットは「JSON」としています。
基本のコマンド
-
AWSの公式リファレンスにも書かれているように、
aws ec2 describe-instances
というコマンドを使えばEC2インスタンスの一覧を取得できます。
実行するコマンド
[nkojima@akagi ~]$ aws ec2 describe-instances
- ただし、得られる結果が以下のようにかなり大きなサイズのJSONファイルなので、これをDLして人手で解析するのは得策ではありません...
結果のJSONファイルの一例
{
"Reservations": [
{
"Groups": [],
"Instances": [
{
"AmiLaunchIndex": 0,
"ImageId": "ami-0123456789abc",
"InstanceId": "i-abcdefghijklmn012345",
"InstanceType": "t3a.nano",
"KeyName": "xxxxxxx",
"LaunchTime": "2021-03-04T01:19:42+00:00",
"Monitoring": {
"State": "disabled"
},
"Placement": {
"AvailabilityZone": "ap-northeast-1a",
"GroupName": "",
"Tenancy": "default"
},
"PrivateDnsName": "ip-10-0-1-102.ap-northeast-1.compute.internal",
"PrivateIpAddress": "10.0.1.102",
"ProductCodes": [],
"PublicDnsName": "",
"PublicIpAddress": "xxx.xxx.xxx.xxx",
"State": {
"Code": 16,
"Name": "running"
},
...
仮想マシンのサマリーを一覧表示する方法
-
こちらのページにも書かれているように、
--query
というパラメーターを付けることで出力される項目を絞り込むことができます。- ここでは仮想マシン名、Public IP、ステータスの3つを出力しています。
- インスタンス名の付いたタグを取得するため、
Tags[?Key=='Name']
という部分でフィルタリングしています。 - さらに
--output text
というパラメーターを付けることで、見やすい表形式で出力しています。- このパラメーターを付けないと、上記のようにJSONのまま出力されます。
- 罫線付きの表形式にする場合は、
--output table
というパラメーターを使います。
実行するコマンド
[nkojima@akagi ~]$ aws ec2 describe-instances \
--query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,PublicIpAddress,State.Name]" \
--output text
出力結果
nkojima-web xxx.xxx.xxx.xxx running
nkojima-test xxx.xxx.xxx.xxx running
test-server1 None stopping
条件に合致する仮想マシンを一覧表示する方法
-
--filters
というパラメーターを付けることで、出力されるレコード(仮想マシン)を絞り込むことができます。- ここではステータスが実行中(running)の仮想マシンに絞った上で、仮想マシン名、Public IP、ステータスの3つを出力しています。
- 絞り込み条件として使用している
instance-state-name
などの名称は、Optionsの一覧をご覧下さい。
実行するコマンド
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,PublicIpAddress,State.Name]" \
--output text
出力結果
nkojima-web xxx.xxx.xxx.xxx running
nkojima-test xxx.xxx.xxx.xxx running
複数の条件に合致する仮想マシンを一覧表示する方法
-
--filters
パラメーターを複数使うことで、複数の条件に合致したレコード(仮想マシン)に絞り込むことができます。- ここではステータスが実行中(running)の仮想マシンで、なおかつインスタンス名が「web」と部分一致する仮想マシンに絞った上で、仮想マシン名、Public IP、ステータスの3つを出力しています。
-
AWSのリファレンスには書かれていませんでしたが、
Values=*web*
というように「*」でワイルドカードを指定することが出来るようです。
- 絞り込み条件として使用している
instance-state-name
などの名称は、[Optionsの一覧]
実行するコマンド
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running"\
--filters "Name=tag:Name,Values=*web*"\
--query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,PublicIpAddress,State.Name]"\
--output text
出力結果
nkojima-web xxx.xxx.xxx.xxx running