JMESPathをもっと広めたい
JAWS-‐‑‒UG  CLI専⾨門⽀支部
AWS  CLIを使いこなしたいユーザの集まり  
有志による互助的な勉強会
JAWS-‐‑‒UG  CLI専⾨門⽀支部
散々お世話になっているのに貢献できてない  
そもそも最近参加できてない
JAWS-‐‑‒UG  CLI専⾨門⽀支部
CLI専⾨門⽀支部らしい活動をもっと活性化したい  
より多くの⼈人と情報交換したい
その前にJMESPath
その前にJMESPath
AWS  CLI共通の"-‐‑‒-‐‑‒query"オプションで使える  
フィルタ条件を⾊色々指定できる  
いつの間にかjsonと仲良良くなれる
(参考)http://jmespath.org/  
(参考)http://jmespath.readthedocs.org/en/latest/index.html
⽐比較的よく⾒見見るもの
(コマンド)  
$  aws  ec2  describe-‐‑‒regions  
(結果)  
{  
        "Regions":  [  
                {  
                        "Endpoint":  "ec2.eu-‐‑‒west-‐‑‒1.amazonaws.com",    
                        "RegionName":  "eu-‐‑‒west-‐‑‒1"  
                },    
                {  
                        "Endpoint":  "ec2.ap-‐‑‒southeast-‐‑‒1.amazonaws.com",    
                        "RegionName":  "ap-‐‑‒southeast-‐‑‒1"  
                },    
︓:︓:︓:
⽐比較的よく⾒見見るもの
まずはオプションなしで  
出⼒力力内容を確認
⽐比較的よく⾒見見るもの
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[0]"  
(結果)  
{  
        "Endpoint":  "ec2.eu-‐‑‒west-‐‑‒1.amazonaws.com",    
        "RegionName":  "eu-‐‑‒west-‐‑‒1"  
}
配列列の1つ⽬目だけ
⽐比較的よく⾒見見るもの
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[].[Endpoint]"  
(結果)  
[  
        [  
                "ec2.eu-‐‑‒west-‐‑‒1.amazonaws.com"  
        ],    
        [  
                "ec2.ap-‐‑‒southeast-‐‑‒1.amazonaws.com"  
        ],  
︓:︓:︓:
配列列の特定の  
Keyのみ
⽐比較的よく⾒見見るもの
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[]|length(@)"  
(結果)  
10  
※こちらの⽅方がスマートですかね  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "length(Regions[])"
配列列の要素数
⽐比較的よく⾒見見るもの
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[?RegionName==`̀ap-‐‑‒northeast-‐‑‒1`̀]"  
(結果)  
[  
        {  
                "Endpoint":  "ec2.ap-‐‑‒northeast-‐‑‒1.amazonaws.com",    
                "RegionName":  "ap-‐‑‒northeast-‐‑‒1"  
        }  
]  
配列列のKeyで  
完全⼀一致
⽐比較的よく⾒見見るもの
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[?contains(RegionName,`̀us-‐‑‒`̀)].[RegionName]"  
(結果)  
[  
        [  
                "us-‐‑‒east-‐‑‒1"  
        ],    
        [  
                "us-‐‑‒west-‐‑‒1"  
        ],    
        [  
                "us-‐‑‒west-‐‑‒2"  
        ]  
]  
配列列のKeyで  
部分⼀一致
もう少し広めたいオプション
もう少し広めたいオプション
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[:2]"  
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[-‐‑‒3:]"  
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[4:7]"  
配列列の2番⽬目まで
配列列の後ろ3つ
配列列の5〜~7番⽬目
もう少し広めたいオプション
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[:3]|[?contains(RegionName,`̀-‐‑‒west-‐‑‒`̀)]"  
パイプでAND条件
もう少し広めたいオプション
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[].RegionName|sort(@)"  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "sort(Regions[].RegionName)"  
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "sort_̲by(Regions,&RegionName)[].RegionName"  
結果をソート
特定のKeyで
ソート
もう少し広めたいオプション
(コマンド)  
$  aws  ec2  describe-‐‑‒regions    
        -‐‑‒-‐‑‒query  "Regions[].join(`̀,`̀,[RegionName,Endpoint])"  
区切切り⽂文字で
ジョイン
AWS  CLIでこんなことしたい
をどんどん意⾒見見交換しよう

Jmespathをもっと広めたい