AWS CLIコマンドの実行オプション


AWS CLIでは、実行時のオプションで取得する情報を選択したり、フォーマットを変更したりできます。
うまく使いこなせれば、必要な情報だけを取得して確認できるし、スクリプトでちょっとした処理を実行するのも簡単にできるはず。

## よく使う実行オプション


```
--output {json|text|table}
--region {<region>}
--filter
--query
--profile 	別プロファイルでの実行(ユーザー、表示形式、region等のセット)
```

## `--region {<region>}`

コマンド実行の対象となるRegionを指定。
指定しない場合はデフォルトのRegion(`$HOME/.aws/config`で指定)が使われる。
以下のRegionが指定できる。

```bash
$ aws ec2 describe-regions --output table
----------------------------------------------------------
|                     DescribeRegions                    |
+--------------------------------------------------------+
||                        Regions                       ||
|+-----------------------------------+------------------+|
||             Endpoint              |   RegionName     ||
|+-----------------------------------+------------------+|
||  ec2.eu-central-1.amazonaws.com   |  eu-central-1    ||
||  ec2.sa-east-1.amazonaws.com      |  sa-east-1       ||
||  ec2.ap-northeast-1.amazonaws.com |  ap-northeast-1  ||
||  ec2.eu-west-1.amazonaws.com      |  eu-west-1       ||
||  ec2.us-east-1.amazonaws.com      |  us-east-1       ||
||  ec2.us-west-1.amazonaws.com      |  us-west-1       ||
||  ec2.us-west-2.amazonaws.com      |  us-west-2       ||
||  ec2.ap-southeast-2.amazonaws.com |  ap-southeast-2  ||
||  ec2.ap-southeast-1.amazonaws.com |  ap-southeast-1  ||
|+-----------------------------------+------------------+|
```



## `--output {json|text|table}`

コマンド実行結果の出力形式を指定。
指定しない場合は、`$HOME/.aws/config`に定義されたフォーマットで出力される。

JSON、TEXT、Table形式で出力できるが、個人的にはJSON形式が一番見やすいし、`jq`コマンドと組み合わせれば必要な情報だけに絞って取得するのも簡単なのでおすすめ。


### Text形式

```bash
$ aws ec2 describe-vpcs --output text
VPCS	172.31.0.0/16	dopt-c5a7bca7	default	True	available	vpc-9f1fc8fa
VPCS	10.0.0.0/16     dopt-c5a7bca7	default	False	available	vpc-2ce93449
TAGS	Name	aws_book_vpc
```




### Table形式

```
$ aws ec2 describe-vpcs --output table
---------------------------------------------------------------------------------------------------
|                                          DescribeVpcs                                           |
+-------------------------------------------------------------------------------------------------+
||                                             Vpcs                                              ||
|+---------------+----------------+------------------+------------+-------------+----------------+|
||   CidrBlock   | DhcpOptionsId  | InstanceTenancy  | IsDefault  |    State    |     VpcId      ||
|+---------------+----------------+------------------+------------+-------------+----------------+|
||  172.31.0.0/16|  dopt-c5a7bca7 |  default         |  True      |  available  |  vpc-9f1fc8fa  ||
|+---------------+----------------+------------------+------------+-------------+----------------+|
||                                             Vpcs                                              ||
|+-------------+----------------+-------------------+-------------+-------------+----------------+|
||  CidrBlock  | DhcpOptionsId  |  InstanceTenancy  |  IsDefault  |    State    |     VpcId      ||
|+-------------+----------------+-------------------+-------------+-------------+----------------+|
||  10.0.0.0/16|  dopt-c5a7bca7 |  default          |  False      |  available  |  vpc-2ce93449  ||
|+-------------+----------------+-------------------+-------------+-------------+----------------+|
|||                                            Tags                                             |||
||+------------------------------+--------------------------------------------------------------+||
|||              Key             |                            Value                             |||
||+------------------------------+--------------------------------------------------------------+||
|||  Name                        |  aws_book_vpc                                                |||
||+------------------------------+--------------------------------------------------------------+||
```

### JSON形式

```json
$ aws ec2 describe-vpcs --output json
{
    "Vpcs": [
        {
            "VpcId": "vpc-9f1fc8fa",
            "InstanceTenancy": "default",
            "State": "available",
            "DhcpOptionsId": "dopt-c5a7bca7",
            "CidrBlock": "172.31.0.0/16",
            "IsDefault": true
        },
        {
            "VpcId": "vpc-2ce93449",
            "InstanceTenancy": "default",
            "Tags": [
                {
                    "Value": "aws_book_vpc",
                    "Key": "Name"
                }
            ],
            "State": "available",
            "DhcpOptionsId": "dopt-c5a7bca7",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}
```

`jq`コマンドにパイプして使うと便利。`jq`を使うと、

- colarcodedされる

![スクリーンショット 2015-04-27 午後2.57.32.png](https://qiita-image-store.s3.amazonaws.com/0/65167/acb238a8-bdc0-1204-456d-4fdc36a374ea.png)

- 値の検索が簡単

```bash
$ aws ec2 describe-vpcs --output json | jq '.Vpcs[].VpcId'
"vpc-9f1fc8fa"
"vpc-2ce93449"
```

## `--filters`

検索条件を指定して検索。
ある項目が特定の値であるという条件に合致する、サービスやリソースの情報を取得することができる。

定義できるFilterの条件は、Referenceの`--filters`の項を参照。
例えば `aws ec2 describe-vpcs` で指定できるFilterは、以下に記載されている。
[describe-vpcs — AWS CLI 1.7.24 documentation](http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html#options)

### 実行例

```bash
$ aws ec2 describe-vpcs --filters "Name=cidr,Values=10.0.0.0/16"
{
    "Vpcs": [
        {
            "VpcId": "vpc-2ce93449",
            "InstanceTenancy": "default",
            "Tags": [
                {
                    "Value": "vpc-awsbook",
                    "Key": "Name"
                }
            ],
            "State": "available",
            "DhcpOptionsId": "dopt-c5a7bca7",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}
```


## `--query`

出力結果のに含める項目の絞り込み。
サービスやリソースの、特定の項目の情報だけ取得することができる。

定義できるQueryの条件は、Referenceの`Output`の項を参照。
例えば `aws ec2 describe-vpcs` で指定できるQueryは、以下に記載されている。
[describe-vpcs — AWS CLI 1.7.24 documentation](http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html#output)

### 実行例

```bash
$ aws ec2 describe-vpcs --query 'Vpcs[].VpcId[]'
[
    "vpc-6d11cc08",
    "vpc-9f1fc8fa",
    "vpc-2ce93449"
]
```


`--filters`と`--query`は組み合わせて使うと便利。

```bash
$ aws ec2 describe-vpcs --filters "Name=cidr,Values=10.0.0.0/16" --query 'Vpcs[].VpcId[]'
[
    "vpc-2ce93449"
]
```





## リンク

- [Configuring the AWS Command Line Interface - AWS Command Line Interface](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
- [AWS CLI — AWS CLI 1.7.24 documentation](http://docs.aws.amazon.com/cli/latest/)

- [describe-instances — AWS CLI 1.7.24 documentation](http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)