如何在Serverless框架下按stage和region使用对应env配置文件
实现按stage+region区分env配置的两种方案
方案1:通过serverless-dotenv-plugin配置
该插件支持自定义env文件加载路径和优先级,配置方式如下:
- 先安装插件:
npm install serverless-dotenv-plugin --save-dev - 在
serverless.yml中添加配置:
plugins: - serverless-dotenv-plugin custom: dotenv: # 加载优先级从低到高,后加载的文件会覆盖前序文件的同名字段 path: - .env # 公共配置 - .env.${opt:stage, 'dev'} # 按环境区分的配置 - .env.${opt:stage, 'dev'}.${opt:region, 'us-east-1'} # 按环境+区域区分的配置
部署时指定对应参数即可自动加载对应文件,示例命令:sls deploy --stage prod --region cn-northwest-1
未显式指定参数时会使用默认值,例如未传region时默认加载后缀为us-east-1的配置文件。
方案2:使用Serverless Framework原生能力(无需额外插件)
Serverless Framework 3.x及以上版本原生支持多env文件加载,直接在serverless.yml顶部配置即可:
service: your-service-name useDotenv: path: - .env - .env.${opt:stage, 'dev'} - .env.${opt:stage, 'dev'}.${opt:region, 'us-east-1'} provider: name: aws runtime: nodejs18.x region: ${opt:region, 'us-east-1'} stage: ${opt:stage, 'dev'}
加载逻辑和插件方案完全一致,无需额外安装依赖。
额外注意
建议将env配置文件加入.gitignore,避免敏感信息提交到代码仓库:
# .gitignore 配置 .env .env.* !.env.example
内容的提问来源于stack exchange,提问作者user1283776
相关产品推荐
相关产品推荐

