Updating all EC2 instances in an Auto Scaling Group becomes complex and expensive when done manually. If you follow the immutable infrastructure approach you will roll out a new version by creating new EC2 instances. You never change the old instances. But how do you deploy security patches of the OS or a new version of your application automatically? One option is using AWS CloudFormation.
CloudFormation supports the UpdatePolicy attribute for Auto Scaling Groups. You can define that CloudFormation performs a rolling update of instances whenever the Launch Configuration changes. A rolling update will roll out your change in small batches.
Here is an example. Let’s say we have 4 EC2 instances running version A (grey) and a batch size of 2. Now we roll out version B (dark). Have a look at the following animation.

- Two EC2 instances with version B are started (blue).
- Wait until both new EC2 instances running version B are in service (dark). You now have 6 EC2 instances running.
- Terminate the two oldest EC2 instances running version A. You now have 4 EC2 instances running.
- Two EC2 instances with version B are started (blue).
- Wait until both new EC2 instances running version B are in service (dark). You now have 6 EC2 instances running.
- Terminate the two oldest EC2 instances running version A. You now have 4 EC2 instances running.
- Done.
The following CloudFormation template is enriched with some vocal comments and line highlighting. Press the play button and enjoy the show.
[wpcc-iframe style=”width: 100%; height: 520px” src=”https://s3-eu-west-1.amazonaws.com/static.cloudonaut.io/rollingupdate.html” frameborder=”0″ allowfullscreen=””]How do you like CloudFormation templates annotated with voice? Let me know!
Try rolling updates with our CloudFormation template:

- Click Next to proceed with the next step of the wizard.
- Specify a name and all parameters for the stack. Set VersionParameter to
1. - Click Next to proceed with the next step of the wizard.
- Click Next to skip the Options step of the wizard.
- Click Create to start the creation of the stack.
- Wait until the stack reaches the state
CREATE_COMPLETE. - Open the Outputs tab and click on the provided ELB URL. You should see a white page that contains Version 1 text.
- In the CloudFormation console, select the stack, click the Actions button at the top, select Update Stack.
- Click Next to proceed with the next step of the wizard.
- Change the VersionParameter to
2. - Click Next to proceed with the next step of the wizard.
- Click Next to skip the Options step of the wizard.
- Click Update to update the stack.
- Go back to the page (ELB URL) and reload every now and then. After a few minutes it should switch to Version 2.
- Don’t forget to delete the CloudFormation stack!














