LoginSignup
9
5

More than 3 years have passed since last update.

GCP Workflowsを試す

Last updated at Posted at 2020-08-27

Workflows

httpベースのAPIのワークフローをyamlで定義して実行できるくんっぽい、最近betaが出たっぽい

とりあえずquick startをやる

公式ドキュメント通りにyaml書いて、gcloudコマンドでデプロイする。
それからgcloudコマンドで実行する。

と思ったら普通に失敗した。
公式ドキュメント中のyamlだと http://worldclockapi.com という時間情報を取得するAPIを使うのだが、そのまま叩くと403が返ってくる。これはちょっと……。
ということで代わりになりそうな http://worldtimeapi.org/ というのを見つけたのでこれを使ってみる。

少し修正したquick start

以下の様なファイルを作成

myFirstWorkflow.yaml
- 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とか組み合わせないとダメそう
    • エミュレータは無く、ローカルでの動作確認とかは出来無さそう

まとめ

簡易的、小規模のプロジェクトなら試しに使ってみても良いかもだけど、ちゃんとやるなら他のワークフローツール使った方が良さそうな感じに見えました (他をそんなに知らない)
今後に期待

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5