我正在遵循Cloud Data Fusion sample tutorial中的说明,并且一切似乎都正常进行,直到我尝试在最后运行管道为止。根据说明为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”虽然不是我的一个,但我不知道为什么管道启动代码试图在此处创建一个存储桶,它确实成功创建了临时存储桶(一个称为df-xxx,一个称为dataproc-xxx )在失败之前。
我用两个单独的帐户尝试过此操作,但在两个地方都遇到相同的错误。我曾尝试将存储/管理员角色添加到各种服务帐户,但无济于事,但这是在我意识到它试图完全访问另一个项目之前。
答案 0 :(得分:8)
我相信我能够重现这一点。发生的情况是,BigQuery Source插件首先creates一个临时的GCS存储桶来将数据导出到其中,我怀疑它是默认尝试在Dataset Project ID中创建它,而不是您自己的项目
作为一种解决方法,在您的帐户中创建一个GCS存储桶,然后在管道的BigQuery Source配置中,将“临时存储桶名称”配置设置为“ gs:// <您的存储桶名称>” >
答案 1 :(得分:0)
创建实例后,您缺少设置权限的步骤。 https://cloud.google.com/data-fusion/docs/how-to/create-instance
页中提供了授予服务帐户权限的说明。