Repository: getmoto/moto
Pull request #7121 (2023-12-13 18:47:28)

CloudFormation: Implement Fn::GetAtt for AWS::EC2::LaunchTemplate
## Purpose

* Add support for getting attributes of `AWS::EC2::LaunchTemplate` resources.
* Fix bug. Sorta. The real bug is that moto's cloudformation parsing does not honor dependencies between resources -- instead it retries resource updates that raise errors (up to 5 times). This is fine if the update raises errors, but if no error is raised, the updates may process out of order. This was discovered while writing tests for the previous bullet. In our case, we have an AutoScalingGroup that depends on a LaunchTemplate. If the updates to the AutoScalingGroup are handled first, it picks up the current/old version of the LaunchTemplate instead of the new one (because the new one is not created yet). Honoring dependency order appears hard (probably why it is not yet implemented). As a fallback, this PR makes the order of updates deterministic, so that at least if you put the resources in the right order in your template, they will be updated in that order. This is done by using lists rather than sets. The result should be the same -- since previously we were taking the `set` of a `dict`, the collection by definition has unique elements (that is, I cannot find any discernable difference between `set(some_dict)` and `list(some_dict)` except that the latter preserves order).

skinitimski: > FAILED tests/test_ec2/test_launch_templates_cloudformation.py::test_asg_with_default_launch_template_version - botocore.exceptions.ClientError: An error occurred (InvalidLaunchTemplateName.AlreadyExistsException) when calling the CreateStack operation: Launch template name already in use.

Heh, that sounds like the bug I am working on in another branch! Stay tuned.
bblommers: This looks good to me so far @skinitimski. I cannot see the test results for some reason, so I'll just close and re-open this PR to force-start them.

Did you mean to open the other PR against our repo?

Patch:
diff --git a/moto/cloudformation/parsing.py b/moto/cloudformation/parsing.py
index a798a33ef..0c55ad418 100644
--- a/moto/cloudformation/parsing.py
+++ b/moto/cloudformation/parsing.py
@@ -740,11 +740,9 @@ class ResourceMap(collections_abc.Mapping):  # type: ignore[type-arg]
         new = other_template["Resources"]
 
         resource_names_by_action = {
-            "Add": set(new) - set(old),
-            "Modify": set(
-                name for name in new if name in old and new[name] != old[name]
-            ),
-            "Remove": set(old) - set(new),
+            "Add": [name for name in new if name not in old],
+            "Modify": [name for name in new if name in old and new[name] != old[name]],
+            "Remove": [name for name in old if name not in new],
         }
 
         return resource_names_by_action
diff --git a/moto/cognitoidp/models.py b/moto/cognitoidp/models.py
index e8ec348a6..a2cac85fd 100644
--- a/moto/cognitoidp/models.py
+++ b/moto/cognitoidp/models.py
@@ -1449,6 +1449,19 @@ class CognitoIdpBackend(BaseBackend):
                     "Session": session,
                 }
 
+            if (
+                user.software_token_mfa_enabled
+                and user.preferred_mfa_setting == "SOFTWARE_TOKEN_MFA"
+            ):
+                session = str(random.uuid4())
+                self.sessions[session] = user_pool
+
+                return {
+                    "ChallengeName": "SOFTWARE_TOKEN_MFA",
+                    "ChallengeParameters": {},
+                    "Session": session,
+                }
+
             return self._log_user_in(user_pool, client, username)
         elif auth_flow in (AuthFlow.REFRESH_TOKEN, AuthFlow.REFRESH_TOKEN_AUTH):
             refresh_token: str = auth_parameters.get("REFRESH_TOKEN")  # type: ignore[assignment]
