Skip to main content

Schema Guard Rail

Project description

CloudFormation - Resource Schema Guard Rail

Apache 2.0 License Pull Request CI PyPI PyPI - Python Version

Notes

This is not a stable version (Beta), it's still under development

Overview

AWS CloudFormation Resource Schema Guard Rail is an open-source tool, which uses CloudFormation Guard policy-as-code evaluation engine to assess resource schema compliance. It validates json resource schemas against the AWS CloudFormation modeling best practices.

Contribute

See CONTRIBUTING for more information.

Rule Development

Read Guard Rail: Rule Development for more information on how to write resource schema rules.

How to use it?

Schema guard rail package has a built-in library of rules, that CloudFormation believe are the best practices that resource modelers should follow. It supports two types of evaluation - Basic Linting & Breaking Change;

Basic Linter (Stateless)

Linter works only with current version of resource schema and runs CloudFormation authored rules, which will highlight problematic schema constructs. A provider developers can run multiple independent schemas at once as well as attach custom rules.

In order to start using Basic Linting you need to run following command:

$ guard-rail --schema file://path-to-schema-1 --schema file://path-to-schema-2 --rule file://path-to-custom-ruleset1 --rule file://path-to-custom-ruleset2

List of Linting Rules

Breaking Change (Stateful)

Along with basic linting, guard rail supports capability of breaking change evaluation. Provider developer must provider two json objects - previous & current versions of the same resource schema. CloudFormation authored rules will be run and evaluation current version of the schema whether it is compliant or not.

In order to start using Basic Linting you need to run following command:

$ guard-rail --schema file://path-to-schema-1 --schema file://path-to-schema-2 --rule ... --stateful

List of Breaking Change Rules

*Additionally, you can specify format argument, which will produce a nicely formatted output.

How to install it locally?

Use following commands

Clone github repo

$ git clone git@github.com:aws-cloudformation/resource-schema-guard-rail.git

Create Virtual Environment & Activate

python3 -m venv env
source env/bin/activate

Install Package Locally from the root

pip install -e . -r requirements_dev.txt
pre-commit install

Run CI Locally

# run all hooks on all files, mirrors what the CI runs
pre-commit run --all-files

License

This project is licensed under the Apache-2.0 License.

Community

Join us on Discord! Connect & interact with CloudFormation developers & experts, find channels to discuss and get help for our CLI, cfn-lint, CloudFormation registry, StackSets, Guard and more:

Join our Discord

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resource-schema-guard-rail-0.0.8.tar.gz (21.4 kB view details)

Uploaded Source

Built Distribution

resource_schema_guard_rail-0.0.8-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file resource-schema-guard-rail-0.0.8.tar.gz.

File metadata

File hashes

Hashes for resource-schema-guard-rail-0.0.8.tar.gz
Algorithm Hash digest
SHA256 8655e6539e5321f8d28a930d7d02ba43ef5f917c5e45b65f13863aca6f18b4fa
MD5 3ae5302b6106f6d809952b690a9efa6c
BLAKE2b-256 d509951cb59fdee6e06386041b90190041bf735c1b56426dae6931cac2345f15

See more details on using hashes here.

File details

Details for the file resource_schema_guard_rail-0.0.8-py3-none-any.whl.

File metadata

File hashes

Hashes for resource_schema_guard_rail-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 7bf556e9efa3f34654db86c1623851f018e8c0f9fa8f23c8a6b8779fa7562aaf
MD5 364bdc6b204cda698dbc80b058ee4612
BLAKE2b-256 9ea7bcf013f60b6002ec9669b2096af2c3f69789f04ef1c3bf01f3b59c2eab8c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page