-
Notifications
You must be signed in to change notification settings - Fork 34
Description
Hi @arabold,
Recently, I spotted strange behavior which results in wrong environment variables being fetched by the plugin.
I want to highlight that this problem does not occur with Serverless Framework v2.22 installed globally. However, most recent versions since 2.60 suffer from it.
First problem
Locally installed SF does not see prod stage.
$ node_modules/.bin/sls export-env --all -s qa
Serverless: Deprecation warning: Variables resolver reports following resolution errors:
- Cannot resolve variable at "custom.deployment": Cannot load file from outside of a project directory (configure "projectDir" to extend project boundary)
From a next major this will be communicated with a thrown error.
Set "variablesResolutionMode: 20210326" in your service config, to adapt to new behavior now
More Info: https://www.serverless.com/framework/docs/deprecations/#NEW_VARIABLES_RESOLVER
$ node_modules/.bin/sls export-env --all -s prod
Serverless Error ----------------------------------------
Stack with id <reducted>-prod does not exist
Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Issues: forum.serverless.com
Your Environment Information ---------------------------
Operating System: darwin
Node Version: 14.16.1
Framework Version: 2.64.1 (local)
Plugin Version: 5.5.0
SDK Version: 4.3.0
Components Version: 3.17.1
Serverless: Deprecation warning: Variables resolver reports following resolution errors:
- Cannot resolve variable at "custom.deployment": Cannot load file from outside of a project directory (configure "projectDir" to extend project boundary)
From a next major this will be communicated with a thrown error.
Set "variablesResolutionMode: 20210326" in your service config, to adapt to new behavior now
More Info: https://www.serverless.com/framework/docs/deprecations/#NEW_VARIABLES_RESOLVER
But globally installed SFv2.22 sees prod stage.
$ sls export-env --all -s prod
Serverless: Running "serverless" installed locally (in service node_modules)
Serverless: Deprecation warning: Variables resolver reports following resolution errors:
- Cannot resolve variable at "custom.deployment": Cannot load file from outside of a project directory (configure "projectDir" to extend project boundary),
- Cannot resolve variable at "functions.addPurchasedCredits.environment.eventBusName": AWS profile "${self:custom.deployment.myProfile.${self:custom.myStage}}" doesn't seem to be configured,
- Cannot resolve variable at "functions.addPurchasedCredits.iamRoleStatements.1.Resource.0": AWS profile "${self:custom.deployment.myProfile.${self:custom.myStage}}" doesn't seem to be configured,
- Cannot resolve variable at "functions.storeUtilization.environment.eventBusName": AWS profile "${self:custom.deployment.myProfile.${self:custom.myStage}}" doesn't seem to be configured,
- Cannot resolve variable at "functions.storeUtilization.iamRoleStatements.1.Resource.0": AWS profile "${self:custom.deployment.myProfile.${self:custom.myStage}}" doesn't seem to be configured
From a next major this will be communicated with a thrown error.
Set "variablesResolutionMode: 20210326" in your service config, to adapt to new behavior now
More Info: https://www.serverless.com/framework/docs/deprecations/#NEW_VARIABLES_RESOLVER
Second problem
The plugin does not fetch properly environment variables, mixes them from different stages. This happens regardless of local / global Serverless Framework installation. In my CI/CD I have globally installed SFv2.60 and the same problem exists. This does not happen on SFv2.22.
For example, on SFv2.64.1 (local) sls export-env --all -s qa results in output which is:
STAGE=dev
region=us-west-2
service=<reducted>
dlq=https://<reducted>-qa-dead-letter
athenaOutputLocation=s3://<reducted>/queries-from-lambda-dev/
utilizationTopicArn=arn:aws:sns:<reducted>-qa-utilization
tableName=<reducted>-dev
eventBusName=<reducted>-dev
As you can see, some are from dev stage and other from qa. All of them should be from qa.