繁体   English   中英

尝试在 Cloud Run 中使用 Google Cloud Storage 时调用者没有权限

[英]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 服务账户设置了以下权限:

  • 云 SQL 客户端- 也许相关? 我有 Cloud SQL 成功地在部署的环境中工作。
  • 服务帐户用户- 需要用作服务帐户?
  • 存储 Object 创建者- 我只需要从这个项目创建签名上传 url 的能力。

我还通过控制台将提到的服务帐户分配给 Cloud Run 实例。

只是为了确认,该应用程序使用服务帐户 JSON 密钥在本地运行 100% 正确,只是在 Google Cloud 中运行时无法正常工作。

我设法解决了这个问题。 看起来当部署到 Cloud Run 中时,它还需要额外的权限“服务帐户令牌创建者”来运行getSignedUrl 由于某种原因,在本地不需要此角色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM