AWS Syncr

A python application that reads YAML and syncs definitions with amazon.

It currently supports:

  • Creation and modification of IAM roles permissions
  • Creation of instance profiles for an IAM role
  • Creation of s3 buckets
  • Modification of s3 bucket policy and s3 bucket tags
  • Modification of bucket website, logging and lifecycle configuration
  • Creation and modification of KMS keys
  • Creation and modification of KMS key grants
  • Creation and modification of Lambda functions
  • Creation and modification of apigateways
  • Creation and modification of Route53 CNAMEs

See more documentation at http://aws_syncr.readthedocs.org

Installation

aws_syncr is on pypi!:

$ pip install aws_syncr

Running

aws_syncr is designed to configure the same definition across multiple accounts.

To run it you have the following file structure:

accounts.yaml
<environment1>/
    config1.yaml
    config2.yaml
<environment2>/
    config1.yaml
    config2.yaml

And then you run:

$ aws_syncr <environment> sync

For example, let’s say you have a dev environment and a stg environment:

accounts.yaml

    ---

    accounts:
        dev: 123456789
        stg: 382093840

roles.yaml

    ---

    roles:
        my_role:
            [..]

dev/
    roles.yaml - symlink to ../roles.yaml

stg/
    roles.yaml - symlink to ../roles.yaml

Then from that folder:

$ aws_syncr dev sync --dry-run
$ aws_syncr dev sync

Or if you are not in that folder:

$ AWS_SYNCR_CONFIG_FOLDER=<folder> aws_syncr [..]

Tests

Run the following:

$ pip install -e .
$ pip install -e ".[tests]"
$ ./test.sh

Or use tox:

$ tox

Changelog

0.7.0
  • Started using ruamel.yaml instead of PyYaml to load configuration
0.6.1
  • Update pycryptodome because of CVE-2018-15560
0.6
  • Change from PyCrypto to pycryptodome
  • Update other dependencies
Before 0.6
  • No changelog was kept