Repository: getmoto/moto
Pull request #8395 (2024-12-13 02:36:52)

EC2: update_route() now correctly handles DestinationPrefixListId
Updated EC2 update_route to correctly use the decided destination type instead of `destination_cidr_block`.

Also added additional test cases to verify this logic.

This references issue #8394 .


Patch:
diff --git a/moto/backend_index.py b/moto/backend_index.py
index 781aeeb2a..8b4452cb7 100644
--- a/moto/backend_index.py
+++ b/moto/backend_index.py
@@ -96,6 +96,7 @@ backend_url_patterns = [
     ("iotdata", re.compile("https?://data\\.iot\\.(.+)\\.amazonaws.com")),
     ("iotdata", re.compile("https?://data-ats\\.iot\\.(.+)\\.amazonaws.com")),
     ("ivs", re.compile("https?://ivs\\.(.+)\\.amazonaws\\.com")),
+    ("kafka", re.compile("https?://kafka\\.(.+)\\.amazonaws\\.com")),
     ("kinesis", re.compile("https?://kinesis\\.(.+)\\.amazonaws\\.com")),
     ("kinesis", re.compile("https?://(.+)\\.control-kinesis\\.(.+)\\.amazonaws\\.com")),
     ("kinesis", re.compile("https?://(.+)\\.data-kinesis\\.(.+)\\.amazonaws\\.com")),
diff --git a/moto/backends.py b/moto/backends.py
index 4142a8ad6..e81b7d53d 100644
--- a/moto/backends.py
+++ b/moto/backends.py
@@ -80,6 +80,7 @@ if TYPE_CHECKING:
     from moto.iot.models import IoTBackend
     from moto.iotdata.models import IoTDataPlaneBackend
     from moto.ivs.models import IVSBackend
+    from moto.kafka.models import KafkaBackend
     from moto.kinesis.models import KinesisBackend
     from moto.kinesisvideo.models import KinesisVideoBackend
     from moto.kinesisvideoarchivedmedia.models import KinesisVideoArchivedMediaBackend
@@ -258,6 +259,7 @@ SERVICE_NAMES = Union[
     "Literal['iot']",
     "Literal['iot-data']",
     "Literal['ivs']",
+    "Literal['kafka']",
     "Literal['kinesis']",
     "Literal['kinesisvideo']",
     "Literal['kinesis-video-archived-media']",
@@ -528,6 +530,8 @@ def get_backend(name: "Literal['iot-data']") -> "BackendDict[IoTDataPlaneBackend
 @overload
 def get_backend(name: "Literal['ivs']") -> "BackendDict[IVSBackend]": ...
 @overload
+def get_backend(name: "Literal['kafka']") -> "BackendDict[KafkaBackend]": ...
+@overload
 def get_backend(name: "Literal['kinesis']") -> "BackendDict[KinesisBackend]": ...
 @overload
 def get_backend(
diff --git a/moto/dynamodb/models/utilities.py b/moto/dynamodb/models/utilities.py
index 6d4636e78..52b97efc4 100644
--- a/moto/dynamodb/models/utilities.py
+++ b/moto/dynamodb/models/utilities.py
@@ -1,3 +1,4 @@
+import base64
 import json
 import re
 from typing import Any, Dict, List, Optional
@@ -7,6 +8,8 @@ class DynamoJsonEncoder(json.JSONEncoder):
     def default(self, o: Any) -> Any:
         if hasattr(o, "to_json"):
             return o.to_json()
+        elif isinstance(o, bytes):
+            return base64.b64encode(o).decode("utf-8")
 
 
 def dynamo_json_dump(dynamo_object: Any) -> str:
diff --git a/moto/ec2/models/route_tables.py b/moto/ec2/models/route_tables.py
index 0932e2103..9b4d79596 100644
--- a/moto/ec2/models/route_tables.py
+++ b/moto/ec2/models/route_tables.py
@@ -467,9 +467,7 @@ class RouteBackend:
         if destination_prefix_list_id:
             cidr = destination_prefix_list_id
         route_table = self.get_route_table(route_table_id)
-        route_id = generate_route_id(
-            route_table.id, destination_cidr_block, destination_ipv6_cidr_block
-        )
+        route_id = generate_route_id(route_table.id, cidr, destination_ipv6_cidr_block)
         try:
             route = route_table.routes[route_id]
         except KeyError:
diff --git a/moto/ec2/models/security_groups.py b/moto/ec2/models/security_groups.py
index c9e7b98f8..03b21bf8b 100644
--- a/moto/ec2/models/security_groups.py
+++ b/moto/ec2/models/security_groups.py
@@ -155,6 +155,7 @@ class SecurityGroup(TaggedEC2Resource, CloudFormationModel):
         self.owner_id = ec2_backend.account_id
         self.add_tags(tags or {})
         self.is_default = is_default or False
+        self.arn = f"arn:aws:ec2:{ec2_backend.account_id}:{ec2_backend.region_name}:security-group/{group_id}"
 
         # Append default IPv6 egress rule for VPCs with IPv6 support
         if vpc_id:
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-1.json
index 95fcda986..e50518cc6 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-1.json
@@ -5231,6 +5231,54 @@
   "InstanceType": "r7iz.xlarge",
   "Location": "apne1-az2"
  },
+ {
+  "InstanceType": "r8g.12xlarge",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.16xlarge",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.24xlarge",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.2xlarge",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.48xlarge",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.4xlarge",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.8xlarge",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.large",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.medium",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.metal-24xl",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.metal-48xl",
+  "Location": "apne1-az2"
+ },
+ {
+  "InstanceType": "r8g.xlarge",
+  "Location": "apne1-az2"
+ },
  {
   "InstanceType": "t2.2xlarge",
   "Location": "apne1-az2"
@@ -8115,6 +8163,54 @@
   "InstanceType": "r7iz.xlarge",
   "Location": "apne1-az4"
  },
+ {
+  "InstanceType": "r8g.12xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.16xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.24xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.2xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.48xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.4xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.8xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.large",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.medium",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.metal-24xl",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.metal-48xl",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "r8g.xlarge",
+  "Location": "apne1-az4"
+ },
  {
   "InstanceType": "t1.micro",
   "Location": "apne1-az4"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json
index aa09d5167..d50dfe5dd 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json
@@ -1807,6 +1807,10 @@
   "InstanceType": "u-9tb1.112xlarge",
   "Location": "apne2-az1"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "apne2-az1"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "apne2-az1"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
index 64e8cfb96..214af4216 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
@@ -579,6 +579,70 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse3-az1"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "apse3-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse3-az1"
@@ -1463,6 +1527,70 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse3-az2"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "apse3-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse3-az2"
@@ -2315,6 +2443,70 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse3-az3"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "apse3-az3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse3-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json
index eeca1b775..20ea37906 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json
@@ -895,6 +895,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eus2-az1"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eus2-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eus2-az1"
@@ -2219,6 +2267,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eus2-az2"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eus2-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eus2-az2"
@@ -3507,6 +3603,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eus2-az3"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eus2-az3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eus2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
index aefbeba36..af4a7de70 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
@@ -559,6 +559,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "euw2-az1"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "euw2-az1"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "euw2-az1"
@@ -2423,6 +2431,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "euw2-az2"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "euw2-az2"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "euw2-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json
index 95f6f704f..f8e4fef13 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json
@@ -787,6 +787,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "use1-az1"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "use1-az1"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "use1-az1"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "use1-az1"
@@ -2975,6 +2983,14 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "use1-az1"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "use1-az1"
+ },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "use1-az1"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "use1-az1"
@@ -4035,6 +4051,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "use1-az2"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "use1-az2"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "use1-az2"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "use1-az2"
@@ -6323,6 +6347,10 @@
   "InstanceType": "u-9tb1.112xlarge",
   "Location": "use1-az2"
  },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "use1-az2"
+ },
  {
   "InstanceType": "vt1.24xlarge",
   "Location": "use1-az2"
@@ -6571,6 +6599,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "use1-az3"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "use1-az3"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "use1-az3"
+ },
  {
   "InstanceType": "i2.2xlarge",
   "Location": "use1-az3"
@@ -7583,6 +7619,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "use1-az4"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "use1-az4"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "use1-az4"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "use1-az4"
@@ -9875,6 +9919,10 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "use1-az4"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "use1-az4"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "use1-az4"
@@ -13579,6 +13627,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "use1-az6"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "use1-az6"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "use1-az6"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "use1-az6"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json
index 7005e3510..0a3bb10f0 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json
@@ -3107,6 +3107,10 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "usw2-az1"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "usw2-az1"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "usw2-az1"
@@ -6203,6 +6207,54 @@
   "InstanceType": "r7iz.xlarge",
   "Location": "usw2-az2"
  },
+ {
+  "InstanceType": "r8g.12xlarge",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.16xlarge",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.24xlarge",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.2xlarge",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.48xlarge",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.4xlarge",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.8xlarge",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.large",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.medium",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.metal-24xl",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.metal-48xl",
+  "Location": "usw2-az2"
+ },
+ {
+  "InstanceType": "r8g.xlarge",
+  "Location": "usw2-az2"
+ },
  {
   "InstanceType": "t1.micro",
   "Location": "usw2-az2"
@@ -9647,6 +9699,10 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "usw2-az3"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "usw2-az3"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "usw2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-1.json
index b85d4200e..f911cd803 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-1.json
@@ -2679,6 +2679,54 @@
   "InstanceType": "r7iz.xlarge",
   "Location": "ap-northeast-1a"
  },
+ {
+  "InstanceType": "r8g.12xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.16xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.24xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.2xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.48xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.4xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.8xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.large",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.medium",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.metal-24xl",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.metal-48xl",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "r8g.xlarge",
+  "Location": "ap-northeast-1a"
+ },
  {
   "InstanceType": "t1.micro",
   "Location": "ap-northeast-1a"
@@ -8191,6 +8239,54 @@
   "InstanceType": "r7iz.xlarge",
   "Location": "ap-northeast-1d"
  },
+ {
+  "InstanceType": "r8g.12xlarge",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.16xlarge",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.24xlarge",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.2xlarge",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.48xlarge",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.4xlarge",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.8xlarge",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.large",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.medium",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.metal-24xl",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.metal-48xl",
+  "Location": "ap-northeast-1d"
+ },
+ {
+  "InstanceType": "r8g.xlarge",
+  "Location": "ap-northeast-1d"
+ },
  {
   "InstanceType": "t2.2xlarge",
   "Location": "ap-northeast-1d"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json
index 334037935..72ce0bab9 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json
@@ -1807,6 +1807,10 @@
   "InstanceType": "u-9tb1.112xlarge",
   "Location": "ap-northeast-2a"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "ap-northeast-2a"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "ap-northeast-2a"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
index 6a61dcdde..aa2b7bd8b 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
@@ -579,6 +579,70 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3a"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-southeast-3a"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-3a"
@@ -1463,6 +1527,70 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3b"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-southeast-3b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-3b"
@@ -2315,6 +2443,70 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3c"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-southeast-3c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-3c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json
index e6b0600ec..40674a949 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json
@@ -895,6 +895,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-south-2a"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-south-2a"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2a"
@@ -2219,6 +2267,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-south-2b"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-south-2b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2b"
@@ -3507,6 +3603,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-south-2c"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-south-2c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
index 5d94e645e..899ca410e 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
@@ -559,6 +559,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "eu-west-2a"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "eu-west-2a"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "eu-west-2a"
@@ -4407,6 +4415,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "eu-west-2c"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "eu-west-2c"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "eu-west-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json
index b5080f575..8930d4e88 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json
@@ -843,6 +843,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "us-east-1a"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "us-east-1a"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "us-east-1a"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "us-east-1a"
@@ -3131,6 +3139,10 @@
   "InstanceType": "u-9tb1.112xlarge",
   "Location": "us-east-1a"
  },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "us-east-1a"
+ },
  {
   "InstanceType": "vt1.24xlarge",
   "Location": "us-east-1a"
@@ -4151,6 +4163,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "us-east-1b"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "us-east-1b"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "us-east-1b"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "us-east-1b"
@@ -6443,6 +6463,10 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "us-east-1b"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "us-east-1b"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-east-1b"
@@ -7511,6 +7535,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "us-east-1c"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "us-east-1c"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "us-east-1c"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "us-east-1c"
@@ -10851,6 +10883,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "us-east-1d"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "us-east-1d"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "us-east-1d"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "us-east-1d"
@@ -13039,6 +13079,14 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "us-east-1d"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "us-east-1d"
+ },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "us-east-1d"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-east-1d"
@@ -13323,6 +13371,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "us-east-1e"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "us-east-1e"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "us-east-1e"
+ },
  {
   "InstanceType": "i2.2xlarge",
   "Location": "us-east-1e"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json
index fb2473d26..05c84265b 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json
@@ -2855,6 +2855,54 @@
   "InstanceType": "r7iz.xlarge",
   "Location": "us-west-2a"
  },
