如何在Serverless Framework中按阶段配置Lambda环境变量
按部署阶段动态设置Lambda环境变量的方法
有两种简单实用的方式可以实现需求,下面分别说明:
方法一:直接使用条件表达式
利用Serverless Framework内置的变量语法,直接在environment字段中通过条件判断赋值:
修改后的完整serverless.yml代码:
service: serverless-test2 provider: name: aws runtime: nodejs14.x stage: dev region: us-east-1 layers: commonLibs: path: layer functions: new: handler: handler environment: password: ${self:provider.stage == 'dev' ? 'this is dev value' : 'this is prod value'} layers: - { Ref: CommonLibsLambdaLayer }
部署时指定阶段即可:
- 部署dev环境:执行
sls deploy(默认使用配置里的dev阶段) - 部署prod环境:执行
sls deploy --stage prod
方法二:自定义阶段变量映射(更易扩展)
如果后续要新增更多阶段或环境变量,这种集中管理的方式更清晰。先在custom字段定义各阶段的变量映射,再在函数中引用:
修改后的完整serverless.yml代码:
service: serverless-test2 custom: stageEnv: dev: password: 'this is dev value' prod: password: 'this is prod value' provider: name: aws runtime: nodejs14.x stage: dev region: us-east-1 layers: commonLibs: path: layer functions: new: handler: handler environment: password: ${self:custom.stageEnv.${self:provider.stage}.password} layers: - { Ref: CommonLibsLambdaLayer }
后续新增阶段(如test)或其他环境变量时,直接在stageEnv节点下添加对应配置即可,维护起来更方便。
内容的提问来源于stack exchange,提问作者shrijay
相关产品推荐
相关产品推荐

