AWS CLIのフィルタの使い方

 ツイート 0  シェア 0  Hatena 0

AWS

AWS CLI の使い方を 1 から教えるシリーズ 2 回目。前回 は AWS CLI のインストール方法について紹介しました。今回はフィルタの使い方を紹介します。

目次

  1. フィルタとは
  2. フィルタで使えるキーは help コマンドで探す
  3. ワイルドカード検索
  4. and 検索
  5. or 検索

フィルタとは

AWS CLI を使って情報を参照する describe 系のサブコマンドは --filters オプションを指定して情報の絞込ができます。

まずは filters オプションを指定しない例を見ていきましょう。サブネットを一覧表示する describe-subnets をそのまま実行した場合は、すべてのサブネットが返されます。

$ aws ec2 describe-subnets
{
    "Subnets": [
        {
            "AvailabilityZone": "ap-northeast-1c",
            "AvailableIpAddressCount": 4091,
            "CidrBlock": "172.31.0.0/20",
            "DefaultForAz": true,
            "MapPublicIpOnLaunch": true,
            "State": "available",
            "SubnetId": "subnet-30e19d68",
            "VpcId": "vpc-49ee852d",
            "AssignIpv6AddressOnCreation": false,
            "Ipv6CidrBlockAssociationSet": []
        },
        ...
    ]
}

次に filters オプションで表示する情報を絞り込む例を見てみましょう。以下は --filters オプションで CIDR ブロックが 172.31.16.0/20 のものだけを表示する例です。

$ aws ec2 describe-subnets --filters "Name=cidr-block,Values=172.31.16.0/20"

{
    "Subnets": [
        {
            "AvailabilityZone": "ap-northeast-1a",
            "AvailableIpAddressCount": 4088,
            "CidrBlock": "172.31.16.0/20",
            "DefaultForAz": true,
            "MapPublicIpOnLaunch": true,
            "State": "available",
            "SubnetId": "subnet-03714e75",
            "VpcId": "vpc-49ee852d",
            "AssignIpv6AddressOnCreation": false,
            "Ipv6CidrBlockAssociationSet": []
        }
    ]
}

フィルタで使えるキーは help コマンドで探す

検索に使えるキーは help コマンドで調べます。ヘルプによると cidr-block は cidrBlock や cidr というキーも設定できるようですね。とりあえず、出力結果に表示されるキーを小文字にして単語をハイフンで区切ると覚えておけば大丈夫です。

$ aws ec2 describe-subnets help

...
OPTIONS
   --filters (list)
      One or more filters.

      o availabilityZone - The Availability Zone for the subnet.  You  can
        also use availability-zone as the filter name.

      o available-ip-address-count  -  The number of IPv4 addresses in the
        subnet that are available.

      o cidrBlock - The IPv4 CIDR block of the subnet. The CIDR block  you
        specify must exactly match the subnet's CIDR block for information
        to be returned for the subnet. You can also use cidr or cidr-block
        as the filter names.
    ...
    Shorthand Syntax:

    Name=string,Values=string,string ...
...

利用できないキーを指定すると以下のようなエラーになります。

$ aws ec2 describe-subnets --filters "Name=AvailabilityZone,Values=ap-northeast-1a"

An error occurred (InvalidParameterValue) when calling the DescribeSubnets operation: The filter 'AvailabilityZone' is invalid

ワイルドカード検索

アスタリスクで前方一致などワイルドカード検索ができます。以下は cidr-block を 172.31.16 で前方一致検索している例です。部分一致や後方一致もできます。

$ aws ec2 describe-subnets --filters "Name=cidr-block,Values=172.31.16*"

{
    "Subnets": [
        {
            "AvailabilityZone": "ap-northeast-1a",
            "AvailableIpAddressCount": 4088,
            "DefaultForAz": true,
            "Ipv6CidrBlockAssociationSet": [],
            "VpcId": "vpc-49ee852d",
            "State": "available",
            "MapPublicIpOnLaunch": true,
            "SubnetId": "subnet-03714e75",
            "CidrBlock": "172.31.16.0/20",
            "AssignIpv6AddressOnCreation": false
        }
    ]
}

and 検索

filters のあとにスペース区切りで検索条件を追加すると and 検索になります。

$ aws ec2 describe-subnets --filters \
  "Name=cidr-block,Values=172.31*" \
  "Name=availability-zone,Values=ap-northeast-1c"

{
    "Subnets": [
        {
            "AvailabilityZone": "ap-northeast-1c",
            "AvailableIpAddressCount": 4091,
            "DefaultForAz": true,
            "Ipv6CidrBlockAssociationSet": [],
            "VpcId": "vpc-49ee852d",
            "State": "available",
            "MapPublicIpOnLaunch": true,
            "SubnetId": "subnet-30e19d68",
            "CidrBlock": "172.31.0.0/20",
            "AssignIpv6AddressOnCreation": false
        }
    ]
}

or 検索

Values にカンマ区切りで値を追加すると、or 検索になります

$ aws ec2 describe-subnets --filters "Name=cidr-block,Values=172.31.16*,172.31.0*"

{
    "Subnets": [
        {
            "AvailabilityZone": "ap-northeast-1c",
            "AvailableIpAddressCount": 4091,
            "DefaultForAz": true,
            "Ipv6CidrBlockAssociationSet": [],
            "VpcId": "vpc-49ee852d",
            "State": "available",
            "MapPublicIpOnLaunch": true,
            "SubnetId": "subnet-30e19d68",
            "CidrBlock": "172.31.0.0/20",
            "AssignIpv6AddressOnCreation": false
        },
        {
            "AvailabilityZone": "ap-northeast-1a",
            "AvailableIpAddressCount": 4088,
            "DefaultForAz": true,
            "Ipv6CidrBlockAssociationSet": [],
            "VpcId": "vpc-49ee852d",
            "State": "available",
            "MapPublicIpOnLaunch": true,
            "SubnetId": "subnet-03714e75",
            "CidrBlock": "172.31.16.0/20",
            "AssignIpv6AddressOnCreation": false
        }
    ]
}

次回は Query の使い方を説明します。

 ツイート 0  シェア 0  Hatena 0