我已验证此用例受支持。
您可以使用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 文件。