Giter VIP home page Giter VIP logo

ecs_composex's Introduction

ECS ComposeX

PYPI_VERSION PyPI - License

CodeStyle TDD with pytest BDD with Behave

Code scan with SonarCloud

BUILD

Manage, Configure and deploy your applications/services and AWS resources from your docker-compose definitions

Why use ECS Compose-X?

As a developer, working locally is a crucial part of your day to day work, and docker-compose allows you to do just that, for simple services as well as very complex structures.

Your prototype works, and you want to deploy to AWS. But what about IAM ? Networking ? Security ? Configuration ?

Using ECS Compose-X, you keep your docker-compose definitions as they are, add the AWS services you have chosen as part of that definition, such as ELB, RDS/DynamodDB Databases etc, and the program will automatically generate all the AWS CloudFormation templates required to deploy all your services.

It automatically takes care of network access requirements and IAM permissions, following best practices.

Installation

ECS Compose-X can be used as a CLI ran locally, in CICD pipelines, or as an AWS CloudFormation macro, allowing you to use your Docker Compose files directly in CloudFormation!

On AWS using AWS CloudFormation Macro

You can now deploy the CloudFormation macro to your AWS Account using AWS Serverless Application Repository (SAR).

Deploy it in your account today AWS_SAR

Find out how to use ECS Compose-X in AWS here

Via pip

pip install ecs_composex

CLI Usage

usage: ecs-compose-x [-h] {up,render,create,plan,config,init,version} ...

positional arguments:
  {up,render,create,plan,config,init,version}
                        Command to execute.
    up                  Generates & Validates the CFN templates, Creates/Updates stack in CFN
    render              Generates & Validates the CFN templates locally. No upload to S3
    create              Generates & Validates the CFN templates locally. Uploads files to S3
    plan                Creates a recursive change-set to show the diff prior to an update
    config              Merges docker-compose files to provide with the final compose content version
    init                Initializes your AWS Account with prerequisites settings for ECS
    version             ECS ComposeX Version

optional arguments:
  -h, --help            show this help message and exit

Examples

# Render all your CFN templates from your docker compose and extension files
ecs-compose-x render --format yaml -n my-awesome-app -f docker-compose.yml -f aws.yml -d outputs

# Deploy / Update your application to AWS
ecs-compose-x up --format yaml -n my-awesome-app -f docker-compose.yml -f aws.yml -d outputs

Features

AWS Services support

To have an extensive list of support, refer to the compatibilty matrix and the syntax reference for each AWS services in our documentation

How is it different ?

There are a lot of similar tools out there, including published by AWS. So here are a few of the features that we think could be of interest to you.

Modularity / "Plug & Play"

The majority of people who are going to use ECS ComposeX on a daily basis should be developers who need to have an environment of their own and want to quickly iterate over it.

However, it is certainly something that Cloud Engineers in charge of the AWS accounts etc. would want to use to make their own lives easy too.

In many areas, you as the end-user of ComposeX will already have infrastructure in place: VPC, DBs and what not. So as much as possible, you will be able in ComposeX to define Lookup sections which will find your existing resources, and map these to the services.

Built for AWS Fargate

However the original deployments and work on this project was done using EC2 instances (using SpotFleet), everything is now implemented to work on AWS Fargate First (2020-06-06).

That said, all features that can be supported with EC2 instances are available to you with ECS Compose-X, which, will simply disable such settings when deployed on top of AWS Fargate.

Attributes auto-correct

A fair amount of the time, deployments via AWS CloudFormation, Ansible and other IaC will fail because of incompatible settings. This happened a number of times, with a lot of different AWS Services.

Whilst giving you the ability to use all properties of AWS CloudFormation objects, whenever possible, ECS Compose-X will understand how two services are connected and will auto-correct the settings for you.

For example, if you set the Log retention to be 42 days, which is invalid, it will automatically change that to the closest valid value (here, 30).

Documentation

Find all the documentation to get started and and start deploying to AWS

Tip

Nightly documentation following the main branch.

RoadMap

Blog

Follow the latest publications on our blog

Credits

This package would not have been possible without the amazing job done by the AWS CloudFormation team! This package would not have been possible without the amazing community around Troposphere! This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

ecs_composex's People

Contributors

johnpreston avatar jackqu7 avatar pyup-bot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.