Google Cloud Storage:输出路径不存在或不可写

Ros*_*shP 6 permissions jenkins google-cloud-storage gsutil google-cloud-dataflow

我正在尝试从google cloud site遵循这个简单的数据流示例。

我已经成功安装了数据流管道插件和 gcloud SDK(以及 Python 2.7)。我还在谷歌云上设置了一个项目并启用了计费和所有必要的 API - 如上面的说明中所述。

但是,当我转到运行配置并更改管道参数选项卡以选择 BlockingDataflowPipelineRunner 时,在输入创建存储桶并设置我的项目 ID 后,点击运行给我:

Caused by: java.lang.IllegalArgumentException: Output path does not exist or is not writeable: gs://my-cloud-dataflow-bucket
    at com.google.cloud.dataflow.sdk.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:146)
    at com.google.cloud.dataflow.sdk.util.DataflowPathValidator.verifyPathIsAccessible(DataflowPathValidator.java:79)
    at com.google.cloud.dataflow.sdk.util.DataflowPathValidator.validateOutputFilePrefixSupported(DataflowPathValidator.java:62)
    at com.google.cloud.dataflow.sdk.runners.DataflowPipelineRunner.fromOptions(DataflowPipelineRunner.java:255)
    at com.google.cloud.dataflow.sdk.runners.BlockingDataflowPipelineRunner.fromOptions(BlockingDataflowPipelineRunner.java:82)
    ... 9 more
Run Code Online (Sandbox Code Playgroud)

我已经使用我的终端执行“gcloud auth login”,我在浏览器中看到我已成功登录。

我真的不确定我在这里做错了什么。谁能确认这是否是使用数据流管道和谷歌存储桶的已知问题?

谢谢!

小智 7

我在 GCS 存储桶权限方面遇到了类似的问题,但我当然有写权限并且可以将文件上传到存储桶中。对我来说解决这个问题的是为我提交管道的项目获取角色/dataflow.admin权限。


Dav*_*aci 3

将管道提交到 Google Cloud Dataflow Service 时,本地计算机上的管道运行程序会将在云中执行所需的文件上传到 Google Cloud Storage 中的“暂存位置”。

本地计算机上的管道运行程序似乎无法将所需的文件写入提供的暂存位置 ( gs://my-cloud-dataflow-bucket)。可能是该位置不存在,或者它属于与您进行身份验证时不同的 GCP 项目,或者在该存储桶上设置了更具体的权限,等等。

gsutil您也可以通过命令行开始调试问题。例如,尝试运行gsutil ls gs://my-cloud-dataflow-bucket以尝试列出存储桶的内容。然后,尝试通过命令上传gsutil cp。这可能会产生足够的信息来找出您面临的问题的根本原因。

  • 你是如何解决这个问题的?我遇到了同样的问题,我可以在 CLI 上使用“gsutil cp”,但在 Java 代码端出现错误。谢谢。 (2认同)