Skip to main content

AWS Access Policy Language creation library

Project description

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

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.6.0.tar.gz (230.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

awacs-2.6.0-py3-none-any.whl (437.8 kB view details)

Uploaded Python 3

File details

Details for the file awacs-2.6.0.tar.gz.

File metadata

  • Download URL: awacs-2.6.0.tar.gz
  • Upload date:
  • Size: 230.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for awacs-2.6.0.tar.gz
Algorithm Hash digest
SHA256 7919b15e2afd5f4f3e604544f81c5af8eb9ab0fa2481c528735489586791279f
MD5 b7b55e75a3b5eb8ad3a6f2138c3de19f
BLAKE2b-256 c8f0547d027ffbe3864996b689620426f1d9757f0d93adf363f73bb5d1a24ce0

See more details on using hashes here.

File details

Details for the file awacs-2.6.0-py3-none-any.whl.

File metadata

  • Download URL: awacs-2.6.0-py3-none-any.whl
  • Upload date:
  • Size: 437.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for awacs-2.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2b4feb94f04da6c7601285f9e76f9409ce12c97e94bce00589935599998a354
MD5 c81ee774c0fef59c3e007ad22ade654d
BLAKE2b-256 fe96339a45f5280d1e87897ec9e1eaa08227aed9a4a68788339a4fe0d7141d4d

See more details on using hashes here.

Supported by

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