class_docstr: DynamoDBDriver
  
  This driver is backed by DynamoDB, using it primarily as a key-value store. It is customizable,
  allowing the configuration to specify which column(s) that the partition/sort keys are named,
  as well as the "value" column.
  
  (!) NOTE: Currently, both the partition key and the sort key *MUST* be string types. It is
      not possible to have a non-string type for either of these.
class_docstr_tok: ["DynamoDBDriver","This","driver","is","backed","by","DynamoDB",",","using","it","primarily","as","a","key-value","store",".","It","is","customizable",",","allowing","the","configuration","to","specify","which","column","(","s",")","that","the","partition\/sort","keys","are","named",",","as","well","as","the","``","value","''","column",".","(","!",")","NOTE",":","Currently",",","both","the","partition","key","and","the","sort","key","*","MUST","*","be","string","types",".","It","is","not","possible","to","have","a","non-string","type","for","either","of","these","."]
docstr: For DynamoDB, a key can either be a single string or can be a composition of TWO keys--the
  primary key + the sort key--that are delimited by a given delimiter.
  
  This function converts a given single string into a dict of pkey + sort key components.
docstr_tok: ["For","DynamoDB",",","a","key","can","either","be","a","single","string","or","can","be","a","composition","of","TWO","keys","--","the","primary","key","+","the","sort","key","--","that","are","delimited","by","a","given","delimiter",".","This","function","converts","a","given","single","string","into","a","dict","of","pkey","+","sort","key","components","."]
code: def _convert_key_to_key_schema(self, key):
      """
      For DynamoDB, a key can either be a single string or can be a composition of TWO keys--the
      primary key + the sort key--that are delimited by a given delimiter.
  
      This function converts a given single string into a dict of pkey + sort key components.
      """
      # FIXME (derek.wang)
      #   Because of the way we explode the key using a delim, there is no way to do last-minute
      #   casting of sort key into a format OTHER than string. A sort key of 'N' (number) type
      #   simply will never work...
      if self._dynamo_db_sort_key:
          components = key.split(self._key_delimiter, 2)
          if len(components) != 2:
              message = (
                  "LookupTable ({}): Invalid key. The requested table requires a sort key, "
                  "which the provided key ('{}') does not provide, given the configured "
                  "delimiter: '{}'"
              ).format(self.id, key, self._key_delimiter)
              raise LookupTablesInitializationError(message)
  
          return {
              self._dynamo_db_partition_key: components[0],
              self._dynamo_db_sort_key: components[1],
          }
  
      return {
          self._dynamo_db_partition_key: key,
      }
  
imports: import json
  import logging
  import boto3
  from botocore.exceptions import ClientError, ConnectTimeoutError, ReadTimeoutError
  import streamalert.shared.helpers.boto
  from streamalert.shared.logger import get_logger
  from streamalert.shared.lookup_tables.cache import DriverCache
  from streamalert.shared.lookup_tables.drivers import PersistenceDriver
  from streamalert.shared.lookup_tables.errors import LookupTablesInitializationError
label_desc: Use image node_id 10 for calling the DynamoDBDriver obj's underlying member method code with example usage: obj._convert_key_to_key_schema(key) and returns: dict, dict