在 Google 云数据流服务上执行作业需要对 Google 云存储的什么访问权限?

What access to Google Cloud Storage is required to execute jobs on the Google Cloud Dataflow Service?

下面的答案包括对以下常见问题的回答。

每个 Dataflow 作业都将 Cloud Storage 用于两个目的:

  1. 暂存位置 是 Dataflow SDK 上传执行作业所需的 jar 的位置。 Dataflow 服务需要 read 访问暂存位置。

SDK 需要写入 登台权限才能上传包含作业代码的 jar。但是,在所有 jar 都已以当前形式暂存的情况下,SDK 可以使用 只读 访问权限执行作业。

请注意,暂存文件在作业中持续存在。

  1. 临时位置 被数据流服务用于作业执行期间的临时存储。该服务需要写入临时位置。

作业成功时删除临时存储。

临时位置临时位置都使用DataflowPipelineOptions控制。请注意,如果仅指定这两个位置之一,则 Dataflow 将对两者使用相同的路径。

现在,假设您之前已将所有 jar 文件上传到暂存位置,那么只要指定一个单独的可写临时位置,对暂存位置具有只读访问权限的用户就应该能够执行作业。以下示例命令将 运行 WordCount:

java -cp your_bundled_jar com.google.cloud.dataflow.examples.WordCount 
    --project=PROJECT --runner=BlockingDataflowPipelineRunner
    --stagingLocation=gs://READONLY-BUCKET/staging
    --tempLocation=gs:/WRITABLE-BUCKET/temp
    --output=gs://WRITABLE-BUCKET/output