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.
boto3
(included in AWS Lambda functions, no need for packaged deployment)ECS_SERVICE_ARN
environment variable- IAM Role/Policy access setup
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*
andecs: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
- Install all requirements via
pip install -r requirements.txt
- Execute tests vis
pytest
See py.test docs and botocore Stubber reference for more.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Test your changes with
pytest --cov
- the tests currently cover the code 100% - don't lower that number! - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request