Skip to main content

AWS-syndicate is an Amazon Web Services deployment framework written in Python, which allows to easily deploy serverless applications using resource descriptions.

Project description

Quality gate

  • Security Rating
  • Maintainability Rating
  • Bugs
  • Vulnerabilities

AWS deployment framework for serverless applications

aws-syndicate is an Amazon Web Services deployment framework written in Python, which allows to easily deploy serverless applications using resource descriptions. The framework allows to work with applications that engage the following AWS services:

  • API Gateway

  • CloudWatch Events

  • Cognito

  • DynamoDB

  • Elastic Beanstalk

  • Elastic Compute Cloud

  • Identity and Access Management

  • Kinesis

  • Lambda

  • Lambda Layers

  • Simple Notification Service

  • Simple Queue Service

  • Simple Storage Service

  • Step Functions

Changelog

See CHANGELOG here.

Installing

Install aws-syndicate from PyPI

Installation from sources

Prerequisites

  1. Installed Python 3.7 or higher version;
  2. Installed package manager PIP 9.0 or higher version;
  3. Installed Apache Maven 3.3.9 or higher version.

macOS

Detailed guide how to install Python you can find here. Also here you can find detailed guild how to install Apache Maven 3.3.9.

  1. Create virtual environment: python3 -m venv syndicate_venv

  2. Activate your virtual environment: source syndicate_venv/bin/activate

  3. Install Syndicate framework with pip from GitHub: pip3 install git+https://github.com/epam/aws-syndicate.git@master

  4. Set up a Syndicate Java plugin: mvn install /aws-syndicate/plugin/

  5. Go to the Common configuration.

Linux

Detailed guide how to install Python you can find here. Also here you can find detailed guild how to install Apache Maven 3.3.9.

  1. Create virtual environment: python3 -m venv syndicate_venv

  2. Activate your virtual environment: source syndicate_venv/bin/activate

  3. Install Syndicate framework with pip from GitHub: pip3 install git+https://github.com/epam/aws-syndicate.git@master

  4. Set up a Syndicate Java plugin: mvn install /aws-syndicate/plugin/

  5. Go to the Common configuration.

Common prerequisites

  1. Installed Python 3.7 or higher version;

    Windows: Detailed guide how to install Python you can find here.

    Linux: Detailed guide how to install Python you can find here.

    macOS: Detailed guide how to install Python you can find here. If you use Ubuntu 16.04 or earlier here you can find installation guide.

  2. Installed package manager PIP 9.0 or higher version;

  3. Installed virtualenv;

  4. Installed Apache Maven 3.3.9 or higher version.

    Windows: Here you can find detailed guild how to install Apache Maven 3.3.9.

    Linux: Here you can find detailed guild how to install Apache Maven 3.3.9.

    macOS: Here you can find detailed guild how to install Apache Maven 3.3.9.

Installation guide

  1. Create virtual environment:

    virtualenv -p python3 syndicate_venv

  2. Activate your virtual environment:

    Linux/macOS: source syndicate_venv/bin/activate

    Windows: \syndicate_venv\Scripts\activate.bat

  3. Install Syndicate framework with pip from GitHub:

    pip3 install git+https://github.com/epam/aws-syndicate.git@master

Common configuration

Next, create and set up a configuration file sdct.conf:

# absolute path to the examples/demo-project folder
project_path=FOLDER_PATH

resources_suffix=
resources_prefix=sdct-
# region name, example - eu-central-1
region=REGION_NAME
# bucket name to upload deployment artifacts, must be unique across all AWS accounts
deploy_target_bucket=BUCKET_NAME
# your account id
account_id=ACCOUNT_ID
access_role=

aws_access_key_id=ACCESS_KEY_ID
aws_secret_access_key=SECRET_ACCESS_KEY

# build configuration
build_projects_mapping=mvn:/demo-java;python:/demo-python

FOLDER_PATH - replace with absolute path to the folder examples/demo-project
ACCOUNT_ID - replace with your AWS account id
REGION_NAME - replace with region name where infrastructure will be deployed
BUCKET_NAME - replace with an S3 bucket name which will be used as a storage for framework artifacts (bucket name must be unique across all AWS accounts)
ACCESS_KEY_ID and SECRET_ACCESS_KEY - replace with AWS credentials for user with admin permissions

Then, set up an aliases file sdct_aliases.conf:

region=REGION_NAME
notification_bucket=BUCKET_NAME
account_id=ACCOUNT_ID

ACCOUNT_ID - replace with your AWS account id
BUCKET_NAME - replace with an S3 bucket name which will be used in demo application (bucket name must be unique across all AWS accounts)
REGION_NAME - replace with region name where infrastructure will be deployed

Then, set up an environment variable SDCT_CONF:

export SDCT_CONF=FOLDER_PATH

FOLDER_PATH - absolute path to the folder where are located files sdct.conf and sdct_aliases.conf

Deployment

The demo application consists of the following infrastructure:

  • 2 IAM roles
  • 3 IAM policies
  • 1 DynamoDB table
  • 1 S3 bucket
  • 2 lambdas
  • 1 API Gateway

Create an S3 bucket for aws-syndicate artifacts:

$ syndicate create_deploy_target_bucket

Next, build aws-syndicate bundle with artifacts to be deployed:

$ syndicate build_bundle --bundle_name demo-deploy

Then, deploy AWS resources:

$ syndicate deploy --bundle_name demo-deploy --deploy_name sdct-example

We have done it!

The demo serverless application is ready to be used.

If you need to clean AWS resources:

$ syndicate clean --bundle_name demo-deploy --deploy_name sdct-example

Documentation

You can find a detailed documentation here

Getting Help

We use GitHub issues for tracking bugs and feature requests. You can find our public backlog here. If it turns out that you may have found a bug, please open an issue with some of existing templates.

Default label for bugs, improvements and feature requests is To-Think-About, it defines that ticket requires additional information about what should be done in scope of this issue. To-Do label should be added only for tickets with clear and reviwed issue scope.

But before creating new issues - check existing, it may cover you problem or question. For increasing issue priority - just add "+1" comment.

Would like to contribute?

Please, check contributor guide before starting.

SonarCloud

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

aws-syndicate-0.8.4.tar.gz (86.1 kB view details)

Uploaded Source

File details

Details for the file aws-syndicate-0.8.4.tar.gz.

File metadata

  • Download URL: aws-syndicate-0.8.4.tar.gz
  • Upload date:
  • Size: 86.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3

File hashes

Hashes for aws-syndicate-0.8.4.tar.gz
Algorithm Hash digest
SHA256 113cfe029101cbe6419a8c45f9a06c9350d94e1ebfc7171a5a176a933b87a01b
MD5 ed661e85fc7b15c507282aa38b7c2eed
BLAKE2b-256 208d240e0978a48d9eed07eeac6cb44d611b2912bc02b7077845b791dc04ff43

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