in source/lambda/alb_alarm_lambda_handler.py [0:0]
def lambda_handler(event, context):
logger.info(json.dumps(event))
event_type = event['detail-type']
if event_type == 'Cloudwatch Alarm State Change':
return {
"statusCode": 403,
'message': 'Unsupported event type' + event_type
}
alb_alarm_event = ALBAlarmEvent(
alarm_event_id=event['id'], alarm_arn=event['resources'][0],
alarm_name=event['detail']['alarmName'],
cw_alarm_state=CWAlarmState[event['detail']['state']['value']])
account_id = event['account']
region = event['region']
target_group_id = event['detail']['configuration']['metrics'][0]['metricStat']['metric']['dimensions'][
'TargetGroup']
target_group_arn = 'arn:aws:elasticloadbalancing:' + \
region + ':' + account_id + ':' + target_group_id
alb_listener_rules_handler = ALBListenerRulesHandler(
elbv2_client, load_balancer_arn, elb_listener_arn, target_group_arn, elb_shed_percent, max_elb_shed_percent,
elb_restore_percent, shed_mesg_delay_sec, restore_mesg_delay_sec)
alb_alarm_action = alb_listener_rules_handler.handle_alarm(
elbv2_client, sqs_client, sqs_queue_url, alb_alarm_event)
return {
'statusCode': 200,
'message': 'Processed alarm:' + alb_alarm_action.name
}