Joh*_*ing 4 node.js google-cloud-storage google-cloud-platform google-cloud-iam google-cloud-run
我正在尝试使用 Cloud Storage 在 Google Cloud Run 上设置 Node 项目。使用创建的服务帐户时遇到身份验证问题。
创建服务帐户时,我确实成功下载了 JSON 令牌,并在本地开发环境中正确运行了所有内容。
问题是当我将应用程序成功部署到 Cloud Run 时,我收到以下错误:
Error: The caller does not have permission
当我尝试获取用于将文件上传到存储桶的签名 URL 时会发生这种情况。
我像这样创建存储客户端:
const { Storage } = require("@google-cloud/storage");
const storage = new Storage();
Run Code Online (Sandbox Code Playgroud)
...在我的脚本中,调用是这样的:
const [url] = await storage
.bucket(bucketName)
.file(filename)
.getSignedUrl(options);
Run Code Online (Sandbox Code Playgroud)
我已经为 IAM 服务账户设置了以下权限:
我还通过控制台将提到的服务帐户分配给了 Cloud Run 实例。
只是为了确认,该应用程序使用服务帐户 JSON 密钥在本地 100% 正确运行,只是在 Google Cloud 中运行时无法正常工作。
Joh*_*ing 11
我设法解决了这个问题。看起来当部署到 Cloud Run 时,它还需要额外的权限“服务帐户令牌创建者”才能运行getSignedUrl. 由于某种原因,本地不需要此角色。
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |