code: def createStream(
      ssc: StreamingContext,
      kinesisAppName: str,
      streamName: str,
      endpointUrl: str,
      regionName: str,
      initialPositionInStream: str,
      checkpointInterval: int,
      metricsLevel: int = MetricsLevel.DETAILED,
      storageLevel: StorageLevel = ...,
      awsAccessKeyId: Optional[str] = ...,
      awsSecretKey: Optional[str] = ...,
      *,
      stsAssumeRoleArn: Optional[str] = ...,
      stsSessionName: Optional[str] = ...,
      stsExternalId: Optional[str] = ...,
  ) -> "DStream[Optional[str]]":
      ...
  
file_path: spark/python/pyspark/streaming/kinesis.py
imports: from typing import overload, Callable, Optional, TypeVar, Union
  from pyspark.serializers import NoOpSerializer
  from pyspark.storagelevel import StorageLevel
  from pyspark.streaming import DStream
  from pyspark.streaming.context import StreamingContext
  from pyspark.util import _print_missing_jar
label_desc: Use image node_id 1 for calling the KinesisUtils obj's underlying member method code with example usage: obj.createStream(ssc, kinesisAppName, streamName, endpointUrl, regionName, initialPositionInStream, checkpointInterval, metricsLevel, storageLevel, awsAccessKeyId, awsSecretKey) without return types