我使用无服务器框架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")