firebase - Firebase 托管是否支持将规则重写为 Firebase 未部署的 Python Cloud Function?
问题描述
Firebase 托管可以配置为将请求定向到 Cloud Function:
这对于直接部署到 Cloud Functions 的 Python Cloud Functions 是否有效,即不使用firebase deploy
?这与 Python 函数特别相关,因为 Firebase 只能部署 Node.js 函数。
解决方案
我已验证支持此用例。
您可以使用 cli 部署 python 云函数gcloud
,然后将 url 部署到您的 firebase 托管目标,该目标将重写为此 python 函数。
这是一个示例firebase.json
文件:
{
"hosting": [
{
"target": "optional_target",
"public": "public",
"ignore": [
"*"
],
"rewrites": [
{
"source": "**",
"function": "my_python_function"
}
]
}
]
}
Firebase 需要一个public
目录,即使在这种情况下它没有被使用。因此,您可以创建一个包含文件的简单public
目录,.gitkeep
以确保它保存在您的源代码存储库中。文件中的ignore
属性firebase.json
确保.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
以及target
在 firebase.json 中定义 a 需要.firebaserc
使用项目/目标映射配置文件。
推荐阅读
- sql-server - 将天时分秒转换回日期时间
- node.js - 最大反应 Discord.js 的问题
- linux - 如何在 Linux 上计时运行时
- hive - 在配置单元中将字符串转换为 BIGINT 未给出预期结果
- pyspark - 以天为单位触发 sql datediff
- react-native - Admob 横幅适用于世博会,但不适用于 testflight
- ruby - 红宝石哈希。如何在屏幕上将每个键显示为表格?
- reactjs - 如何在样式组件中交换图像 url?
- javascript - 从构造函数创建的对象如何能够访问用于创建它的构造函数中的变量?
- python - python-gnupg 与分叉的 python-gnupg