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