google-cloud-platform - Google Cloud Data Fusion 的权限问题
问题描述
我正在按照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”不是我的,但我不知道为什么管道启动代码试图在那里创建一个存储桶,它确实成功地在我的项目失败前。
我已经用两个单独的帐户尝试过这个,并且在两个地方都得到了相同的错误。我曾尝试将存储/管理员角色添加到各种服务帐户但无济于事,但那是在我意识到它试图完全访问不同的项目之前。
解决方案
我相信我能够重现这一点。发生的情况是 BigQuery Source 插件首先创建了一个临时工作的 GCS 存储桶来将数据导出到,我怀疑它默认尝试在 Dataset Project ID 中创建它,而不是应该在您自己的项目中创建它。
作为一种解决方法,在您的账户中创建一个 GCS 存储桶,然后在管道的 BigQuery 源配置中,将“临时存储桶名称”配置设置为“gs://<your-bucket-name>”
推荐阅读
- c++ - C++ 错误消息“我未在此范围内声明”
- c# - C# 从和返回到 Unix 时间戳
- postgresql - postgresql:显示客户端(不是服务器)时区
- laravel - 使用 Laravel Jetstream/Fortify 重新验证用户
- r - 有条件地删除每列的值,但使用循环将每列保留为新数据框
- windows - 无法将应用程序固定到 Windows 10 任务栏
- html - Safari 上的图像被扭曲了
- android - 使用 mutableStateOf(mutableMapOf) 更新 LazyColumn 的正确方法
()) 来自 ViewModel 的变量 - java - 排序数组中的重复值改变了值
- python - 相对路径调用不起作用