I manage a bunch of ELBs but we were missing an alert on a pretty basic metric: how many errors the load balancer was returning. Rather than wade through the UI to add these alerts I figured it would be easier to do it via the CLI.
Assuming aws-cli is installed and the ARN for your SNS topic (in my case, just an email alert) is $arn:
for i in `aws elb describe-load-balancers | grep LoadBalancerName | perl -ne 'chomp; my @a=split(/s+/); $a =~ s/[",]//g ; print "$a ";' ` ; do aws cloudwatch put-metric-alarm --alarm-name "$i ELB 5XX Errors" --alarm-description "High $i ELB 5XX error count" --metric-name HTTPCode_ELB_5XX --namespace AWS/ELB --statistic Sum --period 300 --evaluation-periods 1 --threshold 50 --comparison-operator GreaterThanThreshold --dimensions Name=LoadBalancerName,Value=$i --alarm-actions $arn --ok-actions $arn ; done
That huge one-liner creates a CloudWatch notification that sends an alarm when the number of 5XX errors returned by the ELB is greater than 50 over 5 minutes, and sends an “ok” message via the same SNS topic. The for loop creates/modifies the alarm for every ELB.
More info on put-metric-alarm available in the AWS docs.