不同 Google 不同存储的云函数调用?

Different Google Cloud Function Call For Different Storage?

我目前正在做一个项目,其中有两个不同的存储桶(一个在美国中部,另一个在韩国)。

将用于更新存储使用情况的函数定位在与存储相同的位置,在成本方面和速度方面都会更有效率。

但是,现在我想在两个不同的位置管理该功能。此函数用于在存储中上传新图像时更新 Firestore。

这是我认为可行的代码(但实际上行不通)

exports.incrementUsedSize = functions.region('us-central1').storage.object().onFinalize
exports.incrementUsedSizeKr = functions.region('asia-northeast3').storage.object().onFinalize

但是每当更新美国或韩国的存储时都会调用这两个。

有没有办法让这些功能在两个地方同时工作而不互相干扰?

我的意思是,有没有办法将函数的范围限制在特定位置的存储?

根据文档:

To set the region where a function runs, set the region parameter in the function definition as shown:

exports.incrementUsedSize = functions
    .region('us-central1')
    .storage
    .object()
    .onFinalize((object) => {
      // ...
    });

.region() 设置云函数的位置,与存储桶无关。

但是,正如您所说的存储桶不同,而不是单个“双区域”存储桶,您应该能够以这种方式部署:

gcloud functions deploy incrementUsedSize \
--runtime nodejs10 \
--trigger-resource YOUR_TRIGGER_BUCKET_NAME \
--trigger-event google.storage.object.finalize

通过指定触发器桶,您应该能够限制调用触发器。 documentation here

中有更多详细信息

如果您的问题涉及 Firebase Cloud Function,那么您可以指定存储桶名称 here:

exports.incrementUsedSize = functions.storage.bucket('bucketName').object().onFinalize(async (object) => {
  // ...
});