Use modules from the CloudFormation private registry - AWS CloudFormation

Use modules from the CloudFormation private registry

This topic explains how to use modules in CloudFormation templates. Think of modules as pre-made bundles of resources that you can add to your templates.

To use a module, the steps are as follows:

  • Register the module – You register modules in the CloudFormation registry as private extensions. Make sure it's registered in the AWS account and Region you’re working in. For more information, see CloudFormation registry concepts.

  • Include it in your template – Add the module to the Resources section syntax reference for CloudFormation templates section of your CloudFormation template, just like you would with other resources. You'll also need to provide any required properties for the module.

  • Create or update the stack – When you initiate a stack operation, CloudFormation generates a processed template that resolves any included modules into the appropriate resources.

  • Preview changes – Before making changes, you can use a change set to see what resources will be added or changed. For more information, see Update CloudFormation stacks using change sets.

Consider the following example: you have a template that contains both resources and modules. The template contains one individual resource, ResourceA, as well as a module, ModuleParent. That module contains two resources, ResourceB and ResourceC, as well as a nested module, ModuleChild. ModuleChild contains a single resource, ResourceD. If you create a stack from this template, CloudFormation processes the template and resolves the modules to the appropriate resources. The resulting stack has four resources: ResourceA, ResourceB, ResourceC, and ResourceD.

During a stack operation, CloudFormation resolves the two modules included in the stack template into the appropriate four resources.

CloudFormation keeps track of which resources in a stack were created from modules. You can view this information on the Events, Resources, and Drifts tabs for a given stack, and it's also included in change set previews.

Modules are distinguishable from resources in a template because they adhere to the following four-part naming convention, as opposed to the typical three-part convention used by resources:

organization::service::use-case::MODULE