Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/miketheman/ecs-host-service-scale
Extending ECS Auto-scaling for under $2/month with Lambda
https://github.com/miketheman/ecs-host-service-scale
aws aws-lambda ecs ecs-service lambda
Last synced: 23 days ago
JSON representation
Extending ECS Auto-scaling for under $2/month with Lambda
- Host: GitHub
- URL: https://github.com/miketheman/ecs-host-service-scale
- Owner: miketheman
- License: mit
- Created: 2017-01-07T21:19:34.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-03-16T09:46:28.000Z (over 6 years ago)
- Last Synced: 2024-10-12T09:10:46.393Z (about 1 month ago)
- Topics: aws, aws-lambda, ecs, ecs-service, lambda
- Language: Python
- Homepage: http://www.miketheman.net/2017/01/09/extending-ecs-auto-scaling-for-under-2month-with-lambda/
- Size: 13.7 KB
- Stars: 34
- Watchers: 6
- Forks: 30
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ecs-host-service-scale
A Lambda function to ensure an ECS Service is set to the correct Desired Count for a One-Task-Per-Host placement value for any cluster that runs the Service.
## Requirements
- `boto3` (included in AWS Lambda functions, no need for packaged deployment)
- `ECS_SERVICE_ARN` environment variable
- IAM Role/Policy access setup## Flow
![UML Sequence Flow](http://uml.mvnsearch.org/gist/00347bf8cfd22ac011f0e8f1bfa12359)
## Deployment
The function is meant to be deployed as a non-VPC Lambda function. It will probably work in a VPC environment, given an Internet Gateway and proper permissions, but it simply does not need access to any in-VPC resources, only AWS API calls.
- IAM Policy & IAM Role allowing: `ecs:Describe*` and `ecs:UpdateService`
- CloudWatch Event Rule for: `{"source": ["aws.ecs"], "detail-type": ["ECS Container Instance State Change"]}`
- Code from `lambda_function.py`
- The ECS Service ARN environment variable## Testing
- Install all requirements via `pip install -r requirements.txt`
- Execute tests vis `pytest`See [py.test docs](http://doc.pytest.org/) and [botocore Stubber](http://botocore.readthedocs.io/en/latest/reference/stubber.html) reference for more.
## Contributing
1. [Fork it](https://github.com/miketheman/ecs-host-service-scale/fork)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Test your changes with `pytest --cov` - the tests currently cover the code 100% - don't lower that number!
4. Commit your changes (`git commit -am 'Add some feature'`)
5. Push to the branch (`git push origin my-new-feature`)
6. Create a new Pull Request# Author
[Mike Fiedler](https://github.com/miketheman) ([email protected])