Skip to main content

awacs

https://img.shields.io/pypi/v/awacs.svg https://travis-ci.org/cloudtools/awacs.png?branch=master https://img.shields.io/pypi/l/awacs.svg

About

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 awacs.aws.Policy object is going to be deprecated in the future, in preference for the awacs.aws.PolicyDocument class. This is due to confusion that arises between the old object and troposphere.iam.Policy objects.

Installation

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

$ pip install awacs

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

$ python setup.py install

Examples

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

from awacs.aws 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(
    Version="2012-10-17",
    Id="S3-Account-Permissions",
    Statement=[
        Statement(
            Sid="1",
            Effect=Allow,
            Principal=Principal("AWS", [IAM_ARN(user, '', account)]),
            Action=[Action("s3", "*")],
            Resource=[S3_ARN("my_corporate_bucket/*"),],
        ),
    ],
)
print(pd.to_json())

would produce this json policy:

{
    "Id": "S3-Account-Permissions",
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Effect": "Allow",
            "Principal": [
                {
                    "AWS": [
                        "arn:aws:iam::123456789012:user/Bob"
                    ]
                }
            ],
            "Resource": [
                "arn:aws:s3:::my_corporate_bucket/*"
            ],
            "Sid": "1"
        }
    ],
    "Version": "2012-10-17"
}

Community

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/scrape.py
$ git diff

Metadata

Release files for awacs 2.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for awacs 2.6.1
File Size Uploaded Provenance Actions
awacs-2.6.1.tar.gz 244.4 kB Without provenance Details for awacs-2.6.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for awacs 2.6.1
File Interpreter ABI Platform Actions
awacs-2.6.1-py3-none-any.whl Python 3 none any Details for awacs-2.6.1-py3-none-any.whl

Total release size: 696.5 kB

Release files / awacs-2.6.1.tar.gz

Download URL awacs-2.6.1.tar.gz
Size 244.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6ccf0f320c4766cf1e023a39729cb128bd44d81c8cd50ec3fed0bd409a2f9055
BLAKE2b-256 checksum
How to use checksums
eb9b8fc3aa5dcd23a3ca165992a31e9fd29fa0e83c82eacc57c282602a08d201
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / awacs-2.6.1-py3-none-any.whl

Download URL awacs-2.6.1-py3-none-any.whl
Size 452.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7eab231a8dbc30a1f4eca248b0f0a29de0adf5c89990d36775cf7f7ddc881047
BLAKE2b-256 checksum
How to use checksums
3e6e0350a92ce3f6bfe9da40af4a19b23d97f4e317d5ab880aa8121f696db3cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for awacs 2.6.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.6.1 This release

2 release files No provenance

0.0.2

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page