如何在无服务器框架中将stage从serverless.yml函数传递给handler.py



我使用无服务器框架yaml文件配置了一些函数,为此,我在命令行脚本中使用--stage标志,然后将其设置在无服务器文件的正确位置,以部署到正确的位置。

然后我如何在handler.py文件中找到我所处的阶段,以便引用正确的数据库

我读过这些:检查serverless.yml文件(serverless Framework(中的env变量https://forum.serverless.com/t/get-stage-from-handler-js/402/3

并尝试在处理程序中使用event.stage,它不能离线工作(尚未测试此部署(

您可以尝试用函数名称插入阶段名称,如下所示:

functions:
myFunction:
handler: my_file.my_function
name: ${sls:stage}-my-function

函数名称可以通过处理程序代码从上下文参数属性function_name中获得。

如果你使用上面提到的约定,你可以通过这种方式获得艺名:

def my_function(event, context):
stage = context['function_name'].split('-')[0]

现在可以使用environment键将环境变量添加到函数中。例如:

functions:
hello:
handler: handler.hello
environment:
APP_STAGE: ${sls:stage}

然后您可以在Python:中使用os.environ访问它

import os
def hello(event, context):
stage = os.environ.get("APP_STAGE")

相关内容

  • 没有找到相关文章

最新更新