[小ネタ] Check! az コマンドで条件に合ったメモリやコア数のVMサイズ一覧を表示する

こんばんは、 @dz_ こと大平かづみです。

Prologue - はじめに
====

Azure CLI の `az` コマンドが便利で日ごろから使っています。

- [Azure CLI 2.0 | Microsoft Docs](https://docs.microsoft.com/en-us/cli/azure/overview)

今回は、メモリ〇GB以上〇コア以上のVMサイズ一覧を知りたくて、 `--query` オプションを使ってちょちょいのちょいしました ::sparkles: 

`az` コマンドで条件に合ったVMサイズ一覧を表示するサンプル
====

```bash
# メモリ4GB以上、2コア以上のVMサイズ一覧を取得する例
az vm list-sizes -l japaneast --query "[?memoryInMb >= `4096` && numberOfCores >= `2`]" -o table

Name                      NumberOfCores    OsDiskSizeInMb    ResourceDiskSizeInMb    MemoryInMb    MaxDataDiskCount
----------------------  ---------------  ----------------  ----------------------  ------------  ------------------
Standard_NV6                          6           1047552                  389120         57344                  24
Standard_NV12                        12           1047552                  696320        114688                  48
Standard_NV24                        24           1047552                 1474560        229376                  64
Standard_A3                           4           1047552                  291840          7168                   8
Standard_A5                           2           1047552                  138240         14336                   4
Standard_A4                           8           1047552                  619520         14336                  16
Standard_A6                           4           1047552                  291840         28672                   8
Standard_A7                           8           1047552                  619520         57344                  16
Basic_A3                              4           1047552                  122880          7168                   8
Basic_A4                              8           1047552                  245760         14336                  16
Standard_D2_v2                        2           1047552                  102400          7168                   8
Standard_D3_v2                        4           1047552                  204800         14336                  16
Standard_D4_v2                        8           1047552                  409600         28672                  32
Standard_D5_v2                       16           1047552                  819200         57344                  64
Standard_D11_v2                       2           1047552                  102400         14336                   8
Standard_D12_v2                       4           1047552                  204800         28672                  16
...
```
JMESPath フィルタリング Tips
====

ちなみに、`az` コマンドの `--query` オプションは便利なんですが、普段使ってる `jq` コマンドとは別の `jp` コマンドすなわち [JMESPath](http://jmespath.org/) の記法なのでちょっと戸惑ってしまいます。

フィルタリングで、数値の比較やAND/OR条件について調べたので、メモをおいておきます。

- 配列に対するフィルタは、 `[?key==xxx]` と書く
- 数値は ``[?key==`100`]`` のように `` ` `` で囲む
- AND/ORなどの条件は、 `[?key1=xxx && key2==yyy]` と書く（ `?` は先頭に一つ）

References
----
- [JMESPath Examples — JMESPath](http://jmespath.org/examples.html)
- [Or Expressions - JMESPath Specification — JMESPath](http://jmespath.org/specification.html#or-expressions)
- [And Expressions - JMESPath Specification — JMESPath](http://jmespath.org/specification.html#and-expressions)

Epilogue - おわりに
====
普段使ってるものでも、小さなところに発見がありますね～