diff --git a/moto/dynamodb/models/__init__.py b/moto/dynamodb/models/__init__.py
index d88ca5e0d..0f289060e 100644
--- a/moto/dynamodb/models/__init__.py
+++ b/moto/dynamodb/models/__init__.py
@@ -785,8 +785,6 @@ class DynamoDBBackend(BaseBackend):
         self, statement: str, parameters: List[Dict[str, Any]]
     ) -> List[Dict[str, Any]]:
         """
-        Only SELECT-statements are supported for now.
-
         Pagination is not yet implemented.
 
         Parsing is highly experimental - please raise an issue if you find any bugs.
@@ -799,7 +797,29 @@ class DynamoDBBackend(BaseBackend):
                 item.to_json()["Attributes"] for item in table.all_items()
             ]
 
-        return partiql.query(statement, source_data, parameters)
+        return_data, updates_per_table = partiql.query(
+            statement, source_data, parameters
+        )
+
+        for table_name, updates in updates_per_table.items():
+            table = self.tables[table_name]
+            for before, after in updates:
+                if after is None and before is not None:
+                    # DELETE
+                    hash_key = DynamoType(before[table.hash_key_attr])
+                    if table.range_key_attr:
+                        range_key = DynamoType(before[table.range_key_attr])
+                    else:
+                        range_key = None
+                    table.delete_item(hash_key, range_key)
+                elif before is None and after is not None:
+                    # CREATE
+                    table.put_item(after)
+                elif before is not None and after is not None:
+                    # UPDATE
+                    table.put_item(after)
+
+        return return_data
 
     def execute_transaction(
         self, statements: List[Dict[str, Any]]
diff --git a/moto/dynamodb/parsing/partiql.py b/moto/dynamodb/parsing/partiql.py
index b60f467f8..139bce534 100644
--- a/moto/dynamodb/parsing/partiql.py
+++ b/moto/dynamodb/parsing/partiql.py
@@ -1,4 +1,4 @@
-from typing import TYPE_CHECKING, Any, Dict, List
+from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple
 
 if TYPE_CHECKING:
     from py_partiql_parser import QueryMetadata
@@ -6,7 +6,10 @@ if TYPE_CHECKING:
 
 def query(
     statement: str, source_data: Dict[str, str], parameters: List[Dict[str, Any]]
-) -> List[Dict[str, Any]]:
+) -> Tuple[
+    List[Dict[str, Any]],
+    Dict[str, List[Tuple[Optional[Dict[str, Any]], Optional[Dict[str, Any]]]]],
+]:
     from py_partiql_parser import DynamoDBStatementParser
 
     return DynamoDBStatementParser(source_data).parse(statement, parameters)
diff --git a/moto/dynamodb/parsing/tokens.py b/moto/dynamodb/parsing/tokens.py
index 43c7b6779..6e3d67910 100644
--- a/moto/dynamodb/parsing/tokens.py
+++ b/moto/dynamodb/parsing/tokens.py
@@ -11,12 +11,12 @@ class Token:
     _TOKEN_INSTANCE = None
     MINUS_SIGN = "-"
     PLUS_SIGN = "+"
-    SPACE_SIGN = " "
     EQUAL_SIGN = "="
     OPEN_ROUND_BRACKET = "("
     CLOSE_ROUND_BRACKET = ")"
     COMMA = ","
     SPACE = " "
+    NEW_LINE = "\n"
     DOT = "."
     OPEN_SQUARE_BRACKET = "["
     CLOSE_SQUARE_BRACKET = "]"
@@ -24,12 +24,12 @@ class Token:
     SPECIAL_CHARACTERS = [
         MINUS_SIGN,
         PLUS_SIGN,
-        SPACE_SIGN,
         EQUAL_SIGN,
         OPEN_ROUND_BRACKET,
         CLOSE_ROUND_BRACKET,
         COMMA,
         SPACE,
+        NEW_LINE,
         DOT,
         OPEN_SQUARE_BRACKET,
         CLOSE_SQUARE_BRACKET,
@@ -193,7 +193,7 @@ class ExpressionTokenizer(object):
             else:
                 self.process_staged_characters()
 
-                if character == Token.SPACE:
+                if character in [Token.SPACE, Token.NEW_LINE]:
                     if (
                         len(self.token_list) > 0
                         and self.token_list[-1].type == Token.WHITESPACE
diff --git a/moto/ec2/models/launch_templates.py b/moto/ec2/models/launch_templates.py
index 3e329d866..1e4a63f34 100644
--- a/moto/ec2/models/launch_templates.py
+++ b/moto/ec2/models/launch_templates.py
@@ -192,6 +192,25 @@ class LaunchTemplate(TaggedEC2Resource, CloudFormationModel):
 
         backend.delete_launch_template(name, None)
 
+    @classmethod
+    def has_cfn_attr(cls, attr: str) -> bool:
+        return attr in [
+            "DefaultVersionNumber",
+            "LaunchTemplateId",
+            "LatestVersionNumber",
+        ]
+
+    def get_cfn_attribute(self, attribute_name: str) -> str:
+        from moto.cloudformation.exceptions import UnformattedGetAttTemplateException
+
+        if attribute_name == "DefaultVersionNumber":
+            return str(self.default_version_number)
+        if attribute_name == "LaunchTemplateId":
+            return self.id
+        if attribute_name == "LatestVersionNumber":
+            return str(self.latest_version_number)
+        raise UnformattedGetAttTemplateException()
+
 
 class LaunchTemplateBackend:
     def __init__(self) -> None:
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 64c6193c5..12e14c147 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
@@ -879,6 +879,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "apne1-az1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "apne1-az1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "apne1-az1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "apne1-az1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "apne1-az1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "apne1-az1"
@@ -5467,6 +5483,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "apne1-az4"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "apne1-az4"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "apne1-az4"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "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 ca2b0aac3..7239cfad6 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
@@ -919,6 +919,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apne2-az1"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "apne2-az1"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "apne2-az1"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "apne2-az1"
@@ -3787,6 +3827,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apne2-az3"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "apne2-az3"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "apne2-az3"
+ },
  {
   "InstanceType": "p2.16xlarge",
   "Location": "apne2-az3"
@@ -4871,6 +4951,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apne2-az4"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "apne2-az4"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "apne2-az4"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json
index d90ee859b..40a9a774c 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json
@@ -1287,6 +1287,42 @@
   "InstanceType": "m5d.xlarge",
   "Location": "apne3-az2"
  },
+ {
+  "InstanceType": "m6g.12xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.16xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.2xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.4xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.8xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.large",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.medium",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.metal",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m6g.xlarge",
+  "Location": "apne3-az2"
+ },
  {
   "InstanceType": "m6gd.12xlarge",
   "Location": "apne3-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json
index 31fc85109..e519cbd3c 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json
@@ -671,6 +671,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "aps1-az1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "aps1-az1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "aps1-az1"
@@ -1011,6 +1027,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "aps1-az1"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "aps1-az1"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "aps1-az1"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "aps1-az1"
@@ -2811,6 +2867,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "aps1-az2"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "aps1-az2"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "aps1-az2"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "aps1-az2"
@@ -4199,6 +4295,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "aps1-az3"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "aps1-az3"
+ },
  {
   "InstanceType": "m4.10xlarge",
   "Location": "aps1-az3"
@@ -4515,6 +4627,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "aps1-az3"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "aps1-az3"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "aps1-az3"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "aps1-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-1.json
index 0c7bb1b07..54b9c2a5c 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-1.json
@@ -1263,6 +1263,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse1-az1"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "apse1-az1"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "apse1-az1"
+ },
  {
   "InstanceType": "m6idn.12xlarge",
   "Location": "apse1-az1"
@@ -3611,6 +3651,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse1-az2"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "apse1-az2"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "apse1-az2"
+ },
  {
   "InstanceType": "m6idn.12xlarge",
   "Location": "apse1-az2"
@@ -5347,6 +5427,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "apse1-az3"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "apse1-az3"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "apse1-az3"
@@ -5759,6 +5855,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse1-az3"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "apse1-az3"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "apse1-az3"
+ },
  {
   "InstanceType": "m6idn.12xlarge",
   "Location": "apse1-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json
index a4a211189..3ed6b1a66 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json
@@ -691,6 +691,10 @@
   "InstanceType": "g5.xlarge",
   "Location": "apse2-az1"
  },
+ {
+  "InstanceType": "hpc6a.48xlarge",
+  "Location": "apse2-az1"
+ },
  {
   "InstanceType": "i2.2xlarge",
   "Location": "apse2-az1"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json
index e0980b914..c6c399bc2 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json
@@ -3135,6 +3135,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "euc1-az2"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "euc1-az2"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "euc1-az2"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "euc1-az2"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "euc1-az2"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "euc1-az2"
@@ -5399,6 +5415,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "euc1-az3"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "euc1-az3"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "euc1-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json
index 506eeafb9..e86823f46 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json
@@ -1943,6 +1943,22 @@
   "InstanceType": "hpc6id.32xlarge",
   "Location": "eun1-az2"
  },
+ {
+  "InstanceType": "hpc7a.12xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "hpc7a.24xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "hpc7a.48xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "hpc7a.96xlarge",
+  "Location": "eun1-az2"
+ },
  {
   "InstanceType": "i3.16xlarge",
   "Location": "eun1-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-1.json
index 9f875ae60..27e5fa4d3 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-1.json
@@ -1067,6 +1067,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "euw1-az1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "euw1-az1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "euw1-az1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "euw1-az1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "euw1-az1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "euw1-az1"
@@ -3971,6 +3987,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "euw1-az2"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "euw1-az2"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "euw1-az2"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "euw1-az2"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "euw1-az2"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "euw1-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-3.json
index 9440e905d..530e409dd 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-3.json
@@ -759,6 +759,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "euw3-az1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "euw3-az1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "euw3-az1"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "euw3-az1"
@@ -3335,6 +3371,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "euw3-az3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "euw3-az3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "euw3-az3"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "euw3-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/me-south-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/me-south-1.json
index 7f470b56c..d8f713042 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/me-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/me-south-1.json
@@ -563,6 +563,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "mes1-az1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "mes1-az1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "mes1-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "mes1-az1"
@@ -1375,6 +1411,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "mes1-az2"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "mes1-az2"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "mes1-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "mes1-az2"
@@ -2187,6 +2259,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "mes1-az3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "mes1-az3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "mes1-az3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "mes1-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json
index 08cd8c8ba..1458024e2 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json
@@ -1003,6 +1003,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "sae1-az1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "sae1-az1"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "sae1-az1"
@@ -2439,6 +2475,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "sae1-az2"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "sae1-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "sae1-az2"
@@ -3719,6 +3791,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "sae1-az3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "sae1-az3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "sae1-az3"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "sae1-az3"
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 99fd0a4a5..9efe4f6b2 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
@@ -9931,6 +9931,42 @@
   "InstanceType": "m6id.xlarge",
   "Location": "usw2-az4"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "usw2-az4"
+ },
  {
   "InstanceType": "m7gd.12xlarge",
   "Location": "usw2-az4"
@@ -10447,6 +10483,42 @@
   "InstanceType": "r7a.xlarge",
   "Location": "usw2-az4"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "usw2-az4"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "usw2-az4"
+ },
  {
   "InstanceType": "r7gd.12xlarge",
   "Location": "usw2-az4"
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 2a0fc076c..6a58414ab 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
@@ -891,6 +891,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-northeast-1a"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-northeast-1a"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-northeast-1a"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "ap-northeast-1a"
@@ -3391,6 +3407,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-northeast-1c"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-northeast-1c"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-northeast-1c"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-northeast-1c"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-northeast-1c"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "ap-northeast-1c"
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 d24d46565..49f96ee45 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
@@ -919,6 +919,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-2a"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-northeast-2a"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-northeast-2a"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "ap-northeast-2a"
@@ -3787,6 +3827,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-2c"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-northeast-2c"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-northeast-2c"
+ },
  {
   "InstanceType": "p2.16xlarge",
   "Location": "ap-northeast-2c"
@@ -4871,6 +4951,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-2d"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-northeast-2d"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "ap-northeast-2d"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json
index fa2698f7f..1c2932dbc 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json
@@ -2115,6 +2115,42 @@
   "InstanceType": "m5d.xlarge",
   "Location": "ap-northeast-3c"
  },
+ {
+  "InstanceType": "m6g.12xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.16xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.2xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.4xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.8xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.large",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.medium",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.metal",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m6g.xlarge",
+  "Location": "ap-northeast-3c"
+ },
  {
   "InstanceType": "m6gd.12xlarge",
   "Location": "ap-northeast-3c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json
index 37ac2336e..5d066c8df 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json
@@ -671,6 +671,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-south-1a"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-south-1a"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "ap-south-1a"
@@ -1011,6 +1027,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-south-1a"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-south-1a"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-south-1a"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "ap-south-1a"
@@ -2563,6 +2619,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-south-1b"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-south-1b"
+ },
  {
   "InstanceType": "m4.10xlarge",
   "Location": "ap-south-1b"
@@ -2879,6 +2951,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-south-1b"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-south-1b"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-south-1b"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "ap-south-1b"
@@ -4679,6 +4791,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-south-1c"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-south-1c"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-south-1c"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "ap-south-1c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-1.json
index 62da41c13..12e00d928 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-1.json
@@ -1291,6 +1291,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-1a"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-southeast-1a"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-southeast-1a"
+ },
  {
   "InstanceType": "m6idn.12xlarge",
   "Location": "ap-southeast-1a"
@@ -3611,6 +3651,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-1b"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-southeast-1b"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-southeast-1b"
+ },
  {
   "InstanceType": "m6idn.12xlarge",
   "Location": "ap-southeast-1b"
@@ -5347,6 +5427,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-southeast-1c"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-southeast-1c"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "ap-southeast-1c"
@@ -5759,6 +5855,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-1c"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-southeast-1c"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-southeast-1c"
+ },
  {
   "InstanceType": "m6idn.12xlarge",
   "Location": "ap-southeast-1c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json
index 34f7fbbf8..ab0b70e7d 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json
@@ -2871,6 +2871,10 @@
   "InstanceType": "g5.xlarge",
   "Location": "ap-southeast-2b"
  },
+ {
+  "InstanceType": "hpc6a.48xlarge",
+  "Location": "ap-southeast-2b"
+ },
  {
   "InstanceType": "i2.2xlarge",
   "Location": "ap-southeast-2b"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json
index 022d71160..a86e8df7b 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json
@@ -839,6 +839,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "eu-central-1a"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "eu-central-1a"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "eu-central-1a"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "eu-central-1a"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "eu-central-1a"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "eu-central-1a"
@@ -3103,6 +3119,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "eu-central-1b"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "eu-central-1b"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "eu-central-1b"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json
index 9bdb5fb1a..620bf5347 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json
@@ -1943,6 +1943,22 @@
   "InstanceType": "hpc6id.32xlarge",
   "Location": "eu-north-1b"
  },
+ {
+  "InstanceType": "hpc7a.12xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "hpc7a.24xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "hpc7a.48xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "hpc7a.96xlarge",
+  "Location": "eu-north-1b"
+ },
  {
   "InstanceType": "i3.16xlarge",
   "Location": "eu-north-1b"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-1.json
index d45cdf3e1..1e19ed9bf 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-1.json
@@ -1067,6 +1067,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "eu-west-1a"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "eu-west-1a"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "eu-west-1a"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "eu-west-1a"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "eu-west-1a"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "eu-west-1a"
@@ -3971,6 +3987,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "eu-west-1b"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "eu-west-1b"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "eu-west-1b"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "eu-west-1b"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "eu-west-1b"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "eu-west-1b"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-3.json
index 0ee25a3d3..b3a9a8f42 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-3.json
@@ -759,6 +759,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eu-west-3a"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "eu-west-3a"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "eu-west-3a"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "eu-west-3a"
@@ -3335,6 +3371,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eu-west-3c"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "eu-west-3c"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "eu-west-3c"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "eu-west-3c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/me-south-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/me-south-1.json
index b947fe005..3efabdc66 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/me-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/me-south-1.json
@@ -563,6 +563,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "me-south-1a"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "me-south-1a"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "me-south-1a"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "me-south-1a"
@@ -1375,6 +1411,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "me-south-1b"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "me-south-1b"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "me-south-1b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "me-south-1b"
@@ -2187,6 +2259,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "me-south-1c"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "me-south-1c"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "me-south-1c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "me-south-1c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json
index 739ff7ffd..430ac04fd 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json
@@ -1003,6 +1003,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "sa-east-1a"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "sa-east-1a"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "sa-east-1a"
@@ -2439,6 +2475,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "sa-east-1b"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "sa-east-1b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "sa-east-1b"
@@ -3719,6 +3791,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "sa-east-1c"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "sa-east-1c"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "sa-east-1c"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "sa-east-1c"
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 6786f4e0b..bed140f06 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
@@ -9931,6 +9931,42 @@
   "InstanceType": "m6id.xlarge",
   "Location": "us-west-2d"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "us-west-2d"
+ },
  {
   "InstanceType": "m7gd.12xlarge",
   "Location": "us-west-2d"
@@ -10447,6 +10483,42 @@
   "InstanceType": "r7a.xlarge",
   "Location": "us-west-2d"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "us-west-2d"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "us-west-2d"
+ },
  {
   "InstanceType": "r7gd.12xlarge",
   "Location": "us-west-2d"
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 cf7aa60fd..0221eea86 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
@@ -915,6 +915,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-northeast-1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-northeast-1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-northeast-1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "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 bc91bbe28..9970cbf2b 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
@@ -919,6 +919,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-2"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-northeast-2"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-northeast-2"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "ap-northeast-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json b/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json
index 376c02eeb..1911cc89d 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json
@@ -695,6 +695,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-south-1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-south-1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "ap-south-1"
@@ -1035,6 +1051,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-south-1"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-south-1"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-south-1"
+ },
  {
   "InstanceType": "m7g.12xlarge",
   "Location": "ap-south-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-1.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-1.json
index 516b6625e..19c867075 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-1.json
@@ -811,6 +811,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "ap-southeast-1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "ap-southeast-1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "ap-southeast-1"
@@ -1295,6 +1311,46 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-1"
  },
+ {
+  "InstanceType": "m6id.12xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.16xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.24xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.2xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.32xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.4xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.8xlarge",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.large",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.metal",
+  "Location": "ap-southeast-1"
+ },
+ {
+  "InstanceType": "m6id.xlarge",
+  "Location": "ap-southeast-1"
+ },
  {
   "InstanceType": "m6idn.12xlarge",
   "Location": "ap-southeast-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json
index ff27350e5..f678dcdbb 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json
@@ -691,6 +691,10 @@
   "InstanceType": "g5.xlarge",
   "Location": "ap-southeast-2"
  },
+ {
+  "InstanceType": "hpc6a.48xlarge",
+  "Location": "ap-southeast-2"
+ },
  {
   "InstanceType": "i2.2xlarge",
   "Location": "ap-southeast-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json b/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json
index c69400608..f880a7b8c 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json
@@ -907,6 +907,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "eu-central-1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "eu-central-1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "eu-central-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json b/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json
index 3eba92127..ffe56efe6 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json
@@ -511,6 +511,22 @@
   "InstanceType": "hpc6id.32xlarge",
   "Location": "eu-north-1"
  },
+ {
+  "InstanceType": "hpc7a.12xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "hpc7a.24xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "hpc7a.48xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "hpc7a.96xlarge",
+  "Location": "eu-north-1"
+ },
  {
   "InstanceType": "i3.16xlarge",
   "Location": "eu-north-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-west-1.json b/moto/ec2/resources/instance_type_offerings/region/eu-west-1.json
index 7e3141f6b..854a410e1 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-west-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-west-1.json
@@ -1083,6 +1083,22 @@
   "InstanceType": "inf1.xlarge",
   "Location": "eu-west-1"
  },
+ {
+  "InstanceType": "inf2.24xlarge",
+  "Location": "eu-west-1"
+ },
+ {
+  "InstanceType": "inf2.48xlarge",
+  "Location": "eu-west-1"
+ },
+ {
+  "InstanceType": "inf2.8xlarge",
+  "Location": "eu-west-1"
+ },
+ {
+  "InstanceType": "inf2.xlarge",
+  "Location": "eu-west-1"
+ },
  {
   "InstanceType": "is4gen.2xlarge",
   "Location": "eu-west-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-west-3.json b/moto/ec2/resources/instance_type_offerings/region/eu-west-3.json
index f9d9a54fb..6d94c29b4 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-west-3.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-west-3.json
@@ -759,6 +759,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eu-west-3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "eu-west-3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "eu-west-3"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "eu-west-3"
diff --git a/moto/ec2/resources/instance_type_offerings/region/me-south-1.json b/moto/ec2/resources/instance_type_offerings/region/me-south-1.json
index 38af8ac7a..85b55ca6e 100644
--- a/moto/ec2/resources/instance_type_offerings/region/me-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/me-south-1.json
@@ -607,6 +607,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "me-south-1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "me-south-1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "me-south-1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "me-south-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json b/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json
index 7165cad0f..0a4524b79 100644
--- a/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json
@@ -1003,6 +1003,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "sa-east-1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "sa-east-1"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "sa-east-1"
diff --git a/moto/ssm/resources/regions.json b/moto/ssm/resources/regions.json
index f0fa4d747..20aa09fb0 100644
--- a/moto/ssm/resources/regions.json
+++ b/moto/ssm/resources/regions.json
@@ -373,6 +373,24 @@
                   "Value": "HTTPS"
                 }
               },
+              "cognito-identity": {
+                "Value": "cognito-identity",
+                "endpoint": {
+                  "Value": "cognito-identity.af-south-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "cognito-idp": {
+                "Value": "cognito-idp",
+                "endpoint": {
+                  "Value": "cognito-idp.af-south-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "compute-optimizer": {
                 "Value": "compute-optimizer",
                 "endpoint": {
@@ -12223,6 +12241,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "cloudhsmv2": {
+                "Value": "cloudhsmv2",
+                "endpoint": {
+                  "Value": "cloudhsmv2.ap-south-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "cloudtrail": {
                 "Value": "cloudtrail",
                 "endpoint": {
@@ -18743,6 +18770,24 @@
                   "Value": "HTTPS"
                 }
               },
+              "cognito-identity": {
+                "Value": "cognito-identity",
+                "endpoint": {
+                  "Value": "cognito-identity.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "cognito-idp": {
+                "Value": "cognito-idp",
+                "endpoint": {
+                  "Value": "cognito-idp.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "compute-optimizer": {
                 "Value": "compute-optimizer",
                 "endpoint": {
@@ -24184,6 +24229,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "pipes": {
+                "Value": "pipes",
+                "endpoint": {
+                  "Value": "pipes.cn-north-1.amazonaws.com.cn"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "privatelink": {
                 "Value": "privatelink"
               },
@@ -25514,6 +25568,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "pipes": {
+                "Value": "pipes",
+                "endpoint": {
+                  "Value": "pipes.cn-northwest-1.amazonaws.com.cn"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "polly": {
                 "Value": "polly",
                 "endpoint": {
@@ -42017,6 +42080,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "dlm": {
+                "Value": "dlm",
+                "endpoint": {
+                  "Value": "dlm.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "dms": {
                 "Value": "dms",
                 "endpoint": {
@@ -42425,6 +42497,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "mq": {
+                "Value": "mq",
+                "endpoint": {
+                  "Value": "mq.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "neptune": {
                 "Value": "neptune",
                 "endpoint": {
@@ -43353,6 +43434,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "emr-serverless": {
+                "Value": "emr-serverless",
+                "endpoint": {
+                  "Value": "emr-serverless.me-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "es": {
                 "Value": "es",
                 "endpoint": {
@@ -43473,6 +43563,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "identitystore": {
+                "Value": "identitystore",
+                "endpoint": {
+                  "Value": "identitystore.me-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "imagebuilder": {
                 "Value": "imagebuilder",
                 "endpoint": {
diff --git a/moto/ssm/resources/services.json b/moto/ssm/resources/services.json
index e53e3f0ef..f73b5662a 100644
--- a/moto/ssm/resources/services.json
+++ b/moto/ssm/resources/services.json
@@ -9969,6 +9969,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-south-2": {
+                "Value": "ap-south-2",
+                "endpoint": {
+                  "Value": "cloudhsmv2.ap-south-2.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ap-southeast-1": {
                 "Value": "ap-southeast-1",
                 "endpoint": {
@@ -13100,6 +13109,15 @@
               "Value": "https://aws.amazon.com/cognito/"
             },
             "regions": {
+              "af-south-1": {
+                "Value": "af-south-1",
+                "endpoint": {
+                  "Value": "cognito-identity.af-south-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ap-northeast-1": {
                 "Value": "ap-northeast-1",
                 "endpoint": {
@@ -13154,6 +13172,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-3": {
+                "Value": "ap-southeast-3",
+                "endpoint": {
+                  "Value": "cognito-identity.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ca-central-1": {
                 "Value": "ca-central-1",
                 "endpoint": {
@@ -13306,6 +13333,15 @@
               "Value": "Amazon Cognito Identity User Pools"
             },
             "regions": {
+              "af-south-1": {
+                "Value": "af-south-1",
+                "endpoint": {
+                  "Value": "cognito-idp.af-south-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ap-northeast-1": {
                 "Value": "ap-northeast-1",
                 "endpoint": {
@@ -13360,6 +13396,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-3": {
+                "Value": "ap-southeast-3",
+                "endpoint": {
+                  "Value": "cognito-idp.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ca-central-1": {
                 "Value": "ca-central-1",
                 "endpoint": {
@@ -17269,6 +17314,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "dlm.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -22731,6 +22785,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "me-central-1": {
+                "Value": "me-central-1",
+                "endpoint": {
+                  "Value": "emr-serverless.me-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -29294,6 +29357,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "me-central-1": {
+                "Value": "me-central-1",
+                "endpoint": {
+                  "Value": "identitystore.me-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -41126,6 +41198,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "mq.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -44908,6 +44989,24 @@
                   "Value": "HTTPS"
                 }
               },
+              "cn-north-1": {
+                "Value": "cn-north-1",
+                "endpoint": {
+                  "Value": "pipes.cn-north-1.amazonaws.com.cn"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "cn-northwest-1": {
+                "Value": "cn-northwest-1",
+                "endpoint": {
+                  "Value": "pipes.cn-northwest-1.amazonaws.com.cn"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "eu-central-1": {
                 "Value": "eu-central-1",
                 "endpoint": {
diff --git a/setup.cfg b/setup.cfg
index 774641da3..546553103 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -56,7 +56,7 @@ all =
     openapi-spec-validator>=0.5.0
     pyparsing>=3.0.7
     jsondiff>=1.1.2
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
     aws-xray-sdk!=0.96,>=0.93
     setuptools
     multipart
@@ -71,7 +71,7 @@ proxy =
     openapi-spec-validator>=0.5.0
     pyparsing>=3.0.7
     jsondiff>=1.1.2
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
     aws-xray-sdk!=0.96,>=0.93
     setuptools
     multipart
@@ -86,7 +86,7 @@ server =
     openapi-spec-validator>=0.5.0
     pyparsing>=3.0.7
     jsondiff>=1.1.2
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
     aws-xray-sdk!=0.96,>=0.93
     setuptools
     flask!=2.2.0,!=2.2.1
@@ -121,7 +121,7 @@ cloudformation =
     openapi-spec-validator>=0.5.0
     pyparsing>=3.0.7
     jsondiff>=1.1.2
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
     aws-xray-sdk!=0.96,>=0.93
     setuptools
 cloudfront =
@@ -144,10 +144,10 @@ dms =
 ds = sshpubkeys>=3.1.0
 dynamodb =
     docker>=3.0.0
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
 dynamodbstreams =
     docker>=3.0.0
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
 ebs = sshpubkeys>=3.1.0
 ec2 = sshpubkeys>=3.1.0
 ec2instanceconnect =
@@ -210,15 +210,15 @@ resourcegroupstaggingapi =
     openapi-spec-validator>=0.5.0
     pyparsing>=3.0.7
     jsondiff>=1.1.2
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
 route53 =
 route53resolver = sshpubkeys>=3.1.0
 s3 =
     PyYAML>=5.1
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
 s3crc32c =
     PyYAML>=5.1
-    py-partiql-parser==0.4.2
+    py-partiql-parser==0.5.0
     crc32c
 s3control =
 sagemaker =


Test patch:
diff --git a/tests/test_cognitoidp/test_cognitoidp.py b/tests/test_cognitoidp/test_cognitoidp.py
index 23c5aa1f1..d7abd1beb 100644
--- a/tests/test_cognitoidp/test_cognitoidp.py
+++ b/tests/test_cognitoidp/test_cognitoidp.py
@@ -4349,6 +4349,61 @@ def test_admin_setting_mfa_totp_and_sms():
     assert result["PreferredMfaSetting"] == ""
 
 
+@mock_cognitoidp
+def test_admin_initiate_auth_when_token_totp_enabled():
+    conn = boto3.client("cognito-idp", "us-west-2")
+
+    result = authentication_flow(conn, "ADMIN_NO_SRP_AUTH")
+    access_token = result["access_token"]
+    user_pool_id = result["user_pool_id"]
+    username = result["username"]
+    client_id = result["client_id"]
+    password = result["password"]
+    conn.associate_software_token(AccessToken=access_token)
+    conn.verify_software_token(AccessToken=access_token, UserCode="123456")
+
+    # Set MFA TOTP and SMS methods
+    conn.admin_set_user_mfa_preference(
+        Username=username,
+        UserPoolId=user_pool_id,
+        SoftwareTokenMfaSettings={"Enabled": True, "PreferredMfa": True},
+        SMSMfaSettings={"Enabled": True, "PreferredMfa": False},
+    )
+    result = conn.admin_get_user(UserPoolId=user_pool_id, Username=username)
+    assert len(result["UserMFASettingList"]) == 2
+    assert result["PreferredMfaSetting"] == "SOFTWARE_TOKEN_MFA"
+
+    # Initiate auth with TOTP
+    result = conn.admin_initiate_auth(
+        UserPoolId=user_pool_id,
+        ClientId=client_id,
+        AuthFlow="ADMIN_NO_SRP_AUTH",
+        AuthParameters={
+            "USERNAME": username,
+            "PASSWORD": password,
+        },
+    )
+
+    assert result["ChallengeName"] == "SOFTWARE_TOKEN_MFA"
+    assert result["Session"] != ""
+
+    # Respond to challenge with TOTP
+    result = conn.respond_to_auth_challenge(
+        ClientId=client_id,
+        ChallengeName="SOFTWARE_TOKEN_MFA",
+        Session=result["Session"],
+        ChallengeResponses={
+            "SOFTWARE_TOKEN_MFA_CODE": "123456",
+            "USERNAME": username,
+        },
+    )
+
+    assert result["AuthenticationResult"]["IdToken"] != ""
+    assert result["AuthenticationResult"]["AccessToken"] != ""
+    assert result["AuthenticationResult"]["RefreshToken"] != ""
+    assert result["AuthenticationResult"]["TokenType"] == "Bearer"
+
+
 @mock_cognitoidp
 def test_admin_setting_mfa_when_token_not_verified():
     conn = boto3.client("cognito-idp", "us-west-2")
diff --git a/tests/test_dynamodb/test_dynamodb_statements.py b/tests/test_dynamodb/test_dynamodb_statements.py
index 7cacb6a0a..68e3f21f6 100644
--- a/tests/test_dynamodb/test_dynamodb_statements.py
+++ b/tests/test_dynamodb/test_dynamodb_statements.py
@@ -260,3 +260,109 @@ def test_execute_statement_with_all_clauses(table_name=None):
     partiql_statement = f"SELECT pk FROM \"{table_name}\" WHERE (contains(\"NameLower\", 'code') OR contains(\"DescriptionLower\", 'code')) AND Category = 'free' AND Price >= 0 AND Price <= 1 AND FreeTier IS NOT MISSING AND attribute_type(\"FreeTier\", 'N')"
     items = dynamodb_client.execute_statement(Statement=partiql_statement)["Items"]
     assert items == [{"pk": {"S": "0"}}]
+
+
+@pytest.mark.aws_verified
+@dynamodb_aws_verified()
+def test_insert_data(table_name=None):
+    client = boto3.client("dynamodb", "us-east-1")
+    create_items(table_name)
+    resp = client.execute_statement(
+        Statement=f"INSERT INTO \"{table_name}\" value {{'pk': 'msg3'}}"
+    )
+    assert resp["Items"] == []
+
+    items = client.scan(TableName=table_name)["Items"]
+    assert len(items) == 3
+    assert {"pk": {"S": "msg3"}} in items
+
+    # More advanced insertion
+    client.execute_statement(
+        Statement=f"INSERT INTO \"{table_name}\" value {{'pk': 'msg4', 'attr':{{'sth': ['other']}}}}"
+    )
+
+    items = client.scan(TableName=table_name)["Items"]
+    assert len(items) == 4
+    assert {
+        "pk": {"S": "msg4"},
+        "attr": {"M": {"sth": {"L": [{"S": "other"}]}}},
+    } in items
+
+
+@pytest.mark.aws_verified
+@dynamodb_aws_verified()
+def test_update_data(table_name=None):
+    client = boto3.client("dynamodb", "us-east-1")
+    create_items(table_name)
+
+    items = client.scan(TableName=table_name)["Items"]
+    assert item1 in items
+    assert item2 in items  # unchanged
+
+    # Update existing attr
+    client.execute_statement(
+        Statement=f"UPDATE \"{table_name}\" SET body='other' WHERE pk='msg1'"
+    )
+
+    items = client.scan(TableName=table_name)["Items"]
+    assert len(items) == 2
+    updated_item = item1.copy()
+    updated_item["body"] = {"S": "other"}
+    assert updated_item in items
+    assert item2 in items  # unchanged
+
+    # Set new attr
+    client.execute_statement(
+        Statement=f"UPDATE \"{table_name}\" SET new_attr='asdf' WHERE pk='msg1'"
+    )
+
+    items = client.scan(TableName=table_name)["Items"]
+    assert len(items) == 2
+    updated_item["new_attr"] = {"S": "asdf"}
+    assert updated_item in items
+    assert item2 in items
+
+    # Remove attr
+    client.execute_statement(
+        Statement=f"UPDATE \"{table_name}\" REMOVE new_attr WHERE pk='msg1'"
+    )
+
+    items = client.scan(TableName=table_name)["Items"]
+    assert len(items) == 2
+    updated_item.pop("new_attr")
+    assert updated_item in items
+    assert item2 in items
+
+
+@pytest.mark.aws_verified
+@dynamodb_aws_verified()
+def test_delete_data(table_name=None):
+    client = boto3.client("dynamodb", "us-east-1")
+    create_items(table_name)
+
+    client.execute_statement(Statement=f"DELETE FROM \"{table_name}\" WHERE pk='msg1'")
+
+    items = client.scan(TableName=table_name)["Items"]
+    assert items == [item2]
+
+
+@mock_dynamodb
+def test_delete_data__with_sort_key():
+    client = boto3.client("dynamodb", "us-east-1")
+    client.create_table(
+        TableName="test",
+        AttributeDefinitions=[
+            {"AttributeName": "pk", "AttributeType": "S"},
+            {"AttributeName": "sk", "AttributeType": "S"},
+        ],
+        KeySchema=[
+            {"AttributeName": "pk", "KeyType": "HASH"},
+            {"AttributeName": "sk", "KeyType": "RANGE"},
+        ],
+        BillingMode="PAY_PER_REQUEST",
+    )
+    client.put_item(TableName="test", Item={"pk": {"S": "msg"}, "sk": {"S": "sth"}})
+
+    client.execute_statement(Statement="DELETE FROM \"test\" WHERE pk='msg'")
+
+    assert client.scan(TableName="test")["Items"] == []
diff --git a/tests/test_dynamodb/test_dynamodb_update_expressions.py b/tests/test_dynamodb/test_dynamodb_update_expressions.py
index e37b79c09..c9ff08a62 100644
--- a/tests/test_dynamodb/test_dynamodb_update_expressions.py
+++ b/tests/test_dynamodb/test_dynamodb_update_expressions.py
@@ -1,33 +1,42 @@
 import boto3
+import pytest
 
-from moto import mock_dynamodb
+from . import dynamodb_aws_verified
 
 
-@mock_dynamodb
-def test_update_different_map_elements_in_single_request():
+@pytest.mark.aws_verified
+@dynamodb_aws_verified()
+def test_update_different_map_elements_in_single_request(table_name=None):
     # https://github.com/getmoto/moto/issues/5552
     dynamodb = boto3.resource("dynamodb", region_name="us-east-1")
-    dynamodb.create_table(
-        TableName="example_table",
-        KeySchema=[{"AttributeName": "id", "KeyType": "HASH"}],
-        AttributeDefinitions=[
-            {"AttributeName": "id", "AttributeType": "S"},
-        ],
-        BillingMode="PAY_PER_REQUEST",
-    )
+
     record = {
-        "id": "example_id",
+        "pk": "example_id",
         "d": {"hello": "h", "world": "w"},
     }
-    table = dynamodb.Table("example_table")
+    table = dynamodb.Table(table_name)
     table.put_item(Item=record)
     updated = table.update_item(
-        Key={"id": "example_id"},
+        Key={"pk": "example_id"},
         UpdateExpression="set d.hello = :h, d.world = :w",
         ExpressionAttributeValues={":h": "H", ":w": "W"},
         ReturnValues="ALL_NEW",
     )
     assert updated["Attributes"] == {
-        "id": "example_id",
+        "pk": "example_id",
         "d": {"hello": "H", "world": "W"},
     }
+
+    # Use UpdateExpression that contains a new-line
+    # https://github.com/getmoto/moto/issues/7127
+    table.update_item(
+        Key={"pk": "example_id"},
+        UpdateExpression=(
+            """
+            ADD 
+              MyTotalCount :MyCount
+            """
+        ),
+        ExpressionAttributeValues={":MyCount": 5},
+    )
+    assert table.get_item(Key={"pk": "example_id"})["Item"]["MyTotalCount"] == 5
diff --git a/tests/test_ec2/test_launch_templates_cloudformation.py b/tests/test_ec2/test_launch_templates_cloudformation.py
new file mode 100644
index 000000000..71ce94a98
--- /dev/null
+++ b/tests/test_ec2/test_launch_templates_cloudformation.py
@@ -0,0 +1,247 @@
+import json
+from uuid import uuid4
+
+import boto3
+
+from moto import mock_autoscaling, mock_cloudformation, mock_ec2
+from tests import EXAMPLE_AMI_ID, EXAMPLE_AMI_ID2
+
+
+@mock_autoscaling
+@mock_cloudformation
+@mock_ec2
+def test_asg_with_latest_launch_template_version():
+    cf_client = boto3.client("cloudformation", region_name="us-west-1")
+    ec2 = boto3.resource("ec2", region_name="us-west-1")
+    vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
+    autoscaling_client = boto3.client("autoscaling", region_name="us-west-1")
+
+    subnet1 = ec2.create_subnet(
+        CidrBlock="10.0.1.0/24", VpcId=vpc.id, AvailabilityZone="us-west-1a"
+    )
+
+    subnet2 = ec2.create_subnet(
+        CidrBlock="10.0.2.0/24", VpcId=vpc.id, AvailabilityZone="us-west-1b"
+    )
+
+    autoscaling_group_name = str(uuid4())
+
+    stack_name = str(uuid4())
+    launch_template_name = str(uuid4())[0:6]
+
+    version_attribute = "LatestVersionNumber"
+
+    template_json = json.dumps(
+        {
+            "AWSTemplateFormatVersion": "2010-09-09",
+            "Description": "AWS CloudFormation Template to create an ASG group with LaunchTemplate",
+            "Resources": {
+                "LaunchTemplate": {
+                    "Type": "AWS::EC2::LaunchTemplate",
+                    "Properties": {
+                        "LaunchTemplateName": launch_template_name,
+                        "LaunchTemplateData": {
+                            "ImageId": EXAMPLE_AMI_ID,
+                            "InstanceType": "t3.small",
+                            "UserData": "",
+                        },
+                    },
+                },
+                "AutoScalingGroup": {
+                    "Type": "AWS::AutoScaling::AutoScalingGroup",
+                    "Properties": {
+                        "AutoScalingGroupName": autoscaling_group_name,
+                        "VPCZoneIdentifier": [subnet1.id],
+                        "LaunchTemplate": {
+                            "LaunchTemplateId": {"Ref": "LaunchTemplate"},
+                            "Version": {
+                                "Fn::GetAtt": ["LaunchTemplate", version_attribute]
+                            },
+                        },
+                        "MinSize": 1,
+                        "MaxSize": 1,
+                    },
+                },
+            },
+        }
+    )
+
+    cf_client.create_stack(
+        StackName=stack_name,
+        TemplateBody=template_json,
+        Capabilities=["CAPABILITY_NAMED_IAM"],
+        OnFailure="DELETE",
+    )
+
+    template_json = json.dumps(
+        {
+            "AWSTemplateFormatVersion": "2010-09-09",
+            "Description": "AWS CloudFormation Template to create an ASG group with LaunchTemplate",
+            "Resources": {
+                "LaunchTemplate": {
+                    "Type": "AWS::EC2::LaunchTemplate",
+                    "Properties": {
+                        "LaunchTemplateName": launch_template_name,
+                        "LaunchTemplateData": {
+                            "ImageId": EXAMPLE_AMI_ID2,
+                            "InstanceType": "t3.medium",
+                            "UserData": "",
+                        },
+                    },
+                },
+                "AutoScalingGroup": {
+                    "Type": "AWS::AutoScaling::AutoScalingGroup",
+                    "Properties": {
+                        "AutoScalingGroupName": autoscaling_group_name,
+                        "VPCZoneIdentifier": [subnet2.id],
+                        "LaunchTemplate": {
+                            "LaunchTemplateId": {"Ref": "LaunchTemplate"},
+                            "Version": {
+                                "Fn::GetAtt": ["LaunchTemplate", version_attribute]
+                            },
+                        },
+                        "MinSize": 1,
+                        "MaxSize": 2,
+                    },
+                },
+            },
+        }
+    )
+
+    cf_client.update_stack(
+        StackName=stack_name,
+        TemplateBody=template_json,
+        Capabilities=["CAPABILITY_NAMED_IAM"],
+    )
+
+    autoscaling_group = autoscaling_client.describe_auto_scaling_groups(
+        AutoScalingGroupNames=[
+            autoscaling_group_name,
+        ]
+    )["AutoScalingGroups"][0]
+
+    assert (
+        autoscaling_group["LaunchTemplate"]["LaunchTemplateName"]
+        == launch_template_name
+    )
+    assert autoscaling_group["LaunchTemplate"]["Version"] == "2"
+
+
+@mock_autoscaling
+@mock_cloudformation
+@mock_ec2
+def test_asg_with_default_launch_template_version():
+    cf_client = boto3.client("cloudformation", region_name="us-west-1")
+    ec2 = boto3.resource("ec2", region_name="us-west-1")
+    vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")
+    autoscaling_client = boto3.client("autoscaling", region_name="us-west-1")
+
+    subnet1 = ec2.create_subnet(
+        CidrBlock="10.0.1.0/24", VpcId=vpc.id, AvailabilityZone="us-west-1a"
+    )
+
+    subnet2 = ec2.create_subnet(
+        CidrBlock="10.0.2.0/24", VpcId=vpc.id, AvailabilityZone="us-west-1b"
+    )
+
+    autoscaling_group_name = str(uuid4())
+
+    stack_name = str(uuid4())
+    launch_template_name = str(uuid4())[0:6]
+
+    version_attribute = "DefaultVersionNumber"
+
+    template_json = json.dumps(
+        {
+            "AWSTemplateFormatVersion": "2010-09-09",
+            "Description": "AWS CloudFormation Template to create an ASG group with LaunchTemplate",
+            "Resources": {
+                "LaunchTemplate": {
+                    "Type": "AWS::EC2::LaunchTemplate",
+                    "Properties": {
+                        "LaunchTemplateName": launch_template_name,
+                        "LaunchTemplateData": {
+                            "ImageId": EXAMPLE_AMI_ID,
+                            "InstanceType": "t3.small",
+                            "UserData": "",
+                        },
+                    },
+                },
+                "AutoScalingGroup": {
+                    "Type": "AWS::AutoScaling::AutoScalingGroup",
+                    "Properties": {
+                        "AutoScalingGroupName": autoscaling_group_name,
+                        "VPCZoneIdentifier": [subnet1.id],
+                        "LaunchTemplate": {
+                            "LaunchTemplateId": {"Ref": "LaunchTemplate"},
+                            "Version": {
+                                "Fn::GetAtt": ["LaunchTemplate", version_attribute]
+                            },
+                        },
+                        "MinSize": 1,
+                        "MaxSize": 1,
+                    },
+                },
+            },
+        }
+    )
+
+    cf_client.create_stack(
+        StackName=stack_name,
+        TemplateBody=template_json,
+        Capabilities=["CAPABILITY_NAMED_IAM"],
+        OnFailure="DELETE",
+    )
+
+    template_json = json.dumps(
+        {
+            "AWSTemplateFormatVersion": "2010-09-09",
+            "Description": "AWS CloudFormation Template to create an ASG group with LaunchTemplate",
+            "Resources": {
+                "LaunchTemplate": {
+                    "Type": "AWS::EC2::LaunchTemplate",
+                    "Properties": {
+                        "LaunchTemplateName": launch_template_name,
+                        "LaunchTemplateData": {
+                            "ImageId": EXAMPLE_AMI_ID2,
+                            "InstanceType": "t3.medium",
+                            "UserData": "",
+                        },
+                    },
+                },
+                "AutoScalingGroup": {
+                    "Type": "AWS::AutoScaling::AutoScalingGroup",
+                    "Properties": {
+                        "AutoScalingGroupName": autoscaling_group_name,
+                        "VPCZoneIdentifier": [subnet2.id],
+                        "LaunchTemplate": {
+                            "LaunchTemplateId": {"Ref": "LaunchTemplate"},
+                            "Version": {
+                                "Fn::GetAtt": ["LaunchTemplate", version_attribute]
+                            },
+                        },
+                        "MinSize": 1,
+                        "MaxSize": 2,
+                    },
+                },
+            },
+        }
+    )
+
+    cf_client.update_stack(
+        StackName=stack_name,
+        TemplateBody=template_json,
+        Capabilities=["CAPABILITY_NAMED_IAM"],
+    )
+
+    autoscaling_group = autoscaling_client.describe_auto_scaling_groups(
+        AutoScalingGroupNames=[
+            autoscaling_group_name,
+        ]
+    )["AutoScalingGroups"][0]
+
+    assert (
+        autoscaling_group["LaunchTemplate"]["LaunchTemplateName"]
+        == launch_template_name
+    )
+    assert autoscaling_group["LaunchTemplate"]["Version"] == "1"