![](/img/trans.png)
[英]Error: Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object
[英]The caller does not have permission when attempting to use Google Cloud Storage within Cloud Run
我正在尝试使用 Cloud Storage 在 Google Cloud Run 上设置节点项目。 使用创建的服务帐户时遇到身份验证问题。
创建服务帐户时,我确实成功下载了 JSON 令牌,并在我的本地开发环境中正常运行。
问题是当我将应用程序成功部署到 Cloud Run 时,我收到以下错误: Error: The caller does not have permission
当我尝试获取签名的 URL 以将文件上传到存储桶时,会发生这种情况。
我这样创建存储客户端:
const { Storage } = require("@google-cloud/storage");
const storage = new Storage();
...在我的脚本中,调用如下:
const [url] = await storage
.bucket(bucketName)
.file(filename)
.getSignedUrl(options);
我为 IAM 服务账户设置了以下权限:
我还通过控制台将提到的服务帐户分配给 Cloud Run 实例。
只是为了确认,该应用程序使用服务帐户 JSON 密钥在本地运行 100% 正确,只是在 Google Cloud 中运行时无法正常工作。
我设法解决了这个问题。 看起来当部署到 Cloud Run 中时,它还需要额外的权限“服务帐户令牌创建者”来运行getSignedUrl
。 由于某种原因,在本地不需要此角色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.