4

我正在按照Cloud Data Fusion 示例教程中的说明进行操作,一切似乎都运行良好,直到我尝试在最后运行管道。根据说明为 Google 托管服务帐户设置 Cloud Data Fusion Service API 权限。管道预览功能没有任何问题。

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

   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”不是我的,但我不知道为什么管道启动代码试图在那里创建一个存储桶,它确实成功地在我的项目失败前。

我已经用两个单独的帐户尝试过这个,并且在两个地方都得到了相同的错误。我曾尝试将存储/管理员角色添加到各种服务帐户但无济于事,但那是在我意识到它试图完全访问不同的项目之前。

4

2 回答 2

9

我相信我能够重现这一点。发生的情况是 BigQuery Source 插件首先创建了一个临时工作的 GCS 存储桶来将数据导出到,我怀疑它默认尝试在 Dataset Project ID 中创建它,而不是应该在您自己的项目中创建它。

作为一种解决方法,在您的账户中创建一个 GCS 存储桶,然后在管道的 BigQuery 源配置中,将“临时存储桶名称”配置设置为“gs://<your-bucket-name>”

于 2019-07-03T01:19:20.990 回答
0

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

于 2019-06-29T16:45:10.407 回答