+ {
+  "InstanceType": "r8g.12xlarge",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.16xlarge",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.24xlarge",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.2xlarge",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.48xlarge",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.4xlarge",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.8xlarge",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.large",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.medium",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.metal-24xl",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.metal-48xl",
+  "Location": "us-west-2a"
+ },
+ {
+  "InstanceType": "r8g.xlarge",
+  "Location": "us-west-2a"
+ },
  {
   "InstanceType": "t1.micro",
   "Location": "us-west-2a"
@@ -6323,6 +6371,10 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "us-west-2b"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "us-west-2b"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-west-2b"
@@ -9647,6 +9699,10 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "us-west-2c"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "us-west-2c"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-west-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-1.json b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-1.json
index 4c322180c..c55c583f9 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-1.json
@@ -2707,6 +2707,54 @@
   "InstanceType": "r7iz.xlarge",
   "Location": "ap-northeast-1"
  },
+ {
+  "InstanceType": "r8g.12xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.16xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.24xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.2xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.48xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.4xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.8xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.large",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.medium",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.metal-24xl",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.metal-48xl",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "r8g.xlarge",
+  "Location": "ap-northeast-1"
+ },
  {
   "InstanceType": "t1.micro",
   "Location": "ap-northeast-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-2.json b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-2.json
index 33e8c9133..8a9ca1b62 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-2.json
@@ -1831,6 +1831,10 @@
   "InstanceType": "u-9tb1.112xlarge",
   "Location": "ap-northeast-2"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "ap-northeast-2"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "ap-northeast-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
index 83b4ebca6..54d624a49 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
@@ -579,6 +579,70 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-southeast-3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-3"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json b/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json
index 5a711ca86..5d6d14133 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json
@@ -927,6 +927,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-south-2"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-south-2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
index 06e770508..415759ff1 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
@@ -559,6 +559,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "eu-west-2"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "eu-west-2"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "eu-west-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/us-east-1.json b/moto/ec2/resources/instance_type_offerings/region/us-east-1.json
index abfc7366c..e331be1bf 100644
--- a/moto/ec2/resources/instance_type_offerings/region/us-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/us-east-1.json
@@ -843,6 +843,14 @@
   "InstanceType": "f1.4xlarge",
   "Location": "us-east-1"
  },
+ {
+  "InstanceType": "f2.12xlarge",
+  "Location": "us-east-1"
+ },
+ {
+  "InstanceType": "f2.48xlarge",
+  "Location": "us-east-1"
+ },
  {
   "InstanceType": "g4ad.16xlarge",
   "Location": "us-east-1"
@@ -3183,6 +3191,14 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "us-east-1"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "us-east-1"
+ },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "us-east-1"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-east-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/us-west-2.json b/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
index 67935d11c..2daa9ec69 100644
--- a/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
@@ -3143,6 +3143,10 @@
   "InstanceType": "u7i-12tb.224xlarge",
   "Location": "us-west-2"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "us-west-2"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-west-2"
diff --git a/moto/ec2/resources/instance_types.json b/moto/ec2/resources/instance_types.json
index 9fca7f407..056fbf328 100644
--- a/moto/ec2/resources/instance_types.json
+++ b/moto/ec2/resources/instance_types.json
@@ -13111,7 +13111,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -13564,7 +13564,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -19912,6 +19912,11 @@
    "SizeInMiB": 98304
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -20055,6 +20060,11 @@
    "SizeInMiB": 131072
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -20214,6 +20224,11 @@
    "SizeInMiB": 196608
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -20408,6 +20423,11 @@
    "SizeInMiB": 16384
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -20511,6 +20531,11 @@
    "SizeInMiB": 393216
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -20704,6 +20729,11 @@
    "SizeInMiB": 32768
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -20815,6 +20845,11 @@
    "SizeInMiB": 65536
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -20942,6 +20977,11 @@
    "SizeInMiB": 4096
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -21039,6 +21079,11 @@
    "SizeInMiB": 2048
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -21303,6 +21348,11 @@
    "SizeInMiB": 8192
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -23625,57 +23675,57 @@
    ]
   }
  },
- "g4ad.16xlarge": {
+ "f2.12xlarge": {
   "AutoRecoverySupported": false,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
   "CurrentGeneration": true,
-  "DedicatedHostsSupported": false,
+  "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
-    "BaselineBandwidthInMbps": 6300,
-    "BaselineIops": 26667,
-    "BaselineThroughputInMBps": 787.5,
-    "MaximumBandwidthInMbps": 6300,
-    "MaximumIops": 26667,
-    "MaximumThroughputInMBps": 787.5
+    "BaselineBandwidthInMbps": 15000,
+    "BaselineIops": 60000,
+    "BaselineThroughputInMBps": 1875.0,
+    "MaximumBandwidthInMbps": 15000,
+    "MaximumIops": 60000,
+    "MaximumThroughputInMBps": 1875.0
    },
    "EbsOptimizedSupport": "default",
    "EncryptionSupport": "supported",
    "NvmeSupport": "required"
   },
-  "FreeTierEligible": false,
-  "GpuInfo": {
-   "Gpus": [
+  "FpgaInfo": {
+   "Fpgas": [
     {
-     "Count": 4,
-     "Manufacturer": "AMD",
+     "Count": 2,
+     "Manufacturer": "Xilinx",
      "MemoryInfo": {
-      "SizeInMiB": 8192
+      "SizeInMiB": 81920
      },
-     "Name": "Radeon Pro V520"
+     "Name": "Virtex UltraScale+ (VU47P)"
     }
    ],
-   "TotalGpuMemoryInMiB": 32768
+   "TotalFpgaMemoryInMiB": 163840
   },
+  "FreeTierEligible": false,
   "HibernationSupported": false,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
     {
      "Count": 2,
-     "SizeInGB": 1200,
+     "SizeInGB": 940,
      "Type": "ssd"
     }
    ],
    "EncryptionSupport": "required",
    "NvmeSupport": "required",
-   "TotalSizeInGB": 2400
+   "TotalSizeInGB": 1880
   },
   "InstanceStorageSupported": true,
-  "InstanceType": "g4ad.16xlarge",
+  "InstanceType": "f2.12xlarge",
   "MemoryInfo": {
-   "SizeInMiB": 262144
+   "SizeInMiB": 524288
   },
   "NetworkInfo": {
    "DefaultNetworkCardIndex": 0,
@@ -23699,8 +23749,13 @@
    ],
    "NetworkPerformance": "25 Gigabit"
   },
-  "NitroEnclavesSupport": "unsupported",
-  "NitroTpmSupport": "unsupported",
+  "NitroEnclavesSupport": "supported",
+  "NitroTpmInfo": {
+   "SupportedVersions": [
+    "2.0"
+   ]
+  },
+  "NitroTpmSupport": "supported",
   "PhcSupport": "unsupported",
   "PlacementGroupInfo": {
    "SupportedStrategies": [
@@ -23714,10 +23769,11 @@
    "SupportedArchitectures": [
     "x86_64"
    ],
-   "SustainedClockSpeedInGhz": 3.0
+   "SustainedClockSpeedInGhz": 3.4
   },
   "SupportedBootModes": [
-   "legacy-bios"
+   "legacy-bios",
+   "uefi"
   ],
   "SupportedRootDeviceTypes": [
    "ebs"
@@ -23730,15 +23786,20 @@
    "hvm"
   ],
   "VCpuInfo": {
-   "DefaultCores": 32,
+   "DefaultCores": 24,
    "DefaultThreadsPerCore": 2,
-   "DefaultVCpus": 64,
+   "DefaultVCpus": 48,
    "ValidCores": [
+    1,
     2,
-    4,
-    8,
-    16,
-    32
+    3,
+    6,
+    9,
+    12,
+    15,
+    18,
+    21,
+    24
    ],
    "ValidThreadsPerCore": [
     1,
@@ -23746,7 +23807,7 @@
    ]
   }
  },
- "g4ad.2xlarge": {
+ "f2.48xlarge": {
   "AutoRecoverySupported": false,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
@@ -23754,74 +23815,82 @@
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
-    "BaselineBandwidthInMbps": 800,
-    "BaselineIops": 3400,
-    "BaselineThroughputInMBps": 100.0,
-    "MaximumBandwidthInMbps": 3170,
-    "MaximumIops": 13333,
-    "MaximumThroughputInMBps": 396.25
+    "BaselineBandwidthInMbps": 60000,
+    "BaselineIops": 240000,
+    "BaselineThroughputInMBps": 7500.0,
+    "MaximumBandwidthInMbps": 60000,
+    "MaximumIops": 240000,
+    "MaximumThroughputInMBps": 7500.0
    },
    "EbsOptimizedSupport": "default",
    "EncryptionSupport": "supported",
    "NvmeSupport": "required"
   },
-  "FreeTierEligible": false,
-  "GpuInfo": {
-   "Gpus": [
+  "FpgaInfo": {
+   "Fpgas": [
     {
-     "Count": 1,
-     "Manufacturer": "AMD",
+     "Count": 8,
+     "Manufacturer": "Xilinx",
      "MemoryInfo": {
-      "SizeInMiB": 8192
+      "SizeInMiB": 81920
      },
-     "Name": "Radeon Pro V520"
+     "Name": "Virtex UltraScale+ (VU47P)"
     }
    ],
-   "TotalGpuMemoryInMiB": 8192
+   "TotalFpgaMemoryInMiB": 655360
   },
+  "FreeTierEligible": false,
   "HibernationSupported": false,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
     {
-     "Count": 1,
-     "SizeInGB": 300,
+     "Count": 8,
+     "SizeInGB": 940,
      "Type": "ssd"
     }
    ],
    "EncryptionSupport": "required",
    "NvmeSupport": "required",
-   "TotalSizeInGB": 300
+   "TotalSizeInGB": 7520
   },
   "InstanceStorageSupported": true,
-  "InstanceType": "g4ad.2xlarge",
+  "InstanceType": "f2.48xlarge",
   "MemoryInfo": {
-   "SizeInMiB": 32768
+   "SizeInMiB": 2097152
   },
   "NetworkInfo": {
    "DefaultNetworkCardIndex": 0,
-   "EfaSupported": false,
+   "EfaInfo": {
+    "MaximumEfaInterfaces": 1
+   },
+   "EfaSupported": true,
    "EnaSrdSupported": false,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
-   "Ipv4AddressesPerInterface": 4,
-   "Ipv6AddressesPerInterface": 4,
+   "Ipv4AddressesPerInterface": 50,
+   "Ipv6AddressesPerInterface": 50,
    "Ipv6Supported": true,
    "MaximumNetworkCards": 1,
-   "MaximumNetworkInterfaces": 2,
+   "MaximumNetworkInterfaces": 15,
    "NetworkCards": [
     {
-     "BaselineBandwidthInGbps": 4.167,
-     "MaximumNetworkInterfaces": 2,
+     "BaselineBandwidthInGbps": 100.0,
+     "MaximumNetworkInterfaces": 15,
      "NetworkCardIndex": 0,
-     "NetworkPerformance": "Up to 10 Gigabit",
-     "PeakBandwidthInGbps": 10.0
+     "NetworkPerformance": "100 Gigabit",
+     "PeakBandwidthInGbps": 100.0
     }
    ],
-   "NetworkPerformance": "Up to 10 Gigabit"
+   "NetworkPerformance": "100 Gigabit"
   },
-  "NitroEnclavesSupport": "unsupported",
-  "NitroTpmSupport": "unsupported",
+  "NitroEnclavesSupport": "supported",
+  "NitroTpmInfo": {
+   "SupportedVersions": [
+    "2.0"
+   ]
+  },
+  "NitroTpmSupport": "supported",
   "PhcSupport": "unsupported",
   "PlacementGroupInfo": {
    "SupportedStrategies": [
@@ -23835,10 +23904,11 @@
    "SupportedArchitectures": [
     "x86_64"
    ],
-   "SustainedClockSpeedInGhz": 3.0
+   "SustainedClockSpeedInGhz": 3.4
   },
   "SupportedBootModes": [
-   "legacy-bios"
+   "legacy-bios",
+   "uefi"
   ],
   "SupportedRootDeviceTypes": [
    "ebs"
@@ -23851,12 +23921,22 @@
    "hvm"
   ],
   "VCpuInfo": {
-   "DefaultCores": 4,
+   "DefaultCores": 96,
    "DefaultThreadsPerCore": 2,
-   "DefaultVCpus": 8,
+   "DefaultVCpus": 192,
    "ValidCores": [
-    2,
-    4
+    4,
+    6,
+    8,
+    10,
+    12,
+    24,
+    36,
+    48,
+    60,
+    72,
+    84,
+    96
    ],
    "ValidThreadsPerCore": [
     1,
@@ -23864,20 +23944,20 @@
    ]
   }
  },
- "g4ad.4xlarge": {
+ "g4ad.16xlarge": {
   "AutoRecoverySupported": false,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
   "CurrentGeneration": true,
-  "DedicatedHostsSupported": true,
+  "DedicatedHostsSupported": false,
   "EbsInfo": {
    "EbsOptimizedInfo": {
-    "BaselineBandwidthInMbps": 1580,
-    "BaselineIops": 6700,
-    "BaselineThroughputInMBps": 197.5,
-    "MaximumBandwidthInMbps": 3170,
-    "MaximumIops": 13333,
-    "MaximumThroughputInMBps": 396.25
+    "BaselineBandwidthInMbps": 6300,
+    "BaselineIops": 26667,
+    "BaselineThroughputInMBps": 787.5,
+    "MaximumBandwidthInMbps": 6300,
+    "MaximumIops": 26667,
+    "MaximumThroughputInMBps": 787.5
    },
    "EbsOptimizedSupport": "default",
    "EncryptionSupport": "supported",
@@ -23887,7 +23967,7 @@
   "GpuInfo": {
    "Gpus": [
     {
-     "Count": 1,
+     "Count": 4,
      "Manufacturer": "AMD",
      "MemoryInfo": {
       "SizeInMiB": 8192
@@ -23895,26 +23975,26 @@
      "Name": "Radeon Pro V520"
     }
    ],
-   "TotalGpuMemoryInMiB": 8192
+   "TotalGpuMemoryInMiB": 32768
   },
   "HibernationSupported": false,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
     {
-     "Count": 1,
-     "SizeInGB": 600,
+     "Count": 2,
+     "SizeInGB": 1200,
      "Type": "ssd"
     }
    ],
    "EncryptionSupport": "required",
    "NvmeSupport": "required",
-   "TotalSizeInGB": 600
+   "TotalSizeInGB": 2400
   },
   "InstanceStorageSupported": true,
-  "InstanceType": "g4ad.4xlarge",
+  "InstanceType": "g4ad.16xlarge",
   "MemoryInfo": {
-   "SizeInMiB": 65536
+   "SizeInMiB": 262144
   },
   "NetworkInfo": {
    "DefaultNetworkCardIndex": 0,
@@ -23922,21 +24002,21 @@
    "EnaSrdSupported": false,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
-   "Ipv4AddressesPerInterface": 10,
-   "Ipv6AddressesPerInterface": 10,
+   "Ipv4AddressesPerInterface": 30,
+   "Ipv6AddressesPerInterface": 30,
    "Ipv6Supported": true,
    "MaximumNetworkCards": 1,
-   "MaximumNetworkInterfaces": 3,
+   "MaximumNetworkInterfaces": 8,
    "NetworkCards": [
     {
-     "BaselineBandwidthInGbps": 8.333,
-     "MaximumNetworkInterfaces": 3,
+     "BaselineBandwidthInGbps": 25.0,
+     "MaximumNetworkInterfaces": 8,
      "NetworkCardIndex": 0,
-     "NetworkPerformance": "Up to 10 Gigabit",
-     "PeakBandwidthInGbps": 10.0
+     "NetworkPerformance": "25 Gigabit",
+     "PeakBandwidthInGbps": 25.0
     }
    ],
-   "NetworkPerformance": "Up to 10 Gigabit"
+   "NetworkPerformance": "25 Gigabit"
   },
   "NitroEnclavesSupport": "unsupported",
   "NitroTpmSupport": "unsupported",
@@ -23969,13 +24049,15 @@
    "hvm"
   ],
   "VCpuInfo": {
-   "DefaultCores": 8,
+   "DefaultCores": 32,
    "DefaultThreadsPerCore": 2,
-   "DefaultVCpus": 16,
+   "DefaultVCpus": 64,
    "ValidCores": [
     2,
     4,
-    8
+    8,
+    16,
+    32
    ],
    "ValidThreadsPerCore": [
     1,
@@ -23983,7 +24065,7 @@
    ]
   }
  },
- "g4ad.8xlarge": {
+ "g4ad.2xlarge": {
   "AutoRecoverySupported": false,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
@@ -23991,9 +24073,9 @@
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
-    "BaselineBandwidthInMbps": 3170,
-    "BaselineIops": 13333,
-    "BaselineThroughputInMBps": 396.25,
+    "BaselineBandwidthInMbps": 800,
+    "BaselineIops": 3400,
+    "BaselineThroughputInMBps": 100.0,
     "MaximumBandwidthInMbps": 3170,
     "MaximumIops": 13333,
     "MaximumThroughputInMBps": 396.25
@@ -24006,7 +24088,7 @@
   "GpuInfo": {
    "Gpus": [
     {
-     "Count": 2,
+     "Count": 1,
      "Manufacturer": "AMD",
      "MemoryInfo": {
       "SizeInMiB": 8192
@@ -24014,7 +24096,7 @@
      "Name": "Radeon Pro V520"
     }
    ],
-   "TotalGpuMemoryInMiB": 16384
+   "TotalGpuMemoryInMiB": 8192
   },
   "HibernationSupported": false,
   "Hypervisor": "nitro",
@@ -24022,18 +24104,18 @@
    "Disks": [
     {
      "Count": 1,
-     "SizeInGB": 1200,
+     "SizeInGB": 300,
      "Type": "ssd"
     }
    ],
    "EncryptionSupport": "required",
    "NvmeSupport": "required",
-   "TotalSizeInGB": 1200
+   "TotalSizeInGB": 300
   },
   "InstanceStorageSupported": true,
-  "InstanceType": "g4ad.8xlarge",
+  "InstanceType": "g4ad.2xlarge",
   "MemoryInfo": {
-   "SizeInMiB": 131072
+   "SizeInMiB": 32768
   },
   "NetworkInfo": {
    "DefaultNetworkCardIndex": 0,
@@ -24041,21 +24123,258 @@
    "EnaSrdSupported": false,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
-   "Ipv4AddressesPerInterface": 15,
-   "Ipv6AddressesPerInterface": 15,
+   "Ipv4AddressesPerInterface": 4,
+   "Ipv6AddressesPerInterface": 4,
    "Ipv6Supported": true,
    "MaximumNetworkCards": 1,
-   "MaximumNetworkInterfaces": 4,
+   "MaximumNetworkInterfaces": 2,
    "NetworkCards": [
     {
-     "BaselineBandwidthInGbps": 15.0,
-     "MaximumNetworkInterfaces": 4,
+     "BaselineBandwidthInGbps": 4.167,
+     "MaximumNetworkInterfaces": 2,
      "NetworkCardIndex": 0,
-     "NetworkPerformance": "15 Gigabit",
-     "PeakBandwidthInGbps": 15.0
+     "NetworkPerformance": "Up to 10 Gigabit",
+     "PeakBandwidthInGbps": 10.0
     }
    ],
-   "NetworkPerformance": "15 Gigabit"
+   "NetworkPerformance": "Up to 10 Gigabit"
+  },
+  "NitroEnclavesSupport": "unsupported",
+  "NitroTpmSupport": "unsupported",
+  "PhcSupport": "unsupported",
+  "PlacementGroupInfo": {
+   "SupportedStrategies": [
+    "cluster",
+    "partition",
+    "spread"
+   ]
+  },
+  "ProcessorInfo": {
+   "Manufacturer": "AMD",
+   "SupportedArchitectures": [
+    "x86_64"
+   ],
+   "SustainedClockSpeedInGhz": 3.0
+  },
+  "SupportedBootModes": [
+   "legacy-bios"
+  ],
+  "SupportedRootDeviceTypes": [
+   "ebs"
+  ],
+  "SupportedUsageClasses": [
+   "on-demand",
+   "spot"
+  ],
+  "SupportedVirtualizationTypes": [
+   "hvm"
+  ],
+  "VCpuInfo": {
+   "DefaultCores": 4,
+   "DefaultThreadsPerCore": 2,
+   "DefaultVCpus": 8,
+   "ValidCores": [
+    2,
+    4
+   ],
+   "ValidThreadsPerCore": [
+    1,
+    2
+   ]
+  }
+ },
+ "g4ad.4xlarge": {
+  "AutoRecoverySupported": false,
+  "BareMetal": false,
+  "BurstablePerformanceSupported": false,
+  "CurrentGeneration": true,
+  "DedicatedHostsSupported": true,
+  "EbsInfo": {
+   "EbsOptimizedInfo": {
+    "BaselineBandwidthInMbps": 1580,
+    "BaselineIops": 6700,
+    "BaselineThroughputInMBps": 197.5,
+    "MaximumBandwidthInMbps": 3170,
+    "MaximumIops": 13333,
+    "MaximumThroughputInMBps": 396.25
+   },
+   "EbsOptimizedSupport": "default",
+   "EncryptionSupport": "supported",
+   "NvmeSupport": "required"
+  },
+  "FreeTierEligible": false,
+  "GpuInfo": {
+   "Gpus": [
+    {
+     "Count": 1,
+     "Manufacturer": "AMD",
+     "MemoryInfo": {
+      "SizeInMiB": 8192
+     },
+     "Name": "Radeon Pro V520"
+    }
+   ],
+   "TotalGpuMemoryInMiB": 8192
+  },
+  "HibernationSupported": false,
+  "Hypervisor": "nitro",
+  "InstanceStorageInfo": {
+   "Disks": [
+    {
+     "Count": 1,
+     "SizeInGB": 600,
+     "Type": "ssd"
+    }
+   ],
+   "EncryptionSupport": "required",
+   "NvmeSupport": "required",
+   "TotalSizeInGB": 600
+  },
+  "InstanceStorageSupported": true,
+  "InstanceType": "g4ad.4xlarge",
+  "MemoryInfo": {
+   "SizeInMiB": 65536
+  },
+  "NetworkInfo": {
+   "DefaultNetworkCardIndex": 0,
+   "EfaSupported": false,
+   "EnaSrdSupported": false,
+   "EnaSupport": "required",
+   "EncryptionInTransitSupported": true,
+   "Ipv4AddressesPerInterface": 10,
+   "Ipv6AddressesPerInterface": 10,
+   "Ipv6Supported": true,
+   "MaximumNetworkCards": 1,
+   "MaximumNetworkInterfaces": 3,
+   "NetworkCards": [
+    {
+     "BaselineBandwidthInGbps": 8.333,
+     "MaximumNetworkInterfaces": 3,
+     "NetworkCardIndex": 0,
+     "NetworkPerformance": "Up to 10 Gigabit",
+     "PeakBandwidthInGbps": 10.0
+    }
+   ],
+   "NetworkPerformance": "Up to 10 Gigabit"
+  },
+  "NitroEnclavesSupport": "unsupported",
+  "NitroTpmSupport": "unsupported",
+  "PhcSupport": "unsupported",
+  "PlacementGroupInfo": {
+   "SupportedStrategies": [
+    "cluster",
+    "partition",
+    "spread"
+   ]
+  },
+  "ProcessorInfo": {
+   "Manufacturer": "AMD",
+   "SupportedArchitectures": [
+    "x86_64"
+   ],
+   "SustainedClockSpeedInGhz": 3.0
+  },
+  "SupportedBootModes": [
+   "legacy-bios"
+  ],
+  "SupportedRootDeviceTypes": [
+   "ebs"
+  ],
+  "SupportedUsageClasses": [
+   "on-demand",
+   "spot"
+  ],
+  "SupportedVirtualizationTypes": [
+   "hvm"
+  ],
+  "VCpuInfo": {
+   "DefaultCores": 8,
+   "DefaultThreadsPerCore": 2,
+   "DefaultVCpus": 16,
+   "ValidCores": [
+    2,
+    4,
+    8
+   ],
+   "ValidThreadsPerCore": [
+    1,
+    2
+   ]
+  }
+ },
+ "g4ad.8xlarge": {
+  "AutoRecoverySupported": false,
+  "BareMetal": false,
+  "BurstablePerformanceSupported": false,
+  "CurrentGeneration": true,
+  "DedicatedHostsSupported": true,
+  "EbsInfo": {
+   "EbsOptimizedInfo": {
+    "BaselineBandwidthInMbps": 3170,
+    "BaselineIops": 13333,
+    "BaselineThroughputInMBps": 396.25,
+    "MaximumBandwidthInMbps": 3170,
+    "MaximumIops": 13333,
+    "MaximumThroughputInMBps": 396.25
+   },
+   "EbsOptimizedSupport": "default",
+   "EncryptionSupport": "supported",
+   "NvmeSupport": "required"
+  },
+  "FreeTierEligible": false,
+  "GpuInfo": {
+   "Gpus": [
+    {
+     "Count": 2,
+     "Manufacturer": "AMD",
+     "MemoryInfo": {
+      "SizeInMiB": 8192
+     },
+     "Name": "Radeon Pro V520"
+    }
+   ],
+   "TotalGpuMemoryInMiB": 16384
+  },
+  "HibernationSupported": false,
+  "Hypervisor": "nitro",
+  "InstanceStorageInfo": {
+   "Disks": [
+    {
+     "Count": 1,
+     "SizeInGB": 1200,
+     "Type": "ssd"
+    }
+   ],
+   "EncryptionSupport": "required",
+   "NvmeSupport": "required",
+   "TotalSizeInGB": 1200
+  },
+  "InstanceStorageSupported": true,
+  "InstanceType": "g4ad.8xlarge",
+  "MemoryInfo": {
+   "SizeInMiB": 131072
+  },
+  "NetworkInfo": {
+   "DefaultNetworkCardIndex": 0,
+   "EfaSupported": false,
+   "EnaSrdSupported": false,
+   "EnaSupport": "required",
+   "EncryptionInTransitSupported": true,
+   "Ipv4AddressesPerInterface": 15,
+   "Ipv6AddressesPerInterface": 15,
+   "Ipv6Supported": true,
+   "MaximumNetworkCards": 1,
+   "MaximumNetworkInterfaces": 4,
+   "NetworkCards": [
+    {
+     "BaselineBandwidthInGbps": 15.0,
+     "MaximumNetworkInterfaces": 4,
+     "NetworkCardIndex": 0,
+     "NetworkPerformance": "15 Gigabit",
+     "PeakBandwidthInGbps": 15.0
+    }
+   ],
+   "NetworkPerformance": "15 Gigabit"
   },
   "NitroEnclavesSupport": "unsupported",
   "NitroTpmSupport": "unsupported",
@@ -53585,7 +53904,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -54086,7 +54405,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -54763,7 +55082,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -55216,7 +55535,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -56373,7 +56692,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "m7a.medium",
@@ -60545,6 +60864,11 @@
    "SizeInMiB": 196608
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -60688,6 +61012,11 @@
    "SizeInMiB": 262144
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -60847,6 +61176,11 @@
    "SizeInMiB": 393216
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -61041,6 +61375,11 @@
    "SizeInMiB": 32768
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -61144,6 +61483,11 @@
    "SizeInMiB": 786432
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -61337,6 +61681,11 @@
    "SizeInMiB": 65536
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -61448,6 +61797,11 @@
    "SizeInMiB": 131072
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -61575,6 +61929,11 @@
    "SizeInMiB": 8192
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -61672,6 +62031,11 @@
    "SizeInMiB": 4096
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -61936,6 +62300,11 @@
    "SizeInMiB": 16384
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -64457,7 +64826,7 @@
      "PeakBandwidthInGbps": 200.0
     }
    ],
-   "NetworkPerformance": "200 Gigabit"
+   "NetworkPerformance": "3200 Gigabit"
   },
   "NitroEnclavesSupport": "supported",
   "NitroTpmSupport": "unsupported",
@@ -78345,7 +78714,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -78846,7 +79215,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -79523,7 +79892,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -79976,7 +80345,7 @@
     "MaximumEfaInterfaces": 2
    },
    "EfaSupported": true,
-   "EnaSrdSupported": false,
+   "EnaSrdSupported": true,
    "EnaSupport": "required",
    "EncryptionInTransitSupported": true,
    "Ipv4AddressesPerInterface": 50,
@@ -85862,6 +86231,11 @@
    "SizeInMiB": 393216
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -86005,6 +86379,11 @@
    "SizeInMiB": 524288
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -86164,6 +86543,11 @@
    "SizeInMiB": 786432
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -86358,6 +86742,11 @@
    "SizeInMiB": 65536
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -86461,6 +86850,11 @@
    "SizeInMiB": 1572864
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -86654,6 +87048,11 @@
    "SizeInMiB": 131072
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -86765,6 +87164,11 @@
    "SizeInMiB": 262144
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -86892,6 +87296,11 @@
    "SizeInMiB": 16384
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -86989,6 +87398,11 @@
    "SizeInMiB": 8192
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -87253,6 +87667,11 @@
    "SizeInMiB": 32768
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -91701,12 +92120,7 @@
    "NetworkPerformance": "100 Gigabit"
   },
   "NitroEnclavesSupport": "unsupported",
-  "NitroTpmInfo": {
-   "SupportedVersions": [
-    "2.0"
-   ]
-  },
-  "NitroTpmSupport": "supported",
+  "NitroTpmSupport": "unsupported",
   "PhcSupport": "unsupported",
   "PlacementGroupInfo": {
    "SupportedStrategies": [
@@ -91802,6 +92216,298 @@
    ]
   }
  },
+ "u7i-6tb.112xlarge": {
+  "AutoRecoverySupported": true,
+  "BareMetal": false,
+  "BurstablePerformanceSupported": false,
+  "CurrentGeneration": true,
+  "DedicatedHostsSupported": true,
+  "EbsInfo": {
+   "EbsOptimizedInfo": {
+    "BaselineBandwidthInMbps": 60000,
+    "BaselineIops": 420000,
+    "BaselineThroughputInMBps": 7500.0,
+    "MaximumBandwidthInMbps": 60000,
+    "MaximumIops": 420000,
+    "MaximumThroughputInMBps": 7500.0
+   },
+   "EbsOptimizedSupport": "default",
+   "EncryptionSupport": "supported",
+   "NvmeSupport": "required"
+  },
+  "FreeTierEligible": false,
+  "HibernationSupported": false,
+  "Hypervisor": "nitro",
+  "InstanceStorageSupported": false,
+  "InstanceType": "u7i-6tb.112xlarge",
+  "MemoryInfo": {
+   "SizeInMiB": 6291456
+  },
+  "NetworkInfo": {
+   "DefaultNetworkCardIndex": 0,
+   "EfaSupported": false,
+   "EnaSrdSupported": true,
+   "EnaSupport": "required",
+   "EncryptionInTransitSupported": true,
+   "Ipv4AddressesPerInterface": 50,
+   "Ipv6AddressesPerInterface": 50,
+   "Ipv6Supported": true,
+   "MaximumNetworkCards": 1,
+   "MaximumNetworkInterfaces": 15,
+   "NetworkCards": [
+    {
+     "BaselineBandwidthInGbps": 100.0,
+     "MaximumNetworkInterfaces": 15,
+     "NetworkCardIndex": 0,
+     "NetworkPerformance": "100 Gigabit",
+     "PeakBandwidthInGbps": 100.0
+    }
+   ],
+   "NetworkPerformance": "100 Gigabit"
+  },
+  "NitroEnclavesSupport": "unsupported",
+  "NitroTpmSupport": "unsupported",
+  "PhcSupport": "unsupported",
+  "PlacementGroupInfo": {
+   "SupportedStrategies": [
+    "cluster",
+    "partition",
+    "spread"
+   ]
+  },
+  "ProcessorInfo": {
+   "Manufacturer": "Intel",
+   "SupportedArchitectures": [
+    "x86_64"
+   ],
+   "SustainedClockSpeedInGhz": 1.9
+  },
+  "SupportedBootModes": [
+   "legacy-bios",
+   "uefi"
+  ],
+  "SupportedRootDeviceTypes": [
+   "ebs"
+  ],
+  "SupportedUsageClasses": [
+   "on-demand"
+  ],
+  "SupportedVirtualizationTypes": [
+   "hvm"
+  ],
+  "VCpuInfo": {
+   "DefaultCores": 224,
+   "DefaultThreadsPerCore": 2,
+   "DefaultVCpus": 448,
+   "ValidCores": [
+    8,
+    12,
+    16,
+    20,
+    24,
+    28,
+    32,
+    36,
+    40,
+    44,
+    48,
+    52,
+    56,
+    60,
+    64,
+    68,
+    72,
+    76,
+    80,
+    84,
+    88,
+    92,
+    96,
+    100,
+    104,
+    108,
+    112,
+    116,
+    120,
+    124,
+    128,
+    132,
+    136,
+    140,
+    144,
+    148,
+    152,
+    156,
+    160,
+    164,
+    168,
+    172,
+    176,
+    180,
+    184,
+    188,
+    192,
+    196,
+    200,
+    204,
+    208,
+    212,
+    216,
+    220,
+    224
+   ],
+   "ValidThreadsPerCore": [
+    1,
+    2
+   ]
+  }
+ },
+ "u7i-8tb.112xlarge": {
+  "AutoRecoverySupported": true,
+  "BareMetal": false,
+  "BurstablePerformanceSupported": false,
+  "CurrentGeneration": true,
+  "DedicatedHostsSupported": true,
+  "EbsInfo": {
+   "EbsOptimizedInfo": {
+    "BaselineBandwidthInMbps": 60000,
+    "BaselineIops": 420000,
+    "BaselineThroughputInMBps": 7500.0,
+    "MaximumBandwidthInMbps": 60000,
+    "MaximumIops": 420000,
+    "MaximumThroughputInMBps": 7500.0
+   },
+   "EbsOptimizedSupport": "default",
+   "EncryptionSupport": "supported",
+   "NvmeSupport": "required"
+  },
+  "FreeTierEligible": false,
+  "HibernationSupported": false,
+  "Hypervisor": "nitro",
+  "InstanceStorageSupported": false,
+  "InstanceType": "u7i-8tb.112xlarge",
+  "MemoryInfo": {
+   "SizeInMiB": 8388608
+  },
+  "NetworkInfo": {
+   "DefaultNetworkCardIndex": 0,
+   "EfaSupported": false,
+   "EnaSrdSupported": true,
+   "EnaSupport": "required",
+   "EncryptionInTransitSupported": true,
+   "Ipv4AddressesPerInterface": 50,
+   "Ipv6AddressesPerInterface": 50,
+   "Ipv6Supported": true,
+   "MaximumNetworkCards": 1,
+   "MaximumNetworkInterfaces": 15,
+   "NetworkCards": [
+    {
+     "BaselineBandwidthInGbps": 100.0,
+     "MaximumNetworkInterfaces": 15,
+     "NetworkCardIndex": 0,
+     "NetworkPerformance": "100 Gigabit",
+     "PeakBandwidthInGbps": 100.0
+    }
+   ],
+   "NetworkPerformance": "100 Gigabit"
+  },
+  "NitroEnclavesSupport": "unsupported",
+  "NitroTpmSupport": "unsupported",
+  "PhcSupport": "supported",
+  "PlacementGroupInfo": {
+   "SupportedStrategies": [
+    "cluster",
+    "partition",
+    "spread"
+   ]
+  },
+  "ProcessorInfo": {
+   "Manufacturer": "Intel",
+   "SupportedArchitectures": [
+    "x86_64"
+   ],
+   "SustainedClockSpeedInGhz": 1.9
+  },
+  "SupportedBootModes": [
+   "legacy-bios",
+   "uefi"
+  ],
+  "SupportedRootDeviceTypes": [
+   "ebs"
+  ],
+  "SupportedUsageClasses": [
+   "on-demand"
+  ],
+  "SupportedVirtualizationTypes": [
+   "hvm"
+  ],
+  "VCpuInfo": {
+   "DefaultCores": 224,
+   "DefaultThreadsPerCore": 2,
+   "DefaultVCpus": 448,
+   "ValidCores": [
+    8,
+    12,
+    16,
+    20,
+    24,
+    28,
+    32,
+    36,
+    40,
+    44,
+    48,
+    52,
+    56,
+    60,
+    64,
+    68,
+    72,
+    76,
+    80,
+    84,
+    88,
+    92,
+    96,
+    100,
+    104,
+    108,
+    112,
+    116,
+    120,
+    124,
+    128,
+    132,
+    136,
+    140,
+    144,
+    148,
+    152,
+    156,
+    160,
+    164,
+    168,
+    172,
+    176,
+    180,
+    184,
+    188,
+    192,
+    196,
+    200,
+    204,
+    208,
+    212,
+    216,
+    220,
+    224
+   ],
+   "ValidThreadsPerCore": [
+    1,
+    2
+   ]
+  }
+ },
  "u7in-16tb.224xlarge": {
   "AutoRecoverySupported": true,
   "BareMetal": false,
@@ -91862,12 +92568,7 @@
    "NetworkPerformance": "200 Gigabit"
   },
   "NitroEnclavesSupport": "unsupported",
-  "NitroTpmInfo": {
-   "SupportedVersions": [
-    "2.0"
-   ]
-  },
-  "NitroTpmSupport": "supported",
+  "NitroTpmSupport": "unsupported",
   "PhcSupport": "unsupported",
   "PlacementGroupInfo": {
    "SupportedStrategies": [
@@ -92023,12 +92724,7 @@
    "NetworkPerformance": "200 Gigabit"
   },
   "NitroEnclavesSupport": "unsupported",
-  "NitroTpmInfo": {
-   "SupportedVersions": [
-    "2.0"
-   ]
-  },
-  "NitroTpmSupport": "supported",
+  "NitroTpmSupport": "unsupported",
   "PhcSupport": "unsupported",
   "PlacementGroupInfo": {
    "SupportedStrategies": [
@@ -92184,12 +92880,7 @@
    "NetworkPerformance": "200 Gigabit"
   },
   "NitroEnclavesSupport": "unsupported",
-  "NitroTpmInfo": {
-   "SupportedVersions": [
-    "2.0"
-   ]
-  },
-  "NitroTpmSupport": "supported",
+  "NitroTpmSupport": "unsupported",
   "PhcSupport": "unsupported",
   "PlacementGroupInfo": {
    "SupportedStrategies": [
@@ -96693,6 +97384,11 @@
    "SizeInMiB": 786432
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -96836,6 +97532,11 @@
    "SizeInMiB": 1048576
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": true,
@@ -96995,6 +97696,11 @@
    "SizeInMiB": 1572864
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -97189,6 +97895,11 @@
    "SizeInMiB": 131072
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -97292,6 +98003,11 @@
    "SizeInMiB": 3145728
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaInfo": {
     "MaximumEfaInterfaces": 1
@@ -97485,6 +98201,11 @@
    "SizeInMiB": 262144
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -97596,6 +98317,11 @@
    "SizeInMiB": 524288
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -97723,6 +98449,11 @@
    "SizeInMiB": 32768
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -97820,6 +98551,11 @@
    "SizeInMiB": 16384
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
@@ -98084,6 +98820,11 @@
    "SizeInMiB": 65536
   },
   "NetworkInfo": {
+   "BandwidthWeightings": [
+    "default",
+    "ebs-1",
+    "vpc-1"
+   ],
    "DefaultNetworkCardIndex": 0,
    "EfaSupported": false,
    "EnaSrdSupported": false,
diff --git a/moto/ec2/responses/security_groups.py b/moto/ec2/responses/security_groups.py
index d71b88b9d..0a43765f7 100644
--- a/moto/ec2/responses/security_groups.py
+++ b/moto/ec2/responses/security_groups.py
@@ -261,6 +261,7 @@ CREATE_SECURITY_GROUP_RESPONSE = """<CreateSecurityGroupResponse xmlns="http://e
    <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
    <return>true</return>
    <groupId>{{ group.id }}</groupId>
+   <securityGroupArn>{{ group.arn }}</securityGroupArn>
    <tagSet>
     {% for tag in group.get_tags() %}
         <item>
@@ -346,6 +347,7 @@ DESCRIBE_SECURITY_GROUPS_RESPONSE = """<DescribeSecurityGroupsResponse xmlns="ht
              <groupId>{{ group.id }}</groupId>
              <groupName>{{ group.name }}</groupName>
              <groupDescription>{{ group.description }}</groupDescription>
+             <securityGroupArn>{{ group.arn }}</securityGroupArn>
              {% if group.vpc_id %}
              <vpcId>{{ group.vpc_id }}</vpcId>
              {% endif %}
diff --git a/moto/kafka/__init__.py b/moto/kafka/__init__.py
new file mode 100644
index 000000000..578812355
--- /dev/null
+++ b/moto/kafka/__init__.py
@@ -0,0 +1,1 @@
+from .models import kafka_backends  # noqa: F401
diff --git a/moto/kafka/exceptions.py b/moto/kafka/exceptions.py
new file mode 100644
index 000000000..9dc38515a
--- /dev/null
+++ b/moto/kafka/exceptions.py
@@ -0,0 +1,1 @@
+"""Exceptions raised by the kafka service."""
diff --git a/moto/kafka/models.py b/moto/kafka/models.py
new file mode 100644
index 000000000..8308f5a1b
--- /dev/null
+++ b/moto/kafka/models.py
@@ -0,0 +1,332 @@
+"""KafkaBackend class with methods for supported APIs."""
+
+import uuid
+from datetime import datetime
+from typing import Any, Dict, List, Optional, Tuple
+
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
+from moto.utilities.utils import get_partition
+
+from ..utilities.tagging_service import TaggingService
+
+
+class FakeKafkaCluster(BaseModel):
+    def __init__(
+        self,
+        cluster_name: str,
+        account_id: str,
+        region_name: str,
+        cluster_type: str,
+        tags: Optional[Dict[str, str]] = None,
+        broker_node_group_info: Optional[Dict[str, Any]] = None,
+        kafka_version: Optional[str] = None,
+        number_of_broker_nodes: Optional[int] = None,
+        configuration_info: Optional[Dict[str, Any]] = None,
+        serverless_config: Optional[Dict[str, Any]] = None,
+        encryption_info: Optional[Dict[str, Any]] = None,
+        enhanced_monitoring: str = "DEFAULT",
+        open_monitoring: Optional[Dict[str, Any]] = None,
+        logging_info: Optional[Dict[str, Any]] = None,
+        storage_mode: str = "LOCAL",
+        current_version: str = "1.0",
+        client_authentication: Optional[Dict[str, Any]] = None,
+        state: str = "CREATING",
+        active_operation_arn: Optional[str] = None,
+        zookeeper_connect_string: Optional[str] = None,
+        zookeeper_connect_string_tls: Optional[str] = None,
+    ):
+        # General attributes
+        self.cluster_id = str(uuid.uuid4())
+        self.cluster_name = cluster_name
+        self.account_id = account_id
+        self.region_name = region_name
+        self.cluster_type = cluster_type
+        self.tags = tags or {}
+        self.state = state
+        self.creation_time = datetime.now().isoformat()
+        self.current_version = current_version
+        self.active_operation_arn = active_operation_arn
+        self.arn = self._generate_arn()
+
+        # Attributes specific to PROVISIONED clusters
+        self.broker_node_group_info = broker_node_group_info
+        self.kafka_version = kafka_version
+        self.number_of_broker_nodes = number_of_broker_nodes
+        self.configuration_info = configuration_info
+        self.encryption_info = encryption_info
+        self.enhanced_monitoring = enhanced_monitoring
+        self.open_monitoring = open_monitoring
+        self.logging_info = logging_info
+        self.storage_mode = storage_mode
+        self.client_authentication = client_authentication
+        self.zookeeper_connect_string = zookeeper_connect_string
+        self.zookeeper_connect_string_tls = zookeeper_connect_string_tls
+
+        # Attributes specific to SERVERLESS clusters
+        self.serverless_config = serverless_config
+
+    def _generate_arn(self) -> str:
+        resource_type = (
+            "cluster" if self.cluster_type == "PROVISIONED" else "serverless-cluster"
+        )
+        partition = get_partition(self.region_name)
+        return f"arn:{partition}:kafka:{self.region_name}:{self.account_id}:{resource_type}/{self.cluster_id}"
+
+
+class KafkaBackend(BaseBackend):
+    """Implementation of Kafka APIs."""
+
+    def __init__(self, region_name: str, account_id: str):
+        super().__init__(region_name, account_id)
+        self.clusters: Dict[str, FakeKafkaCluster] = {}
+        self.tagger = TaggingService()
+
+    def create_cluster_v2(
+        self,
+        cluster_name: str,
+        tags: Optional[Dict[str, str]],
+        provisioned: Optional[Dict[str, Any]],
+        serverless: Optional[Dict[str, Any]],
+    ) -> Tuple[str, str, str, str]:
+        if provisioned:
+            cluster_type = "PROVISIONED"
+            broker_node_group_info = provisioned.get("brokerNodeGroupInfo")
+            kafka_version = provisioned.get("kafkaVersion", "default-kafka-version")
+            number_of_broker_nodes = int(provisioned.get("numberOfBrokerNodes", 1))
+            storage_mode = provisioned.get("storageMode", "LOCAL")
+            serverless_config = None
+        elif serverless:
+            cluster_type = "SERVERLESS"
+            broker_node_group_info = None
+            kafka_version = None
+            number_of_broker_nodes = None
+            storage_mode = None
+            serverless_config = serverless
+
+        new_cluster = FakeKafkaCluster(
+            cluster_name=cluster_name,
+            account_id=self.account_id,
+            region_name=self.region_name,
+            cluster_type=cluster_type,
+            broker_node_group_info=broker_node_group_info,
+            kafka_version=kafka_version,
+            number_of_broker_nodes=number_of_broker_nodes,
+            serverless_config=serverless_config,
+            tags=tags,
+            state="CREATING",
+            storage_mode=storage_mode if storage_mode else "LOCAL",
+            current_version="1.0",
+        )
+
+        self.clusters[new_cluster.arn] = new_cluster
+
+        if tags:
+            self.tag_resource(new_cluster.arn, tags)
+
+        return (
+            new_cluster.arn,
+            new_cluster.cluster_name,
+            new_cluster.state,
+            new_cluster.cluster_type,
+        )
+
+    def describe_cluster_v2(self, cluster_arn: str) -> Dict[str, Any]:
+        cluster = self.clusters[cluster_arn]
+
+        cluster_info: Dict[str, Any] = {
+            "activeOperationArn": "arn:aws:kafka:region:account-id:operation/active-operation",
+            "clusterArn": cluster.arn,
+            "clusterName": cluster.cluster_name,
+            "clusterType": cluster.cluster_type,
+            "creationTime": cluster.creation_time,
+            "currentVersion": cluster.current_version,
+            "state": cluster.state,
+            "stateInfo": {
+                "code": "string",
+                "message": "Cluster state details.",
+            },
+            "tags": self.list_tags_for_resource(cluster.arn),
+        }
+
+        if cluster.cluster_type == "PROVISIONED":
+            cluster_info.update(
+                {
+                    "provisioned": {
+                        "brokerNodeGroupInfo": cluster.broker_node_group_info or {},
+                        "clientAuthentication": cluster.client_authentication or {},
+                        "currentBrokerSoftwareInfo": {
+                            "configurationArn": (cluster.configuration_info or {}).get(
+                                "arn", "string"
+                            ),
+                            "configurationRevision": (
+                                cluster.configuration_info or {}
+                            ).get("revision", 1),
+                            "kafkaVersion": cluster.kafka_version,
+                        },
+                        "encryptionInfo": cluster.encryption_info or {},
+                        "enhancedMonitoring": cluster.enhanced_monitoring,
+                        "openMonitoring": cluster.open_monitoring or {},
+                        "loggingInfo": cluster.logging_info or {},
+                        "numberOfBrokerNodes": cluster.number_of_broker_nodes or 0,
+                        "zookeeperConnectString": cluster.zookeeper_connect_string
+                        or "zookeeper.example.com:2181",
+                        "zookeeperConnectStringTls": cluster.zookeeper_connect_string_tls
+                        or "zookeeper.example.com:2181",
+                        "storageMode": cluster.storage_mode,
+                        "customerActionStatus": "NONE",
+                    }
+                }
+            )
+
+        elif cluster.cluster_type == "SERVERLESS":
+            cluster_info.update(
+                {
+                    "serverless": {
+                        "vpcConfigs": cluster.serverless_config.get("vpcConfigs", [])
+                        if cluster.serverless_config
+                        else [],
+                        "clientAuthentication": cluster.serverless_config.get(
+                            "clientAuthentication", {}
+                        )
+                        if cluster.serverless_config
+                        else {},
+                    }
+                }
+            )
+
+        return cluster_info
+
+    def list_clusters_v2(
+        self,
+        cluster_name_filter: Optional[str],
+        cluster_type_filter: Optional[str],
+        max_results: Optional[int],
+        next_token: Optional[str],
+    ) -> Tuple[List[Dict[str, Any]], Optional[str]]:
+        cluster_info_list = [
+            {
+                "clusterArn": cluster.arn,
+                "clusterName": cluster.cluster_name,
+                "clusterType": cluster.cluster_type,
+                "state": cluster.state,
+                "creationTime": cluster.creation_time,
+            }
+            for cluster in self.clusters.values()
+        ]
+
+        return cluster_info_list, None
+
+    def create_cluster(
+        self,
+        broker_node_group_info: Dict[str, Any],
+        client_authentication: Optional[Dict[str, Any]],
+        cluster_name: str,
+        configuration_info: Optional[Dict[str, Any]] = None,
+        encryption_info: Optional[Dict[str, Any]] = None,
+        enhanced_monitoring: str = "DEFAULT",
+        open_monitoring: Optional[Dict[str, Any]] = None,
+        kafka_version: str = "2.8.1",
+        logging_info: Optional[Dict[str, Any]] = None,
+        number_of_broker_nodes: int = 1,
+        tags: Optional[Dict[str, str]] = None,
+        storage_mode: str = "LOCAL",
+    ) -> Tuple[str, str, str]:
+        new_cluster = FakeKafkaCluster(
+            cluster_name=cluster_name,
+            account_id=self.account_id,
+            region_name=self.region_name,
+            cluster_type="PROVISIONED",
+            broker_node_group_info=broker_node_group_info,
+            client_authentication=client_authentication,
+            kafka_version=kafka_version,
+            number_of_broker_nodes=number_of_broker_nodes,
+            configuration_info=configuration_info,
+            encryption_info=encryption_info,
+            enhanced_monitoring=enhanced_monitoring,
+            open_monitoring=open_monitoring,
+            logging_info=logging_info,
+            storage_mode=storage_mode,
+        )
+
+        self.clusters[new_cluster.arn] = new_cluster
+
+        if tags:
+            self.tag_resource(new_cluster.arn, tags)
+
+        return new_cluster.arn, new_cluster.cluster_name, new_cluster.state
+
+    def describe_cluster(self, cluster_arn: str) -> Dict[str, Any]:
+        cluster = self.clusters[cluster_arn]
+
+        return {
+            "activeOperationArn": "arn:aws:kafka:region:account-id:operation/active-operation",
+            "brokerNodeGroupInfo": cluster.broker_node_group_info or {},
+            "clientAuthentication": cluster.client_authentication or {},
+            "clusterArn": cluster.arn,
+            "clusterName": cluster.cluster_name,
+            "creationTime": cluster.creation_time,
+            "currentBrokerSoftwareInfo": {
+                "configurationArn": (cluster.configuration_info or {}).get(
+                    "arn", "string"
+                ),
+                "configurationRevision": (cluster.configuration_info or {}).get(
+                    "revision", 1
+                ),
+                "kafkaVersion": cluster.kafka_version,
+            },
+            "currentVersion": cluster.current_version,
+            "encryptionInfo": cluster.encryption_info or {},
+            "enhancedMonitoring": cluster.enhanced_monitoring,
+            "openMonitoring": cluster.open_monitoring or {},
+            "loggingInfo": cluster.logging_info or {},
+            "numberOfBrokerNodes": cluster.number_of_broker_nodes or 0,
+            "state": cluster.state,
+            "stateInfo": {
+                "code": "string",
+                "message": "Cluster state details.",
+            },
+            "tags": self.list_tags_for_resource(cluster.arn),
+            "zookeeperConnectString": cluster.zookeeper_connect_string
+            or "zookeeper.example.com:2181",
+            "zookeeperConnectStringTls": cluster.zookeeper_connect_string_tls
+            or "zookeeper.example.com:2181",
+            "storageMode": cluster.storage_mode,
+            "customerActionStatus": "NONE",
+        }
+
+    def list_clusters(
+        self,
+        cluster_name_filter: Optional[str],
+        max_results: Optional[int],
+        next_token: Optional[str],
+    ) -> List[Dict[str, Any]]:
+        cluster_info_list = [
+            {
+                "clusterArn": cluster.arn,
+                "clusterName": cluster.cluster_name,
+                "state": cluster.state,
+                "creationTime": cluster.creation_time,
+                "clusterType": cluster.cluster_type,
+            }
+            for cluster_arn, cluster in self.clusters.items()
+        ]
+
+        return cluster_info_list
+
+    def delete_cluster(self, cluster_arn: str, current_version: str) -> Tuple[str, str]:
+        cluster = self.clusters.pop(cluster_arn)
+        return cluster_arn, cluster.state
+
+    def list_tags_for_resource(self, resource_arn: str) -> Dict[str, str]:
+        return self.tagger.get_tag_dict_for_resource(resource_arn)
+
+    def tag_resource(self, resource_arn: str, tags: Dict[str, str]) -> None:
+        tags_list = [{"Key": k, "Value": v} for k, v in tags.items()]
+        self.tagger.tag_resource(resource_arn, tags_list)
+
+    def untag_resource(self, resource_arn: str, tag_keys: List[str]) -> None:
+        self.tagger.untag_resource_using_names(resource_arn, tag_keys)
+
+
+kafka_backends = BackendDict(KafkaBackend, "kafka")
diff --git a/moto/kafka/responses.py b/moto/kafka/responses.py
new file mode 100644
index 000000000..302561822
--- /dev/null
+++ b/moto/kafka/responses.py
@@ -0,0 +1,147 @@
+"""Handles incoming kafka requests, invokes methods, returns responses."""
+
+import json
+from urllib.parse import unquote
+
+from moto.core.responses import BaseResponse
+
+from .models import KafkaBackend, kafka_backends
+
+
+class KafkaResponse(BaseResponse):
+    """Handler for Kafka requests and responses."""
+
+    def __init__(self) -> None:
+        super().__init__(service_name="kafka")
+
+    @property
+    def kafka_backend(self) -> KafkaBackend:
+        """Return backend instance specific for this region."""
+        return kafka_backends[self.current_account][self.region]
+
+    def create_cluster_v2(self) -> str:
+        cluster_name = self._get_param("clusterName")
+        tags = self._get_param("tags")
+        provisioned = self._get_param("provisioned")
+        serverless = self._get_param("serverless")
+        cluster_arn, cluster_name, state, cluster_type = (
+            self.kafka_backend.create_cluster_v2(
+                cluster_name=cluster_name,
+                tags=tags,
+                provisioned=provisioned,
+                serverless=serverless,
+            )
+        )
+        return json.dumps(
+            dict(
+                clusterArn=cluster_arn,
+                clusterName=cluster_name,
+                state=state,
+                clusterType=cluster_type,
+            )
+        )
+
+    def describe_cluster_v2(self) -> str:
+        cluster_arn = unquote(self.parsed_url.path.split("/clusters/")[-1])
+        cluster_info = self.kafka_backend.describe_cluster_v2(
+            cluster_arn=cluster_arn,
+        )
+        return json.dumps(dict(clusterInfo=cluster_info))
+
+    def list_clusters_v2(self) -> str:
+        cluster_name_filter = self._get_param("clusterNameFilter")
+        cluster_type_filter = self._get_param("clusterTypeFilter")
+        max_results = self._get_param("maxResults")
+        next_token = self._get_param("nextToken")
+        cluster_info_list, next_token = self.kafka_backend.list_clusters_v2(
+            cluster_name_filter=cluster_name_filter,
+            cluster_type_filter=cluster_type_filter,
+            max_results=max_results,
+            next_token=next_token,
+        )
+        return json.dumps(dict(clusterInfoList=cluster_info_list, nextToken=next_token))
+
+    def list_tags_for_resource(self) -> str:
+        resource_arn = unquote(self.parsed_url.path.split("/tags/")[-1])
+        tags = self.kafka_backend.list_tags_for_resource(
+            resource_arn=resource_arn,
+        )
+        return json.dumps(dict(tags=tags))
+
+    def tag_resource(self) -> str:
+        resource_arn = unquote(self._get_param("resourceArn"))
+        tags = self._get_param("tags")
+        self.kafka_backend.tag_resource(
+            resource_arn=resource_arn,
+            tags=tags,
+        )
+        return json.dumps(dict())
+
+    def untag_resource(self) -> str:
+        resource_arn = unquote(self._get_param("resourceArn"))
+        tag_keys = self.__dict__["data"]["tagKeys"]
+        self.kafka_backend.untag_resource(
+            resource_arn=resource_arn,
+            tag_keys=tag_keys,
+        )
+        return json.dumps(dict())
+
+    def create_cluster(self) -> str:
+        broker_node_group_info = self._get_param("brokerNodeGroupInfo")
+        client_authentication = self._get_param("clientAuthentication")
+        cluster_name = self._get_param("clusterName")
+        configuration_info = self._get_param("configurationInfo")
+        encryption_info = self._get_param("encryptionInfo")
+        enhanced_monitoring = self._get_param("enhancedMonitoring")
+        open_monitoring = self._get_param("openMonitoring")
+        kafka_version = self._get_param("kafkaVersion")
+        logging_info = self._get_param("loggingInfo")
+        number_of_broker_nodes = self._get_param("numberOfBrokerNodes")
+        tags = self._get_param("tags")
+        storage_mode = self._get_param("storageMode")
+        cluster_arn, cluster_name, state = self.kafka_backend.create_cluster(
+            broker_node_group_info=broker_node_group_info,
+            client_authentication=client_authentication,
+            cluster_name=cluster_name,
+            configuration_info=configuration_info,
+            encryption_info=encryption_info,
+            enhanced_monitoring=enhanced_monitoring,
+            open_monitoring=open_monitoring,
+            kafka_version=kafka_version,
+            logging_info=logging_info,
+            number_of_broker_nodes=number_of_broker_nodes,
+            tags=tags,
+            storage_mode=storage_mode,
+        )
+        return json.dumps(
+            dict(clusterArn=cluster_arn, clusterName=cluster_name, state=state)
+        )
+
+    def describe_cluster(self) -> str:
+        cluster_arn = unquote(self.parsed_url.path.split("/clusters/")[-1])
+        cluster_info = self.kafka_backend.describe_cluster(
+            cluster_arn=cluster_arn,
+        )
+        return json.dumps(dict(clusterInfo=cluster_info))
+
+    def delete_cluster(self) -> str:
+        cluster_arn = unquote(self.parsed_url.path.split("/clusters/")[-1])
+        current_version = self._get_param("currentVersion")
+        cluster_arn, state = self.kafka_backend.delete_cluster(
+            cluster_arn=cluster_arn,
+            current_version=current_version,
+        )
+        return json.dumps(dict(clusterArn=cluster_arn, state=state))
+
+    def list_clusters(self) -> str:
+        cluster_name_filter = self._get_param("clusterNameFilter")
+        max_results = self._get_param("maxResults")
+        next_token = self._get_param("nextToken")
+
+        cluster_info_list = self.kafka_backend.list_clusters(
+            cluster_name_filter=cluster_name_filter,
+            max_results=max_results,
+            next_token=next_token,
+        )
+
+        return json.dumps(dict(clusterInfoList=cluster_info_list, nextToken=next_token))
diff --git a/moto/kafka/urls.py b/moto/kafka/urls.py
new file mode 100644
index 000000000..a379b50e1
--- /dev/null
+++ b/moto/kafka/urls.py
@@ -0,0 +1,15 @@
+"""kafka base URL and path."""
+
+from .responses import KafkaResponse
+
+url_bases = [
+    r"https?://kafka\.(.+)\.amazonaws\.com",
+]
+
+url_paths = {
+    "{0}/api/v2/clusters$": KafkaResponse.dispatch,
+    "{0}/api/v2/clusters/(?P<clusterArn>.+)$": KafkaResponse.dispatch,
+    "{0}/v1/tags/(?P<resourceArn>.+)$": KafkaResponse.dispatch,
+    "{0}/v1/clusters$": KafkaResponse.dispatch,
+    "{0}/v1/clusters/(?P<clusterArn>.+)$": KafkaResponse.dispatch,
+}
diff --git a/moto/resourcegroupstaggingapi/models.py b/moto/resourcegroupstaggingapi/models.py
index d48a314dd..f056af7d1 100644
--- a/moto/resourcegroupstaggingapi/models.py
+++ b/moto/resourcegroupstaggingapi/models.py
@@ -14,6 +14,7 @@ from moto.elbv2.models import ELBv2Backend, elbv2_backends
 from moto.emr.models import ElasticMapReduceBackend, emr_backends
 from moto.glacier.models import GlacierBackend, glacier_backends
 from moto.glue.models import GlueBackend, glue_backends
+from moto.kafka.models import KafkaBackend, kafka_backends
 from moto.kinesis.models import KinesisBackend, kinesis_backends
 from moto.kms.models import KmsBackend, kms_backends
 from moto.logs.models import LogsBackend, logs_backends
@@ -154,6 +155,10 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
             return workspacesweb_backends[self.account_id][self.region_name]
         return None
 
+    @property
+    def kafka_backend(self) -> KafkaBackend:
+        return kafka_backends[self.account_id][self.region_name]
+
     @property
     def sagemaker_backend(self) -> SageMakerModelBackend:
         return sagemaker_backends[self.account_id][self.region_name]
@@ -610,6 +615,22 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
                     "Tags": tags,
                 }
 
+        # Kafka (MSK)
+        if self.kafka_backend and (
+            not resource_type_filters or "kafka" in resource_type_filters
+        ):
+            for msk_cluster in self.kafka_backend.clusters.values():
+                tag_dict = self.kafka_backend.list_tags_for_resource(msk_cluster.arn)
+                tags = [{"Key": key, "Value": value} for key, value in tag_dict.items()]
+
+                if not tags or not tag_filter(tags):
+                    continue
+
+                yield {
+                    "ResourceARN": msk_cluster.arn,
+                    "Tags": tags,
+                }
+
         # Workspaces Web
         if self.workspacesweb_backends and (
             not resource_type_filters or "workspaces-web" in resource_type_filters
diff --git a/moto/ssm/resources/regions.json b/moto/ssm/resources/regions.json
index 5d94643ac..5c5697e7a 100644
--- a/moto/ssm/resources/regions.json
+++ b/moto/ssm/resources/regions.json
@@ -5306,6 +5306,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-northeast-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -5342,6 +5351,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.ap-northeast-1.amazonaws.com"
+                }
+              },
               "opensearchserverless": {
                 "Value": "opensearchserverless",
                 "endpoint": {
@@ -7856,6 +7871,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-northeast-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -8686,6 +8710,9 @@
               }
             },
             "wavelength-zones": {
+              "apne2-wl1-cjj-wlz1": {
+                "Value": "apne2-wl1-cjj-wlz1"
+              },
               "apne2-wl1-sel-wlz1": {
                 "Value": "apne2-wl1-sel-wlz1"
               }
@@ -9740,6 +9767,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-northeast-3.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -11864,6 +11900,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-south-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -12807,6 +12852,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "apigatewayv2": {
+                "Value": "apigatewayv2",
+                "endpoint": {
+                  "Value": "apigateway.ap-south-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "appconfig": {
                 "Value": "appconfig",
                 "endpoint": {
@@ -15807,6 +15861,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-southeast-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -15843,6 +15906,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.ap-southeast-1.amazonaws.com"
+                }
+              },
               "omics": {
                 "Value": "omics"
               },
@@ -18591,6 +18660,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-southeast-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -18627,6 +18705,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.ap-southeast-2.amazonaws.com"
+                }
+              },
               "opensearchserverless": {
                 "Value": "opensearchserverless",
                 "endpoint": {
@@ -19642,6 +19726,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "apigatewayv2": {
+                "Value": "apigatewayv2",
+                "endpoint": {
+                  "Value": "apigateway.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "appconfig": {
                 "Value": "appconfig",
                 "endpoint": {
@@ -21125,6 +21218,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "apigatewayv2": {
+                "Value": "apigatewayv2",
+                "endpoint": {
+                  "Value": "apigateway.ap-southeast-4.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "appconfig": {
                 "Value": "appconfig",
                 "endpoint": {
@@ -22313,6 +22415,15 @@
               "vpc": {
                 "Value": "vpc"
               },
+              "vpc-lattice": {
+                "Value": "vpc-lattice",
+                "endpoint": {
+                  "Value": "vpc-lattice.ap-southeast-4.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "vpn": {
                 "Value": "vpn",
                 "endpoint": {
@@ -22863,6 +22974,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "network-firewall": {
+                "Value": "network-firewall",
+                "endpoint": {
+                  "Value": "network-firewall.ap-southeast-5.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "oam": {
                 "Value": "oam",
                 "endpoint": {
@@ -24730,6 +24850,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ca-central-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -25690,6 +25819,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "apigatewayv2": {
+                "Value": "apigatewayv2",
+                "endpoint": {
+                  "Value": "apigateway.ca-west-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "appconfig": {
                 "Value": "appconfig",
                 "endpoint": {
@@ -31377,6 +31515,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-central-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -31413,6 +31560,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.eu-central-1.amazonaws.com"
+                }
+              },
               "omics": {
                 "Value": "omics"
               },
@@ -32442,6 +32595,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "apigatewayv2": {
+                "Value": "apigatewayv2",
+                "endpoint": {
+                  "Value": "apigateway.eu-central-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "appconfig": {
                 "Value": "appconfig",
                 "endpoint": {
@@ -35101,6 +35263,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-north-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -35137,6 +35308,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.eu-north-1.amazonaws.com"
+                }
+              },
               "organizations": {
                 "Value": "organizations",
                 "endpoint": {
@@ -35758,6 +35935,9 @@
                   "Value": "HTTPS"
                 }
               },
+              "trustedadvisor": {
+                "Value": "trustedadvisor"
+              },
               "verified-access": {
                 "Value": "verified-access",
                 "endpoint": {
@@ -37551,6 +37731,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "apigatewayv2": {
+                "Value": "apigatewayv2",
+                "endpoint": {
+                  "Value": "apigateway.eu-south-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "appconfig": {
                 "Value": "appconfig",
                 "endpoint": {
@@ -40759,6 +40948,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-west-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -40795,6 +40993,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.eu-west-1.amazonaws.com"
+                }
+              },
               "omics": {
                 "Value": "omics"
               },
@@ -43475,6 +43679,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-west-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -45659,6 +45872,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-west-3.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -46476,6 +46698,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "apigatewayv2": {
+                "Value": "apigatewayv2",
+                "endpoint": {
+                  "Value": "apigateway.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "appconfig": {
                 "Value": "appconfig",
                 "endpoint": {
@@ -50885,6 +51116,9 @@
                   "Value": "HTTPS"
                 }
               },
+              "trustedadvisor": {
+                "Value": "trustedadvisor"
+              },
               "verifiedpermissions": {
                 "Value": "verifiedpermissions",
                 "endpoint": {
@@ -52287,6 +52521,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.sa-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -53439,6 +53682,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "bcm-pricing-calculator": {
+                "Value": "bcm-pricing-calculator",
+                "endpoint": {
+                  "Value": "bcm-pricing-calculator.us-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "bedrock": {
                 "Value": "bedrock",
                 "endpoint": {
@@ -55239,6 +55491,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -55266,6 +55527,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "notificationscontacts": {
+                "Value": "notificationscontacts",
+                "endpoint": {
+                  "Value": "notifications-contacts.us-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "oam": {
                 "Value": "oam",
                 "endpoint": {
@@ -55275,6 +55545,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.us-east-1.amazonaws.com"
+                }
+              },
               "omics": {
                 "Value": "omics"
               },
@@ -58041,6 +58317,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-east-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -58077,6 +58362,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.us-east-2.amazonaws.com"
+                }
+              },
               "opensearchserverless": {
                 "Value": "opensearchserverless",
                 "endpoint": {
@@ -63537,6 +63828,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-west-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -66300,6 +66600,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "networkflowmonitor": {
+                "Value": "networkflowmonitor",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-west-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "networkmanager": {
                 "Value": "networkmanager",
                 "endpoint": {
@@ -66336,6 +66645,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "observabilityadmin": {
+                "Value": "observabilityadmin",
+                "endpoint": {
+                  "Value": "observabilityadmin.us-west-2.amazonaws.com"
+                }
+              },
               "omics": {
                 "Value": "omics"
               },
diff --git a/moto/ssm/resources/services.json b/moto/ssm/resources/services.json
index a554558a9..56e0a6400 100644
--- a/moto/ssm/resources/services.json
+++ b/moto/ssm/resources/services.json
@@ -2418,6 +2418,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-south-2": {
+                "Value": "ap-south-2",
+                "endpoint": {
+                  "Value": "apigateway.ap-south-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ap-southeast-1": {
                 "Value": "ap-southeast-1",
                 "endpoint": {
@@ -2436,6 +2445,24 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-3": {
+                "Value": "ap-southeast-3",
+                "endpoint": {
+                  "Value": "apigateway.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "ap-southeast-4": {
+                "Value": "ap-southeast-4",
+                "endpoint": {
+                  "Value": "apigateway.ap-southeast-4.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ca-central-1": {
                 "Value": "ca-central-1",
                 "endpoint": {
@@ -2445,6 +2472,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ca-west-1": {
+                "Value": "ca-west-1",
+                "endpoint": {
+                  "Value": "apigateway.ca-west-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "cn-north-1": {
                 "Value": "cn-north-1",
                 "endpoint": {
@@ -2472,6 +2508,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "eu-central-2": {
+                "Value": "eu-central-2",
+                "endpoint": {
+                  "Value": "apigateway.eu-central-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "eu-north-1": {
                 "Value": "eu-north-1",
                 "endpoint": {
@@ -2490,6 +2535,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "eu-south-2": {
+                "Value": "eu-south-2",
+                "endpoint": {
+                  "Value": "apigateway.eu-south-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "eu-west-1": {
                 "Value": "eu-west-1",
                 "endpoint": {
@@ -2517,6 +2571,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "apigateway.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -7857,6 +7920,23 @@
               }
             }
           },
+          "bcm-pricing-calculator": {
+            "Value": "bcm-pricing-calculator",
+            "longName": {
+              "Value": "AWS Billing and Cost Management Pricing Calculator"
+            },
+            "regions": {
+              "us-east-1": {
+                "Value": "us-east-1",
+                "endpoint": {
+                  "Value": "bcm-pricing-calculator.us-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              }
+            }
+          },
           "bedrock": {
             "Value": "bedrock",
             "longName": {
@@ -44623,6 +44703,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-5": {
+                "Value": "ap-southeast-5",
+                "endpoint": {
+                  "Value": "network-firewall.ap-southeast-5.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ca-central-1": {
                 "Value": "ca-central-1",
                 "endpoint": {
@@ -44823,6 +44912,167 @@
               }
             }
           },
+          "networkflowmonitor": {
+            "Value": "networkflowmonitor",
+            "longName": {
+              "Value": "Network Flow Monitor"
+            },
+            "regions": {
+              "ap-northeast-1": {
+                "Value": "ap-northeast-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-northeast-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "ap-northeast-2": {
+                "Value": "ap-northeast-2",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-northeast-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "ap-northeast-3": {
+                "Value": "ap-northeast-3",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-northeast-3.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "ap-south-1": {
+                "Value": "ap-south-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-south-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "ap-southeast-1": {
+                "Value": "ap-southeast-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-southeast-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "ap-southeast-2": {
+                "Value": "ap-southeast-2",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ap-southeast-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "ca-central-1": {
+                "Value": "ca-central-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.ca-central-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "eu-central-1": {
+                "Value": "eu-central-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-central-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "eu-north-1": {
+                "Value": "eu-north-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-north-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "eu-west-1": {
+                "Value": "eu-west-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-west-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "eu-west-2": {
+                "Value": "eu-west-2",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-west-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "eu-west-3": {
+                "Value": "eu-west-3",
+                "endpoint": {
+                  "Value": "networkflowmonitor.eu-west-3.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "sa-east-1": {
+                "Value": "sa-east-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.sa-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "us-east-1": {
+                "Value": "us-east-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "us-east-2": {
+                "Value": "us-east-2",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-east-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "us-west-1": {
+                "Value": "us-west-1",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-west-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "us-west-2": {
+                "Value": "us-west-2",
+                "endpoint": {
+                  "Value": "networkflowmonitor.us-west-2.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              }
+            }
+          },
           "networkmanager": {
             "Value": "networkmanager",
             "longName": {
@@ -45498,6 +45748,23 @@
               }
             }
           },
+          "notificationscontacts": {
+            "Value": "notificationscontacts",
+            "longName": {
+              "Value": "AWS User Notifications Contacts"
+            },
+            "regions": {
+              "us-east-1": {
+                "Value": "us-east-1",
+                "endpoint": {
+                  "Value": "notifications-contacts.us-east-1.api.aws"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              }
+            }
+          },
           "oam": {
             "Value": "oam",
             "longName": {
@@ -45812,6 +46079,68 @@
               }
             }
           },
+          "observabilityadmin": {
+            "Value": "observabilityadmin",
+            "longName": {
+              "Value": "CloudWatch Observability Admin Service"
+            },
+            "regions": {
+              "ap-northeast-1": {
+                "Value": "ap-northeast-1",
+                "endpoint": {
+                  "Value": "observabilityadmin.ap-northeast-1.amazonaws.com"
+                }
+              },
+              "ap-southeast-1": {
+                "Value": "ap-southeast-1",
+                "endpoint": {
+                  "Value": "observabilityadmin.ap-southeast-1.amazonaws.com"
+                }
+              },
+              "ap-southeast-2": {
+                "Value": "ap-southeast-2",
+                "endpoint": {
+                  "Value": "observabilityadmin.ap-southeast-2.amazonaws.com"
+                }
+              },
+              "eu-central-1": {
+                "Value": "eu-central-1",
+                "endpoint": {
+                  "Value": "observabilityadmin.eu-central-1.amazonaws.com"
+                }
+              },
+              "eu-north-1": {
+                "Value": "eu-north-1",
+                "endpoint": {
+                  "Value": "observabilityadmin.eu-north-1.amazonaws.com"
+                }
+              },
+              "eu-west-1": {
+                "Value": "eu-west-1",
+                "endpoint": {
+                  "Value": "observabilityadmin.eu-west-1.amazonaws.com"
+                }
+              },
+              "us-east-1": {
+                "Value": "us-east-1",
+                "endpoint": {
+                  "Value": "observabilityadmin.us-east-1.amazonaws.com"
+                }
+              },
+              "us-east-2": {
+                "Value": "us-east-2",
+                "endpoint": {
+                  "Value": "observabilityadmin.us-east-2.amazonaws.com"
+                }
+              },
+              "us-west-2": {
+                "Value": "us-west-2",
+                "endpoint": {
+                  "Value": "observabilityadmin.us-west-2.amazonaws.com"
+                }
+              }
+            }
+          },
           "omics": {
             "Value": "omics",
             "longName": {
@@ -66855,6 +67184,9 @@
               "eu-central-2": {
                 "Value": "eu-central-2"
               },
+              "eu-north-1": {
+                "Value": "eu-north-1"
+              },
               "eu-south-1": {
                 "Value": "eu-south-1"
               },
@@ -66876,6 +67208,9 @@
               "me-central-1": {
                 "Value": "me-central-1"
               },
+              "me-south-1": {
+                "Value": "me-south-1"
+              },
               "sa-east-1": {
                 "Value": "sa-east-1"
               },
@@ -67761,6 +68096,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-4": {
+                "Value": "ap-southeast-4",
+                "endpoint": {
+                  "Value": "vpc-lattice.ap-southeast-4.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ca-central-1": {
                 "Value": "ca-central-1",
                 "endpoint": {


Test patch:
diff --git a/tests/test_dynamodb/test_dynamodb.py b/tests/test_dynamodb/test_dynamodb.py
index f8b930289..1905c4e8c 100644
--- a/tests/test_dynamodb/test_dynamodb.py
+++ b/tests/test_dynamodb/test_dynamodb.py
@@ -4952,3 +4952,25 @@ def test_query_with_gsi_reverse_paginated():
         {"pri": {"S": "pri_10"}, "alt": {"S": "alt_2"}},
     ]
     assert "LastEvaluatedKey" not in p2
+
+
+@pytest.mark.aws_verified
+@dynamodb_aws_verified()
+def test_update_item_with_list_of_bytes(table_name=None):
+    dynamodb = boto3.resource("dynamodb", region_name="us-east-1")
+    table = dynamodb.Table(table_name)
+
+    b1 = b"\n\x014\x18\xc3\xb0\xf8\xba\x06"
+    b2 = b"\n\x012\x18\xc3\xb0\xf8\xba\x06"
+
+    update = table.update_item(
+        Key={"pk": "clientA"},
+        UpdateExpression="SET #items = :new_items",
+        ExpressionAttributeValues={":new_items": [b1, b2]},
+        ExpressionAttributeNames={"#items": "items"},
+        ReturnValues="UPDATED_NEW",
+    )
+    assert update["Attributes"]["items"] == [Binary(b1), Binary(b2)]
+
+    get = table.get_item(Key={"pk": "clientA"})
+    assert get["Item"] == {"pk": "clientA", "items": [Binary(b1), Binary(b2)]}
diff --git a/tests/test_ec2/test_route_tables.py b/tests/test_ec2/test_route_tables.py
index eb7b6605c..cdf88ab17 100644
--- a/tests/test_ec2/test_route_tables.py
+++ b/tests/test_ec2/test_route_tables.py
@@ -606,8 +606,14 @@ def test_routes_replace():
         ]
     )["RouteTables"][0]["RouteTableId"]
     main_route_table = ec2.RouteTable(main_route_table_id)
+
+    # Various route sources
     ROUTE_CIDR = "10.0.0.4/24"
 
+    prefix_list = client.create_managed_prefix_list(
+        PrefixListName="examplelist", MaxEntries=2, AddressFamily="?"
+    )["PrefixList"]
+
     # Various route targets
     igw = ec2.create_internet_gateway()
 
@@ -626,7 +632,8 @@ def test_routes_replace():
         routes = [
             route
             for route in route_table["Routes"]
-            if route["DestinationCidrBlock"] != vpc.cidr_block
+            if "DestinationCidrBlock" not in route
+            or route["DestinationCidrBlock"] != vpc.cidr_block
         ]
         assert len(routes) == 1
         return routes[0]
@@ -692,6 +699,30 @@ def test_routes_replace():
     # equivalent, but for some reason AWS returns InvalidParameterValue instead.
     assert ex.value.response["Error"]["Code"] == "InvalidParameterValue"
 
+    # Remove route
+    client.delete_route(
+        RouteTableId=main_route_table.id, DestinationCidrBlock=ROUTE_CIDR
+    )
+
+    # Create prefix list source route
+    main_route_table.create_route(
+        DestinationPrefixListId=prefix_list["PrefixListId"], GatewayId=igw.id
+    )
+
+    # Replace...
+    client.replace_route(
+        RouteTableId=main_route_table.id,
+        DestinationPrefixListId=prefix_list["PrefixListId"],
+        InstanceId=instance.id,
+    )
+
+    target_route = get_target_route()
+    assert "GatewayId" not in target_route
+    assert target_route["InstanceId"] == instance.id
+    assert "NetworkInterfaceId" not in target_route
+    assert target_route["State"] == "active"
+    assert target_route["DestinationPrefixListId"] == prefix_list["PrefixListId"]
+
 
 @mock_aws
 def test_routes_already_exist():
diff --git a/tests/test_ec2/test_security_groups.py b/tests/test_ec2/test_security_groups.py
index 30349464f..88c0cd3a6 100644
--- a/tests/test_ec2/test_security_groups.py
+++ b/tests/test_ec2/test_security_groups.py
@@ -85,6 +85,7 @@ def test_create_and_describe_vpc_security_group():
 
     assert group_with.group_name == name
     assert group_with.description == "test"
+    assert group_with.security_group_arn
 
     # Trying to create another group with the same name in the same VPC should
     # throw an error
diff --git a/tests/test_kafka/__init__.py b/tests/test_kafka/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/test_kafka/test_kafka.py b/tests/test_kafka/test_kafka.py
new file mode 100644
index 000000000..d7c39d615
--- /dev/null
+++ b/tests/test_kafka/test_kafka.py
@@ -0,0 +1,180 @@
+"""Unit tests for kafka-supported APIs."""
+
+import boto3
+
+from moto import mock_aws
+
+# See our Development Tips on writing tests for hints on how to write good tests:
+# http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
+
+
+FAKE_TAGS = {"TestKey": "TestValue", "TestKey2": "TestValue2"}
+
+
+@mock_aws
+def test_create_cluster_v2():
+    client = boto3.client("kafka", region_name="ap-southeast-1")
+    s_cluster_name = "TestServerlessCluster"
+    p_cluster_name = "TestProvisionedCluster"
+
+    s_response = client.create_cluster_v2(
+        ClusterName=s_cluster_name,
+        Serverless={
+            "VpcConfigs": [
+                {
+                    "SubnetIds": ["subnet-0123456789abcdef0"],
+                    "SecurityGroupIds": ["sg-0123456789abcdef0"],
+                }
+            ]
+        },
+        Tags=FAKE_TAGS,
+    )
+
+    p_response = client.create_cluster_v2(
+        ClusterName=p_cluster_name,
+        Provisioned={
+            "BrokerNodeGroupInfo": {
+                "InstanceType": "kafka.m5.large",
+                "ClientSubnets": ["subnet-0123456789abcdef0"],
+                "SecurityGroups": ["sg-0123456789abcdef0"],
+            },
+            "KafkaVersion": "2.8.1",
+            "NumberOfBrokerNodes": 3,
+        },
+        Tags=FAKE_TAGS,
+    )
+
+    assert s_response["ClusterArn"].startswith("arn:aws:kafka")
+    assert s_response["ClusterName"] == s_cluster_name
+    assert s_response["State"] == "CREATING"
+
+    assert p_response["ClusterArn"].startswith("arn:aws:kafka")
+    assert p_response["ClusterName"] == p_cluster_name
+    assert p_response["State"] == "CREATING"
+
+    clusters = client.list_clusters_v2()
+    assert len(clusters["ClusterInfoList"]) == 2
+    assert clusters["ClusterInfoList"][0]["ClusterName"] == s_cluster_name
+    assert clusters["ClusterInfoList"][0]["ClusterType"] == "SERVERLESS"
+    assert clusters["ClusterInfoList"][1]["ClusterName"] == p_cluster_name
+    assert clusters["ClusterInfoList"][1]["ClusterType"] == "PROVISIONED"
+
+    s_resp = client.describe_cluster_v2(ClusterArn=s_response["ClusterArn"])
+    s_cluster_info = s_resp["ClusterInfo"]
+    p_resp = client.describe_cluster_v2(ClusterArn=p_response["ClusterArn"])
+    p_cluster_info = p_resp["ClusterInfo"]
+
+    assert s_cluster_info["ClusterName"] == s_cluster_name
+    assert s_cluster_info["State"] == "CREATING"
+    assert s_cluster_info["ClusterType"] == "SERVERLESS"
+    assert s_cluster_info["Serverless"]["VpcConfigs"][0]["SubnetIds"] == [
+        "subnet-0123456789abcdef0"
+    ]
+    assert s_cluster_info["Serverless"]["VpcConfigs"][0]["SecurityGroupIds"] == [
+        "sg-0123456789abcdef0"
+    ]
+    assert s_cluster_info["Tags"] == FAKE_TAGS
+
+    assert p_cluster_info["ClusterName"] == p_cluster_name
+    assert p_cluster_info["State"] == "CREATING"
+    assert p_cluster_info["ClusterType"] == "PROVISIONED"
+    assert (
+        p_cluster_info["Provisioned"]["BrokerNodeGroupInfo"]["InstanceType"]
+        == "kafka.m5.large"
+    )
+
+
+@mock_aws
+def test_list_tags_for_resource():
+    client = boto3.client("kafka", region_name="us-east-2")
+    create_resp = client.create_cluster(
+        ClusterName="TestCluster",
+        BrokerNodeGroupInfo={
+            "InstanceType": "kafka.m5.large",
+            "ClientSubnets": ["subnet-0123456789abcdef0"],
+            "SecurityGroups": ["sg-0123456789abcdef0"],
+        },
+        KafkaVersion="2.8.1",
+        NumberOfBrokerNodes=3,
+        Tags=FAKE_TAGS,
+    )
+
+    TempTags = {"TestKey3": "TestValue3"}
+
+    client.tag_resource(
+        ResourceArn=create_resp["ClusterArn"],
+        Tags=TempTags,
+    )
+
+    tags = client.list_tags_for_resource(ResourceArn=create_resp["ClusterArn"])
+    assert tags["Tags"] == {**FAKE_TAGS, **TempTags}
+
+    client.untag_resource(
+        ResourceArn=create_resp["ClusterArn"],
+        TagKeys=["TestKey3"],
+    )
+
+    tags = client.list_tags_for_resource(ResourceArn=create_resp["ClusterArn"])
+
+    assert tags["Tags"] == FAKE_TAGS
+
+
+@mock_aws
+def test_create_cluster():
+    client = boto3.client("kafka", region_name="eu-west-1")
+    cluster_name = "TestCluster"
+    response = client.create_cluster(
+        ClusterName=cluster_name,
+        BrokerNodeGroupInfo={
+            "InstanceType": "kafka.m5.large",
+            "ClientSubnets": ["subnet-0123456789abcdef0"],
+            "SecurityGroups": ["sg-0123456789abcdef0"],
+        },
+        KafkaVersion="2.8.1",
+        NumberOfBrokerNodes=3,
+        Tags=FAKE_TAGS,
+    )
+
+    assert response["ClusterArn"].startswith("arn:aws:kafka")
+    assert response["ClusterName"] == cluster_name
+    assert response["State"] == "CREATING"
+
+    clusters = client.list_clusters()
+    assert len(clusters["ClusterInfoList"]) == 1
+    assert clusters["ClusterInfoList"][0]["ClusterName"] == cluster_name
+
+    resp = client.describe_cluster(ClusterArn=response["ClusterArn"])
+    assert resp["ClusterInfo"]["ClusterName"] == cluster_name
+    assert resp["ClusterInfo"]["State"] == "CREATING"
+    assert resp["ClusterInfo"]["CurrentBrokerSoftwareInfo"]["KafkaVersion"] == "2.8.1"
+    assert resp["ClusterInfo"]["NumberOfBrokerNodes"] == 3
+    assert (
+        resp["ClusterInfo"]["BrokerNodeGroupInfo"]["InstanceType"] == "kafka.m5.large"
+    )
+    assert resp["ClusterInfo"]["BrokerNodeGroupInfo"]["ClientSubnets"] == [
+        "subnet-0123456789abcdef0"
+    ]
+    assert resp["ClusterInfo"]["BrokerNodeGroupInfo"]["SecurityGroups"] == [
+        "sg-0123456789abcdef0"
+    ]
+    assert resp["ClusterInfo"]["Tags"] == FAKE_TAGS
+
+
+@mock_aws
+def test_delete_cluster():
+    client = boto3.client("kafka", region_name="us-east-2")
+    create_resp = client.create_cluster(
+        ClusterName="TestCluster",
+        BrokerNodeGroupInfo={
+            "InstanceType": "kafka.m5.large",
+            "ClientSubnets": ["subnet-0123456789abcdef0"],
+            "SecurityGroups": ["sg-0123456789abcdef0"],
+        },
+        KafkaVersion="2.8.1",
+        NumberOfBrokerNodes=3,
+        Tags=FAKE_TAGS,
+    )
+
+    client.delete_cluster(ClusterArn=create_resp["ClusterArn"])
+    clusters = client.list_clusters()
+    assert len(clusters["ClusterInfoList"]) == 0