swi*_*cks 6 google-cloud-storage google-cloud-platform google-cloud-build
通过提交 Cloud Build 运行时,gcloud builds submit ...我收到禁止错误,指出我无权访问存储桶。提交 Cloud Build 通常会涉及到存储桶的两个地方:暂存存储桶和日志存储桶。我将每个存储桶指定为我也有权访问的存储桶(相同的存储桶,只是不同的文件夹),因此命令如下所示:
gcloud builds submit
--gcs-log-dir $my_bucket/logs
--gcs-source-staging-dir $my_bucket/source
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
ERROR: (gcloud.builds.submit) 403: The user is forbidden from accessing the bucket [$my_bucket]: Please check your organization's policy.
Run Code Online (Sandbox Code Playgroud)
--log-http我用and重新运行--verbosity debug,扩展的错误显示了真正的原因:
DEBUG: https://storageapis.google.com "GET /storage/v1/b/$my_bucket?alt=json"
...
{
"error": {
"code": 403,
"message": "$user does not have serviceusage.services.use access to the Google Cloud Project."
}
}
Run Code Online (Sandbox Code Playgroud)
我做了一些挖掘,发现在向请求提供配额/计费项目时会出现此错误(除了没有服务使用者角色之外)。我在检查请求的 HTTP 标头(其中包括X-Goog-User-Project: $my_project.
奇怪的是,我可以访问此存储桶中的对象,并且可以gsutil很好地运行 /HTTP 命令,这些命令使用相同的 API 端点,区别gsutil在于请求中不包含该用户项目。
有没有办法提交不包含该项目的构建,这样我就不需要serviceusage.services.use许可?我尝试在 gcloud 配置中取消设置该项目,但它提示我需要设置它或使用--project标志传递它。
编辑:存储桶也没有启用“请求者付费”,这就是 gsutil 和客户端库工作正常的原因
小智 6
您遇到此错误的唯一原因是您必须启用计费才能构建存储桶。
当我尝试本教程时,我通过单击仪表板左侧“入门”下的“创建云存储桶”来启用它。只需按照说明操作,您就会看到“启用计费”。启用计费后,您无需完成教程。回到你的工作并运行
$ gcloud build submit
完成了!
小智 2
我不确定您是否可以在不指定项目的情况下运行云构建。据我所知,gcloud命令在项目中运行,所以它是需要的。
如果您想使用不同的服务帐户,您可以使用服务帐户模拟添加--impersonate-service-account标志。
对于此 gcloud 调用,所有 API 请求都将作为给定的服务帐户而不是当前选择的帐户发出。
| 归档时间: |
|
| 查看次数: |
12300 次 |
| 最近记录: |