class_docstr: Handles preparing and sending data from the classifier function to Kinesis Firehose
docstr: Send all classified records to a respective Firehose Delivery Stream
  
  Args:
      payloads (list): List of PayloadRecord items that include parsed records
docstr_tok: ["Send","all","classified","records","to","a","respective","Firehose","Delivery","Stream","Args",":","payloads","(","list",")",":","List","of","PayloadRecord","items","that","include","parsed","records"]
code: def send(self, payloads):
      """Send all classified records to a respective Firehose Delivery Stream
  
      Args:
          payloads (list): List of PayloadRecord items that include parsed records
      """
      categorized_records = self._categorize_records(payloads)
  
      # Iterate through each set of categorized payloads.
      # Each batch will be processed to their specific Firehose, which lands the data
      # in a specific prefix in S3.
      for log_type, records in categorized_records.items():
          # firehose stream name has the length limit, no longer than 64 characters
          formatted_stream_name = self.generate_firehose_name(
              self._prefix, log_type
          )
  
          # Process each record batch in the categorized payload set
          for record_batch in self._record_batches(
              records, CLASSIFIER_FUNCTION_NAME
          ):
              batch_size = len(record_batch)
              response = self._send_batch(
                  formatted_stream_name,
                  record_batch,
                  CLASSIFIER_FUNCTION_NAME,
              )
  
              self._finalize(
                  response,
                  formatted_stream_name,
                  batch_size,
                  CLASSIFIER_FUNCTION_NAME,
              )
  
      # return categorized records for extracting artifacts if the feature is enabled
      return categorized_records
  
imports: from collections import defaultdict
  import json
  import hashlib
  import re
  import backoff
  import boto3
  from botocore.exceptions import ClientError, HTTPClientError
  from botocore.exceptions import ConnectionError
  from streamalert.shared import CLASSIFIER_FUNCTION_NAME
  import streamalert.shared.helpers.boto
  from streamalert.shared.logger import get_logger
  from streamalert.shared.metrics import MetricLogger
  from streamalert.shared.backoff_handlers import backoff_handler, giveup_handler, success_handler
label_desc: Use image node_id 17 for calling the FirehoseClient obj's underlying member method code with example usage: obj.send(payloads) and returns: categorized_records