Alarm Modify

export PROJECT_NAME="apdev"
export ALARM_NAME=$(aws cloudwatch describe-alarms --query "MetricAlarms[?starts_with(AlarmName, 'TargetTracking-${PROJECT_NAME}-node-') && contains(AlarmName, 'AlarmLow')].AlarmName" --output text)
export ACTION_NAME=$(aws cloudwatch describe-alarms --alarm-names "$ALARM_NAME" --query "MetricAlarms[0].AlarmActions[0]" --output text)
export CLUSTER_NAME=$(aws cloudwatch describe-alarms --alarm-names "$ALARM_NAME" --query 'MetricAlarms[0].Dimensions[?Name==`ClusterName`].Value' --output text)

aws cloudwatch put-metric-alarm \\
  --alarm-name "$ALARM_NAME" \\
  --metric-name "CapacityProviderReservation" \\
  --namespace "AWS/ECS/ManagedScaling" \\
  --statistic "Average" \\
  --period 60 \\
  --evaluation-periods 1 \\
  --datapoints-to-alarm 1 \\
  --threshold 100 \\
  --comparison-operator "LessThanThreshold" \\
  --alarm-actions "$ACTION_NAME" \\
  --dimensions "Name=CapacityProviderName,Value=EC2" "Name=ClusterName,Value=$CLUSTER_NAME" \\
  --actions-enabled

ASG Modify

aws autoscaling put-lifecycle-hook \\
--lifecycle-hook-name ecs-managed-draining-termination-hook \\
--auto-scaling-group-name $(aws autoscaling describe-auto-scaling-groups \\
  --query "AutoScalingGroups[?starts_with(AutoScalingGroupName, 'apdev-node')].AutoScalingGroupName" \\
  --output text | head -1) \\
--heartbeat-timeout 300

Delete Processlist Script

#!/bin/bash
MYSQL_USER="admin"
MYSQL_PASSWORD="password"
MYSQL_HOST=$(aws rds describe-db-instances --query "DBInstances[?DBInstanceIdentifier=='apdev-rds-instance'].Endpoint.Address" --output text)
MYSQL_PORT="3307"
MYSQL_DBNAME="dev"

while :
do
    mysql -h $MYSQL_HOST -u $MYSQL_USER -P $MYSQL_PORT -p$MYSQL_PASSWORD -D $MYSQL_DBNAME -e "SELECT * FROM information_schema.processlist  WHERE COMMAND = 'Sleep' AND USER NOT LIKE '%rds%' AND USER NOT LIKE '%event_scheduler%';"  | egrep 'Sleep|Lock' | awk '{print "kill "$1";"}' > /tmp/kill.txt
    mysql -h $MYSQL_HOST -u $MYSQL_USER -P $MYSQL_PORT -p$MYSQL_PASSWORD -D $MYSQL_DBNAME < /tmp/kill.txt
    mysql -h $MYSQL_HOST -u $MYSQL_USER -P $MYSQL_PORT -p$MYSQL_PASSWORD -D $MYSQL_DBNAME -e "SHOW processlist;"

    sleep 60
done