Моя цель - создать механизм, который при загрузке нового файла в облачное хранилище запускает облачную функцию. В конце концов, эта функция Cloud вызовет задание Cloud Dataflow.
У меня есть ограничение, что задание Cloud Dataflow должно быть написано на Go, а Cloud Function должно быть написано на Python.
Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу вызвать задание Cloud Dataflow из функции Cloud.
Проблема облачного потока данных, написанного на Go, заключается в том, что в Apache Beam Go SDK не определена переменная template-location
. Вот почему я не могу создавать шаблоны потока данных. И, поскольку нет шаблонов потоков данных, единственный способ, которым я могу вызывать задание Cloud Dataflow из облачной функции, - это написание задания Python, которое вызывает скрипт bash, который запускает задание потока данных.
Сценарий bash выглядит так:
go run wordcount.go \
--runner dataflow \
--input gs://dataflow-samples/shakespeare/kinglear.txt \
--output gs://${BUCKET?}/counts \
--project ${PROJECT?} \
--temp_location gs://${BUCKET?}/tmp/ \
--staging_location gs://${BUCKET?}/binaries/ \
--worker_harness_container_image=apache-docker-beam-snapshots-docker.bintray.io/beam/go:20180515
Но вышеуказанный механизм не может создать новое задание потока данных, и это кажется громоздким.
Есть ли лучший способ достичь моей цели? А что я делаю не так на вышеуказанном механизме?