Google Cloud Data Fusion 的权限问题

Permissions Issue with Google Cloud Data Fusion

我正在按照 Cloud Data Fusion sample tutorial 中的说明进行操作,一切似乎都运行良好,直到我尝试 运行 管道就在最后。已按照说明为 Google 托管服务帐户设置云数据融合服务 API 权限。管道预览功能可以正常工作。

但是,当我部署和 运行 管道时,它会在几分钟后失败。在状态从配置更改为 运行ning 后不久,管道停止并出现以下权限错误:

   com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
    {
      "code" : 403,
      "errors" : [ {
        "domain" : "global",
        "message" : "xxxxxxxxxxx-compute@developer.gserviceaccount.com does not have storage.buckets.create access to project X.",
        "reason" : "forbidden"
      } ],
      "message" : "xxxxxxxxxxx-compute@developer.gserviceaccount.com does not have storage.buckets.create access to project X."
    }

xxxxxxxxxxx-compute@developer.gserviceaccount.com 是我项目的默认 Compute Engine 服务帐户。

"Project X" 不是我的一个,我不知道为什么管道启动代码试图在那里创建一个桶,它确实成功地创建了临时桶(一个叫做 df-xxx 和一个叫做dataproc-xxx) 在我的项目失败之前。

我已经用两个不同的帐户尝试过,但在两个地方都出现了同样的错误。我曾尝试向各种服务帐户添加 storage/admin 角色但无济于事,但那是在我意识到它正在尝试完全访问另一个项目之前。

您在创建实例后缺少设置权限的步骤。授予您的服务帐户正确权限的说明在此页面 https://cloud.google.com/data-fusion/docs/how-to/create-instance

我相信我能够重现这一点。发生的事情是 BigQuery Source 插件首先 creates 一个临时工作的 GCS 存储桶,用于将数据导出到,我怀疑它试图默认在数据集项目 ID 中创建它,而不是你自己的项目,因为它应该.

作为解决方法,在您的帐户中创建一个 GCS 存储桶,然后在管道的 BigQuery 源配置中,将 "Temporary Bucket Name" 配置设置为 "gs://<your-bucket-name>"