微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不同的谷歌云函数调用不同的存储?

如何解决不同的谷歌云函数调用不同的存储?

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

将用于更新存储使用情况的函数定位在与存储相同的位置会更有效地降低成本和速度。

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

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

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

但只要更新美国或韩国的存储空间,就会调用这两个函数

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

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

解决方法

根据文档:

设置函数运行的区域,在函数中设置region参数 定义如图:

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) => {
  // ...
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。