Environment variables can be set for each individual Serverless function or at the provider level for all functions.
Set Environment Variables for Individual Functions
To add environment variables to a Serverless function, define them using environment under the function name. In the example below, the function function1 will have the environment variable S3_BUCKET_NAME defined:
provider:
name: aws
runtime: python3.9
stage: production
region: us-west-1
functions:
function1:
handler: function.lambda_handler
environment:
S3_BUCKET_NAME: bucket1 # setting environment variableSet Environment Variables for All Functions
It’s also possible to add environment variables to all functions in the Serverless template by defining variables under provider:. In the example below, the functions function1 and function2 will have the environment variable S3_BUCKET_NAME defined:
provider:
name: aws
runtime: python3.9
stage: production
region: us-west-1
environment:
S3_BUCKET_NAME: my-bucket # setting env variable for all functions
functions:
function1:
handler: function1.lambda_handler
function2:
handler: function2.lambda_handlerCombining Both Ways of Setting Environment Variables
Finally, it’s possible to add environment variables under provider as well as under each function.
provider:
name: aws
runtime: python3.9
stage: production
region: us-west-1
environment: # env variables for all functions
STAGE: production
REGION: us-west-1
functions:
function1:
handler: function1.lambda_handler
environment:
S3_BUCKET_NAME: bucket1 # setting env variable for only function1
function2:
handler: function2.lambda_handler
environment:
TABLE_NAME: table # setting env variable for only function2In this case, both function1 and function2 will have both the STAGE and REGION environment variables set, but function1 will have S3_BUCKET_NAME set while function2 will have TABLE_NAME set.