code: def __init__(
      self,
      buildkite_token: str,
      instance_name: Optional[str] = None,
      logger: Optional[logging.Logger] = None,
  ):
      self.logger = logger or logging.getLogger(self.__class__.__name__)
  
      self.bk = Buildkite()
      self.bk.set_access_token(buildkite_token)
  
      self.ssh_user = "ec2-user"
      self.ssh_key_name = "buildkite-repro-env"
      self.ssh_key_file = "~/.ssh/buildkite-repro-env.pem"
  
      self.ec2_client = boto3.client("ec2", region_name="us-west-2")
      self.ec2_resource = boto3.resource("ec2", region_name="us-west-2")
  
      self.org = None
      self.pipeline = None
      self.build_id = None
      self.job_id = None
  
      self.env: Dict[str, str] = {}
  
      self.aws_instance_name = instance_name
      self.aws_instance_id = None
      self.aws_instance_ip = None
  
      self.ssh = None
  
      self.plugins = {}
  
      self.skipped_commands = []
  
imports: import base64
  import json
  import logging
  import os
  import random
  import re
  import shlex
  import subprocess
  import threading
  import time
  from numbers import Number
  from typing import Any, Dict, List, Optional, Callable
  import boto3
  import click
  import paramiko
  import yaml
  from pybuildkite.buildkite import Buildkite
label_desc: Use image node_id 1 to create a new ReproSession object  with example: obj = ReproSession(buildkite_token, instance_name, logger)