在运行时为云函数GCP重命名python函数def

在运行时为云函数GCP重命名python函数def,python,function,google-cloud-functions,runtime,rename,Python,Function,Google Cloud Functions,Runtime,Rename,在GCP nodejs cloud函数中,我使用dotenv在简单模式下重命名运行时由触发器调用的函数: 我通过从env_TEST.yml配置文件中读取dotenv yaml来读取部署函数的名称 根据yaml文件中的环境变量,我将 PROD cloud函数触发器称为PROD_fixNameFunction UAT云函数触发器称为UAT_fixNameFunction 测试云函数触发器称为TEST_fixNameFunction 因为我有3.env_PROD.yml.env_UAT.yml和.

在GCP nodejs cloud函数中,我使用dotenv在简单模式下重命名运行时由触发器调用的函数: 我通过从env_TEST.yml配置文件中读取dotenv yaml来读取部署函数的名称 根据yaml文件中的环境变量,我将

  • PROD cloud函数触发器称为PROD_fixNameFunction
  • UAT云函数触发器称为UAT_fixNameFunction
  • 测试云函数触发器称为TEST_fixNameFunction
因为我有3.env_PROD.yml.env_UAT.yml和.env_TEST.yml文件,其中环境变量set 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'})仅在本地使用,以使用google library functions framework for nodejs和其他语言在本地云函数中开发

这对于在cloud function中部署不同名称的云函数非常有用,并使用正确的名称prod_functionName和uat_functionName以及test_functionName触发。在这种情况下,您将有3个函数,用于测试、uat和prod环境,并正确加载所有环境参数

通过gitLab CI/CD gitLab CI.yml我根据启动管道的标记名传递正确的env文件(env_TEST.yml、env_UAT.yml、env_PROD.yml)

我看到存在加载环境变量的dotenv-python,但在运行时找不到使用dotenv-python库或其他库读取的参数来重命名python的def函数的示例

有人在python中找到了一个很好的解决方案,可以通过环境变量加载函数的新名称,并将def functionname重命名为[prefix]functionname,就像前面在nodejs中使用环境变量load in prefix时的示例一样?


非常感谢您的支持。

您需要的是动态函数名。以下是您在Python中的实现方式:

def my_函数(请求):
返回“成功”
function_name=“whatever”#从您的env文件中获取此信息
局部变量()[function\u name]=my\u函数

然后可以调用
which()
函数。

谢谢你的解决方案,但我昨天已经解决了。。。谷歌云函数的一个更简洁的解决方案是在激活云函数时,在代码中使用函数名指定-entry point参数。再次感谢你,祝你有愉快的一天。