code: def launch_job(
      self,
      step_name,
      step_cli,
      task_spec,
      code_package_sha,
      code_package_url,
      code_package_ds,
      image,
      queue,
      iam_role=None,
      execution_role=None,  # for FARGATE compatibility
      cpu=None,
      gpu=None,
      memory=None,
      run_time_limit=None,
      shared_memory=None,
      max_swap=None,
      swappiness=None,
      inferentia=None,
      efa=None,
      host_volumes=None,
      efs_volumes=None,
      use_tmpfs=None,
      tmpfs_tempdir=None,
      tmpfs_size=None,
      tmpfs_path=None,
      num_parallel=0,
      env={},
      attrs={},
  ):
      if queue is None:
          queue = next(self._client.active_job_queues(), None)
          if queue is None:
              raise BatchException(
                  "Unable to launch AWS Batch job. No job queue "
                  " specified and no valid & enabled queue found."
              )
      job = self.create_job(
          step_name,
          step_cli,
          task_spec,
          code_package_sha,
          code_package_url,
          code_package_ds,
          image,
          queue,
          iam_role,
          execution_role,
          cpu,
          gpu,
          memory,
          run_time_limit,
          shared_memory,
          max_swap,
          swappiness,
          inferentia,
          efa,
          env=env,
          attrs=attrs,
          host_volumes=host_volumes,
          efs_volumes=efs_volumes,
          use_tmpfs=use_tmpfs,
          tmpfs_tempdir=tmpfs_tempdir,
          tmpfs_size=tmpfs_size,
          tmpfs_path=tmpfs_path,
          num_parallel=num_parallel,
      )
      self.num_parallel = num_parallel
      self.job = job.execute()
  
imports: import atexit
  import copy
  import json
  import os
  import select
  import shlex
  import time
  from metaflow import util
  from metaflow.plugins.datatools.s3.s3tail import S3Tail
  from metaflow.plugins.aws.aws_utils import sanitize_batch_tag
  from metaflow.exception import MetaflowException
  from metaflow.metaflow_config import SERVICE_INTERNAL_URL, DATATOOLS_S3ROOT, DATASTORE_SYSROOT_S3, DEFAULT_METADATA, SERVICE_HEADERS, BATCH_EMIT_TAGS, CARD_S3ROOT, S3_ENDPOINT_URL, DEFAULT_SECRETS_BACKEND_TYPE, AWS_SECRETS_MANAGER_DEFAULT_REGION, S3_SERVER_SIDE_ENCRYPTION
  from metaflow.metaflow_config_funcs import config_values
  from metaflow.mflog import export_mflog_env_vars, bash_capture_logs, tail_logs, BASH_SAVE_LOGS
  from .batch_client import BatchClient
label_desc: Use image node_id 8 for calling the Batch obj's underlying member method code with example usage: obj.launch_job(step_name, step_cli, task_spec, code_package_sha, code_package_url, code_package_ds, image, queue, iam_role, execution_role, cpu, gpu, memory, run_time_limit, shared_memory, max_swap, swappiness, inferentia, efa, host_volumes, efs_volumes, use_tmpfs, tmpfs_tempdir, tmpfs_size, tmpfs_path, num_parallel, env, attrs) without return types