Technical Blog テクニカルブログ
  1. HOME
  2. テクニカルブログ
  3. Google workflowsでクエリパラメータを指定する

Google workflowsでクエリパラメータを指定する

投稿者:熊谷 賢二

Google workflowsでクエリパラメータを指定する

きっかけ

こんにちは、暑さに耐えしのぐ、熊谷です。
暑さに耐えしのぎながら、Google workflowsと戯れています。
Cloud FunctionsとかにコールするときGetメソッドでクエリパラメータにフローで得た戻り値等の変数を指定したいのですが、それっぽいサンプルがなかったのでまとめます。

workflowでGetメソッド(クエリパラメータなし)

パラメータなしで実行する場合は下記の感じになります。

main:
    steps:
    - call-functions:
        call: http.get
        args:
            url: https://local-and-pj-name.cloudfunctions.net/function-name
        result: get_res
    - returnOutput:
            return: ${get_res}

workflowでGetメソッド(クエリパラメータなし)

クエリパラメータとして変数を設定するときは、URLを含めて、${}で括ります。URLをダブルコートで括り、変数を文字列として結合します。
今回はの例はクエリパラメータの変数としてmessageを送り、argsにはhogeを格納する想定です。
コンソールからのworkflowの引数として {“hoge”: “foo”} を渡すイメージです。

main:
    params: [args]
    steps:
    - call-functions:
        call: http.get
        args:
            url: ${"https://local-and-pj-name.cloudfunctions.net/function-name?message=" + args.hoge}
        result: get_res
    - returnOutput:
            return: ${get_res}

戻り値を活用する

resultで定義されている戻り値は、bodyの他にもheader情報が含まれています。
bodyだけ使いたいときは、.bodyで取得することができます。
下記の例は、戻り値を再度 getメソッドの引数にしていしている例です。

call-functions1の戻り値のres1の結果をcall-functions2のクエリパラメータで res1.bodyとしています。

main:
    params: [args]
    steps:
    - call-functions1:
        call: http.get
        args:
            url: ${"https://local-and-pj-name.cloudfunctions.net/function-name?message=" + args.hoge}
        result: res1
    - call-functions2:
        call: http.get
        args:
            url: ${"https://local-and-pj-name.cloudfunctions.net/function-name?message=" + res1.body}
        result: res2
    - returnOutput:
            return: ${res2.body}

限定公開のCloud Functionsをコールする

下記のように、authでOIDCとすればサービスアカウントさえ正しければ実施できるのですが、認証でコケてうまくいかないときがあります。(原因は不明

    - call-functions1:
        call: http.get
        args:
            url: https://local-and-pj-name.cloudfunctions.net/function-name
            auth:
                type: OIDC
        result: res1
ページのトップへ