我目前正在进行一个项目,其中有两个不同的存储桶(一个在美国中部,另一个在韩国(。
在成本和速度方面,将用于更新存储使用情况的功能定位在与存储相同的位置将更有效。
但是,现在我想在两个不同的位置管理功能。此函数用于在存储中上传新图像时更新Firestore。
这是我认为可以工作(但实际上没有(的代码
exports.incrementUsedSize = functions.region('us-central1').storage.object().onFinalize
exports.incrementUsedSizeKr = functions.region('asia-northeast3').storage.object().onFinalize
但每当美国或韩国的存储更新时,这两个都会被调用。
有没有一种方法可以使这些功能在两个位置工作而不会相互干扰?
我的意思是,有没有办法将功能范围限制在特定位置的存储?
根据文档:
若要设置函数运行的区域,请在函数中设置区域参数定义如图所示:
exports.incrementUsedSize = functions
.region('us-central1')
.storage
.object()
.onFinalize((object) => {
// ...
});
.region()
为您的云功能设置位置,与bucket无关。
然而,正如你所说,桶是不同的,不是一个"桶";双区域";bucket,您应该能够以这种方式部署:
gcloud functions deploy incrementUsedSize
--runtime nodejs10
--trigger-resource YOUR_TRIGGER_BUCKET_NAME
--trigger-event google.storage.object.finalize
通过指定触发器桶,您应该能够限制调用触发器。文档中的更多详细信息
如果您的问题涉及Firebase云功能,那么您可以指定此处提到的存储桶名称:
exports.incrementUsedSize = functions.storage.bucket('bucketName').object().onFinalize(async (object) => {
// ...
});