class_docstr: Encapsulation of a single Artifact that is extracted from an input record.
docstr: Create a new Artifact based on normalized information
  
  Args:
      function (str): Describes how this field is used in the record, or what it means.
      record_id (str): Currently it is reserved for future support. It will come from the
          record processed by classifier. This field is very useful for cross reference back
          to the original record in the future. It will be "None" if no "record_id"
          information when searching artifacts in Athena.
      source_type (str): The original source of the artifact(s) extracted from a record.
          e.g. osquery_differential, cloudwatch_cloudtrail
      normalized_type (str): Normalized types in a record processed by classifier.
      value (str): This is the true value of the type. E.g, a record of type “ip_address”
          could have a value of “50.50.50.50”
docstr_tok: ["Create","a","new","Artifact","based","on","normalized","information","Args",":","function","(","str",")",":","Describes","how","this","field","is","used","in","the","record",",","or","what","it","means",".","record_id","(","str",")",":","Currently","it","is","reserved","for","future","support",".","It","will","come","from","the","record","processed","by","classifier",".","This","field","is","very","useful","for","cross","reference","back","to","the","original","record","in","the","future",".","It","will","be","``","None","''","if","no","``","record_id","''","information","when","searching","artifacts","in","Athena",".","source_type","(","str",")",":","The","original","source","of","the","artifact","(","s",")","extracted","from","a","record",".","e.g",".","osquery_differential",",","cloudwatch_cloudtrail","normalized_type","(","str",")",":","Normalized","types","in","a","record","processed","by","classifier",".","value","(","str",")",":","This","is","the","true","value","of","the","type",".","E.g",",","a","record","of","type","\u201c","ip_address","\u201d","could","have","a","value","of","\u201c","50.50.50.50","\u201d"]
code: def __init__(
      self, function, record_id, source_type, normalized_type, value
  ):
      """Create a new Artifact based on normalized information
  
      Args:
          function (str): Describes how this field is used in the record, or what it means.
          record_id (str): Currently it is reserved for future support. It will come from the
              record processed by classifier. This field is very useful for cross reference back
              to the original record in the future. It will be "None" if no "record_id"
              information when searching artifacts in Athena.
          source_type (str): The original source of the artifact(s) extracted from a record.
              e.g. osquery_differential, cloudwatch_cloudtrail
          normalized_type (str): Normalized types in a record processed by classifier.
          value (str): This is the true value of the type. E.g, a record of type “ip_address”
              could have a value of “50.50.50.50”
      """
      # Enforce all fields are strings in a Artifact to prevent type corruption in Parquet format
      self._function = str(function)
      self._record_id = str(record_id)
      self._source_type = str(source_type)
      self._type = str(normalized_type)
      self._value = str(value)
  
file_path: streamalert/streamalert/shared/artifact_extractor.py
imports: import re
  import uuid
  from streamalert.shared.firehose import FirehoseClient
  from streamalert.shared import CLASSIFIER_FUNCTION_NAME, config
  from streamalert.shared.metrics import MetricLogger
  from streamalert.shared.normalize import Normalizer, CONST_ARTIFACTS_FLAG
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 1 to create a new Artifact object  with example: obj = Artifact(function, record_id, source_type, normalized_type, value)