Это довольно широкий вопрос, поэтому я не удивлюсь, если за него проголосуют за закрытие. Тем не менее, я всегда буду идти № 2 (GCS -> CF -> Dataflow -> BigQuery
).
Помните, что с Cloud Funtions существует максимальное время выполнения. Если вы запускаете задание загрузки из облачной функции, вам нужно будет включить в него логику для опроса и проверки состояния (задания загрузки в BigQuery асинхронны). Если это не удастся, вам нужно будет справиться с этим. Но что, если он все еще работает, и вы достигли максимального выполнения своей облачной функции?
По крайней мере, используя Dataflow, у вас нет проблемы максимального времени выполнения, и вы можете просто перезапустить ваш конвейер, если он потерпит неудачу по какой-то временной причине, например проблемы с сетью.