Firebase函数V2:内存配置

bihw5rsg  于 2023-10-22  发布在  其他
关注(0)|答案(4)|浏览(146)

如何在firestore触发的云函数上设置{memory: "1GiB"}选项。
我在文档中找不到:https://firebase.google.com/docs/functions/2nd-gen-upgrade
有一个https函数的语法,但它似乎对onDocumentCreated()等有不同的语法。

export const statisticsDataCreated = onDocumentCreated("statistics/data", async (event) => {
  /** Do things **/
});

你找到实现它的方法了吗?

5t7ly7z5

5t7ly7z51#

您可以添加一个选项对象,在其中设置运行时配置,并使用document键指定要侦听的文档,而不是将要侦听的文档设置为普通字符串。就像这样:

export const firestoreTrigger = onDocumentWritten(
  {
    memory: "16GiB",
    timeoutSeconds: 540,
    document:  "users/{userId}"
   },
  (event) => {
    // your logic
  }
);
zlwx9yxi

zlwx9yxi2#

编辑:已找到解决方案

就目前而言,似乎不可能实现这一目标。我已经联系了Firebase支持,以下是他们的回答:
感谢您联系Firebase支持,我的名字是Brenda,我将处理您的案件。根据您与我们分享的详细信息,您在设置Firestore触发器的内存分配时遇到了问题。在检查Firebase Functions参考时,onDocumentUpdated方法只允许两个参数:Document(或DocumentOptions)和事件处理程序。
要设置Firestore触发器的内存分配,您有两个选项:源代码:使用全局选项。更多信息可在此处找到。通过Google Cloud Console。如果您对此有任何问题或意见,请告诉我。我会尽力协助你的。
正如@mattiagalati所建议的,我会接受他的回答。

qyswt5oh

qyswt5oh3#

据我所知,在这里的文档(https://firebase.google.com/docs/functions/manage-functions?gen=2nd&hl=it#set_timeout_and_memory_allocation)
选项可以作为回调函数本身之前的第一个参数传递:

exports.convertLargeFile = onObjectFinalized({
  timeoutSeconds: 300,
  memory: "1GiB",
}, (event) => {
  // Do some complicated things that take a lot of memory and time
});

不幸的是,似乎没有办法对onDocumentCreated使用相同的符号,因为函数签名(https://github.com/firebase/firebase-functions/blob/3e 7a 4 b77967 e46 a067712445 c499 c5 df 005 b8 e31/src/v2/providers/firestore.ts#L162)不允许使用相同的参数。
在文档中进一步检查,我偶然发现了这个页面(https://firebase.google.com/docs/functions/2nd-gen-configurde#set_runtime_options),它似乎建议您必须使用setGlobalOptions函数在同一文件中部署的所有函数之间应用共享配置。

gjmwrych

gjmwrych4#

可以使用runWith设置运行时选项

export const statisticsDataCreated = functions.runWith({ memory: '1GiB', timeoutSeconds: 120 }).firestore.document("statistics/data").onCreate(async (snapshot, context) => {
    /** Do things **/
});

相关问题