In our architecture, we have to deploy 20 lambdas, each lambda is deployed through a separate template which is in root folder of the code and we have three different environments like Test, Staging and Production. When i tried to deploy lambda1 in 3 environments, it is working fine, but when i try to deploy lambda2 into 3 environments, getting error like environment defined multiple times. Please find the sample code and error attached here. Any help for this solution is highly appreciated. Thanks in advance.
pipelines:
default:
- step:
name: lambda1 deployement
deployment: Test
caches:
- node
condition:
changesets:
includePaths:
- "folder/subfolder/lambda1/*.js"
- "folder/subfolder/lambda1/package*.json"
script:
- cd folder/subfolder/lambda1
- npm install
- apt-get update
- apt-get install zip
- zip -r ../lambda1.zip * .[^.]*
- pipe: atlassian/aws-sam-deploy:1.3.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'myregion'
S3_BUCKET: 'mybucket'
STACK_NAME: 'lambda1'
SAM_TEMPLATE: '../../../template.yaml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
- step:
name: lambda1 deployement
deployment: Staging
caches:
- node
condition:
changesets:
includePaths:
- "folder/subfolder/lambda1/*.js"
- "folder/subfolder/lambda1/package*.json"
script:
- cd folder/subfolder/lambda1
- npm install
- apt-get update
- apt-get install zip
- zip -r ../lambda1.zip * .[^.]*
- pipe: atlassian/aws-sam-deploy:1.3.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'myregion'
S3_BUCKET: 'mybucket'
STACK_NAME: 'lambda1'
SAM_TEMPLATE: '../../../template.yaml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
- step:
name: lambda1 deployement
deployment: Production
caches:
- node
condition:
changesets:
includePaths:
- "folder/subfolder/lambda1/*.js"
- "folder/subfolder/lambda1/package*.json"
script:
- cd folder/subfolder/lambda1
- npm install
- apt-get update
- apt-get install zip
- zip -r ../lambda1.zip * .[^.]*
- pipe: atlassian/aws-sam-deploy:1.3.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'myregion'
S3_BUCKET: 'mybucket'
STACK_NAME: 'lambda1'
SAM_TEMPLATE: '../../../template.yaml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
- step:
name: lambda2 deployement
deployment: Test
caches:
- node
condition:
changesets:
includePaths:
- "folder/subfolder/lambda2/*.js"
- "folder/subfolder/lambda2/package*.json"
script:
- cd folder/subfolder/lambda2
- npm install
- apt-get update
- apt-get install zip
- zip -r ../lambda2.zip * .[^.]*
- pipe: atlassian/aws-sam-deploy:1.3.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'myregion'
S3_BUCKET: 'mybucket'
STACK_NAME: 'lambda2'
SAM_TEMPLATE: '../../../template.yaml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
- step:
name: lambda2 deployement
deployment: Staging
caches:
- node
condition:
changesets:
includePaths:
- "folder/subfolder/lambda2/*.js"
- "folder/subfolder/lambda2/package*.json"
script:
- cd folder/subfolder/lambda2
- npm install
- apt-get update
- apt-get install zip
- zip -r ../lambda2.zip * .[^.]*
- pipe: atlassian/aws-sam-deploy:1.3.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'myregion'
S3_BUCKET: 'mybucket'
STACK_NAME: 'lambda2'
SAM_TEMPLATE: '../../../template.yaml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
- step:
name: lambda2 deployement
deployment: Production
caches:
- node
condition:
changesets:
includePaths:
- "folder/subfolder/lambda2/*.js"
- "folder/subfolder/lambda2/package*.json"
script:
- cd folder/subfolder/lambda2
- npm install
- apt-get update
- apt-get install zip
- zip -r ../lambda2.zip * .[^.]*
- pipe: atlassian/aws-sam-deploy:1.3.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'myregion'
S3_BUCKET: 'mybucket'
STACK_NAME: 'lambda2'
SAM_TEMPLATE: '../../../template.yaml'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
If I do so the error is like, defined test or staging or production in multiple times. How can i deploy 20 lambdas whenever there is a change in the corresponding code. Please suggest. Thank you