Skip to main content

AWS Access Policy Language creation library

Project description


awacs - Amazon Web Access Control Subsystem

The awacs library allows for easier creation of AWS Access Policy Language JSON by writing Python code to describe the AWS policies. To facilitate catching policy format or JSON errors early the library has property and type checking built into the classes.

NOTE: The old object is going to be deprecated in the future, in preference for the class. This is due to confusion that arises between the old object and troposphere.iam.Policy objects.


awacs can be installed using the pip distribution system for python by issuing:

$ pip install awacs

Alternatively, you can run use to install by cloning this repository and issuing:

$ python install


An example to use this comes from the AWS IAM documentation. This shows creating policy attached to an Amazon S3 bucket:

from import Action, Allow, PolicyDocument, Principal, Statement
from awacs.iam import ARN as IAM_ARN
from awacs.s3  import ARN as S3_ARN

account = "123456789012"
user = "user/Bob"

pd = PolicyDocument(
            Principal=Principal("AWS", [IAM_ARN(user, '', account)]),
            Action=[Action("s3", "*")],

would produce this json policy:

    "Id": "S3-Account-Permissions",
    "Statement": [
            "Action": [
            "Effect": "Allow",
            "Principal": [
                    "AWS": [
            "Resource": [
            "Sid": "1"
    "Version": "2012-10-17"


We have a google group, cloudtools-dev, where you can ask questions and engage with the cloudtools/awacs community. Issues & pull requests are always welcome!

Contributing new actions

To update actions there is a generator tool which will scrape policies from AWS’s documentation resource and auto-generate new files. The following commands can be run (with Python 3.7+) to update the repo:

$ python3 -m pip install -r scrape/requirements.txt
$ python3 -m pip install .
$ python3 ./scrape/
$ git diff

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

awacs-2.4.0.tar.gz (173.2 kB view hashes)

Uploaded source

Built Distribution

awacs-2.4.0-py3-none-any.whl (333.2 kB view hashes)

Uploaded py3

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