Giter Site home page Giter Site logo

ecs-scaling-scheduler's Introduction

ecs-scaling-scheduler

Scales all ecs service to 0 or 1 on a specific schedule

main.yaml

Deploys the following resources to AWS:

  1. AWS Lamba -> for scaling the ECS Services
  2. AWS Cloudwatch rules -> one to send start command to Lambda, one for sending a stop command
  3. AWS IAM Role -> IAM Role to attach to the Lambda Function
  4. AWS IAM Policy -> Permissions for Lambda to write to CloudWatch Loggroups, and full ECS permissions

lambda_function.py

Python3.8 script to scale all ECS services of a specific cluster either to 0 or 1. The lambda takes the Cloudwatch Rule parameter for 'action' and 'cluster' to determine, if the services should start or stop and on which cluster.

lambda workflow

The lambda receives an 'action' value from Cloudwatch which is set to 'start' or 'stop'. Additionally, the Cloudwatch rules submit the ECS Cluster name to the lambda.

Lambda uses the cluster name to query all services and put them into a list. Afterward it iterates over this list and set the 'desired task count' to 1 or 0, depending on the 'action' value.

lambda_function.zip

The zip file has to be uploaded to an S3 bucket before we run the Cloudformation code. The bucket name and the file key, needs to be entered in cloudformation. The cloudformation template uses this information to pass the python code to the lambda function during its creation.

ecs-scaling-scheduler's People

Contributors

thomastusche avatar

Watchers

James Cloos 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.