gpt4 book ai didi

node.js - 尝试在 Cloud Run 中使用 Google Cloud Storage 时调用方没有权限

转载 作者:行者123 更新时间:2023-12-03 12:16:28 24 4
gpt4 key购买 nike

我正在尝试使用 Cloud Storage 在 Google Cloud Run 上设置 Node 项目。使用创建的服务帐户时遇到身份验证问题。

创建服务帐户时,我确实成功下载了 JSON token ,并在本地开发环境中正确运行了所有内容。

问题是当我将应用程序成功部署到 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 在已部署的环境中成功运行。
  • 服务帐号用户 - 需要用作服务帐户吗?
  • 存储对象创建器 - 我只需要能够从这个项目创建签名的上传网址。

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

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

    最佳答案

    我设法解决了这个问题。看起来当部署到 Cloud Run 时,它还需要额外的权限“Service Account Token Creator”才能运行 getSignedUrl .由于某种原因,本地不需要此角色。

    关于node.js - 尝试在 Cloud Run 中使用 Google Cloud Storage 时调用方没有权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62479994/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com