code: def test_fills_out_amis_and_iam(
      iam_client_stub, ec2_client_stub, region
  ):
      # Set up expected key pair for specific region
      region_key_pair = DEFAULT_KEY_PAIR.copy()
      region_key_pair["KeyName"] = DEFAULT_KEY_PAIR["KeyName"].replace(
          "us-west-2", region
      )
  
      # Setup stubs to mock out boto3
      stubs.configure_iam_role_default(iam_client_stub)
      stubs.configure_key_pair_default(
          ec2_client_stub,
          region=region,
          expected_key_pair=region_key_pair,
      )
      stubs.describe_a_security_group(ec2_client_stub, DEFAULT_SG)
      stubs.configure_subnet_default(ec2_client_stub)
  
      config = helpers.load_aws_example_config_file("example-full.yaml")
      head_node_config = config["available_node_types"][
          "ray.head.default"
      ]["node_config"]
      worker_node_config = config["available_node_types"][
          "ray.worker.default"
      ]["node_config"]
  
      del head_node_config["ImageId"]
      del worker_node_config["ImageId"]
  
      # Pass in SG for stub to work
      head_node_config["SecurityGroupIds"] = ["sg-1234abcd"]
      worker_node_config["SecurityGroupIds"] = ["sg-1234abcd"]
  
      config["provider"]["region"] = region
  
      defaults_filled = bootstrap_aws(config)
  
      ami = DEFAULT_AMI.get(
          defaults_filled.get("provider", {}).get("region")
      )
  
      for node_type in defaults_filled["available_node_types"].values():
          node_config = node_type["node_config"]
          assert node_config.get("ImageId") == ami
  
      # Correctly configured IAM role
      assert defaults_filled["head_node"]["IamInstanceProfile"] == {
          "Arn": DEFAULT_INSTANCE_PROFILE["Arn"]
      }
      # Workers of the head's type do not get the IAM role.
      head_type = config["head_node_type"]
      assert (
          "IamInstanceProfile"
          not in defaults_filled["available_node_types"][head_type]
      )
  
      iam_client_stub.assert_no_pending_responses()
      ec2_client_stub.assert_no_pending_responses()
  
imports: import copy
  from unittest.mock import Mock, patch
  import pytest
  from click.exceptions import ClickException
  import ray.tests.aws.utils.helpers
  import ray.tests.aws.utils.stubs
  from ray.autoscaler._private.aws.config import DEFAULT_AMI, _configure_subnet, _get_subnets_or_die, bootstrap_aws, log_to_cli
  from ray.autoscaler._private.aws.node_provider import AWSNodeProvider
  from ray.autoscaler._private.providers import _get_node_provider
  from ray.tests.aws.utils.constants import AUX_SG, AUX_SUBNET, CUSTOM_IN_BOUND_RULES, DEFAULT_CLUSTER_NAME, DEFAULT_INSTANCE_PROFILE, DEFAULT_KEY_PAIR, DEFAULT_LT, DEFAULT_SG, DEFAULT_SG_AUX_SUBNET, DEFAULT_SG_DUAL_GROUP_RULES, DEFAULT_SG_WITH_NAME, DEFAULT_SG_WITH_NAME_AND_RULES, DEFAULT_SG_WITH_RULES, DEFAULT_SG_WITH_RULES_AUX_SUBNET, DEFAULT_SUBNET
label_desc: Use image node_id 5 for calling a global function with example usage: test_fills_out_amis_and_iam(iam_client_stub, ec2_client_stub, region) without return types