在简单模式下,我使用dotenv重命名了运行时触发器触发的函数: 我通过dotenv-yaml从env_TEST.yml配置文件中读取了部署功能的名称 取决于yaml文件中的环境变量
因为我有3个.env_PROD.yml .env_UAT.yml和.env_TEST.yml文件,其中环境变量设置为dotenv在环境变量中设置PROD,UAT和TEST。
要使用的代码示例:
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'})的一部分仅在本地使用,以使用Google库函数-nodejs和其他语言的框架在本地云函数中开发。
这对于在云功能中部署具有不同名称的云功能并使用正确名称prod_functionName和uat_functionName和test_functionName进行触发非常有用,在这种情况下,您将拥有3个功能,可在TEST,UAT和PROD环境下正常加载所有环境参数
通过 gitLab CI / CD gitlab-ci.yml ,我根据要使用的 pipeline标签名称传递正确的env文件(env_TEST.yml,env_UAT.yml,env_PROD.yml) 。
我看到存在用于加载环境变量的 dotenv-python ,但是我在运行时找不到用dotenv-读取的参数重命名python的def函数的示例python库或其他库。
某人的解决方案在python中工作正常,可以通过环境变量加载函数的新名称,然后将def functionname重命名为[prefix] functionName,如先前在nodejs中使用环境变量load带有前缀的示例一样? < / p>
非常感谢您的支持。
答案 0 :(得分:0)
您想要的是动态函数名称。使用Python的方法如下:
def my_function(request):
return "Success"
function_name = "whatever" # Get this from your env file
locals()[function_name] = my_function
然后将可以调用whatever()
函数。