【问题标题】:Deploy Firebase Cloud Functions across multiple regions跨多个区域部署 Firebase Cloud Functions
【发布时间】:2018-09-09 11:42:07
【问题描述】:

我想跨多个区域部署相同的云功能。 有什么简单的方法吗?

【问题讨论】:

    标签: firebase google-cloud-functions


    【解决方案1】:

    由于您没有说要部署哪种类型的功能,我将假设 https 功能。将任何其他类型的(后台)功能部署到多个区域是没有意义的,因为每个区域都可能触发每个事件,这将是相当混乱的。使用 https 函数,每个函数都有一个不同的 URL

    您可以将具有相同实现的两个不同功能部署到不同区域:

    function f(req, res) {
        // your https function implementation here
    }
    
    exports.f_asia_northeast1 = functions
        .region('asia-northeast1')
        .https.onRequest(f);
    
    exports.f_us_central1 = functions
        .region('us-central1')
        .https.onRequest(f);
    

    【讨论】:

    • “作为每个事件的每个可能触发器” - 所以,它是不​​确定的吗?我想有一个明确的答案,是否会在所有区域或一个区域中触发多个区域中的功能。
    • 你应该期望它会在多个区域被触发。
    • @DougStevenson 。我想跨多个区域部署我的 HTTPS 功能,并根据我的应用程序访问者的位置调用它们。你们打算为 HTTPS 功能添加区域负载均衡器吗? Cloud Functions 之上的一种 Anycast DNS 会很棒!
    • @Antonio 我不知道这样的事情。但如果您有功能请求,请在此处记录:firebase.google.com/support/contact/bugs-features
    • 他们能以某种方式同名吗?因此,客户端需要更改的只是区域,而不是函数名称。
    【解决方案2】:

    我还没试过,但是the docs说:

    您可以通过在functions.region() 中传递多个以逗号分隔的区域字符串来指定多个区域。

    因此,类似

    function f(req, res) {
        // your https function implementation here
    }
    
    exports.thefunction = functions
        .region('asia-northeast1', 'us-central1')
        .https.onRequest(f);
    

    应该适用于在多个区域部署相同的功能以及为所有“副本”分配相同的(唯一)名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 2020-11-01
      • 2017-09-01
      • 2018-08-18
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      相关资源
      最近更新 更多