code: def create_stack(
      stack_name: str,
      template_body: str,
      boto3_session: boto3.session.Session,
      deployment_type: str,
      extra_tags: Optional[List[Tuple[str, str]]],
      parameters: Optional[List] = None,
  ) -> None:
      print(
          f"Creating stack {stack_name}. This may take a few minutes... "
          f"Check the CloudFormation Console for updates"
      )
      cfn = boto3_session.client("cloudformation")
      create_waiter = cfn.get_waiter("stack_create_complete")
  
      if not parameters:
          parameters = []
  
      tags = [
          {
              "Key": constants.defaults.STACK_TAG_KEY,
              "Value": constants.defaults.STACK_TAG_VALUE,
          },
          {
              "Key": constants.deployment_types.TYPE_TAG_KEY,
              "Value": deployment_type,
          },
      ]
      if extra_tags:
          for et in extra_tags:
              tags.append({"Key": et[0], "Value": et[1]})
  
      cfn.create_stack(
          StackName=stack_name,
          TemplateBody=template_body,
          Parameters=parameters,
          Capabilities=["CAPABILITY_IAM"],
          Tags=tags,
      )
  
      run_with_periodic_output(
          lambda: create_waiter.wait(
              StackName=stack_name, WaiterConfig={"Delay": 10}
          ),
          "Still waiting for stack...",
      )
  
imports: import sys
  import threading
  import time
  from typing import Any, Callable, Dict, List, Optional, Tuple
  import boto3
  import tqdm
  from botocore.exceptions import ClientError, WaiterError
  from determined.deploy.aws import constants
label_desc: Use image node_id 9 for calling a global function with example usage: create_stack(stack_name, template_body, boto3_session, deployment_type, extra_tags, parameters) without return types