在 Google 云数据流服务上执行作业需要对 Google 云存储的什么访问权限?
What access to Google Cloud Storage is required to execute jobs on the Google Cloud Dataflow Service?
下面的答案包括对以下常见问题的回答。
- 为什么需要 Cloud Storage 才能在 Dataflow 上执行作业
服务?
- 我可以使用对 Cloud Storage 的只读访问权限执行作业吗?
每个 Dataflow 作业都将 Cloud Storage 用于两个目的:
- 暂存位置 是 Dataflow SDK 上传执行作业所需的 jar 的位置。 Dataflow 服务需要 read 访问暂存位置。
SDK 需要写入 登台权限才能上传包含作业代码的 jar。但是,在所有 jar 都已以当前形式暂存的情况下,SDK 可以使用 只读 访问权限执行作业。
请注意,暂存文件在作业中持续存在。
- 临时位置 被数据流服务用于作业执行期间的临时存储。该服务需要写入临时位置。
作业成功时删除临时存储。
临时位置和临时位置都使用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
下面的答案包括对以下常见问题的回答。
- 为什么需要 Cloud Storage 才能在 Dataflow 上执行作业 服务?
- 我可以使用对 Cloud Storage 的只读访问权限执行作业吗?
每个 Dataflow 作业都将 Cloud Storage 用于两个目的:
- 暂存位置 是 Dataflow SDK 上传执行作业所需的 jar 的位置。 Dataflow 服务需要 read 访问暂存位置。
SDK 需要写入 登台权限才能上传包含作业代码的 jar。但是,在所有 jar 都已以当前形式暂存的情况下,SDK 可以使用 只读 访问权限执行作业。
请注意,暂存文件在作业中持续存在。
- 临时位置 被数据流服务用于作业执行期间的临时存储。该服务需要写入临时位置。
作业成功时删除临时存储。
临时位置和临时位置都使用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