LoginSignup
1
1

More than 1 year has passed since last update.

AWS CLIで所望のEC2インスタンスを探す方法

Posted at

はじめに

  • 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

参考URL

1
1
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
1
1