The missing CloudFormation CLI. Reborn!
cfn-cli is the CloudFormation CLI that AWS never built. Its use dramatically increases the developer friendliness of using CloudFormation at scale, both within developer environments and CI/CD pipelines.
It's designed to be as light a wrapper around CloudFormation as possible, thus avoiding any kind of lock-in. Its use simplifies stack configuration and deployment while allowing for an easy exit to raw CloudFormation JSON style configuration files if desired.
Features:
- Simple and Intuitive CLI that encapsulates the complexity of CloudFormation operations (Packaging, ChangeSets, Drift, Status etc)
- Useful and colourful stack deployment output with full event tailing
- DRY Configuration of stacks in a single YAML file
- Supports ordered stack operations across AWS accounts and regions
- Automatic packaging of external resources (Lambda Code, Nested Stacks and many more resources)
- Loosely coupled cross-stack parameter reference that work cross-region and cross-account
- Nested ChangeSet support, including full and friendly pretty printing.
- Stack configuration inheritance across stages and blueprints
cfn-cli in action:
This tool supports Python 3.10 and above. cfn-cli has been tested and validated operational on AWS CloudShell, AWS Cloud 9, AWS Linux 2023 AMIs and within CI/CD pipeline runners operating in GitHub, Gitlab and Azure DevOps.
This tool is distributed under the MIT license. The AWS CLI dependent code is distributed under the Apache 2.0 license - see ext_customizations README and LICENCE.
Important
Python 3.10 and above is required to install cfn-cli
Install from PyPi
pip3 install cfncli
See https://cfncli.readthedocs.io/ for documentation covering usage of the CLI and its configuration syntax
See DEVELOPMENT.md for build instructions and development workflow.
This code base was forked from https://github.com/Kotaimen/awscfncli who should be acknowledged as the original creator of cfn-cli. The original repo became unsupported and dependencies between it and the native AWS CLI caused install issues and compatibility issues.
I have forked and detached this repo from the original codebase and have spent significant effort in updating dependencies, bringing in modern unit tests, fixing bugs, adding documentation and continue to add new features.
This code base will continue to be maintained separately with feature development that will likely not be paralleled in the original code base.
