Firebase 托管是否支持将规则重写到 Python 非 Firebase 部署的云功能?
Does Firebase Hosting support rewrite rule to Python Cloud Function not deployed by Firebase?
Firebase 托管可以配置为 direct requests 云函数:
这是否适用于直接部署到 Cloud Functions 的 Python Cloud Functions,即不使用 firebase deploy
?这与 Python 函数特别相关,因为 Firebase 只能部署 Node.js 函数。
我已确认此用例受支持。
您可以使用 gcloud
cli 部署 python 云函数,然后将 url 部署到重写此 python 函数的 firebase 托管目标。
这里是一个例子 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=
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
配置文件 project/target映射。
Firebase 托管可以配置为 direct requests 云函数:
这是否适用于直接部署到 Cloud Functions 的 Python Cloud Functions,即不使用 firebase deploy
?这与 Python 函数特别相关,因为 Firebase 只能部署 Node.js 函数。
我已确认此用例受支持。
您可以使用 gcloud
cli 部署 python 云函数,然后将 url 部署到重写此 python 函数的 firebase 托管目标。
这里是一个例子 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=
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
配置文件 project/target映射。