Browse the Repo

file-type-icon.circleci
file-type-icon.github
file-type-icon.patcher
file-type-icon_docs
file-type-iconexamples
file-type-iconmodules
file-type-iconecs-cluster
file-type-iconREADME.md
file-type-iconmain.tf
file-type-iconoutputs.tf
file-type-iconroll-out-ecs-cluster-update.py
file-type-iconvariables.tf
file-type-iconecs-daemon-service
file-type-iconecs-deploy-check-binaries
file-type-iconecs-deploy
file-type-iconecs-fargate
file-type-iconecs-scripts
file-type-iconecs-service-with-alb
file-type-iconecs-service-with-discovery
file-type-iconecs-service
file-type-iconecs-task-scheduler
file-type-icontest
file-type-icon.gitignore
file-type-icon.pre-commit-config.yaml
file-type-iconCODEOWNERS
file-type-iconLICENSE.txt
file-type-iconREADME.adoc
file-type-iconcore-concepts.md
file-type-iconsetup.cfg
file-type-iconterraform-cloud-enterprise-private-module-...

Browse the Repo

file-type-icon.circleci
file-type-icon.github
file-type-icon.patcher
file-type-icon_docs
file-type-iconexamples
file-type-iconmodules
file-type-iconecs-cluster
file-type-iconREADME.md
file-type-iconmain.tf
file-type-iconoutputs.tf
file-type-iconroll-out-ecs-cluster-update.py
file-type-iconvariables.tf
file-type-iconecs-daemon-service
file-type-iconecs-deploy-check-binaries
file-type-iconecs-deploy
file-type-iconecs-fargate
file-type-iconecs-scripts
file-type-iconecs-service-with-alb
file-type-iconecs-service-with-discovery
file-type-iconecs-service
file-type-iconecs-task-scheduler
file-type-icontest
file-type-icon.gitignore
file-type-icon.pre-commit-config.yaml
file-type-iconCODEOWNERS
file-type-iconLICENSE.txt
file-type-iconREADME.adoc
file-type-iconcore-concepts.md
file-type-iconsetup.cfg
file-type-iconterraform-cloud-enterprise-private-module-...
ECS Service

ECS Service

Deploy an ECS service with zero-downtime, rolling deployment, IAM Role, auto scaling, and more.

Code Preview

Preview the Code

mobile file icon

roll-out-ecs-cluster-update.py

down
  • import logging
  • import boto3
  • import time
  • import argparse
  • import math
  • import sys
  • logging.basicConfig()
  • logger = logging.getLogger()
  • logger.setLevel(logging.INFO)
  • SLEEP_BETWEEN_RETRIES_SEC = 10
  • """Parse the arguments passed to this script
  • """
  • def parse_args():
  • parser = argparse.ArgumentParser(description='Roll out an update to an ECS Cluster Auto Scaling Group with zero downtime.')
  • parser.add_argument('--asg-name', required=True, help='The name of the Auto Scaling Group')
  • parser.add_argument('--cluster-name', required=True, help='The name of the ECS Cluster')
  • parser.add_argument('--aws-region', required=True, help='The AWS region to use')
  • parser.add_argument('--timeout', help='The maximum amount of time, in seconds, to wait for deployment to complete before timing out.', default=900)
  • parser.add_argument('--keep-max-size', action='store_true', help='When passed in, do not expand the max size of the cluster, even if the cluster does not have enough capacity to double the current size.')
  • return parser.parse_args()

Questions? Ask away.

We're here to talk about our services, answer any questions, give advice, or just to chat.

Ready to hand off the Gruntwork?