Browse the Repo
Browse the Repo
Deploy a cluster of servers for use with EC2 Container Service (ECS), Amazon's container orchestration system
Deploy a scalable, highly available ECS cluster on top of an Auto Scaling Group
Zero-downtime, rolling deployment for updating EC2 container instances
Manage ECS Services targeting EC2 container instances or Fargate
Auto scaling and auto healing
ALB and ELB support
Deployment checks to ensure services are healthy
Run scheduled daemon tasks
Run one off tasks
This repo is a part of the Gruntwork Infrastructure as Code Library, a collection of reusable, battle-tested, production ready infrastructure code. If you’ve never used the Infrastructure as Code Library before, make sure to read How to use the Gruntwork Infrastructure as Code Library!
ECS Documentation: Amazon’s docs for ECS that cover core concepts such as the different cluster hosting options, scheduling properties, Docker, security, and monitoring.
A crash course on Docker & Packer: a series of training videos that teach you how to use docker, including a section on ECS.
modules: the main implementation code for this repo, broken down into multiple standalone, orthogonal submodules.
modules/ecs-cluster: use this module to provision an ECS cluster with ECS container instances.
modules/ecs-scripts: use the scripts in this module to configure private docker registries and register ECS container instances to ECS clusters.
modules/ecs-service: use this module to deploy one or more docker containers as a ECS service, with options to use ELBs (CLB, ALB, or CLB), Service Discovery, or Fargate.
modules/ecs-daemon-service: use this module to deploy one or more docker containers that run on a regular schedule.
modules/ecs-deploy: use the scripts in this module to run one or more docker containers as a one time task on an ECS cluster.
modules/ecs-deploy-check-binaries: use the python binary packages in this module to check ECS service deployments to ensure that they are active and healthy.
examples: This folder contains working examples of how to use the submodules.
test: Automated tests for the modules and examples.
EC2 vs Fargate launch types: A detailed comparison between the two available launch types for ECS, showing you the trade-offs between ECS container instances and Fargate.
If you just want to try this repo out for experimenting and learning, check out the following resources:
examples folder: The
examples folder contains sample code optimized for learning, experimenting, and testing (but not production usage).
If you want to deploy this repo in production, check out the following resources:
ecs-cluster in the Acme example Reference Architecture: Production-ready sample code from the Acme Reference Architecture examples for managing an ECS cluster with ECS container instances.
ecs-service-with-alb in the Acme example Reference Architecture: Production-ready sample code from the Acme Reference Architecture examples for managing ECS services load balanced by an ALB.
If you need help with this repo or anything else related to infrastructure or DevOps, Gruntwork offers Commercial Support via Slack, email, and phone/video. If you’re already a Gruntwork customer, hop on Slack and ask away! If not, subscribe now. If you’re not sure, feel free to email us at firstname.lastname@example.org.
Contributions to this repo are very welcome and appreciated! If you find a bug or want to add a new feature or even contribute an entirely new module, we are very happy to accept pull requests, provide feedback, and run your changes through our automated test suite.
Please see Contributing to the Gruntwork Infrastructure as Code Library for instructions.
Please see LICENSE.txt for details on how the code in this repo is licensed.
We're here to talk about our services, answer any questions, give advice, or just to chat.