在 App 引擎中的 Google 存储对象上创建 signedUrl 时访问被拒绝

Access Denied when creating signedUrl on Google Storage Object in App engine

确切文本:"Access Denied. Caller does not have storage.objects.get access to object on (url)"

我目前在 google 服务上有 2 个项目。一个是 Android/iOS 应用程序的资源,它将图像上传到 google 云存储(更多是 firebase 存储)。另一个是 node.js 服务器,它检测图像何时上传并向该图像发送带有 signedUrl 的电子邮件。

node.js 服务器具有以下 google 存储设置和调用的函数:

var storage = require("@google-cloud/storage")({
   keyFilename: "google_secret.json",
   projectId: 'xxxxxxxxxxx' 
});

function getImageFromGcloud(x, y, time, date_string) {
    var bucket = storage.bucket('bucket-name');
    var storage_ref = 'Incomplete_Scans/' + date_string + "/" x + "_" + y + "_" + time + ".jpeg";

    bucket.file(storage_ref).getSignedUrl({
         action: 'read',
         expires: '03-17-2025'
    }, function(err, url) {
         if (err){
             console.error(err);
             return;
         }
         console.log("Sent email");
    });
}

getSignedUrl 提供的 link 曾经有效,单击它会打开一个新标签页,其中包含图像。然而直到最近,它才刚刚停止。也许它与权限有关,但是我所做的一切都不起作用。有任何想法吗?

先谢谢你。

如果您收到的是 403(权限被拒绝)而不是 401(身份验证无效),则可能是您正在签署请求的服务帐户由于某种原因失去了对对象的访问权限。添加对该服务帐户的读取权限。