我似乎无法让IAM角色为Google Cloud Storage工作。
无论我尝试什么,都会收到403错误消息: [MY_SERVICE_ACCOUNT] .iam.gserviceaccount.com无法访问Google Cloud Storage存储桶的storage.objects.list 。 .get方法也是如此。
在另一篇文章中,我看到某人的解决方法是删除其服务帐户并重新创建一个,因此我尝试了此操作:
在Firebase控制台上,我可以看到该服务帐户已删除,因此我从那里创建了一个新帐户。 然后在google-cloud控制台上:
总而言之,我现在有一个具有以下角色的服务帐户:
我已将我的存储桶的访问控制设置为“统一”,并确保我的服务访问位于角色为的成员中。
在firebase控制台中,我将原始规则设置为:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}
我像这样使用Node包:
var admin = require("firebase-admin");
var serviceAccount = require('./my-sa-config.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "xxx.appspot.com"
});
const storage = admin.storage();
const bucket = storage.bucket('users');
bucket.getFiles()
.then((data) => {
console.log(data);
})
.catch((err) => console.error(err));
如果有人对它的来源有任何暗示,我将非常感谢您的帮助。
谢谢
答案 0 :(得分:2)
好吧,如果有人犯了与我相同的错误,我将发布答案。
我使用此行是因为我想从默认存储桶访问文件夹“用户”。
const bucket = storage.bucket('users');
该参数用于指定其他存储桶,而不是文件夹。好吧,我没有一个名为“用户”的存储桶,因此它触发了403禁止访问错误,误导了我以为这是一个角色问题。