【问题标题】:Permissions error with Apache Beam example on Google DataflowGoogle Dataflow 上的 Apache Beam 示例的权限错误
【发布时间】:2017-10-26 06:15:14
【问题描述】:

我在将 Apache Beam 示例从本地计算机提交到我们的云平台时遇到问题。

使用gcloud auth list 我可以看到正确的帐户当前处于活动状态。我可以使用gsutil 和Web 客户端与文件系统进行交互。我可以使用 cloud shell 通过 python REPL 运行管道。

但是当我尝试运行 python wordcount 示例时,我收到以下错误:

IOError: Could not upload to GCS path gs://my_bucket/tmp: access denied.
Please verify that credentials are valid and that you have write access 
to the specified path.

我在凭据方面有什么遗漏吗?

【问题讨论】:

  • 您是否有一个名为my_bucket 的存储桶 包含文件夹或文件tmp
  • my_bucket 存在,目录tmp 也存在
  • 这可能与授予 VM 的访问范围有关。请看stackoverflow.com/questions/27275063/…

标签: python google-cloud-platform google-cloud-dataflow apache-beam


【解决方案1】:

这是我在这个问题上花了整个上午后的两分钱。

您应该确保在本地计算机上使用 gcloud 登录,但是,请注意从 gcloud auth login 返回的警告消息:

WARNING: `gcloud auth login` no longer writes application default credentials.

python 代码需要这些凭据才能正确识别您的凭据。

解决方案相当简单,只需使用: gcloud auth application-default login

这将在 ~/.config/gcloud/application_default_credentials.json 下写入一个凭证文件,用于在本地开发环境中进行身份验证。

【讨论】:

  • 我怎么会错过你的回答。 我确认这是解决方案。它对我有用。 啊,我花了一个下午自己寻找它。
  • 在我的 CLI 版本中,gcloud auth login 不再输出警告信息,因此很难找到这个解决方案。另见:stackoverflow.com/questions/53306131/….
  • 在这个问题上花了一些时间,很高兴找到这个答案
【解决方案2】:

您需要为您的项目创建一个 GCS 存储桶和文件夹,然后将其指定为管道参数,而不是使用默认值。

https://cloud.google.com/storage/docs/creating-buckets

【讨论】:

  • bucket和目录存在。然后将此存储桶用于--output--temp-location 管道参数。运行 wordcount 示例时是否缺少另一个参数?
  • 您使用的是对存储桶有权限的项目吗?拥有存储桶的项目是同一个项目吗?
  • 您可以在 Storage 部分浏览到 GCS 文件夹。选择您正在使用的项目,您应该能够看到项目中可见的所有存储桶console.cloud.google.com
  • 可以看到bucket,可以创建和删除目录,可以上传文件到bucket。这是在登录到与gcloud auth list 看到的同一用户时。
  • 凭证究竟是如何工作的? $GOOGLE_APPLICATION_CREDENTIALS 环境变量与它有什么关系还是全部通过gcloud 命令处理?
【解决方案3】:

创建存储桶后解决了同样的错误。
gsutil mb gs://<bucket-name-from-the-error>/

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,它引发了 IO 错误。在这里帮助我的事情是(不按顺序):

    1. 检查存储桶的名称。这一步对我帮助很大。 存储桶名称是全局的。如果您在访问您的存储桶时在存储桶名称中出错,那么您可能正在访问您尚未创建且您无权访问的存储桶。

    2. 查看您填写的服务账号:

      • export GOOGLE_CLOUD_PROJECT= yourkeyfile.json

    为您插入的密钥文件激活服务帐户 -

    gcloud auth activate-service-account --key-file=your-key-file.json 
    

    此外,列出可用的身份验证帐户也可能对您有所帮助。

    gcloud auth list
    

    【讨论】:

      【解决方案5】:

      一种解决方案可能适合您。它对我有用。

      在云外壳窗口中,单击“启动代码编辑器”(铅笔图标)。编辑器可以在 Chrome 中工作(不确定 Firefox),但在 Brave 浏览器中不工作。

      现在,浏览到您的代码文件 [在 GCP 上启动的代码编辑器中](.py 或 .java)并找到预定义的 PROJECT 和 BUCKET 名称,并将名称替换为您自己的项目和存储桶名称并保存.

      现在执行文件,它现在应该可以工作了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-18
        • 2018-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-15
        • 2021-05-10
        • 1970-01-01
        相关资源
        最近更新 更多