无法将 Firebase Cloud Storage Function 范围限定为本地模拟器上的特定存储桶

Posted

技术标签:

【中文标题】无法将 Firebase Cloud Storage Function 范围限定为本地模拟器上的特定存储桶【英文标题】:Cannot scope Firebase Cloud Storage Function to a specific bucket on the local emulator 【发布时间】:2022-01-10 04:50:02 【问题描述】:

我正在尝试使用本地 Firebase 模拟器测试 Firebase Cloud Storage 触发的云功能。此函数的部分要求是它的范围为特定存储桶(即不是默认存储桶)。然而,尽管在 Storage Emulator UI 中创建了这个额外的存储桶,每当我将文件上传到 any 存储桶(不仅仅是作用域的存储桶)时,云功能都会运行...

有人有这方面的经验吗?或者本地模拟器根本不支持范围存储功能。

【问题讨论】:

您在创建存储桶时是否有任何文档或指南?这样我们就可以检查您是否遗漏了其中的一部分,并且其他社区成员可以为您提供帮助。 我只是在本地模拟器中新建了一个bucket 【参考方案1】:

根据documentation for triggering Cloud Functions from Storage:

使用functions.storage 创建一个处理云存储事件的函数:

functions.storage.bucket('bucketName').object() 监听特定存储桶上的对象变化。

或者本地模拟器根本不支持范围存储功能。

也试过这个,得到所有函数的回调,不管桶是什么,并且能够重现这个问题。截至目前,Cloud Storage 模拟器目前不支持任何 bucket-level 配置,包括存储类、存储桶级 CORS 配置、标签或保留策略。 Firebase 打算随着时间的推移改进这种支持。

还有一个有用的相关 SO 问题可以为您提供有关此问题的更多详细信息:

    Can I run Firebase Storage cloud functions locally? Firebase how to see Cloud Storage triggers on local

您也可以创建功能请求,这里是link,您可以在其中提交您的功能请求。

【讨论】:

是的,我已经在 Firebase Tools github repo 上发现并报告了这一点。有一个出色的 PR 可以解决这个问题:github.com/firebase/firebase-tools/issues/3932。

以上是关于无法将 Firebase Cloud Storage Function 范围限定为本地模拟器上的特定存储桶的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Build - firebase 部署错误:“公共目录 'dist/browser' 不存在,无法将托管部署到站点 PROJECT-ID”

Firebase Cloud Function Data 无法编码 BigInt

Expo + firebase@9.0.1/9.0.0: @firebase/firestore:, Firestore (9.0.0): 无法到达 Cloud Firestore 后端

无法向 Firebase Cloud Messaging 发送 iOS CriticalAlert

@firebase/firestore:Firestore (8.6.2):无法访问 Cloud Firestore 后端(React Js)

Firebase Cloud Functions 无法写入 Firestore 数据库 - 权限缺失或不足