Develop a module using the CFN-CLI - Extension Development for CloudFormation

Develop a module using the CFN-CLI

Follow these basic steps to develop and register a module project.

  1. In the CFN-CLI, use the init command to create a new project. The init command creates a fragments folder containing a sample fragment file named sample.json.

    Follow the prompts. Specify that you want to create a module(m), and enter the module name.

    $ cfn init Initializing new project Do you want to develop a new resource(r) a module(m) or a hook(h)? >> m What is the name of your module type? (<Organization>::<Service>::<Name>::MODULE) >> My::Sample::SampleBucket::MODULE
  2. Include your template fragment in the project.

    In the fragments folder in the project, you should find a file named sample.json. This is the template fragment file. Author your template fragment in this file and save.

    You can rename this file as necessary. The folder can only contain a single file.

    For more information, see Creating a module template fragment.

  3. Use validate to validate your project. Fix any issues reported.

    The validate command regenerates the module schema, based on the template fragment you included in the fragments folder. The module schema is located in the root folder, and named schema.json.

  4. Use submit to register the module with CloudFormation, in the specified region. Registering a module makes it available for inclusion in CloudFormation templates.


    When you register your module using submit, CloudFormation regenerates your module schema based on the template fragment in your project. You can't specify a schema file directly. To specify a module schema file when registering a module, use RegisterType in the CloudFormation API.

For information about using modules in CloudFormation templates, see Using modules in the CloudFormation Users Guide.