Skip to content

nitrocode/awesome-aws-lifecycle-hooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 

Repository files navigation

awesome-aws-lifecycle-hooks

I was learning about lifecycle hooks recently. Before I added my own, I thought I'd do some research in the lifecycle hooks available. I was hoping to find a simple terraform module lambda for ECS. After some searching, I curated this list and thought "Why not another awesome list?" And the list was born.

Feel free to contribute.

Hooks

ECS

Repo Resources Provisioner
getsocial-rnd/ecs-drain-lambda cloudwatch event, golang lambda sls, terraform
ericdahl/tf-ecs cloudwatch event, sns, python lambda terraform
terraform-community-modules/tf_aws_ecs_instance_draining_on_scale_in terraform
ktruckenmiller/aws-ecs-spot-instance-drainer cloudformation
blinkist/terraform-aws-airship-ecs-instance-draining cloudwatch event, sns, python lambda terraform
btisdall/ecs-cid
docker-production-aws/lambda-lifecycle-hooks
claranet/terraform-aws-ecs-container-instances cloudwatch event, sqs, python lambda terraform
aws-samples/ecs-cid-sample cloudwatch event, sns, python lambda cloudformation

EKS

Backup

Invocation conditions

Condition Invoked?
Spot interruption Yes
EC2 instance degradation Yes
ASG instance refresh Yes
ASG max instance lifetime Yes
EC2 manual termination from CLI Yes
EC2 manual termination from UI No

Testing

# set variables
INSTANCE_ID=i-aaaabbbbcccc
ASG_NAME=asg-xyz
LIFECYCLE_HOOK_NAME=lifecycle-xyz

# terminate a specific instance id
aws autoscaling \
  terminate-instance-in-auto-scaling-group \
  --should-decrement-desired-capacity \
  --instance-id $INSTANCE_ID

# once the instance is in a Terminating:Wait stage, continue the lifecycle
aws autoscaling \
  complete-lifecycle-action \
  --lifecycle-action-result CONTINUE \
  --lifecycle-hook-name $LIFECYCLE_HOOK_NAME \
  --auto-scaling-group-name $ASG_NAME \
  --instance-id $INSTANCE_ID

References

Blogs

Misc