Digdag API経由でworkflowを実行


Rubyのサンプルコードですが、API経由でworkflowを実行するスクリプトをサンプルです。
ドキュメントに書かれている内容ではないので、今後変更される可能性があるのでご注意ください。

require 'uri'
require 'net/http'
require 'json'
require 'time'
# workflow の 情報を取得
uri = URI('http://127.0.0.1:65432/api/workflows')
req = Net::HTTP::Get.new uri, initheader = { 'Content-Type' => 'application/json' }
res = Net::HTTP.start(uri.host, uri.port, use_ssl: false) do |http|
http.request req
end
body = JSON.parse res.body
puts body
# 対象のworkflow を抽出
workflow = body['workflows'].find { |i| i['name'] == 'digdag-sample' }
# Workflow の実行を依頼
uri = URI('http://127.0.0.1:65432/api/attempts')
req = Net::HTTP::Put.new uri, initheader = { 'Content-Type' => 'application/json' }
req.body = { workflowId: workflow['id'], sessionTime: Time.now.iso8601, params: {} }.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: false) do |http|
http.request req
end
body = JSON.parse res.body
puts body

逆にいうとAPIはインターネットに公開してしまうと、実行し放題、情報見放題なのでくれぐれも気を付けてください。

📚 おすすめの書籍