Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Environment variables mixed between stages on SF => 2.60 #39

Open
serverlesspolska opened this issue Oct 27, 2021 · 3 comments
Open

Environment variables mixed between stages on SF => 2.60 #39

serverlesspolska opened this issue Oct 27, 2021 · 3 comments
Labels

Comments

@serverlesspolska
Copy link

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.

@conorw
Copy link

conorw commented Jan 16, 2022

I am getting exactly the same behaviour as issue 2 above:
"serverless": "^2.71.0",
"serverless-export-env": "^2.0.0",

@argjentsahiti
Copy link

Exactly the same is happening on those versions too

"serverless": "2.70.0",
"serverless-export-env": "2.0.0",

@conorw
Copy link

conorw commented Feb 15, 2022

Some more information.

Even if this the 1st call to be made, it will still always default to the "dev" environment.

i.e. running serverless export-env --stage test --verbose will always evaluate the "dev" stage, inside the serverless.yml

provider:
name: aws
stage: ${opt:stage,'dev'}

In my case, I only need to run the export-env for my test env, so by changing the default stage in the "stage" property, means that it will always default to the "test" stage:

provider:
name: aws
stage: ${opt:stage,'test'}

@arabold arabold added the bug label Jun 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants