code: def _update_inbound_rules(target_security_group, sgids, config):
      extended_rules = (
          config["provider"]
          .get("security_group", {})
          .get("IpPermissions", [])
      )
      ip_permissions = _create_default_inbound_rules(
          sgids, extended_rules
      )
      target_security_group.authorize_ingress(
          IpPermissions=ip_permissions
      )
  
imports: import copy
  import itertools
  import json
  import logging
  import os
  import time
  from collections import Counter
  from functools import lru_cache, partial
  from typing import Any, Dict, List, Optional, Set, Tuple
  import boto3
  import botocore
  from packaging.version import Version
  from ray.autoscaler._private.aws.cloudwatch.cloudwatch_helper import CloudwatchHelper
  from ray.autoscaler._private.aws.utils import LazyDefaultDict, handle_boto_error, resource_cache
  from ray.autoscaler._private.cli_logger import cf, cli_logger
  from ray.autoscaler._private.event_system import CreateClusterEvent, global_event_system
  from ray.autoscaler._private.providers import _PROVIDER_PRETTY_NAMES
  from ray.autoscaler._private.util import check_legacy_fields
  from ray.autoscaler.tags import NODE_TYPE_LEGACY_HEAD, NODE_TYPE_LEGACY_WORKER
label_desc: Use image node_id 24 for calling a global function with example usage: _update_inbound_rules(target_security_group, sgids, config) without return types