jq コマンド ~ コマンドで JSON を扱う ~

■ はじめに

AWS CLI からのレスポンスがJSONなので
そこから値を取得する必要がある。
そこで調べてみたら jq コマンド ってのがみつかったのでメモ。

■ 動画

https://dotinstall.com/lessons/basic_jq

■ 環境設定

Linux の場合

yumコマンド

sudo yum -y install epel-release
sudo yum -y install jq

Windows の場合

[1] 以下のサイトから、「jq-win64.exe」をダウンロードし、任意の場所に置く

https://stedolan.github.io/jq/

[2] コマンドプロンプトを立ち上げて、[1]の場所まで移動
[3] 「jq-win64.exe --version」を入力
 => 今回は「jq-1.6」が出力される

■ コマンドオプション

-r オプション

囲み文字であるダブルクォートが除去

■ サンプル

例1:Windows環境下での実行

aws ssm get-parameters のレスポンスをパースする

https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameters.html

のレスポンスを使う

コマンド例

$ type sample.json | jq-win64.exe  .Parameters[].Value
"good day sunshine"

sample.json

{
  "Parameters": [
      {
          "Name": "helloWorld",
          "Type": "String",
          "Value": "good day sunshine",
          "Version": 1,
          "LastModifiedDate": 1542308384.49,
          "ARN": "arn:aws:ssm:us-east-1:123456789012:parameter/helloWorld"
      }
  ],
  "InvalidParameters": []
}

例2:Linux環境下での実行

https://dk521123.hatenablog.com/entry/2020/04/16/113816

にあるような開発環境下によって取得する値を変える

コマンド例

$ cat s3-setting.json | jq '.dev[]'
"s3-bucket-dv001"
"s3-bucket-dv002"
"s3-bucket-dv003"

$ cat s3-setting.json | jq -r '.prod.s3_bucket2'
s3-bucket-pd002

s3-setting.json

{
  "prod": {
    "s3_bucket1":"s3-bucket-pd001",
    "s3_bucket2":"s3-bucket-pd002",
    "s3_bucket3":"s3-bucket-pd003"
  },
  "stage": {
    "s3_bucket1":"s3-bucket-sg001",
    "s3_bucket2":"s3-bucket-sg002",
    "s3_bucket3":"s3-bucket-pd003"
  },
  "dev": {
    "s3_bucket1":"s3-bucket-dv001",
    "s3_bucket2":"s3-bucket-dv002",
    "s3_bucket3":"s3-bucket-dv003"
  }
}

参考文献

https://qiita.com/Nakau/items/272bfd00b7a83d162e3a
https://www.setouchino.cloud/blogs/19
https://www.wakuwakubank.com/posts/676-linux-jq/
https://qiita.com/takeshinoda@github/items/2dec7a72930ec1f658af

関連記事

CodeBuild で パラメータストア / Secrets Manager を使う
https://dk521123.hatenablog.com/entry/2020/02/18/230358
機密データの管理 ~ Secrets Manager 編 ~
https://dk521123.hatenablog.com/entry/2020/03/12/220717