在运行时为云函数GCP

时间:2020-10-08 11:26:56

标签: python function google-cloud-functions runtime rename

在GCP nodejs云函数中,

在简单模式下,我使用dotenv重命名了运行时触发器触发的函数: 我通过dotenv-yaml从env_TEST.yml配置文件中读取了部署功能的名称 取决于yaml文件中的环境变量

  • PROD云函数触发器称为prod_fixNameFunction
  • UAT云函数触发器称为uat_fixNameFunction
  • TEST云函数触发器称为test_fixNameFunction

因为我有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>

非常感谢您的支持。

1 个答案:

答案 0 :(得分:0)

您想要的是动态函数名称。使用Python的方法如下:

def my_function(request):
    return "Success"

function_name = "whatever"  # Get this from your env file

locals()[function_name] = my_function

然后将可以调用whatever()函数。