【问题标题】:Does Firebase Hosting support rewrite rule to Python Cloud Function not deployed by Firebase?Firebase 托管是否支持将规则重写为 Firebase 未部署的 Python Cloud Function?
【发布时间】:2019-09-23 18:16:55
【问题描述】:

Firebase 托管可以配置为 direct requests 到云函数:

这是否适用于直接部署到 Cloud Functions 的 Python Cloud Functions,即不使用 firebase deploy?这与 Python 函数特别相关,因为 Firebase 只能部署 Node.js 函数。

【问题讨论】:

    标签: firebase google-cloud-platform google-cloud-functions firebase-hosting


    【解决方案1】:

    我已验证此用例受支持。

    您可以使用gcloud cli 部署一个python 云函数,然后将一个url 部署到您的firebase 托管目标,该目标会重写为这个python 函数。

    这是一个示例firebase.json 文件:

    {
      "hosting": [
        {
          "target": "optional_target",
          "public": "public",
          "ignore": [
            "*"
          ],
          "rewrites": [
            {
              "source": "**",
              "function": "my_python_function"
            }
          ]
        }
      ]
    }
    

    Firebase 需要一个 public 目录,即使在这种情况下它没有被使用。因此,您可以使用.gitkeep 文件创建一个简单的public 目录,以确保它保存在您的源代码存储库中。 firebase.json 文件中的 ignore 属性确保 .gitkeep 文件不会上传到 Firebase 托管。

    为方便起见,这里有一个简单的 bash 脚本,用于在一个命令中部署功能和托管配置:

    DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    ORGINAL_PWD=$PWD
    
    PROJECT_ID=$1
    
    cd $DIR/../functions
    
    gcloud functions deploy my_python_function \
      --project "$PROJECT_ID" \
      --runtime python37 \
      --trigger-http
    
    firebase use $PROJECT
    firebase deploy
    
    cd $ORGINAL_PWD
    

    在这种情况下,子目录functions 包含一个main.py 模块,其中定义了my_python_function

    另外需要明确的是,firebase use $PROJECT 的使用以及在 firebase.json 中定义 target 需要使用项目/目标映射配置 .firebaserc 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 2023-03-13
      • 2018-10-02
      • 2020-11-01
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      相关资源
      最近更新 更多