在GCP nodejs云函数中,我使用dotenv在运行时以简单模式重命名触发器调用的函数:我通过从env_TEST.yml配置文件中读取dotenv yaml读取部署函数的名称根据yaml文件中的ENVIRONMENT变量,我将有
- PROD云函数触发器,称为PROD_fixNameFunction
- UAT云函数触发器,名为UAT_fixNameFunction
- 名为TEST_fixNameFunction的TEST云函数触发器
因为我有3.env_PROD.yml.env_UAT.yml和.env_TEST.yml文件,其中环境变量集PROD、UAT和TEST位于由dotenv加载的环境变量中。
要使用的代码示例:
require('dotenv-yaml')**.config({ path: '.env_TEST.yml' })**;
const prefix = process.env.ENVIRONMENT === "PROD"
? "prod_"
: (process.env.ENVIRONMENT === "UAT"
? "uat_"
: "test_"
);
exports[`${prefix}fixNameFunction`] = async (req, res) => {
...
...
}
.config的部分({path:'.env_TEST.yml'}(仅在本地使用,以使用nodejs和其他语言的谷歌库函数框架在本地云中开发函数。
这对于在云函数中部署具有不同名称的云函数和具有正确名称prod_functionName、uat_functionName和test_functionName的触发器非常有用。在这种情况下,您将有3个函数适用于test、uat和prod环境,所有环境参数都已正确加载。
通过gitLab CI/CD gitLab CI.yml我根据启动管道的标记名传递要使用的正确env文件(env_TEST.yml、env_UAT.yml和env_PROD.yml(。
我看到存在dotenv-python来加载环境变量,但我在运行时找不到一个用dotenv-ppython库或其他库读取的参数重命名python的def函数的例子。
有人有一个在python中运行良好的解决方案,可以通过environmentvariable加载函数的新名称,并将def functionname重命名为[prefix]functionname,就像前面在nodejs中使用环境变量load作为前缀的例子一样
非常感谢您的支持。
您想要的是一个动态函数名。以下是您在Python中的操作方法:
def my_function(request):
return "Success"
function_name = "whatever" # Get this from your env file
locals()[function_name] = my_function
那么whatever()
函数将可用于调用。