Firebase 托管连接到 *europe-west1* 中的云功能

Firebase hosting connect to cloud function in *europe-west1*

我在 Google Cloud Functions (https://europe-west1-myproject-name.cloudfunctions.net/api/v1/ical.ics) 上设置了 api。 这很好用,但我想为 api 设置一个 "friendly" 域名。 :)

根据 Googles documentation 这似乎很容易,但它似乎不适用于美国以外的云功能,例如。欧洲西部1。

我已根据文档使用以下代码更新了 firebase.json 文件。

  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "/api/**",
        "function": "api"
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }

访问时https://myproject-name.web.app/api/v1/ical.ics 我被重定向到 https://us-central1-myproject-name.cloudfunctions.net/api/api/v1/cal.ics,出现错误 403 和以下错误消息。

Error: Forbidden
Your client does not have permission to get URL /api/api/ical.ics from this server.

我一定是忽略了一些非常基本的东西,因为这似乎是一个非常简单的操作? :)

亲切的问候 /K

documentation 中所述(见蓝色文本块):

If you are using HTTP functions to serve dynamic content for Firebase Hosting, you must use us-central1.


您还会在关于 "Serve dynamic content and host microservices with Cloud Functions" 的问题中提到的 doc 中找到类似的警告(也请参见蓝色文本块):

Firebase Hosting supports Cloud Functions in us-central1 only.

这并不完全是您正在寻找的答案,因为 Firebase 托管无法实现。 但是可以使用 Cloud Run 在 EU 中托管的云函数前面获取自定义域。 我遵循了本指南: https://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions

然后我在 Cloud Run 上的 Manage custom domains 下添加了自定义域。