serverless-plugin-env-stage-config v1.4.0
serverless-plugin-env-stage-config
This Serverless plugin allows to define environment variable configuration files for stages.
It exposes a new variable resolver ($esc) that automatically picks the correct value based on the selected stage.
For development stages (local, dev, development), the variables will default to the system’s environment variables.
CI
Installation
pnpm add -D serverless-plugin-env-stage-configplugins:
- serverless-plugin-env-stage-configUsage
For non-development stages, the variables will be retrieved from a serverless.env.${stage}.yml file, alongside the serverless.yml.
Let’s consider the following serverless.yml:
name: my-service
useDotenv: true
resources:
Resources:
MyQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: some-queue
provider:
name: aws
environment:
MYSQL_HOST: ${esc:MYSQL_HOST}
MYSQL_PORT: ${esc:MYSQL_PORT}
functions:
run-something:
handler: handler.run
environment:
QUEUE_URL: ${esc:QUEUE_URL}
SECRET_TOKEN: ${esc:SECRET_TOKEN}Local stages
In a local environment, the variables resolved with the esc: prefix will be equivalent to using env:. Using useDotenv: true alongside a .env file will alow you to define your environement variables.
The supported local stages are:
localdevdevelopment
Other stages
If you need to define a different source for the environement variables for your prod stage, you can define a serverless.env.prod.yml to redefine the variables.
For example, if you’re using AWS SSM Parameter Store, you could create the following file:
MYSQL_HOST: ${ssm:/my-service/prod/MYSQL_HOST}
QUEUE_URL: !Ref MyQueue
SECRET_TOKEN: ${ssm:/my-service/prod/SECRET_TOKEN}Any variable that is not included in the serverless.env.prod.yml file will produce a warning and fallback to using env:.
In this case, you will get the following warning:
Serverless: env-stage-config: WARNING: the MYSQL_PORT variable is not defined in serverless.env.prod.yml, defaulting to ${env:MYSQL_PORT, null}.
If a variable is not defined in the stage environment configuration file, or the environment (process.env), it will default to null.
License
MIT
Miscellaneous
╚⊙ ⊙╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