Metadata-Version: 2.1
Name: ecs-composex
Version: 0.6.2
Summary: Implement for AWS ECS and Docker Compose what SAM is to Serverless for AWS Lambda
Home-page: https://github.com/lambda-my-aws/ecs_composex
Author: John Preston
Author-email: john@lambda-my-aws.io
License: GPLv3+
Keywords: ecs_composex
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6.*
Description-Content-Type: text/x-rst
Requires-Dist: troposphere (==2.6.2)
Requires-Dist: boto3 (==1.14.33)

============
ECS ComposeX
============

|PYPI_VERSION| |PYPI_LICENSE|

|CODE_STYLE| |TDD| |BDD|

|CODECOV| |QUALITY|

|BUILD|

----------------------------------------------------------------------------------------------------
Be for AWS ECS and docker-compose what AWS SAM is to Lambda
----------------------------------------------------------------------------------------------------

.. contents::
    :local:
    :depth: 1

Installation
============

.. code-block:: bash

    pip install ecs_composex

Usage
=====

.. code-block:: bash

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

    positional arguments:
      {up,render,create,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
        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



CLI for `up` and `render`

.. code-block:: bash

    usage: ecs_composex up [-h] -n NAME -f DOCKERCOMPOSEXFILE [-d OUTPUTDIRECTORY]
                           [--format {json,yaml,text}] [--region REGIONNAME]
                           [--az ZONES] [-b BUCKETNAME] [--use-spot-fleet]

    optional arguments:
      -h, --help            show this help message and exit
      -n NAME, --name NAME  Name of your stack
      -f DOCKERCOMPOSEXFILE, --docker-compose-file DOCKERCOMPOSEXFILE
                            Path to the Docker compose file
      -d OUTPUTDIRECTORY, --output-dir OUTPUTDIRECTORY
                            Output directory to write all the templates to.
      --format {json,yaml,text}
                            Defines the format you want to use.
      --region REGIONNAME   Specify the region you want to build fordefault use
                            default region from config or environment vars
      --az ZONES            List AZs you want to deploy to specifically within the
                            region
      -b BUCKETNAME, --bucket-name BUCKETNAME
                            Bucket name to upload the templates to
      --use-spot-fleet      Runs spotfleet for EC2. If used in combination of
                            --use-fargate, it will create an additional SpotFleet


CLI for `config`

.. code-block:: bash

    usage: ecs-composex config [-h] -f DOCKERCOMPOSEXFILE [-d OUTPUTDIRECTORY]

    optional arguments:
      -h, --help            show this help message and exit
      -f DOCKERCOMPOSEXFILE, --docker-compose-file DOCKERCOMPOSEXFILE
                            Path to the Docker compose file
      -d OUTPUTDIRECTORY, --output-dir OUTPUTDIRECTORY
                            Output directory to write all the templates to.



AWS Resources support
=====================

* `AWS ECS`_: from docker-compose to ECS transparently, using AWS Fargate primarily.
* `AWS VPC`_: create or use existing VPC to deploy your services
* `AWS AppMesh`_: Services mesh for your services.
* `AWS SQS`_: queues for distributed workloads
* `AWS RDS`_: databases integration made easy
* `AWS EC2`_: Deploy your services on EC2 for custom settings. Features SpotFleet by default.
* `AWS KMS`_: Manage CMK for your deployments
* AWS SNS



Documentation
=============

`Find all the documentation to get started and all the features references here. <https://docs.ecs-composex.lambda-my-aws.io>`_

.. tip::

    `Nightly documentation <https://nightly.docs.ecs-composex.lambda-my-aws.io/>`_ following the master branch.


RoadMap
========

* `Feature requests <https://github.com/lambda-my-aws/ecs_composex/projects/2>`_
* `Issues <https://github.com/lambda-my-aws/ecs_composex/projects/3>`_


Blog
====

Follow the news and technical articles on using ECS ComposeX on the `Blog`_

* `CICD Pipeline for multiple services on AWS ECS with ECS ComposeX`_

.. tip::

    If you do not need extra AWS resources such as SQS queues to be created as part of these microservices deployments,
    I would recommend to use `AWS ECS CLI`_ which does already a lot of the work for the services.
    Alternatively, use the AWS CLI v2. It is absolutely smashing-ly awesome and might be just what you need
    This tool aims to reproduce the original ECS CLI behaviour whilst adding logic for non ECS resources that you want
    to create in your environment.



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.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage
.. _`Mark Peek`: https://github.com/markpeek
.. _`AWS ECS CLI`: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI.html
.. _Troposphere: https://github.com/cloudtools/troposphere
.. _Blog: https://blog.ecs-composex.lambda-my-aws.io/
.. _Docker Compose: https://docs.docker.com/compose/
.. _ECS ComposeX: https://docs.ecs-composex.lambda-my-aws.io
.. _YAML Specifications: https://yaml.org/spec/
.. _Extensions fields:  https://docs.docker.com/compose/compose-file/#extension-fields
.. _ECS ComposeX Project: https://github.com/orgs/lambda-my-aws/projects/3
.. _CICD Pipeline for multiple services on AWS ECS with ECS ComposeX: https://blog.ecs-composex.lambda-my-aws.io/posts/cicd-pipeline-for-multiple-services-on-aws-ecs-with-ecs-composex/

.. _AWS ECS: https://docs.ecs-composex.lambda-my-aws.io/features.html#services
.. _AWS VPC: https://docs.ecs-composex.lambda-my-aws.io/features.html#aws-vpc-needs-no-introduction
.. _AWS RDS: https://docs.ecs-composex.lambda-my-aws.io/features.html#aws-rds
.. _AWS SQS: https://docs.ecs-composex.lambda-my-aws.io/features.html#aws-sqs
.. _AWS KMS: https://docs.ecs-composex.lambda-my-aws.io/features.html#aws-kms

.. _AWS EC2: https://docs.ecs-composex.lambda-my-aws.io/features.html#ec2-resources-for-ecs-cluster
.. _AWS AppMesh: https://docs.ecs-composex.lambda-my-aws.io/features.html#aws-appmesh-aws-cloud-map-for-services-mesh-discovery

.. |BUILD| image:: https://codebuild.eu-west-1.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoidThwNXVIKzVvSnlXcUNVRzVlNE5wN0FiWE4rYzYvaHRNMEM0ZHMxeXRLMytSanhsckozVEN3L1Y5Szl5ZEdJVGxXVElyalZmaFVzR2tSbDBHeFI5cHBRPSIsIml2UGFyYW1ldGVyU3BlYyI6IlZkaml2d28wSGR1YU1xb2ciLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=master

.. |DOCS_BUILD| image:: https://readthedocs.org/projects/ecs-composex/badge/?version=latest
        :target: https://ecs-composex.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

.. |PYPI_VERSION| image:: https://img.shields.io/pypi/v/ecs_composex.svg
        :target: https://pypi.python.org/pypi/ecs_composex


.. |CODECOV| image:: https://img.shields.io/codecov/c/github/lambda-my-aws/ecs_composex?color=black&style=flat-square
    :alt: Codecov
    :target: https://codecov.io/gh/lambda-my-aws/ecs_composex

.. |PYPI_DL| image:: https://img.shields.io/pypi/dm/ecs_composex
    :alt: PyPI - Downloads
    :target: https://pypi.python.org/pypi/ecs_composex

.. |PYPI_LICENSE| image:: https://img.shields.io/github/license/lambda-my-aws/ecs_composex
    :alt: GitHub
    :target: https://github.com/lambda-my-aws/ecs_composex/blob/master/LICENSE

.. |PYPI_PYVERS| image:: https://img.shields.io/pypi/pyversions/ecs_composex
    :alt: PyPI - Python Version
    :target: https://pypi.python.org/pypi/ecs_composex

.. |PYPI_WHEEL| image:: https://img.shields.io/pypi/wheel/ecs_composex
    :alt: PyPI - Wheel
    :target: https://pypi.python.org/pypi/ecs_composex

.. |CODE_STYLE| image:: https://img.shields.io/badge/codestyle-black-black
    :alt: CodeStyle
    :target: https://pypi.org/project/black/

.. |TDD| image:: https://img.shields.io/badge/tdd-pytest-black
    :alt: TDD with pytest
    :target: https://docs.pytest.org/en/latest/contents.html

.. |BDD| image:: https://img.shields.io/badge/bdd-behave-black
    :alt: BDD with Behave
    :target: https://behave.readthedocs.io/en/latest/

.. |BLOG_RELEASE| image:: https://codebuild.eu-west-1.amazonaws.com/badges?uuid=eyJlbmNyeXB0ZWREYXRhIjoicHZaQXFLNGYya3pzWExXM09ZTDZqbkU4cXZENzlZc2grQ0s5RXNxN0tYSXF6U3hJSkZWd3JqZkcrd29RUExmZGw1VXVsTTd6ckE4RjhSenl4QUtUY3I0PSIsIml2UGFyYW1ldGVyU3BlYyI6IjdleGRRTS9rbTRIUUY4TkoiLCJtYXRlcmlhbFNldFNlcmlhbCI6MX0%3D&branch=master

.. |QUALITY| image:: https://sonarcloud.io/api/project_badges/measure?project=lambda-my-aws_ecs_composex&metric=alert_status
    :alt: Code scan with SonarCloud
    :target: https://sonarcloud.io/dashboard?id=lambda-my-aws_ecs_composex


