Dynamize (aka variablize) your AWS deployment account using the Serverless framework
This will be short. Remember how we dynamized our serverless resources' parameters? How I said at the beginning that we definitely should use different accounts to at least separate production and development environments? Well, the Serverless framework has profile parameter.
This parameter defines which profile from your ~/.aws/crendentials file will be used to deploy your service. So yes, this means we can dynamize that too! How? Just like we did for the DynamoDB retain policy!
Let's get our previous post's sources.
Setup your AWS accounts
First, setup your aws accounts. It's straightforward; just follow this guide.
Dynamize your serverless.yml profile
Then, add a profiles property to your custom properties, where we'll define the different aws profiles you'll use for your different stages
custom:
profiles:
prod: parsiweb-prod
staging: parsiweb-staging
other: parsiweb-dev
Next, set the profile property in your serverless.yml's provider, dynamized based on the stage, like this
provider`
name: aws
runtime: nodejs8.10
stage: ${opt:stage, 'dev'}
profile: ${self:custom.profiles.${self:provider.stage}, self:custom.profiles.other}
Deploy!
Deploy on the different stages we defined previously (sls deploy --stage your_stage
, sls deploy --stage prod
), and remember to both keep the stage short as to not have the deployment fail because of an excessive roleName length and remove the deployed services afterward.
That's it! Have a great day!