def parse_event(sqs_message) JSON.parse(sqs_message.body) => Hash => parsed_sqs_body parsed_sqs_body["Message"] => String => raw_sns_message JSON.parse(raw_sns_message) => Hash => parsed_sns_message parsed_sns_message["AutoScalingGroupName"] => String => asg parsed_sns_message["EC2InstanceId"] => String => instance_id parsed_sns_message["Event"] => String => event Environment.where(autoscaling_group: asg).pick(:environment_name) => String => environment_name [ event, { environment_name: environment_name, instance_id: instance_id } ] rescue NoMatchingPatternError nil rescue JSON::ParserError => e Rails.logger.error "Failed to parse message: #{e.message}" nil end