def parse_event(sqs_message) message_body = JSON.parse(sqs_message.body) return nil unless message_body.is_a?(Hash) return nil unless message_body["Message"].is_a?(String) sns_message = JSON.parse(message_body["Message"]) return nil unless sns_message.is_a?(Hash) environment_name = Environment.where(autoscaling_group: sns_message["AutoScalingGroupName"]) .pick(:environment_name) return nil unless environment_name [ sns_message["Event"], { environment_name: environment_name, instance_id: sns_message["EC2InstanceId"] } ] rescue JSON::ParserError => e Rails.logger.error "Failed to parse message: #{e.message}" nil end