Advanced Use of AWS CloudFormation
2h 2m

As AWS-based cloud environments grow in complexity, DevOps Professionals need to adopt more powerful tools and techniques to manage complex deployments. In the AWS ecosystem, CloudFormation is the most powerful and sophisticated automation tool available to developers. In this course, we explore some of the most advanced CloudFormation skills AWS engineers can learn.

In addition to normal templated resource generation for single stacks using CloudFormation, engineers will learn how to:

  • Develop continuous integration and continuous deployment on CloudFormation
  • Tie into CloudFormation system events via SNS for operational tasks
  • Nest multiple levels of CloudFormation stacks to build out massive cloud systems
  • Author CloudFormation Custom Resources to add additional functionality and resource types to stacks

This course is best taken after reviewing the basics of CloudFormation with CloudAcademy's starter course How To Use AWS CloudFormation.

Demonstration Assets

The AWS CloudFormation templates and related scripts as demonstrated within this course can be found here:


Hello, and welcome to CloudAcademy's Advanced Amazon Web Services CloudFormation course. This course dives deep on one of the more powerful DevOps automation tools at your disposal when working with Amazon Web Services. The intended audience for this course are users who want to improve their automation skills on Amazon Web Services, and model increasingly complex systems with templates.

As an advanced course, we make some assumptions about your skills and suggest some prerequisite courses before you begin. We suggest that you understand how to write a basic stack template already. You should understand how to use the four basic building blocks of CloudFormation templates, conditions, parameters, resources, and outputs before proceeding. You should also know how to invoke CloudFormation functions, such as fn.getApp, fn.join, fn.findAndMap, and others.

You should understand intrinsic parameters and stack templates. That is, AWS region, AWS stack ID, AWS account name, and others. You should know how to launch a stack template in the console and use the console for other things, such as checking the update status of a stack, checking events as we proceed through stack deployments, and graphically debugging the console. You should also have a basic understanding of the Amazon Web Services command line interface, as we will be using this for some of the more advanced techniques, such as automating deployments.

If all of this sounds unfamiliar, we suggest that you take the introduction to AWS CloudFormation course before proceeding. During the introductory course, you will acquire all of the skills you need to proceed with this more advanced automation focused course.  

Let's go over what we should expect to learn as we go through the course. We'll know how to automate multiple environments all at the same time or serially. We will learn how to integration test infrastructure as code by using CloudFormation programmatically rather than manually as we have in the introductory course. We'll learn how to trigger logic on stack events, which is helpful for business use cases where I might want to send an email notification when the stack finishes building, run tests, or notify other systems that another sub-system has come online. We will also learn how to model complex systems with nested stacks. Nested stacks are helpful for modeling different layers or components of potentially a micro-service application or just a multi-layered web application.

While the coverage that CloudFormation gives us over existing resource types in Amazon Web Services is quite good, sometimes CloudFormation is slightly behind the deployment schedule of other teams. This is because internally, the CloudFormation team at Amazon is separate from all of the other teams. For instance, when Amazon Lambda came online, it took several months for CloudFormation team to catch up and write resources for Lambda. When we learn how to produce custom resources for CloudFormation, this will enable us to add functionality that CloudFormation may not already natively support, or to add logic that is completely separate or unique to our use cases.

Beyond learning just technical skills that I described on the previous slide, we'll also go over how to justify the use of CloudFormation in your organization. One compelling business use case for using advanced CloudFormation techniques is to provide perfect parity between dev, test, and production environments.

This is a fundamental tenant of the DevOps methodology where we isolate resources that we were testing on from our production ones. CloudFormation enables us to achieve this parity in a repeatable fashion via templates. We will also be able to make the case for one step Amazon Web Services cloud builds, including more complex systems, such as micro-services architectures or multi-tiered architectures that typically do not lend themselves well to being in a single template.

We'll also see how we can significantly reduce our deployment time both chronologically once we hit go, and between builds. In addition to many compelling benefits in the deployment phase of the DevOps life cycle, using CloudFormation advanced techniques also significantly help us to do testing. It enables us to test all of our infrastructure because we will now have a way to programmatically create entire stacks or clouds.

We'll also learn how to make experimentation easier for our developers. Using advanced CloudFormation techniques, we can model and then deploy infrastructures of almost unlimited complexity into many different environments. This enables developers to each have their own exact replicas of dev, test, or prod as CloudFormation advanced techniques enable us to one-click or one step entire stacks. We'll also now be able to version control our entire Amazon Web Services cloud no matter how complex it is or how many intricate dependencies we may have.

That's it for the first video of this course. We talked about what you should already know before beginning the CloudAcademy Advanced AWS CloudFormation course, as well as what you should expect to learn as you continue through this course, and the reasons that we may want to do it from a business value perspective.

In our next video, we'll talk about, at a deeper level, what exactly Amazon Web Services CloudFormation is and how that affects the way we should think about our automation systems.

About the Author

Nothing gets me more excited than the AWS Cloud platform! Teaching cloud skills has become a passion of mine. I have been a software and AWS cloud consultant for several years. I hold all 5 possible AWS Certifications: Developer Associate, SysOps Administrator Associate, Solutions Architect Associate, Solutions Architect Professional, and DevOps Engineer Professional. I live in Austin, Texas, USA, and work as development lead at my consulting firm, Tuple Labs.