Workflows
httpベースのAPIのワークフローをyamlで定義して実行できるくんっぽい、最近betaが出たっぽい
とりあえずquick startをやる
公式ドキュメント通りにyaml書いて、gcloudコマンドでデプロイする。
それからgcloudコマンドで実行する。
と思ったら普通に失敗した。
公式ドキュメント中のyamlだと http://worldclockapi.com という時間情報を取得するAPIを使うのだが、そのまま叩くと403が返ってくる。これはちょっと……。
ということで代わりになりそうな http://worldtimeapi.org/ というのを見つけたのでこれを使ってみる。
少し修正したquick start
以下の様なファイルを作成
- getCurrentTime:
call: http.get
args:
url: http://worldtimeapi.org/api/timezone/Asia/Tokyo # ここを修正
result: currentTime
- readWikipedia:
call: http.get
args:
url: https://en.wikipedia.org/w/api.php
query:
action: opensearch
search: ${currentTime.body.day_of_week} # レスポンスのフォーマットが異なるためここも修正
result: wikiResult
- returnResult:
return: ${wikiResult.body[1]}
以下コマンドでワークフローをデプロイする
公式だとサービスアカウントを指定していたが、無しでも可能ではある模様
gcloud beta workflows deploy myFirstWorkflow --source=myFirstWorkflow.yaml
以下コマンドでワークフローを実行する
非同期で実行されるため、以下コマンド実行後に表示されるコマンドを叩くか、gcp console画面を見れば実行結果の確認が可能
gcloud beta workflows execute myFirstWorkflow
これで成功したら完了、作成したワークフローをもう使わないのであれば削除しておく
なお5,000 steps以上から課金が発生するため注意
感想
- 良さそうなとこ
- 機能しぼってるのか、まだbetaだからなのかわからないけど簡単
- 単一のyamlにワークフローをまとめることができるので、どういう順序でジョブが実行されるかの確認がしやすい
- 画面からワークフロー単位でエラー詳細、ログが見れる
- gcloudコマンド、API経由でワークフローを実行できるのでGAE, GCEとか色んなところから呼べそう
- 不満なとこ
- 途中で失敗したらそれで終わり、リトライ機構とか、途中から再開は無さそう?
- ワークフローのどこまで完了したか、的なグラフィカルなUIは無い、yamlしか見れない
- 定期実行する場合は単体では無理で、Cloud Schedulerとか組み合わせないとダメそう
- エミュレータは無く、ローカルでの動作確認とかは出来無さそう
まとめ
簡易的、小規模のプロジェクトなら試しに使ってみても良いかもだけど、ちゃんとやるなら他のワークフローツール使った方が良さそうな感じに見えました (他をそんなに知らない)
今後に期待