No project description provided
Project description
AWS CloudFormation CLI
The CloudFormation CLI (cfn) allows you to author your own resource providers that can be used by CloudFormation.
Usage
Documentation
Primary documentation for the CloudFormation CLI can be found at the AWS Documentation site.
Installation
This tool can be installed using pip from the Python Package Index (PyPI). It requires Python 3. The tool requires at least one language plugin. The language plugins are also available on PyPI and as such can be installed all at once:
pip install cloudformation-cli cloudformation-cli-java-plugin cloudformation-cli-go-plugin cloudformation-cli-python-plugin
Command: init
To create a project in the current directory, use the init
command. A wizard will guide you through the creation.
cfn init
Command: generate
To refresh auto-generated code, use the generate
command. Usually, plugins try to integrate this command in the native build flow, so please consult a plugin's README to see if this is necessary.
cfn generate
Command: test
To run the contract tests, use the test
command.
cfn test
cfn test -- -k contract_delete_update #to run a single test
cfn test --tb=long # exhaustive, informative traceback formatting
cfn test --enforce-timeout 60 #set the RL handler timeout to 60 seconds and CUD handler timeout to 120 seconds.
cfn test --enforce-timeout 60 -- -k contract_delete_update # combine args
Development
For developing, it's strongly suggested to install the development dependencies inside a virtual environment. (This isn't required if you just want to use this tool.)
python3 -m venv env
source env/bin/activate
pip install -e . -r requirements.txt
pre-commit install
You will also need to install a language plugin, such as the Java language plugin, also via pip install
. For example, assuming the plugin is checked out in the same parent directory as this repository:
pip install -e ../cloudformation-cli-java-plugin
Linting and running unit tests is done via pre-commit, and so is performed automatically on commit. The continuous integration also runs these checks. Manual options are available so you don't have to commit):
# run all hooks on all files, mirrors what the CI runs
pre-commit run --all-files
# run unit tests only. can also be used for other hooks, e.g. black, flake8, pylint-local
pre-commit run pytest-local
If you want to generate an HTML coverage report afterwards, run coverage html
. The report is output to htmlcov/index.html
.
Plugin system
New language plugins can be independently developed. As long as they declare the appropriate entry point and are installed in the same environment, they can even be completely separate codebases. For example, a plugin for Groovy might have the following entry point:
entry_points={
"rpdk.v1.languages": ["groovy = rpdk.groovy:GroovyLanguagePlugin"],
},
Plugins must provide the same interface as LanguagePlugin
(in plugin_base.py
). And they may inherit from LanguagePlugin
for the helper methods - but this is not necessary. As long as the class has the same methods, it will work as a plugin.
Supported plugins
Language | Status | Github | PyPI |
---|---|---|---|
Java | Available | cloudformation-cli-java-plugin | cloudformation-cli-java-plugin |
Go | Available | cloudformation-cli-go-plugin | cloudformation-cli-go-plugin |
Python | Available | cloudformation-cli-python-plugin | cloudformation-cli-python-plugin |
License
This library is licensed under the Apache 2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cloudformation-cli-0.1.8.tar.gz
.
File metadata
- Download URL: cloudformation-cli-0.1.8.tar.gz
- Upload date:
- Size: 58.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.0.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b221d42d97069a32c7006768e859c91d649e8cb2c919c31ccf7e694fa4bd4054 |
|
MD5 | 692cd12f3c41944a0099c5e3eab5f57a |
|
BLAKE2b-256 | 73279f145bc4f72359dfc912db63e78434b4feb6c5e868079581e3fcaf29a5a3 |
File details
Details for the file cloudformation_cli-0.1.8-py3-none-any.whl
.
File metadata
- Download URL: cloudformation_cli-0.1.8-py3-none-any.whl
- Upload date:
- Size: 74.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.0.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89bd3cb7dd21c6f21076ddc5432f3abc5b31060309f73941be574f6022d5d3d3 |
|
MD5 | 26849916bf04221e3795c850fda6227d |
|
BLAKE2b-256 | f7c348d4fac088043597e75aea14035108e6772ee7caf9ca4630c1dfc2c484f2 |