2017-07-06 7 views
0

私の前に述べたようにpost私はCloud FunctionからDataflowに単一のファイル名を渡そうとしていました。一度に複数のファイルをGCSバケットにアップロードした場合はどうなりますか?単一のクラウドファンクションをキャプチャし、すべてのファイル名をevent.dataを使用して送信することは可能ですか?それ以外の方法でなければ、データフロープログラムでこれらのファイル名を取得できますか? Cloud関数からDataflowに複数のファイル名を渡す

は、ファイル名のリストを取ったカスタムソース(またはconcatenedファイル名などした単一の文字列)、その後、使用を作成する必要がありますあなたは

答えて

0

単一のパイプラインでこれを実行するには感謝します適切な実行時PipelineOptionをソースとして使用します。

0

このアプローチの課題は、クライアント(おそらく)がそこにいくつのファイルがあるのか​​、そしてそれらがすべてアップロードを完了したかを知っていることだけです。クラウド機能に送信されるイベントは、少なくとも1回(複数のイベントを取得する場合があります)となる可能性があります。クラウドファンクションが予期していたファイルの数を何とか知っていたとしても、クラウドストレージをチェックする競合状態のために、1つのクラウドファンクションでデータフローがトリガされることを保証することは難しいかもしれません(例えば、 )。クラウドストレージ(AFAIK)には、単一の関数呼び出し(バッチAPIがありますが、イベントは単一の "オブジェクト"変更から放出される)になる「バッチ」セマンティックはありません。 -least-Nイベント)。

すべてのファイルがアップロードされると、クラウド機能またはデータフローを手動で手動でトリガーする方がよい場合があります。クラウド機能をHTTP経由で直接起動することもできますし、Cloud Storageにセンチネル値を書き込んで機能をトリガーすることもできます。

代わりに、ファイルをクライアントからの1回のアップロード(例:tar)にパッケージ化することもできますが、これがあなたのユースケースにとって意味をなさない理由があるかもしれません。

関連する問題