AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

AWS CLI の 出力形式は JSON, TEXT, TABLE (v2 は YAMLも)

AWS CLI v2 リリース関連を読んでたら、出力形式に YAML も追加とありました。

あれ、出力形式ってJSONだけじゃないのかと気づいて調べてみた。

デフォルト JSON の他、TEXT と TABLEもあり、個人の好みに合わせた選択が可能とわかりました。

出力形式 --output

こちらのエントリーに紹介されていた Lambda 関数一覧を取得するコマンドを、出力形式をかけて試してみます。

TEXT

  • --output text

shell 使いの方には、このオプションでは?

# aws lambda list-functions --region ap-northeast-1 --query "Functions[].[FunctionName]" --output text
based-s3-get-object
get_pet_by_id
register_pet
register_pet_nodejs
register_pet2
register_pet3

TABLE

  • --output table

コンソールで全体像を把握するときに便利?

MySQLクライアント の デフォルト出力形式は、こいつですね。

# aws lambda list-functions --region ap-northeast-1 --query "Functions[].[FunctionName]" --output table
-------------------------
|     ListFunctions     |
+-----------------------+
|  based-s3-get-object  |
|  get_pet_by_id        |
|  register_pet         |
|  register_pet_nodejs  |
|  register_pet2        |
|  register_pet3        |
+-----------------------+

色もついて見やすいですね。

f:id:hidehara:20200422123448p:plain
--output table

JSON

jq と組み合わせて、色々できる。そんなイメージの出力形式。

# aws lambda list-functions --region ap-northeast-1 --query "Functions[].[FunctionName]" --output json
[
    [
        "based-s3-get-object"
    ],
    [
        "get_pet_by_id"
    ],
    [
        "register_pet"
    ],
    [
        "register_pet_nodejs"
    ],
    [
        "register_pet2"
    ],
    [
        "register_pet3"
    ]
]


こちらのエントリーとか参考に、ポチポチ使ってます。

qiita.com

まだ便利に使えてるとは言えないけど、なれると好きな事できそう(とゴールをおいて使ってる)

ちなみに --query オプションで使う構文も JSON 扱う JMESPath になるようです。

OPTIONS
...
--query (string)

A JMESPath query to use in filtering the response data.

でも jq とは構文一緒じゃないらしいので、ちょっと学習は必要そうですね (JSON に慣れろってことと理解w)

www.techscore.com


YAML (v2 から)

僕の中だと、JSONよりも全体像が把握しやすい。というぐらいのイメージ。

あ、Ansibleやるときに初めて使ったなぁ。

$ aws --version
aws-cli/2.0.8 Python/3.7.3 Linux/4.19.76-linuxkit botocore/2.0.0dev12

$ aws lambda list-functions --region ap-northeast-1 --query "Functions[].[FunctionName]" --output yaml
- - based-s3-get-object
- - get_pet_by_id
- - register_pet
- - register_pet_nodejs
- - register_pet2
- - register_pet3

あと yaml-stream というのもあるとのことです。


その他

OSSの良さなのかと思いますが、CLIを使う人に便利なように整備されているなーって思いました。