並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 12 件 / 12件

新着順 人気順

JMESPathの検索結果1 - 12 件 / 12件

  • jq と JMESPath を同時に覚える | TECHSCORE BLOG | TECHSCORE BLOG

    はじめに ご無沙汰しております。田中です。今回は jq と JMESpath について書きます。 AWS CLI の返り値の JSON は、以下のように --query オプションに JMESPath を指定して処理できます。 # 名前が test- で始まる最新の AMI の id を取得 $ aws ec2 describe-images \ --filters Name=state,Values=available Name=is-public,Values=false \ --query "Images[?starts_with(Name, 'test-')] | sort_by(@, &CreationDate) | reverse(@)[0].ImageId" "ami-xxxxxxxxxxxxxxxxx"

    • JSONPathとJMESPathとjq

      jsonパーサー多すぎ問題 インフラとかクラウドやってるとコマンドでjsonをチョキチョキする機会はそれなりに多いと思うのだけど、ツールによって組み込みのパーサーが違うっていう問題がある。 たとえばAzure CLIだとJMESPathで、これはPython書く人にとってはわりと分かりやすくて好き。 とはいえ、いろんな場面で使うことも考えると一般的にはbash環境なら、jqがデファクトだろうか。 ただ、jqはたとえばこのページとかでも言及されてるけど、インストールが必要なので環境によっては使えなかったりする問題がある。 また、KubernetesをやるならJSONPathがネイティブサポートのため、これも覚えておいたほうがよい。 したがって、少なくともJMESPathとjqとJSONPathの3種類をある程度は使えないと、そもそもクラウド人材として人権がないということになる。 jsonの基

        JSONPathとJMESPathとjq
      • Improved Filters — JMESPath

        Improved Filters¶ JEP 9 Author James Saryerwinnie Status accepted Created 07-July-2014 Abstract¶ JEP 7 introduced filter expressions, which is a mechanism to allow list elements to be selected based on matching an expression against each list element. While this concept is useful, the actual comparator expressions were not sufficiently capable to accomodate a number of common queries. This JEP exp

        • 【Python】jmespathでandやor条件を使いたい - Qiita

          import jmespath import yaml def main(): # load yaml with open("test_data.yml", "r") as yml: test_data = yaml.load(yml, Loader=yaml.SafeLoader) # pattern1 jmespath_str = "sample[?(id == `{}` && name == `{}`)]".format(1, "test1") print("pattern1:", jmespath_str) print(jmespath.search(jmespath_str, test_data)) # pattern2 jmespath_str = "sample[?(id == `{}` || id == `{}`)]".format(1, 2) print("pattern

            【Python】jmespathでandやor条件を使いたい - Qiita
          • Azure CLI の JMESPath 関数を使って特定文字列が含むリソースだけ取得してみた - Qiita

            Azure リソースに対して大量に同じ事を繰り返す場合、シェルスクリプトなどで Azure CLI を実行するととても便利ですよね。例えば、特定条件の Azure リソースだけ実行の対象にしたくない時は、シェルスクリプトで if 文で条件分岐するなんて事も可能です。今回は、シェルスクリプトで条件分岐をせずに Azure CLI の JMESPath 関数を使って特定文字列が含むリソースだけ取得する方法を試してみました。 例えばリソースグループの一覧を取得 # Azure CLI でリソースグループの一覧を取得 rgs=$(az group list --query "[].name" --output tsv) # for ループでリソースグループ名を確認 for rg in ${rgs[@]}; do echo $rg done # 以下の出力結果になる場合を例とします mnroai-r

              Azure CLI の JMESPath 関数を使って特定文字列が含むリソースだけ取得してみた - Qiita
            • Pythonで使用できるJSONのクエリ言語「JMESPath」のインストール

              Pythonで使用できるJSONのクエリ言語、ライブラリ「JMESPath」のインストールについて解説しています。 「JMESPath(https://github.com/jmespath/jmespath.py)」は、JSONドキュメントから要素を抽出する方法を宣言的に指定できるライブラリです。 ■Python 今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認) ■JMESPathをインストールするJMESPathをインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。 pip install jmespath起動後、上記のコマンドを入力し、Enterキーを押します。 なお、今回は、pythonランチャーを使用しており、Python Versio

                Pythonで使用できるJSONのクエリ言語「JMESPath」のインストール
              • Jmespathの使用例を記載してみました - Qiita

                概要 知っていると便利だと思うjmespathの使用方法を記載しています TL;DR 公式のチュートリアルやExampleがわかりやすいです 条件にマッチするものを取得する場合のクエリ条件 "?<key>==`<取得したい値`>" 平坦化する場合は基本的に<クエリ条件> | [] Built-in Functions 使える関数 abs avg contains ceil floor join keys length max min sort to_string to_number type values ポイント .<functions>(@)と記載する 準備 jmespathをinstallする pip install jmespathを実行する sample data { "test": [ { "id": 1, "name": "A", "color": "red" }, { "i

                  Jmespathの使用例を記載してみました - Qiita
                • JMESPathについて - Qiita

                  JMESPathはJSONのquery language。 作成者はJames Saryerwinnieさんで、jmespathの呼び方は下記の通り"James Path"らしい。 JSONのクエリ言語ではありますが、この構文が。 aws-cliの出力を整形してくれる--queryオプションがJMESPathだったり。 Azure CLIの出力を整形してくれる--queryオプションがJMESPathだったり。 ansibleのフィルタjson_queryがJMESPathだったり。 などで採用されており、ここらへんをさわったことがあれば実はJMESPathを利用しているなんて事もあるかと思います。 AWS CLI 出力をフィルタリングする JMESPath クエリを使用して Azure CLI コマンドの出力に対してクエリを実行する方法 Selecting JSON data: JSON

                    JMESPathについて - Qiita
                  • JMESPathで配列から要素を抽出するにはパイプを用いる - Qiita

                    はじめに JMESPathはJSONをparseすることを目的としたクエリ言語で、AWS CLIやOCI CLIに--queryオプションとして組み込まれています。 AWS CLI等のJSON出力のparseにはコマンドラインツールであるjqを利用するパターンも多いかとは思いますが、先述の通りjqはコマンドラインツールであり、AWS CLI等とは別でインストールが必要になります。 AWS CLI等を利用するうえで、あくまでCLIオプションとして利用できる点がJMESPathのメリットの1つです。 さて、JMESPathですが、記法自体は基本的にはJavaScriptでオブジェクトを操作するときのような書き方である程度直感的に書くことはできるのですが、筆者の経験の中で、配列の操作で少し躓いた部分がありましたので共有します。 前提 コンソールはpowershell AWS CLIを利用 操作対

                      JMESPathで配列から要素を抽出するにはパイプを用いる - Qiita
                    • Ansible PlaybookでのJMESPath利用サンプル - Qiita

                      はじめに AnsibleのPlaybookでの各タスクにおける実行結果は、registerパラメータ値で指定した変数に情報が格納されます。格納された情報はJSON形式で見ることができますが、その中から必要な情報だけを抽出したいと思ったときに活躍するのが、JMESPathです。ここでは、簡単なJMESPathを利用した情報抽出方法のサンプルをご紹介します。 検証環境 Redhat Enterprise Linux 8.6 Ansible core 2.12.2 python 3.8.12 情報抽出が簡単なケース JSONの中身が下記のような出力になっているケースであれば、抽出方法は簡単です。(以下は出力サンプル)

                        Ansible PlaybookでのJMESPath利用サンプル - Qiita
                      • AWS のタグを jq, JMESPath, Jsonnet でいい感じに取り扱う話 - estie inside blog

                        estie SRE の sugitak です。今日はね、 JSON を扱っていこうと思います。 何の記事? 手元で bash や zsh を使っていると、環境変数ってこういう形ですよね。ペアで扱います。 Environment=production Product=estie ... DD_ENV=production ところが AWS はこういうふうに保持しています。これは人間の目に優しくないので、できれば手元と同じく Key=Value っぽい形で取り扱えたら嬉しいな。そのように思っているわけです。 [ { "Key": "Environment", "Value": "production" }, { "Key": "Product", "Value": "estie" }, ... { "Key": "DD_ENV", "Value": "production" } ] これを j

                          AWS のタグを jq, JMESPath, Jsonnet でいい感じに取り扱う話 - estie inside blog
                        • AWS Lambda Nodejsのバージョンが8から12に強制アップデートされたら Error: Cannot find module 'jmespath' と出る問題 - Qiita

                          AWS Lambda Nodejsのバージョンが8から12に強制アップデートされたら Error: Cannot find module 'jmespath' と出る問題Node.jslambda 要約 AWS Lambdaで利用するnodejsのバージョンが nodejs8 -> nodejs10以降のアップデートすると aws-sdkが組みこまれるようになるため node_modulesにaws-sdkを含んでいるとエラーになるので、取り除く必要がある 本文 nodejs8で書かれたAWS Lambdaスクリプトは非推奨となりました。 AWS Lambdaのnodejs10やnodejs12環境で同じスクリプトを実行すると、以下のようなエラーメッセージが表示される。 {"errorType":"Runtime.ImportModuleError","errorMessage":"Err

                            AWS Lambda Nodejsのバージョンが8から12に強制アップデートされたら Error: Cannot find module 'jmespath' と出る問題 - Qiita
                          1