Repository: getmoto/moto
Pull request #8989 (2025-06-16 13:44:31)

Implement ECS `delete_task_definition` and `status` filter for `list_task_definitions`
While I'm working on my personal project, I found there are some features missing in ECS that I need. So I implemented:

- I found that current `list_task_definitions` does not support `status` filter. I implement it added tests for it.
-The `delete_task_definitions` feature is not implemented, so I implemented it.

I have some questions:

- Because I thought `test_ecs_boto3.py` file quite big, I added tests for `delete_task_definitions` in new file, `test_ecs_task_definitions.py`. If I should merge the file, please let me know.

Thank you for maintaining this library. Please feel free to suggest any changes!


Patch:
diff --git a/IMPLEMENTATION_COVERAGE.md b/IMPLEMENTATION_COVERAGE.md
index 6b6029df3..03370bfac 100644
--- a/IMPLEMENTATION_COVERAGE.md
+++ b/IMPLEMENTATION_COVERAGE.md
@@ -51,23 +51,20 @@
 
 ## amp
 <details>
-<summary>51% implemented</summary>
+<summary>58% implemented</summary>
 
 - [ ] create_alert_manager_definition
 - [X] create_logging_configuration
-- [ ] create_query_logging_configuration
 - [X] create_rule_groups_namespace
 - [ ] create_scraper
 - [X] create_workspace
 - [ ] delete_alert_manager_definition
 - [X] delete_logging_configuration
-- [ ] delete_query_logging_configuration
 - [X] delete_rule_groups_namespace
 - [ ] delete_scraper
 - [X] delete_workspace
 - [ ] describe_alert_manager_definition
 - [X] describe_logging_configuration
-- [ ] describe_query_logging_configuration
 - [X] describe_rule_groups_namespace
 - [ ] describe_scraper
 - [X] describe_workspace
@@ -82,7 +79,6 @@
 - [X] tag_resource
 - [X] untag_resource
 - [X] update_logging_configuration
-- [ ] update_query_logging_configuration
 - [ ] update_scraper
 - [X] update_workspace_alias
 - [ ] update_workspace_configuration
@@ -229,7 +225,7 @@
 
 ## apigatewayv2
 <details>
-<summary>70% implemented</summary>
+<summary>75% implemented</summary>
 
 - [X] create_api
 - [X] create_api_mapping
@@ -241,7 +237,6 @@
 - [X] create_model
 - [X] create_route
 - [X] create_route_response
-- [ ] create_routing_rule
 - [X] create_stage
 - [X] create_vpc_link
 - [ ] delete_access_log_settings
@@ -258,7 +253,6 @@
 - [X] delete_route_request_parameter
 - [X] delete_route_response
 - [ ] delete_route_settings
-- [ ] delete_routing_rule
 - [X] delete_stage
 - [X] delete_vpc_link
 - [ ] export_api
@@ -283,15 +277,12 @@
 - [X] get_route_response
 - [ ] get_route_responses
 - [X] get_routes
-- [ ] get_routing_rule
 - [X] get_stage
 - [X] get_stages
 - [X] get_tags
 - [X] get_vpc_link
 - [X] get_vpc_links
 - [ ] import_api
-- [ ] list_routing_rules
-- [ ] put_routing_rule
 - [X] reimport_api
 - [ ] reset_authorizers_cache
 - [X] tag_resource
@@ -964,7 +955,7 @@
 
 ## ce
 <details>
-<summary>17% implemented</summary>
+<summary>18% implemented</summary>
 
 - [ ] create_anomaly_monitor
 - [ ] create_anomaly_subscription
@@ -979,10 +970,8 @@
 - [ ] get_approximate_usage_records
 - [ ] get_commitment_purchase_analysis
 - [X] get_cost_and_usage
-- [ ] get_cost_and_usage_comparisons
 - [ ] get_cost_and_usage_with_resources
 - [ ] get_cost_categories
-- [ ] get_cost_comparison_drivers
 - [ ] get_cost_forecast
 - [ ] get_dimension_values
 - [ ] get_reservation_coverage
@@ -1359,7 +1348,7 @@
 
 ## cloudtrail
 <details>
-<summary>27% implemented</summary>
+<summary>28% implemented</summary>
 
 - [X] add_tags
 - [ ] cancel_query
@@ -1380,7 +1369,6 @@
 - [ ] generate_query
 - [ ] get_channel
 - [ ] get_dashboard
-- [ ] get_event_configuration
 - [ ] get_event_data_store
 - [X] get_event_selectors
 - [ ] get_import
@@ -1400,7 +1388,6 @@
 - [X] list_tags
 - [X] list_trails
 - [ ] lookup_events
-- [ ] put_event_configuration
 - [X] put_event_selectors
 - [X] put_insight_selectors
 - [ ] put_resource_policy
@@ -2064,27 +2051,27 @@
 
 ## connectcampaigns
 <details>
-<summary>22% implemented</summary>
+<summary>63% implemented</summary>
 
 - [X] create_campaign
 - [X] delete_campaign
 - [ ] delete_connect_instance_config
 - [ ] delete_instance_onboarding_job
 - [X] describe_campaign
-- [ ] get_campaign_state
+- [X] get_campaign_state
 - [ ] get_campaign_state_batch
 - [X] get_connect_instance_config
 - [ ] get_instance_onboarding_job_status
-- [ ] list_campaigns
-- [ ] list_tags_for_resource
-- [ ] pause_campaign
+- [X] list_campaigns
+- [X] list_tags_for_resource
+- [X] pause_campaign
 - [ ] put_dial_request_batch
-- [ ] resume_campaign
-- [ ] start_campaign
+- [X] resume_campaign
+- [X] start_campaign
 - [X] start_instance_onboarding_job
-- [ ] stop_campaign
-- [ ] tag_resource
-- [ ] untag_resource
+- [X] stop_campaign
+- [X] tag_resource
+- [X] untag_resource
 - [ ] update_campaign_dialer_config
 - [ ] update_campaign_name
 - [ ] update_campaign_outbound_call_config
@@ -3093,7 +3080,6 @@
 - [ ] export_image
 - [ ] export_transit_gateway_routes
 - [ ] export_verified_access_instance_client_configuration
-- [ ] get_active_vpn_tunnel_status
 - [ ] get_allowed_images_settings
 - [ ] get_associated_enclave_certificate_iam_roles
 - [ ] get_associated_ipv6_pool_cidrs
@@ -3192,7 +3178,6 @@
 - [X] modify_managed_prefix_list
 - [X] modify_network_interface_attribute
 - [ ] modify_private_dns_name_options
-- [ ] modify_public_ip_dns_name_options
 - [ ] modify_reserved_instances
 - [ ] modify_route_server
 - [X] modify_security_group_rules
@@ -3371,7 +3356,7 @@
 
 ## ecs
 <details>
-<summary>73% implemented</summary>
+<summary>75% implemented</summary>
 
 - [X] create_capacity_provider
 - [X] create_cluster
@@ -3382,7 +3367,7 @@
 - [X] delete_capacity_provider
 - [X] delete_cluster
 - [X] delete_service
-- [ ] delete_task_definitions
+- [X] delete_task_definitions
 - [X] delete_task_set
 - [X] deregister_container_instance
 - [X] deregister_task_definition
@@ -6262,7 +6247,7 @@
 
 ## network-firewall
 <details>
-<summary>10% implemented</summary>
+<summary>11% implemented</summary>
 
 - [ ] associate_firewall_policy
 - [ ] associate_subnets
@@ -6270,15 +6255,12 @@
 - [ ] create_firewall_policy
 - [ ] create_rule_group
 - [ ] create_tls_inspection_configuration
-- [ ] create_vpc_endpoint_association
 - [ ] delete_firewall
 - [ ] delete_firewall_policy
 - [ ] delete_resource_policy
 - [ ] delete_rule_group
 - [ ] delete_tls_inspection_configuration
-- [ ] delete_vpc_endpoint_association
 - [X] describe_firewall
-- [ ] describe_firewall_metadata
 - [ ] describe_firewall_policy
 - [ ] describe_flow_operation
 - [X] describe_logging_configuration
@@ -6286,7 +6268,6 @@
 - [ ] describe_rule_group
 - [ ] describe_rule_group_metadata
 - [ ] describe_tls_inspection_configuration
-- [ ] describe_vpc_endpoint_association
 - [ ] disassociate_subnets
 - [ ] get_analysis_report_results
 - [ ] list_analysis_reports
@@ -6297,7 +6278,6 @@
 - [ ] list_rule_groups
 - [ ] list_tags_for_resource
 - [ ] list_tls_inspection_configurations
-- [ ] list_vpc_endpoint_associations
 - [ ] put_resource_policy
 - [ ] start_analysis_report
 - [ ] start_flow_capture
@@ -10214,7 +10194,6 @@
 - eks-auth
 - entityresolution
 - evidently
-- evs
 - finspace
 - finspace-data
 - fis
diff --git a/docs/docs/services/amp.rst b/docs/docs/services/amp.rst
index af7c00e82..471e3ec1a 100644
--- a/docs/docs/services/amp.rst
+++ b/docs/docs/services/amp.rst
@@ -18,7 +18,6 @@ amp
 
 - [ ] create_alert_manager_definition
 - [X] create_logging_configuration
-- [ ] create_query_logging_configuration
 - [X] create_rule_groups_namespace
   
         The ClientToken-parameter is not yet implemented
@@ -32,7 +31,6 @@ amp
 
 - [ ] delete_alert_manager_definition
 - [X] delete_logging_configuration
-- [ ] delete_query_logging_configuration
 - [X] delete_rule_groups_namespace
   
         The ClientToken-parameter is not yet implemented
@@ -46,7 +44,6 @@ amp
 
 - [ ] describe_alert_manager_definition
 - [X] describe_logging_configuration
-- [ ] describe_query_logging_configuration
 - [X] describe_rule_groups_namespace
 - [ ] describe_scraper
 - [X] describe_workspace
@@ -65,7 +62,6 @@ amp
 - [X] tag_resource
 - [X] untag_resource
 - [X] update_logging_configuration
-- [ ] update_query_logging_configuration
 - [ ] update_scraper
 - [X] update_workspace_alias
   
diff --git a/docs/docs/services/apigatewayv2.rst b/docs/docs/services/apigatewayv2.rst
index dc1eb4488..17e5bd765 100644
--- a/docs/docs/services/apigatewayv2.rst
+++ b/docs/docs/services/apigatewayv2.rst
@@ -35,7 +35,6 @@ apigatewayv2
         The following parameters are not yet implemented: ResponseModels, ResponseParameters
         
 
-- [ ] create_routing_rule
 - [X] create_stage
 - [X] create_vpc_link
 - [ ] delete_access_log_settings
@@ -52,7 +51,6 @@ apigatewayv2
 - [X] delete_route_request_parameter
 - [X] delete_route_response
 - [ ] delete_route_settings
-- [ ] delete_routing_rule
 - [X] delete_stage
 - [X] delete_vpc_link
 - [ ] export_api
@@ -93,15 +91,12 @@ apigatewayv2
         Pagination is not yet implemented
         
 
-- [ ] get_routing_rule
 - [X] get_stage
 - [X] get_stages
 - [X] get_tags
 - [X] get_vpc_link
 - [X] get_vpc_links
 - [ ] import_api
-- [ ] list_routing_rules
-- [ ] put_routing_rule
 - [X] reimport_api
   
         Only YAML is supported at the moment. Full OpenAPI-support is not guaranteed. Only limited validation is implemented
diff --git a/docs/docs/services/ce.rst b/docs/docs/services/ce.rst
index 7ee305e76..34a56e40b 100644
--- a/docs/docs/services/ce.rst
+++ b/docs/docs/services/ce.rst
@@ -84,10 +84,8 @@ ce
             resp = ce.get_cost_and_usage(...)
         
 
-- [ ] get_cost_and_usage_comparisons
 - [ ] get_cost_and_usage_with_resources
 - [ ] get_cost_categories
-- [ ] get_cost_comparison_drivers
 - [ ] get_cost_forecast
 - [ ] get_dimension_values
 - [ ] get_reservation_coverage
diff --git a/docs/docs/services/cloudtrail.rst b/docs/docs/services/cloudtrail.rst
index 298a434fa..28fc2b37f 100644
--- a/docs/docs/services/cloudtrail.rst
+++ b/docs/docs/services/cloudtrail.rst
@@ -35,7 +35,6 @@ cloudtrail
 - [ ] generate_query
 - [ ] get_channel
 - [ ] get_dashboard
-- [ ] get_event_configuration
 - [ ] get_event_data_store
 - [X] get_event_selectors
 - [ ] get_import
@@ -59,7 +58,6 @@ cloudtrail
 
 - [X] list_trails
 - [ ] lookup_events
-- [ ] put_event_configuration
 - [X] put_event_selectors
 - [X] put_insight_selectors
 - [ ] put_resource_policy
diff --git a/docs/docs/services/connectcampaigns.rst b/docs/docs/services/connectcampaigns.rst
index 3b10d80e7..3af635d7c 100644
--- a/docs/docs/services/connectcampaigns.rst
+++ b/docs/docs/services/connectcampaigns.rst
@@ -19,20 +19,20 @@ connectcampaigns
 - [ ] delete_connect_instance_config
 - [ ] delete_instance_onboarding_job
 - [X] describe_campaign
-- [ ] get_campaign_state
+- [X] get_campaign_state
 - [ ] get_campaign_state_batch
 - [X] get_connect_instance_config
 - [ ] get_instance_onboarding_job_status
-- [ ] list_campaigns
-- [ ] list_tags_for_resource
-- [ ] pause_campaign
+- [X] list_campaigns
+- [X] list_tags_for_resource
+- [X] pause_campaign
 - [ ] put_dial_request_batch
-- [ ] resume_campaign
-- [ ] start_campaign
+- [X] resume_campaign
+- [X] start_campaign
 - [X] start_instance_onboarding_job
-- [ ] stop_campaign
-- [ ] tag_resource
-- [ ] untag_resource
+- [X] stop_campaign
+- [X] tag_resource
+- [X] untag_resource
 - [ ] update_campaign_dialer_config
 - [ ] update_campaign_name
 - [ ] update_campaign_outbound_call_config
diff --git a/docs/docs/services/ec2.rst b/docs/docs/services/ec2.rst
index 3b9ecce82..88f6c6249 100644
--- a/docs/docs/services/ec2.rst
+++ b/docs/docs/services/ec2.rst
@@ -527,7 +527,6 @@ ec2
 - [ ] export_image
 - [ ] export_transit_gateway_routes
 - [ ] export_verified_access_instance_client_configuration
-- [ ] get_active_vpn_tunnel_status
 - [ ] get_allowed_images_settings
 - [ ] get_associated_enclave_certificate_iam_roles
 - [ ] get_associated_ipv6_pool_cidrs
@@ -626,7 +625,6 @@ ec2
 - [X] modify_managed_prefix_list
 - [X] modify_network_interface_attribute
 - [ ] modify_private_dns_name_options
-- [ ] modify_public_ip_dns_name_options
 - [ ] modify_reserved_instances
 - [ ] modify_route_server
 - [X] modify_security_group_rules
diff --git a/docs/docs/services/ecs.rst b/docs/docs/services/ecs.rst
index 91f6b1a5e..8107d7397 100644
--- a/docs/docs/services/ecs.rst
+++ b/docs/docs/services/ecs.rst
@@ -25,7 +25,7 @@ ecs
 - [X] delete_capacity_provider
 - [X] delete_cluster
 - [X] delete_service
-- [ ] delete_task_definitions
+- [X] delete_task_definitions
 - [X] delete_task_set
   
         The Force-parameter is not yet implemented
diff --git a/docs/docs/services/network-firewall.rst b/docs/docs/services/network-firewall.rst
index 34467b558..0895bedcd 100644
--- a/docs/docs/services/network-firewall.rst
+++ b/docs/docs/services/network-firewall.rst
@@ -22,15 +22,12 @@ network-firewall
 - [ ] create_firewall_policy
 - [ ] create_rule_group
 - [ ] create_tls_inspection_configuration
-- [ ] create_vpc_endpoint_association
 - [ ] delete_firewall
 - [ ] delete_firewall_policy
 - [ ] delete_resource_policy
 - [ ] delete_rule_group
 - [ ] delete_tls_inspection_configuration
-- [ ] delete_vpc_endpoint_association
 - [X] describe_firewall
-- [ ] describe_firewall_metadata
 - [ ] describe_firewall_policy
 - [ ] describe_flow_operation
 - [X] describe_logging_configuration
@@ -38,7 +35,6 @@ network-firewall
 - [ ] describe_rule_group
 - [ ] describe_rule_group_metadata
 - [ ] describe_tls_inspection_configuration
-- [ ] describe_vpc_endpoint_association
 - [ ] disassociate_subnets
 - [ ] get_analysis_report_results
 - [ ] list_analysis_reports
@@ -49,7 +45,6 @@ network-firewall
 - [ ] list_rule_groups
 - [ ] list_tags_for_resource
 - [ ] list_tls_inspection_configurations
-- [ ] list_vpc_endpoint_associations
 - [ ] put_resource_policy
 - [ ] start_analysis_report
 - [ ] start_flow_capture
diff --git a/docs/docs/services/ram.rst b/docs/docs/services/ram.rst
index 546f9704d..c0924ac3b 100644
--- a/docs/docs/services/ram.rst
+++ b/docs/docs/services/ram.rst
@@ -34,11 +34,11 @@ ram
 - [ ] list_pending_invitation_resources
 - [ ] list_permission_associations
 - [ ] list_permission_versions
-- [ ] list_permissions
+- [X] list_permissions
 - [ ] list_principals
 - [ ] list_replace_permission_associations_work
 - [ ] list_resource_share_permissions
-- [ ] list_resource_types
+- [X] list_resource_types
 - [ ] list_resources
 - [ ] promote_permission_created_from_policy
 - [ ] promote_resource_share_created_from_policy
diff --git a/moto/athena/models.py b/moto/athena/models.py
index a8fcdbcdc..152e692e4 100644
--- a/moto/athena/models.py
+++ b/moto/athena/models.py
@@ -117,6 +117,7 @@ class Execution(BaseModel):
         self.workgroup = workgroup
         self.execution_parameters = execution_parameters
         self.start_time = time.time()
+        self.end_time = time.time()
         self.status = "SUCCEEDED"
 
         if self.config is not None and "OutputLocation" in self.config:
diff --git a/moto/athena/responses.py b/moto/athena/responses.py
index 60cd55526..0b58b21b2 100644
--- a/moto/athena/responses.py
+++ b/moto/athena/responses.py
@@ -76,18 +76,24 @@ class AthenaResponse(BaseResponse):
                 "Query": execution.query,
                 "StatementType": statement_type,
                 "ResultConfiguration": execution.config,
+                "ResultReuseConfiguration": {
+                    "ResultReuseByAgeConfiguration": {"Enabled": False}
+                },
                 "QueryExecutionContext": execution.context,
                 "Status": {
                     "State": execution.status,
                     "SubmissionDateTime": execution.start_time,
+                    "CompletionDateTime": execution.end_time,
                 },
                 "Statistics": {
                     "EngineExecutionTimeInMillis": 0,
                     "DataScannedInBytes": 0,
                     "TotalExecutionTimeInMillis": 0,
                     "QueryQueueTimeInMillis": 0,
+                    "ServicePreProcessingTimeInMillis": 0,
                     "QueryPlanningTimeInMillis": 0,
                     "ServiceProcessingTimeInMillis": 0,
+                    "ResultReuseInformation": {"ReusedPreviousResult": False},
                 },
                 "WorkGroup": execution.workgroup.name if execution.workgroup else None,
             }
diff --git a/moto/backends.py b/moto/backends.py
index 6023d9b0e..bb92611bb 100644
--- a/moto/backends.py
+++ b/moto/backends.py
@@ -38,6 +38,7 @@ if TYPE_CHECKING:
     from moto.cognitoidp.models import CognitoIdpBackend
     from moto.comprehend.models import ComprehendBackend
     from moto.config.models import ConfigBackend
+    from moto.connectcampaigns.models import ConnectCampaignServiceBackend
     from moto.core.base_backend import SERVICE_BACKEND, BackendDict
     from moto.databrew.models import DataBrewBackend
     from moto.datapipeline.models import DataPipelineBackend
@@ -228,6 +229,7 @@ SERVICE_NAMES = Union[
     "Literal['cognito-identity']",
     "Literal['cognito-idp']",
     "Literal['comprehend']",
+    "Literal['connectcampaigns']",
     "Literal['config']",
     "Literal['databrew']",
     "Literal['datapipeline']",
@@ -442,6 +444,10 @@ def get_backend(name: "Literal['cognito-idp']") -> "BackendDict[CognitoIdpBacken
 @overload
 def get_backend(name: "Literal['comprehend']") -> "BackendDict[ComprehendBackend]": ...
 @overload
+def get_backend(
+    name: "Literal['connectcampaigns']",
+) -> "BackendDict[ConnectCampaignServiceBackend]": ...
+@overload
 def get_backend(name: "Literal['config']") -> "BackendDict[ConfigBackend]": ...
 @overload
 def get_backend(name: "Literal['databrew']") -> "BackendDict[DataBrewBackend]": ...
diff --git a/moto/connectcampaigns/models.py b/moto/connectcampaigns/models.py
index 3dc5c29c5..24068bb38 100644
--- a/moto/connectcampaigns/models.py
+++ b/moto/connectcampaigns/models.py
@@ -1,14 +1,27 @@
 """ConnectCampaignServiceBackend class with methods for supported APIs."""
 
 import uuid
-from typing import Any, Dict, Optional, Tuple
+from typing import Any, Dict, List, Optional, Tuple
+from urllib.parse import unquote
 
 from moto.core import DEFAULT_ACCOUNT_ID
 from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.common_models import BaseModel
+from moto.utilities.paginator import paginate
+from moto.utilities.tagging_service import TaggingService
 
 from .exceptions import ResourceNotFoundException, ValidationException
 
+PAGINATION_MODEL = {
+    "list_campaigns": {
+        "input_token": "next_token",
+        "limit_key": "max_results",
+        "limit_default": 100,
+        "output_token": "nextToken",
+        "unique_attribute": "id",
+    }
+}
+
 
 class ConnectCampaign(BaseModel):
     def __init__(
@@ -23,6 +36,7 @@ class ConnectCampaign(BaseModel):
         self.id = str(uuid.uuid4())
         self.name = name
         self.connect_instance_id = connect_instance_id
+        self.state = "Initialized"
         self.dialer_config = dialer_config
         self.outbound_call_config = outbound_call_config
         self.region = region
@@ -93,6 +107,7 @@ class ConnectCampaignServiceBackend(BaseBackend):
         self.campaigns: Dict[str, ConnectCampaign] = {}
         self.instance_configs: Dict[str, ConnectInstanceConfig] = {}
         self.onboarding_jobs: Dict[str, ConnectInstanceOnboardingJobStatus] = {}
+        self.tagger = TaggingService()
 
     def create_campaign(
         self,
@@ -183,6 +198,126 @@ class ConnectCampaignServiceBackend(BaseBackend):
 
         return job_status.to_dict()
 
+    def start_campaign(self, id: str) -> None:
+        if id not in self.campaigns:
+            raise ResourceNotFoundException(f"Campaign with id {id} not found")
+        self.campaigns[id].state = "Running"
+        return
+
+    def stop_campaign(self, id: str) -> None:
+        if id not in self.campaigns:
+            raise ResourceNotFoundException(f"Campaign with id {id} not found")
+        self.campaigns[id].state = "Stopped"
+        return
+
+    def pause_campaign(self, id: str) -> None:
+        if id not in self.campaigns:
+            raise ResourceNotFoundException(f"Campaign with id {id} not found")
+        self.campaigns[id].state = "Paused"
+        return
+
+    def resume_campaign(self, id: str) -> None:
+        if id not in self.campaigns:
+            raise ResourceNotFoundException(f"Campaign with id {id} not found")
+        self.campaigns[id].state = "Running"
+        return
+
+    def get_campaign_state(self, id: str) -> str:
+        if id not in self.campaigns:
+            raise ResourceNotFoundException(f"Campaign with id {id} not found")
+        return self.campaigns[id].state
+
+    @paginate(pagination_model=PAGINATION_MODEL)
+    def list_campaigns(
+        self,
+        filters: Optional[Dict[str, Dict[str, str]]],
+        max_results: Optional[int],
+        next_token: Optional[str],
+    ) -> List[Dict[str, str]]:
+        filtered_campaigns = list(self.campaigns.values())
+
+        if filters and "instanceIdFilter" in filters:
+            filter_value = filters["instanceIdFilter"]["value"]
+            filter_operator = filters["instanceIdFilter"]["operator"]
+
+            operator_logic = {
+                "Eq": lambda campaign: campaign.connect_instance_id == filter_value,
+                "Ne": lambda campaign: campaign.connect_instance_id != filter_value,
+                "Contains": lambda campaign: filter_value
+                in campaign.connect_instance_id,
+                "StartsWith": lambda campaign: campaign.connect_instance_id.startswith(
+                    filter_value
+                ),
+            }
+
+            if filter_operator not in operator_logic:
+                raise ValidationException(f"Unsupported operator: {filter_operator}")
+
+            filtered_campaigns = list(
+                filter(operator_logic[filter_operator], filtered_campaigns)
+            )
+
+        campaign_summary_list = [
+            {
+                "id": campaign.id,
+                "arn": campaign.arn,
+                "name": campaign.name,
+                "connectInstanceId": campaign.connect_instance_id,
+            }
+            for campaign in filtered_campaigns
+        ]
+        return campaign_summary_list
+
+    def tag_resource(self, arn: str, tags: Dict[str, str]) -> None:
+        arn = unquote(arn)
+        campaign = None
+        for c in self.campaigns.values():
+            if c.arn == arn:
+                campaign = c
+                break
+
+        if campaign is None:
+            raise ResourceNotFoundException(f"Resource {arn} not found")
+
+        tag_list = [{"Key": k, "Value": v} for k, v in tags.items()]
+        campaign.tags.update(tags)
+        self.tagger.tag_resource(arn, tag_list)
+        return
+
+    def untag_resource(self, arn: str, tag_keys: List[str]) -> None:
+        arn = unquote(arn)
+        campaign = None
+        for c in self.campaigns.values():
+            if c.arn == arn:
+                campaign = c
+                break
+
+        if campaign is None:
+            raise ResourceNotFoundException(f"Resource {arn} not found")
+
+        if not isinstance(tag_keys, list):
+            tag_keys = [tag_keys]
+        if not tag_keys:
+            raise ValidationException("tagKeys is a required parameter")
+
+        for tag in tag_keys:
+            campaign.tags.pop(tag, None)
+        self.tagger.untag_resource_using_names(arn, tag_keys)
+        return
+
+    def list_tags_for_resource(self, arn: str) -> Dict[str, str]:
+        arn = unquote(arn)
+        campaign = None
+        for c in self.campaigns.values():
+            if c.arn == arn:
+                campaign = c
+                break
+
+        if campaign is None:
+            raise ResourceNotFoundException(f"Resource {arn} not found")
+
+        return self.tagger.get_tag_dict_for_resource(arn)
+
 
 connectcampaigns_backends = BackendDict(
     ConnectCampaignServiceBackend, "connectcampaigns"
diff --git a/moto/connectcampaigns/responses.py b/moto/connectcampaigns/responses.py
index 91bdc0336..88109727d 100644
--- a/moto/connectcampaigns/responses.py
+++ b/moto/connectcampaigns/responses.py
@@ -1,6 +1,7 @@
 """Handles incoming connectcampaigns requests, invokes methods, returns responses."""
 
 import json
+from typing import Dict, List, Optional, Tuple
 
 from moto.core.responses import BaseResponse
 
@@ -85,3 +86,94 @@ class ConnectCampaignServiceResponse(BaseResponse):
         response = {"connectInstanceOnboardingJobStatus": job_status}
 
         return json.dumps(response)
+
+    def start_campaign(self) -> str:
+        id = self.path.split("/")[2]
+
+        self.connectcampaigns_backend.start_campaign(
+            id=id,
+        )
+
+        return "{}"
+
+    def stop_campaign(self) -> str:
+        id = self.path.split("/")[2]
+
+        self.connectcampaigns_backend.stop_campaign(
+            id=id,
+        )
+
+        return "{}"
+
+    def pause_campaign(self) -> str:
+        id = self.path.split("/")[2]
+
+        self.connectcampaigns_backend.pause_campaign(
+            id=id,
+        )
+
+        return "{}"
+
+    def resume_campaign(self) -> str:
+        id = self.path.split("/")[2]
+
+        self.connectcampaigns_backend.resume_campaign(
+            id=id,
+        )
+
+        return "{}"
+
+    def get_campaign_state(self) -> str:
+        id = self.path.split("/")[2]
+
+        campaign_state = self.connectcampaigns_backend.get_campaign_state(
+            id=id,
+        )
+
+        response = {"state": campaign_state}
+
+        return json.dumps(response)
+
+    def list_campaigns(self) -> str:
+        max_results = self._get_param("maxResults")
+        next_token = self._get_param("nextToken")
+        filters = self._get_param("filters", {})
+
+        campaigns_result: Tuple[List[Dict[str, str]], Optional[str]] = (
+            self.connectcampaigns_backend.list_campaigns(
+                filters=filters,
+                max_results=max_results,
+                next_token=next_token,
+            )
+        )
+
+        response = {
+            "campaignSummaryList": campaigns_result[0],
+            "nextToken": campaigns_result[1],
+        }
+        return json.dumps(response)
+
+    def tag_resource(self) -> str:
+        arn = self._get_param("arn")
+        tags = self._get_param("tags")
+        self.connectcampaigns_backend.tag_resource(
+            arn=arn,
+            tags=tags,
+        )
+        return json.dumps(dict())
+
+    def untag_resource(self) -> str:
+        arn = self._get_param("arn")
+        tag_keys = self._get_param("tagKeys")
+        self.connectcampaigns_backend.untag_resource(
+            arn=arn,
+            tag_keys=tag_keys,
+        )
+        return json.dumps(dict())
+
+    def list_tags_for_resource(self) -> str:
+        arn = self._get_param("arn")
+        tags = self.connectcampaigns_backend.list_tags_for_resource(
+            arn=arn,
+        )
+        return json.dumps(dict(tags=tags))
diff --git a/moto/connectcampaigns/urls.py b/moto/connectcampaigns/urls.py
index fd20423f7..2d3759ed1 100644
--- a/moto/connectcampaigns/urls.py
+++ b/moto/connectcampaigns/urls.py
@@ -7,8 +7,16 @@ url_bases = [
 ]
 
 url_paths = {
+    "{0}/tags/(?P<arn>.+)$": ConnectCampaignServiceResponse.dispatch,
+    "{0}/tags/(?P<arn>[^/]+)?tagKeys=(?P<tagKeys>[^/]+)$": ConnectCampaignServiceResponse.dispatch,
     "{0}/campaigns$": ConnectCampaignServiceResponse.dispatch,
+    "{0}/campaigns-summary$": ConnectCampaignServiceResponse.dispatch,
     "{0}/campaigns/(?P<id>[^/]+)$": ConnectCampaignServiceResponse.dispatch,
+    "{0}/campaigns/(?P<id>[^/]+)/start$": ConnectCampaignServiceResponse.dispatch,
+    "{0}/campaigns/(?P<id>[^/]+)/stop$": ConnectCampaignServiceResponse.dispatch,
+    "{0}/campaigns/(?P<id>[^/]+)/pause$": ConnectCampaignServiceResponse.dispatch,
+    "{0}/campaigns/(?P<id>[^/]+)/resume$": ConnectCampaignServiceResponse.dispatch,
+    "{0}/campaigns/(?P<id>[^/]+)/state$": ConnectCampaignServiceResponse.dispatch,
     "{0}/connect-instance/(?P<connectInstanceId>[^/]+)/config$": ConnectCampaignServiceResponse.dispatch,
     "{0}/connect-instance/(?P<connectInstanceId>[^/]+)/onboarding$": ConnectCampaignServiceResponse.dispatch,
 }
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-east-1.json
index 5c1da4e99..98b3d8b24 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-east-1.json
@@ -347,6 +347,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ape1-az1"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "ape1-az1"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ape1-az1"
@@ -711,6 +783,78 @@
   "InstanceType": "m7g.xlarge",
   "Location": "ape1-az1"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ape1-az1"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ape1-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ape1-az1"
@@ -1339,6 +1483,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ape1-az2"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "ape1-az2"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ape1-az2"
@@ -1719,6 +1935,78 @@
   "InstanceType": "m7g.xlarge",
   "Location": "ape1-az2"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ape1-az2"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ape1-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ape1-az2"
@@ -2391,6 +2679,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ape1-az3"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "ape1-az3"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ape1-az3"
@@ -2771,6 +3131,78 @@
   "InstanceType": "m7g.xlarge",
   "Location": "ape1-az3"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ape1-az3"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ape1-az3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ape1-az3"
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 e365c669b..0b2341cb5 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
@@ -3371,6 +3371,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "apne2-az2"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "apne2-az2"
+ },
  {
   "InstanceType": "u7i-8tb.112xlarge",
   "Location": "apne2-az2"
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 031524887..cc20e53d3 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
@@ -319,6 +319,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "apne3-az1"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "apne3-az1"
+ },
  {
   "InstanceType": "g4dn.12xlarge",
   "Location": "apne3-az1"
@@ -631,6 +667,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apne3-az1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apne3-az1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apne3-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apne3-az1"
@@ -2443,6 +2515,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "apne3-az3"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "apne3-az3"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "apne3-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
index 85bab3a7a..54227b7c8 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
@@ -243,6 +243,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "apse3-az1"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "apse3-az1"
+ },
  {
   "InstanceType": "d3en.12xlarge",
   "Location": "apse3-az1"
@@ -1607,6 +1643,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse3-az2"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apse3-az2"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apse3-az2"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "apse3-az2"
@@ -2251,6 +2323,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "apse3-az3"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "apse3-az3"
+ },
  {
   "InstanceType": "g5.12xlarge",
   "Location": "apse3-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json
index a68c4c2d5..dab531d04 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json
@@ -603,6 +603,42 @@
   "InstanceType": "r6g.xlarge",
   "Location": "apse4-az1"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "apse4-az1"
+ },
  {
   "InstanceType": "r7i.12xlarge",
   "Location": "apse4-az1"
@@ -1327,6 +1363,42 @@
   "InstanceType": "r6g.xlarge",
   "Location": "apse4-az2"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "apse4-az2"
+ },
  {
   "InstanceType": "r7i.12xlarge",
   "Location": "apse4-az2"
@@ -2047,6 +2119,42 @@
   "InstanceType": "r6g.xlarge",
   "Location": "apse4-az3"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "apse4-az3"
+ },
  {
   "InstanceType": "r7i.12xlarge",
   "Location": "apse4-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-5.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-5.json
index e44bb05ac..e3bfa1f86 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-5.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-5.json
@@ -331,6 +331,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "apse5-az1"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "apse5-az1"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "apse5-az1"
+ },
  {
   "InstanceType": "g6.12xlarge",
   "Location": "apse5-az1"
@@ -1407,6 +1455,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "apse5-az2"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "apse5-az2"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "apse5-az2"
+ },
  {
   "InstanceType": "g6.12xlarge",
   "Location": "apse5-az2"
@@ -2483,6 +2579,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "apse5-az3"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "apse5-az3"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "apse5-az3"
+ },
  {
   "InstanceType": "i3en.12xlarge",
   "Location": "apse5-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ca-central-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ca-central-1.json
index 134458687..0123bb67b 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ca-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ca-central-1.json
@@ -563,6 +563,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "cac1-az1"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "cac1-az1"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "cac1-az1"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "cac1-az1"
@@ -1447,6 +1495,10 @@
   "InstanceType": "mac2-m2.metal",
   "Location": "cac1-az1"
  },
+ {
+  "InstanceType": "p4d.24xlarge",
+  "Location": "cac1-az1"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "cac1-az1"
@@ -2643,6 +2695,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "cac1-az2"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "cac1-az2"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "cac1-az2"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "cac1-az2"
@@ -2815,6 +2915,10 @@
   "InstanceType": "i3.large",
   "Location": "cac1-az2"
  },
+ {
+  "InstanceType": "i3.metal",
+  "Location": "cac1-az2"
+ },
  {
   "InstanceType": "i3.xlarge",
   "Location": "cac1-az2"
@@ -3539,6 +3643,10 @@
   "InstanceType": "p3.8xlarge",
   "Location": "cac1-az2"
  },
+ {
+  "InstanceType": "p4d.24xlarge",
+  "Location": "cac1-az2"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "cac1-az2"
@@ -4715,6 +4823,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "cac1-az4"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "cac1-az4"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "cac1-az4"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "cac1-az4"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json
index 5daf2beed..d7348e537 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json
@@ -183,6 +183,78 @@
   "InstanceType": "c6in.xlarge",
   "Location": "euc2-az1"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "euc2-az1"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "euc2-az1"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "euc2-az1"
@@ -1159,6 +1231,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "euc2-az2"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "euc2-az2"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "euc2-az2"
@@ -2171,6 +2315,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "euc2-az3"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "euc2-az3"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "euc2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json
index bd10fbf4f..857cfa135 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-south-2.json
@@ -631,6 +631,50 @@
   "InstanceType": "i4i.xlarge",
   "Location": "eus2-az1"
  },
+ {
+  "InstanceType": "i7ie.12xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.18xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.24xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.2xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.3xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.48xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.6xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.large",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.metal-24xl",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.metal-48xl",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "i7ie.xlarge",
+  "Location": "eus2-az1"
+ },
  {
   "InstanceType": "im4gn.16xlarge",
   "Location": "eus2-az1"
@@ -4019,6 +4063,50 @@
   "InstanceType": "i4i.xlarge",
   "Location": "eus2-az3"
  },
+ {
+  "InstanceType": "i7ie.12xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.18xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.24xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.2xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.3xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.48xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.6xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.large",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.metal-24xl",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.metal-48xl",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "i7ie.xlarge",
+  "Location": "eus2-az3"
+ },
  {
   "InstanceType": "im4gn.16xlarge",
   "Location": "eus2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
index 67493c4cd..5d293fae1 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
@@ -455,6 +455,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "euw2-az1"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "euw2-az1"
+ },
  {
   "InstanceType": "c7i-flex.12xlarge",
   "Location": "euw2-az1"
@@ -1235,6 +1271,14 @@
   "InstanceType": "m7g.xlarge",
   "Location": "euw2-az1"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "euw2-az1"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "euw2-az1"
@@ -5671,6 +5715,14 @@
   "InstanceType": "m7g.xlarge",
   "Location": "euw2-az3"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "euw2-az3"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "euw2-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 0df4830ae..9d6e86375 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
@@ -515,6 +515,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "sae1-az1"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "sae1-az1"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "sae1-az1"
+ },
  {
   "InstanceType": "c7i-flex.12xlarge",
   "Location": "sae1-az1"
@@ -2599,6 +2635,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "sae1-az2"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "sae1-az2"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "sae1-az2"
+ },
  {
   "InstanceType": "c7i-flex.12xlarge",
   "Location": "sae1-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json
index b9c1b950d..3233e01e2 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-1.json
@@ -6771,6 +6771,10 @@
   "InstanceType": "u-9tb1.112xlarge",
   "Location": "use1-az2"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "use1-az2"
+ },
  {
   "InstanceType": "u7i-8tb.112xlarge",
   "Location": "use1-az2"
@@ -16195,6 +16199,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "use1-az6"
  },
+ {
+  "InstanceType": "p5en.48xlarge",
+  "Location": "use1-az6"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "use1-az6"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json
index d7ee9e5dd..9e4d81c2a 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
@@ -3367,6 +3367,10 @@
   "InstanceType": "u7i-6tb.112xlarge",
   "Location": "usw2-az1"
  },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "usw2-az1"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "usw2-az1"
@@ -10511,6 +10515,10 @@
   "InstanceType": "u7i-6tb.112xlarge",
   "Location": "usw2-az3"
  },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "usw2-az3"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "usw2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-east-1.json
index cca7dd22f..d10245211 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-east-1.json
@@ -347,6 +347,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ap-east-1a"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "ap-east-1a"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ap-east-1a"
@@ -711,6 +783,78 @@
   "InstanceType": "m7g.xlarge",
   "Location": "ap-east-1a"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-east-1a"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-east-1a"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-east-1a"
@@ -1339,6 +1483,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ap-east-1b"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "ap-east-1b"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ap-east-1b"
@@ -1719,6 +1935,78 @@
   "InstanceType": "m7g.xlarge",
   "Location": "ap-east-1b"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-east-1b"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-east-1b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-east-1b"
@@ -2391,6 +2679,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ap-east-1c"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "ap-east-1c"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ap-east-1c"
@@ -2771,6 +3131,78 @@
   "InstanceType": "m7g.xlarge",
   "Location": "ap-east-1c"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-east-1c"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-east-1c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-east-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 4fea90e05..0cd439701 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
@@ -3371,6 +3371,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "ap-northeast-2b"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "ap-northeast-2b"
+ },
  {
   "InstanceType": "u7i-8tb.112xlarge",
   "Location": "ap-northeast-2b"
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 ed4dc1c33..df9e81b1f 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
@@ -327,6 +327,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ap-northeast-3a"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "ap-northeast-3a"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ap-northeast-3a"
@@ -1339,6 +1375,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ap-northeast-3b"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "ap-northeast-3b"
+ },
  {
   "InstanceType": "g4dn.12xlarge",
   "Location": "ap-northeast-3b"
@@ -1651,6 +1723,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-3b"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-northeast-3b"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-northeast-3b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-northeast-3b"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
index 9b62dae8d..b067934dc 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
@@ -243,6 +243,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "ap-southeast-3a"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "ap-southeast-3a"
+ },
  {
   "InstanceType": "d3en.12xlarge",
   "Location": "ap-southeast-3a"
@@ -1607,6 +1643,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3b"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-3b"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-3b"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "ap-southeast-3b"
@@ -2251,6 +2323,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "ap-southeast-3c"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "ap-southeast-3c"
+ },
  {
   "InstanceType": "g5.12xlarge",
   "Location": "ap-southeast-3c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json
index 1bdccbeb1..930237f31 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json
@@ -603,6 +603,42 @@
   "InstanceType": "r6g.xlarge",
   "Location": "ap-southeast-4a"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "ap-southeast-4a"
+ },
  {
   "InstanceType": "r7i.12xlarge",
   "Location": "ap-southeast-4a"
@@ -1327,6 +1363,42 @@
   "InstanceType": "r6g.xlarge",
   "Location": "ap-southeast-4b"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "ap-southeast-4b"
+ },
  {
   "InstanceType": "r7i.12xlarge",
   "Location": "ap-southeast-4b"
@@ -2047,6 +2119,42 @@
   "InstanceType": "r6g.xlarge",
   "Location": "ap-southeast-4c"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "ap-southeast-4c"
+ },
  {
   "InstanceType": "r7i.12xlarge",
   "Location": "ap-southeast-4c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-5.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-5.json
index 610ac8c28..2f164fbb0 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-5.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-5.json
@@ -331,6 +331,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ap-southeast-5a"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ap-southeast-5a"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ap-southeast-5a"
+ },
  {
   "InstanceType": "g6.12xlarge",
   "Location": "ap-southeast-5a"
@@ -1407,6 +1455,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ap-southeast-5b"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ap-southeast-5b"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ap-southeast-5b"
+ },
  {
   "InstanceType": "g6.12xlarge",
   "Location": "ap-southeast-5b"
@@ -2483,6 +2579,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ap-southeast-5c"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ap-southeast-5c"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ap-southeast-5c"
+ },
  {
   "InstanceType": "i3en.12xlarge",
   "Location": "ap-southeast-5c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ca-central-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ca-central-1.json
index 1b7cb5ea9..24de8cf45 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ca-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ca-central-1.json
@@ -563,6 +563,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ca-central-1a"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ca-central-1a"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ca-central-1a"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ca-central-1a"
@@ -1447,6 +1495,10 @@
   "InstanceType": "mac2-m2.metal",
   "Location": "ca-central-1a"
  },
+ {
+  "InstanceType": "p4d.24xlarge",
+  "Location": "ca-central-1a"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "ca-central-1a"
@@ -2643,6 +2695,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ca-central-1b"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ca-central-1b"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ca-central-1b"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ca-central-1b"
@@ -2815,6 +2915,10 @@
   "InstanceType": "i3.large",
   "Location": "ca-central-1b"
  },
+ {
+  "InstanceType": "i3.metal",
+  "Location": "ca-central-1b"
+ },
  {
   "InstanceType": "i3.xlarge",
   "Location": "ca-central-1b"
@@ -3539,6 +3643,10 @@
   "InstanceType": "p3.8xlarge",
   "Location": "ca-central-1b"
  },
+ {
+  "InstanceType": "p4d.24xlarge",
+  "Location": "ca-central-1b"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "ca-central-1b"
@@ -4715,6 +4823,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ca-central-1d"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ca-central-1d"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ca-central-1d"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "ca-central-1d"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json
index 1921e124a..57aad0a8a 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json
@@ -183,6 +183,78 @@
   "InstanceType": "c6in.xlarge",
   "Location": "eu-central-2a"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "eu-central-2a"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "eu-central-2a"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "eu-central-2a"
@@ -1159,6 +1231,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "eu-central-2b"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "eu-central-2b"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "eu-central-2b"
@@ -2171,6 +2315,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "eu-central-2c"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "eu-central-2c"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "eu-central-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json
index acc2af51b..2c06467a5 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-south-2.json
@@ -631,6 +631,50 @@
   "InstanceType": "i4i.xlarge",
   "Location": "eu-south-2a"
  },
+ {
+  "InstanceType": "i7ie.12xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.18xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.24xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.2xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.3xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.48xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.6xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.large",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.metal-24xl",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.metal-48xl",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "i7ie.xlarge",
+  "Location": "eu-south-2a"
+ },
  {
   "InstanceType": "im4gn.16xlarge",
   "Location": "eu-south-2a"
@@ -4019,6 +4063,50 @@
   "InstanceType": "i4i.xlarge",
   "Location": "eu-south-2c"
  },
+ {
+  "InstanceType": "i7ie.12xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.18xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.24xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.2xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.3xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.48xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.6xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.large",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.metal-24xl",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.metal-48xl",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "i7ie.xlarge",
+  "Location": "eu-south-2c"
+ },
  {
   "InstanceType": "im4gn.16xlarge",
   "Location": "eu-south-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
index 5b87a0c4e..adbf1edb3 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
@@ -3607,6 +3607,14 @@
   "InstanceType": "m7g.xlarge",
   "Location": "eu-west-2b"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "eu-west-2b"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "eu-west-2b"
@@ -4827,6 +4835,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "eu-west-2c"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "eu-west-2c"
+ },
  {
   "InstanceType": "c7i-flex.12xlarge",
   "Location": "eu-west-2c"
@@ -5607,6 +5651,14 @@
   "InstanceType": "m7g.xlarge",
   "Location": "eu-west-2c"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "eu-west-2c"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "eu-west-2c"
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 325522745..fc80b00ca 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
@@ -515,6 +515,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "sa-east-1a"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "sa-east-1a"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "sa-east-1a"
+ },
  {
   "InstanceType": "c7i-flex.12xlarge",
   "Location": "sa-east-1a"
@@ -2599,6 +2635,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "sa-east-1b"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "sa-east-1b"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "sa-east-1b"
+ },
  {
   "InstanceType": "c7i-flex.12xlarge",
   "Location": "sa-east-1b"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json
index 2ffb7fdfd..225f43685 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-1.json
@@ -3355,6 +3355,10 @@
   "InstanceType": "u-9tb1.112xlarge",
   "Location": "us-east-1a"
  },
+ {
+  "InstanceType": "u7i-6tb.112xlarge",
+  "Location": "us-east-1a"
+ },
  {
   "InstanceType": "u7i-8tb.112xlarge",
   "Location": "us-east-1a"
@@ -9555,6 +9559,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "us-east-1c"
  },
+ {
+  "InstanceType": "p5en.48xlarge",
+  "Location": "us-east-1c"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "us-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 49bef4629..95b7d7e32 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
@@ -6919,6 +6919,10 @@
   "InstanceType": "u7i-6tb.112xlarge",
   "Location": "us-west-2b"
  },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "us-west-2b"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-west-2b"
@@ -10511,6 +10515,10 @@
   "InstanceType": "u7i-6tb.112xlarge",
   "Location": "us-west-2c"
  },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "us-west-2c"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-west-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-east-1.json b/moto/ec2/resources/instance_type_offerings/region/ap-east-1.json
index 0e4b1ed89..542254aaf 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-east-1.json
@@ -347,6 +347,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ap-east-1"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "ap-east-1"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ap-east-1"
@@ -727,6 +799,78 @@
   "InstanceType": "m7g.xlarge",
   "Location": "ap-east-1"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.metal-24xl",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.metal-48xl",
+  "Location": "ap-east-1"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "ap-east-1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-east-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json
index 19026e77c..f6c3e016e 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json
@@ -339,6 +339,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "ap-northeast-3"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "ap-northeast-3"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ap-northeast-3"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
index 313c0f123..27461db93 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
@@ -243,6 +243,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "ap-southeast-3"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "ap-southeast-3"
+ },
  {
   "InstanceType": "d3en.12xlarge",
   "Location": "ap-southeast-3"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json
index 3b3b470fe..e94e46563 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json
@@ -603,6 +603,42 @@
   "InstanceType": "r6g.xlarge",
   "Location": "ap-southeast-4"
  },
+ {
+  "InstanceType": "r7g.12xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.16xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.2xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.4xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.8xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.large",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.medium",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.metal",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "r7g.xlarge",
+  "Location": "ap-southeast-4"
+ },
  {
   "InstanceType": "r7i.12xlarge",
   "Location": "ap-southeast-4"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-5.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-5.json
index e0e9469c1..6993e3158 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-5.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-5.json
@@ -331,6 +331,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ap-southeast-5"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ap-southeast-5"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ap-southeast-5"
+ },
  {
   "InstanceType": "g6.12xlarge",
   "Location": "ap-southeast-5"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ca-central-1.json b/moto/ec2/resources/instance_type_offerings/region/ca-central-1.json
index e9a39a3b3..d817f0eee 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ca-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ca-central-1.json
@@ -563,6 +563,54 @@
   "InstanceType": "c7i.xlarge",
   "Location": "ca-central-1"
  },
+ {
+  "InstanceType": "c8g.12xlarge",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.16xlarge",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.24xlarge",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.2xlarge",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.48xlarge",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.4xlarge",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.8xlarge",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.large",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.medium",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.metal-24xl",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.metal-48xl",
+  "Location": "ca-central-1"
+ },
+ {
+  "InstanceType": "c8g.xlarge",
+  "Location": "ca-central-1"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "ca-central-1"
@@ -1463,6 +1511,10 @@
   "InstanceType": "p3.8xlarge",
   "Location": "ca-central-1"
  },
+ {
+  "InstanceType": "p4d.24xlarge",
+  "Location": "ca-central-1"
+ },
  {
   "InstanceType": "p5.48xlarge",
   "Location": "ca-central-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json b/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json
index afd49378e..fd6335780 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json
@@ -219,6 +219,78 @@
   "InstanceType": "c7g.xlarge",
   "Location": "eu-central-2"
  },
+ {
+  "InstanceType": "c7i-flex.12xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i-flex.16xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i-flex.2xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i-flex.4xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i-flex.8xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i-flex.large",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i-flex.xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.12xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.16xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.24xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.2xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.48xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.4xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.8xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.large",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.metal-24xl",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.metal-48xl",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7i.xlarge",
+  "Location": "eu-central-2"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "eu-central-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json b/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json
index 48dd20f86..ee5d789a5 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-south-2.json
@@ -663,6 +663,50 @@
   "InstanceType": "i4i.xlarge",
   "Location": "eu-south-2"
  },
+ {
+  "InstanceType": "i7ie.12xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.18xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.24xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.2xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.3xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.48xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.6xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.large",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.metal-24xl",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.metal-48xl",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "i7ie.xlarge",
+  "Location": "eu-south-2"
+ },
  {
   "InstanceType": "im4gn.16xlarge",
   "Location": "eu-south-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
index ab6e7e798..964693cab 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
@@ -1447,6 +1447,14 @@
   "InstanceType": "m7g.xlarge",
   "Location": "eu-west-2"
  },
+ {
+  "InstanceType": "m7i-flex.12xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m7i-flex.16xlarge",
+  "Location": "eu-west-2"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "eu-west-2"
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 5a660f809..7a956e787 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
@@ -515,6 +515,42 @@
   "InstanceType": "c7g.xlarge",
   "Location": "sa-east-1"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.metal",
+  "Location": "sa-east-1"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "sa-east-1"
+ },
  {
   "InstanceType": "c7i-flex.12xlarge",
   "Location": "sa-east-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/us-west-2.json b/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
index 44fd62d7c..65ffd1441 100644
--- a/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
@@ -3411,6 +3411,10 @@
   "InstanceType": "u7i-6tb.112xlarge",
   "Location": "us-west-2"
  },
+ {
+  "InstanceType": "u7i-8tb.112xlarge",
+  "Location": "us-west-2"
+ },
  {
   "InstanceType": "u7in-16tb.224xlarge",
   "Location": "us-west-2"
diff --git a/moto/ec2/resources/instance_types.json b/moto/ec2/resources/instance_types.json
index b6c422148..751efa323 100644
--- a/moto/ec2/resources/instance_types.json
+++ b/moto/ec2/resources/instance_types.json
@@ -101460,7 +101460,12 @@
    "TotalNeuronDeviceMemoryInMiB": 8388608
   },
   "NitroEnclavesSupport": "supported",
-  "NitroTpmSupport": "unsupported",
+  "NitroTpmInfo": {
+   "SupportedVersions": [
+    "2.0"
+   ]
+  },
+  "NitroTpmSupport": "supported",
   "PhcSupport": "unsupported",
   "PlacementGroupInfo": {
    "SupportedStrategies": [
@@ -102868,12 +102873,12 @@
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
-    "BaselineBandwidthInMbps": 60000,
+    "BaselineBandwidthInMbps": 100000,
     "BaselineIops": 420000,
-    "BaselineThroughputInMBps": 7500.0,
-    "MaximumBandwidthInMbps": 60000,
+    "BaselineThroughputInMBps": 12500.0,
+    "MaximumBandwidthInMbps": 100000,
     "MaximumIops": 420000,
-    "MaximumThroughputInMBps": 7500.0
+    "MaximumThroughputInMBps": 12500.0
    },
    "EbsOptimizedSupport": "default",
    "EncryptionSupport": "supported",
@@ -103033,12 +103038,12 @@
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
-    "BaselineBandwidthInMbps": 60000,
+    "BaselineBandwidthInMbps": 100000,
     "BaselineIops": 420000,
-    "BaselineThroughputInMBps": 7500.0,
-    "MaximumBandwidthInMbps": 60000,
+    "BaselineThroughputInMBps": 12500.0,
+    "MaximumBandwidthInMbps": 100000,
     "MaximumIops": 420000,
-    "MaximumThroughputInMBps": 7500.0
+    "MaximumThroughputInMBps": 12500.0
    },
    "EbsOptimizedSupport": "default",
    "EncryptionSupport": "supported",
@@ -103198,12 +103203,12 @@
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
-    "BaselineBandwidthInMbps": 60000,
+    "BaselineBandwidthInMbps": 100000,
     "BaselineIops": 420000,
-    "BaselineThroughputInMBps": 7500.0,
-    "MaximumBandwidthInMbps": 60000,
+    "BaselineThroughputInMBps": 12500.0,
+    "MaximumBandwidthInMbps": 100000,
     "MaximumIops": 420000,
-    "MaximumThroughputInMBps": 7500.0
+    "MaximumThroughputInMBps": 12500.0
    },
    "EbsOptimizedSupport": "default",
    "EncryptionSupport": "supported",
diff --git a/moto/ecs/models.py b/moto/ecs/models.py
index 304943b4a..8b84ed9b0 100644
--- a/moto/ecs/models.py
+++ b/moto/ecs/models.py
@@ -347,6 +347,19 @@ class TaskDefinition(BaseObject, CloudFormationModel):
             return original_resource
 
 
+class DeleteTaskDefinitionFailure(BaseObject):
+    def __init__(self, reason: str, name: str, account_id: str, region_name: str):
+        self.reason = reason
+        self.arn = name
+
+    @property
+    def response_object(self) -> Dict[str, Any]:  # type: ignore[misc]
+        response_object = self.gen_response_object()
+        response_object["reason"] = self.reason
+        response_object["arn"] = self.arn
+        return response_object
+
+
 class Task(BaseObject, ManagedState):
     def __init__(
         self,
@@ -1321,14 +1334,19 @@ class EC2ContainerServiceBackend(BaseBackend):
             ):
                 raise TaskDefinitionMemoryError(cd["name"])
 
-    def list_task_definitions(self, family_prefix: str) -> List[str]:
+    def list_task_definitions(
+        self, family_prefix: str, status: str = "ACTIVE"
+    ) -> List[str]:
         task_arns = []
         for task_definition_list in self.task_definitions.values():
             task_arns.extend(
                 [
                     task_definition.arn
                     for task_definition in task_definition_list.values()
-                    if family_prefix is None or task_definition.family == family_prefix
+                    if (
+                        family_prefix is None or task_definition.family == family_prefix
+                    )
+                    and task_definition.status == status
                 ]
             )
         return task_arns
@@ -2445,5 +2463,66 @@ class EC2ContainerServiceBackend(BaseBackend):
             return False
         return settings.ecs_new_arn_format()
 
+    def delete_task_definitions(
+        self, task_definitions: List[str]
+    ) -> Tuple[List[TaskDefinition], List[DeleteTaskDefinitionFailure]]:
+        if not task_definitions:
+            raise InvalidParameterException(
+                "size of TaskDefinition references list must be greater than 0"
+            )
+
+        if len(task_definitions) > 10:
+            raise InvalidParameterException(
+                "Size of TaskDefinition references list cannot exceed 10"
+            )
+
+        deleted_task_definitions = []
+        failures = []
+        for task_def in task_definitions:
+            task_definition_name = task_def.split("/")[-1]
+            if ":" in task_definition_name:
+                family, rev = task_definition_name.split(":")
+                revision = int(rev)
+            else:
+                failures.append(
+                    DeleteTaskDefinitionFailure(
+                        "The specified task definition identifier is invalid. Specify a valid name or ARN and try again.",
+                        task_def,
+                        self.account_id,
+                        self.region_name,
+                    )
+                )
+                continue
+
+            try:
+                resolved_task_def = self.task_definitions[family][revision]
+            except KeyError:
+                failures.append(
+                    DeleteTaskDefinitionFailure(
+                        "The specified task definition does not exist. Specify a valid account, family, revision and try again.",
+                        task_def,
+                        self.account_id,
+                        self.region_name,
+                    )
+                )
+                continue
+
+            if resolved_task_def.status == "ACTIVE":
+                failures.append(
+                    DeleteTaskDefinitionFailure(
+                        "The specified task definition is still in ACTIVE status. Please deregister the target and try again.",
+                        task_def,
+                        self.account_id,
+                        self.region_name,
+                    )
+                )
+                continue
+
+            del self.task_definitions[family][revision]
+            resolved_task_def.status = "DELETE_IN_PROGRESS"
+            deleted_task_definitions.append(resolved_task_def)
+
+        return deleted_task_definitions, failures
+
 
 ecs_backends = BackendDict(EC2ContainerServiceBackend, "ecs")
diff --git a/moto/ecs/responses.py b/moto/ecs/responses.py
index d73d4c7a3..38100fa6e 100644
--- a/moto/ecs/responses.py
+++ b/moto/ecs/responses.py
@@ -152,7 +152,10 @@ class EC2ContainerServiceResponse(BaseResponse):
 
     def list_task_definitions(self) -> str:
         family_prefix = self._get_param("familyPrefix")
-        task_definition_arns = self.ecs_backend.list_task_definitions(family_prefix)
+        status = self._get_param("status", "ACTIVE")
+        task_definition_arns = self.ecs_backend.list_task_definitions(
+            family_prefix, status
+        )
         return json.dumps({"taskDefinitionArns": task_definition_arns})
 
     def describe_task_definition(self) -> str:
@@ -540,3 +543,18 @@ class EC2ContainerServiceResponse(BaseResponse):
         name = self._get_param("name")
         self.ecs_backend.delete_account_setting(name)
         return "{}"
+
+    def delete_task_definitions(self) -> str:
+        task_definitions = self._get_param("taskDefinitions")
+        deleted_task_definitions, failures = self.ecs_backend.delete_task_definitions(
+            task_definitions=task_definitions,
+        )
+        return json.dumps(
+            {
+                "taskDefinitions": [
+                    td.response_object["taskDefinition"]
+                    for td in deleted_task_definitions
+                ],
+                "failures": [f.response_object for f in failures],
+            }
+        )
diff --git a/moto/ram/models.py b/moto/ram/models.py
index 69fb55375..c8c15e642 100644
--- a/moto/ram/models.py
+++ b/moto/ram/models.py
@@ -1,6 +1,6 @@
 import re
 import string
-from typing import Any, Dict, List
+from typing import Any, Dict, List, Optional
 
 from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.common_models import BaseModel
@@ -13,6 +13,7 @@ from moto.ram.exceptions import (
     OperationNotPermittedException,
     UnknownResourceException,
 )
+from moto.ram.utils import AWS_MANAGED_PERMISSIONS, RAM_RESOURCE_TYPES
 from moto.utilities.utils import get_partition
 
 
@@ -37,7 +38,10 @@ class ResourceShare(BaseModel):
         "report-group",  # AWS CodeBuild report group
         "resolver-rule",  # Amazon Route 53 forwarding rule
         "subnet",  # Amazon EC2 subnet
-        "transit-gateway",  # Amazon EC2 transit gateway
+        "transit-gateway",  # Amazon EC2 transit gateway,
+        "database",  # Amazon Glue database
+        "table",  # Amazon Glue table
+        "catalog",  # Amazon Glue catalog
     ]
 
     def __init__(self, account_id: str, region: str, **kwargs: Any):
@@ -144,15 +148,19 @@ class ResourceShare(BaseModel):
             "status": self.status,
         }
 
-    def update(self, **kwargs: Any) -> None:
-        self.allow_external_principals = kwargs.get(
-            "allowExternalPrincipals", self.allow_external_principals
-        )
+    def update(self, allow_external_principals: bool, name: Optional[str]) -> None:
+        self.allow_external_principals = allow_external_principals
         self.last_updated_time = utcnow()
-        self.name = kwargs.get("name", self.name)
+        self.name = name
 
 
 class ResourceAccessManagerBackend(BaseBackend):
+    RESOURCE_TYPES = RAM_RESOURCE_TYPES
+
+    PERMISSION_TYPES = ["ALL", "AWS", "LOCAL"]
+
+    MANAGED_PERMISSIONS = AWS_MANAGED_PERMISSIONS
+
     def __init__(self, region_name: str, account_id: str):
         super().__init__(region_name, account_id)
         self.resource_shares: List[ResourceShare] = []
@@ -173,16 +181,14 @@ class ResourceAccessManagerBackend(BaseBackend):
 
         return dict(resourceShare=response)
 
-    def get_resource_shares(self, **kwargs: Any) -> Dict[str, Any]:
-        owner = kwargs["resourceOwner"]
-
-        if owner not in ["SELF", "OTHER-ACCOUNTS"]:
+    def get_resource_shares(self, resource_owner: Optional[str]) -> Dict[str, Any]:
+        if resource_owner not in ["SELF", "OTHER-ACCOUNTS"]:
             raise InvalidParameterException(
-                f"{owner} is not a valid resource owner. "
+                f"{resource_owner} is not a valid resource owner. "
                 "Specify either SELF or OTHER-ACCOUNTS and try again."
             )
 
-        if owner == "OTHER-ACCOUNTS":
+        if resource_owner == "OTHER-ACCOUNTS":
             raise NotImplementedError(
                 "Value 'OTHER-ACCOUNTS' for parameter 'resourceOwner' not implemented."
             )
@@ -191,29 +197,48 @@ class ResourceAccessManagerBackend(BaseBackend):
 
         return dict(resourceShares=resouces)
 
-    def update_resource_share(self, **kwargs: Any) -> Dict[str, Any]:
-        arn = kwargs["resourceShareArn"]
-
+    def update_resource_share(
+        self,
+        resource_share_arn: Optional[str],
+        allow_external_principals: bool,
+        name: Optional[str],
+    ) -> Dict[str, Any]:
         resource = next(
-            (resource for resource in self.resource_shares if arn == resource.arn), None
+            (
+                resource
+                for resource in self.resource_shares
+                if resource_share_arn == resource.arn
+            ),
+            None,
         )
 
         if not resource:
-            raise UnknownResourceException(f"ResourceShare {arn} could not be found.")
+            raise UnknownResourceException(
+                f"ResourceShare {resource_share_arn} could not be found."
+            )
 
-        resource.update(**kwargs)
+        resource.update(allow_external_principals, name)
         response = resource.describe()
         response.pop("featureSet")
 
         return dict(resourceShare=response)
 
-    def delete_resource_share(self, arn: str) -> Dict[str, Any]:
+    def delete_resource_share(
+        self, resource_share_arn: Optional[str]
+    ) -> Dict[str, Any]:
         resource = next(
-            (resource for resource in self.resource_shares if arn == resource.arn), None
+            (
+                resource
+                for resource in self.resource_shares
+                if resource_share_arn == resource.arn
+            ),
+            None,
         )
 
         if not resource:
-            raise UnknownResourceException(f"ResourceShare {arn} could not be found.")
+            raise UnknownResourceException(
+                f"ResourceShare {resource_share_arn} could not be found."
+            )
 
         resource.delete()
 
@@ -225,15 +250,20 @@ class ResourceAccessManagerBackend(BaseBackend):
 
         return dict(returnValue=True)
 
-    def get_resource_share_associations(self, **kwargs: Any) -> Dict[str, Any]:
-        association_type = kwargs["associationType"]
+    def get_resource_share_associations(
+        self,
+        association_type: Optional[str],
+        association_status: Optional[str],
+        resource_share_arns: List[str],
+        resource_arn: Optional[str],
+        principal: Optional[str],
+    ) -> Dict[str, Any]:
         if association_type not in ["PRINCIPAL", "RESOURCE"]:
             raise InvalidParameterException(
                 f"{association_type} is not a valid association type. "
                 "Specify either PRINCIPAL or RESOURCE and try again."
             )
 
-        association_status = kwargs.get("associationStatus")
         if association_status and association_status not in [
             "ASSOCIATING",
             "ASSOCIATED",
@@ -245,10 +275,6 @@ class ResourceAccessManagerBackend(BaseBackend):
                 f"{association_status} is not a valid association status."
             )
 
-        resource_share_arns = kwargs.get("resourceShareArns", [])
-        resource_arn = kwargs.get("resourceArn")
-        principal = kwargs.get("principal")
-
         if association_type == "PRINCIPAL" and resource_arn:
             raise InvalidParameterException(
                 "You cannot specify a resource ARN when the association type is PRINCIPAL."
@@ -302,5 +328,65 @@ class ResourceAccessManagerBackend(BaseBackend):
 
         return dict(resourceShareAssociations=associations)
 
+    def list_resource_types(self, resource_region_scope: str) -> Dict[str, Any]:
+        if resource_region_scope not in ["ALL", "REGIONAL", "GLOBAL"]:
+            raise InvalidParameterException(
+                f"{resource_region_scope} is not a valid resource region "
+                "scope value. Specify a valid value and try again."
+            )
+
+        if resource_region_scope == "ALL":
+            resource_types = self.RESOURCE_TYPES
+        else:
+            resource_types = [
+                resource_type
+                for resource_type in self.RESOURCE_TYPES
+                if resource_type["resourceRegionScope"] == resource_region_scope
+            ]
+
+        return dict(resourceTypes=resource_types)
+
+    def list_permissions(
+        self, resource_type: str, permission_type: str
+    ) -> Dict[str, Any]:
+        permission_types_relation = {
+            "AWS": "AWS_MANAGED",
+            "LOCAL": "CUSTOMER_MANAGED",
+        }
+
+        # Here, resourceType first partition (service) is case sensitive and
+        # last partition (type) is case insensitive
+        if resource_type and not any(
+            str(permission["resourceType"]).split(":")[0] == resource_type.split(":")[0]
+            and str(permission["resourceType"]).lower() == resource_type.lower()
+            for permission in self.MANAGED_PERMISSIONS
+        ):
+            raise InvalidParameterException(f"Invalid resource type: {resource_type}")
+
+        if resource_type:
+            permissions = [
+                permission
+                for permission in self.MANAGED_PERMISSIONS
+                if str(permission["resourceType"]).lower() == resource_type.lower()
+            ]
+        else:
+            permissions = self.MANAGED_PERMISSIONS
+
+        if permission_type not in self.PERMISSION_TYPES:
+            raise InvalidParameterException(
+                f"{permission_type} is not a valid scope. Must be one of: "
+                f"{', '.join(self.PERMISSION_TYPES)}."
+            )
+
+        if permission_type != "ALL":
+            permissions = [
+                permission
+                for permission in permissions
+                if permission_types_relation.get(permission_type)
+                == permission["permissionType"]
+            ]
+
+        return dict(permissions=permissions)
+
 
 ram_backends = BackendDict(ResourceAccessManagerBackend, "ram")
diff --git a/moto/ram/responses.py b/moto/ram/responses.py
index 93ea41153..1aa76b2a3 100644
--- a/moto/ram/responses.py
+++ b/moto/ram/responses.py
@@ -25,19 +25,49 @@ class ResourceAccessManagerResponse(BaseResponse):
         return json.dumps(self.ram_backend.create_resource_share(**self.request_params))
 
     def get_resource_shares(self) -> str:
-        return json.dumps(self.ram_backend.get_resource_shares(**self.request_params))
+        resource_owner = self._get_param("resourceOwner")
+        return json.dumps(self.ram_backend.get_resource_shares(resource_owner))
 
     def update_resource_share(self) -> str:
-        return json.dumps(self.ram_backend.update_resource_share(**self.request_params))
+        resource_share_arn = self._get_param("resourceShareArn")
+        allow_external_principals = self._get_param("allowExternalPrincipals", True)
+        name = self._get_param("name")
+        return json.dumps(
+            self.ram_backend.update_resource_share(
+                resource_share_arn, allow_external_principals, name
+            )
+        )
 
     def delete_resource_share(self) -> str:
-        arn = self._get_param("resourceShareArn")
-        return json.dumps(self.ram_backend.delete_resource_share(arn))
+        resource_share_arn = self._get_param("resourceShareArn")
+        return json.dumps(self.ram_backend.delete_resource_share(resource_share_arn))
 
     def enable_sharing_with_aws_organization(self) -> str:
         return json.dumps(self.ram_backend.enable_sharing_with_aws_organization())
 
     def get_resource_share_associations(self) -> str:
+        association_type = self._get_param("associationType")
+        association_status = self._get_param("associationStatus")
+        resource_share_arns = self._get_param("resourceShareArns", [])
+        resource_arn = self._get_param("resourceArn")
+        principal = self._get_param("principal")
+        return json.dumps(
+            self.ram_backend.get_resource_share_associations(
+                association_type,
+                association_status,
+                resource_share_arns,
+                resource_arn,
+                principal,
+            )
+        )
+
+    def list_resource_types(self) -> str:
+        resource_region_scope = self._get_param("resourceRegionScope", "ALL")
+        return json.dumps(self.ram_backend.list_resource_types(resource_region_scope))
+
+    def list_permissions(self) -> str:
+        resource_type = self._get_param("resourceType")
+        permission_type = self._get_param("permissionType", "ALL")
         return json.dumps(
-            self.ram_backend.get_resource_share_associations(**self.request_params)
+            self.ram_backend.list_permissions(resource_type, permission_type)
         )
diff --git a/moto/ram/urls.py b/moto/ram/urls.py
index 1b5775bb0..ee1440b2f 100644
--- a/moto/ram/urls.py
+++ b/moto/ram/urls.py
@@ -9,4 +9,6 @@ url_paths = {
     "{0}/getresourceshares$": ResourceAccessManagerResponse.dispatch,
     "{0}/getresourceshareassociations$": ResourceAccessManagerResponse.dispatch,
     "{0}/updateresourceshare$": ResourceAccessManagerResponse.dispatch,
+    "{0}/listresourcetypes$": ResourceAccessManagerResponse.dispatch,
+    "{0}/listpermissions$": ResourceAccessManagerResponse.dispatch,
 }
diff --git a/moto/ram/utils.py b/moto/ram/utils.py
new file mode 100644
index 000000000..1de1e0c05
--- /dev/null
+++ b/moto/ram/utils.py
@@ -0,0 +1,311 @@
+from datetime import datetime, timezone
+from typing import Dict, Optional, Union
+
+
+def format_ram_permission(
+    name: str,
+    resource_type: str,
+    version: str = "1",
+    arn_prefix: str = "arn:aws:ram::aws:permission/",
+    status: str = "ATTACHABLE",
+    creation_time: Optional[str] = None,
+    last_updated_time: Optional[str] = None,
+    is_resource_type_default: bool = True,
+    permission_type: str = "AWS_MANAGED",
+    default_version: bool = True,
+) -> Dict[str, Union[str, bool]]:
+    """
+    Format a RAM (Resource Access Manager) permission dictionary with the
+    specified attributes.
+
+    Args:
+        name (str): The name of the permission.
+        resource_type (str): The type of resource the permission applies to.
+        version (str): The version of the permission. Defaults to "1".
+        arn_prefix (str): The prefix for the permission ARN. Defaults
+            to "arn:aws:ram::aws:permission/".
+        status (str): The status of the permission. Defaults to
+            "ATTACHABLE".
+        creation_time (str, optional): The creation time in UTC. If not
+            provided, uses the current time.
+        last_updated_time (str, optional): The last updated time in UTC. If
+            not provided, uses the creation time.
+        is_resource_type_default (bool): Whether this is the default
+            permission for the resource type. Defaults to True.
+        permission_type (str): The type of permission (e.g.,
+            "AWS_MANAGED"). Defaults to "AWS_MANAGED".
+        default_version (bool): Whether this is the default version.
+            Defaults to True.
+
+    Returns:
+        dict: A dictionary representing the formatted RAM permission.
+    """
+    now = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
+    creation_time = creation_time or now
+    last_updated_time = last_updated_time or creation_time
+    arn = f"{arn_prefix}{name}"
+    return {
+        "arn": arn,
+        "version": version,
+        "defaultVersion": default_version,
+        "name": name,
+        "resourceType": resource_type,
+        "status": status,
+        "creationTime": creation_time,
+        "lastUpdatedTime": last_updated_time,
+        "isResourceTypeDefault": is_resource_type_default,
+        "permissionType": permission_type,
+    }
+
+
+# List of tuples with resourceType, serviceName, and resourceRegionScope based
+# on the SHARED_RESOURCE_TYPES in models.py
+_RESOURCE_TYPE_DEFINITIONS = [
+    ("rds:Cluster", "rds", "REGIONAL"),
+    ("imagebuilder:Component", "imagebuilder", "REGIONAL"),
+    ("networkmanager:CoreNetwork", "networkmanager", "GLOBAL"),
+    ("resource-groups:Group", "resource-groups", "REGIONAL"),
+    ("imagebuilder:Image", "imagebuilder", "REGIONAL"),
+    ("imagebuilder:ImageRecipe", "imagebuilder", "REGIONAL"),
+    ("license-manager:LicenseConfiguration", "license-manager", "REGIONAL"),
+    ("appmesh:Mesh", "appmesh", "REGIONAL"),
+    ("ec2:PrefixList", "ec2", "REGIONAL"),
+    ("codebuild:Project", "codebuild", "REGIONAL"),
+    ("codebuild:ReportGroup", "codebuild", "REGIONAL"),
+    ("route53resolver:ResolverRule", "route53resolver", "REGIONAL"),
+    ("ec2:Subnet", "ec2", "REGIONAL"),
+    ("ec2:TransitGatewayMulticastDomain", "ec2", "REGIONAL"),
+    ("glue:Database", "glue", "REGIONAL"),
+    ("glue:Table", "glue", "REGIONAL"),
+    ("glue:Catalog", "glue", "REGIONAL"),
+]
+
+# List of dictionaries representing RAM resource types based on the definitions
+RAM_RESOURCE_TYPES = [
+    {
+        "resourceType": resource_type,
+        "serviceName": service_name,
+        "resourceRegionScope": region_scope,
+    }
+    for resource_type, service_name, region_scope in _RESOURCE_TYPE_DEFINITIONS
+]
+
+# List of AWS managed permissions for RAM, formatted using the
+# format_ram_permission function.
+AWS_MANAGED_PERMISSIONS = [
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionRDSCluster",
+        resource_type="rds:Cluster",
+        creation_time="2022-06-30 17:04:16.671000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionImageBuilderComponent",
+        resource_type="imagebuilder:Component",
+        creation_time="2022-06-30 17:04:21.977000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionsNetworkManagerCoreNetwork",
+        resource_type="networkmanager:CoreNetwork",
+        version="3",
+        creation_time="2024-10-23 16:34:51.604000",
+    ),
+    format_ram_permission(
+        name="AWSRAMTransitGatewayPermissionsNetworkManagerCoreNetwork",
+        resource_type="networkmanager:CoreNetwork",
+        is_resource_type_default=False,
+        creation_time="2022-06-30 17:03:48.071000",
+    ),
+    format_ram_permission(
+        name="AWSRAMVPCPermissionsNetworkManagerCoreNetwork",
+        resource_type="networkmanager:CoreNetwork",
+        is_resource_type_default=False,
+        creation_time="2022-06-30 17:03:46.477000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionResourceGroup",
+        resource_type="resource-groups:Group",
+        creation_time="2022-06-30 17:04:10.914000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionImageBuilderImage",
+        resource_type="imagebuilder:Image",
+        creation_time="2022-06-30 17:04:21.201000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionImageBuilderImageRecipe",
+        resource_type="imagebuilder:ImageRecipe",
+        creation_time="2022-06-30 17:04:22.832000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionLicenseConfiguration",
+        resource_type="license-manager:LicenseConfiguration",
+        creation_time="2024-01-31 16:36:13.664000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionAppMesh",
+        resource_type="appmesh:Mesh",
+        version="3",
+        creation_time="2023-03-28 12:27:55.910000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionPrefixList",
+        resource_type="ec2:PrefixList",
+        creation_time="2022-06-30 17:04:20.594000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionCodeBuildProject",
+        resource_type="codebuild:Project",
+        creation_time="2022-06-30 17:04:17.595000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionCodeBuildReportGroup",
+        resource_type="codebuild:ReportGroup",
+        creation_time="2022-06-30 17:04:17.761000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionResolverRule",
+        resource_type="route53resolver:ResolverRule",
+        creation_time="2022-06-30 17:04:14.752000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionSubnet",
+        resource_type="ec2:Subnet",
+        creation_time="2024-10-30 15:11:41.358000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionTransitGatewayMulticastDomain",
+        resource_type="ec2:TransitGatewayMulticastDomain",
+        creation_time="2022-06-30 17:04:13.461000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionGlueDatabase",
+        resource_type="glue:Database",
+        creation_time="2022-06-30 17:04:25.912000",
+    ),
+    format_ram_permission(
+        name="AWSRAMLFEnabledGlueAllTablesReadWriteForDatabase",
+        resource_type="glue:Database",
+        is_resource_type_default=False,
+        creation_time="2023-06-27 17:05:24.471000",
+    ),
+    format_ram_permission(
+        name="AWSRAMLFEnabledGlueDatabaseReadWrite",
+        resource_type="glue:Database",
+        is_resource_type_default=False,
+        creation_time="2023-06-27 17:05:27.153000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueAllTablesReadWriteForDatabase",
+        resource_type="glue:Database",
+        version="3",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:19:43.345000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueDatabaseReadWrite",
+        resource_type="glue:Database",
+        version="3",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:20:08.415000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueTableReadWriteForDatabase",
+        resource_type="glue:Database",
+        version="3",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:19:17.062000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionLFTagGlueDatabaseReadWrite",
+        resource_type="glue:Database",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:22:14.138000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionLFTagGlueTableReadWriteForDatabase",
+        resource_type="glue:Database",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:21:49.920000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionGlueTable",
+        resource_type="glue:Table",
+        creation_time="2022-06-30 17:04:24.372000",
+    ),
+    format_ram_permission(
+        name="AWSRAMLFEnabledGlueDatabaseReadWriteForTable",
+        resource_type="glue:Table",
+        is_resource_type_default=False,
+        creation_time="2023-06-27 17:05:33.534000",
+    ),
+    format_ram_permission(
+        name="AWSRAMLFEnabledGlueTableReadWrite",
+        resource_type="glue:Table",
+        is_resource_type_default=False,
+        creation_time="2023-06-27 17:05:21.095000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueDatabaseReadWriteForTable",
+        resource_type="glue:Table",
+        version="2",
+        is_resource_type_default=False,
+        creation_time="2022-06-30 17:04:09.034000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueTableReadWrite",
+        resource_type="glue:Table",
+        version="2",
+        is_resource_type_default=False,
+        creation_time="2022-06-30 17:04:03.947000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionLFTagGlueDatabaseReadWriteForTable",
+        resource_type="glue:Table",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:22:26.191000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionLFTagGlueTableReadWrite",
+        resource_type="glue:Table",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:22:01.908000",
+    ),
+    format_ram_permission(
+        name="AWSRAMDefaultPermissionGlueCatalog",
+        resource_type="glue:Catalog",
+        creation_time="2022-06-30 17:04:26.612000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueAllTablesReadWriteForCatalog",
+        resource_type="glue:Catalog",
+        version="3",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:19:56.250000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueDatabaseReadWriteForCatalog",
+        resource_type="glue:Catalog",
+        version="3",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:20:20.322000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionGlueTableReadWriteForCatalog",
+        resource_type="glue:Catalog",
+        version="3",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:19:30.644000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionLFTagGlueDatabaseReadWriteForCatalog",
+        resource_type="glue:Catalog",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:22:37.435000",
+    ),
+    format_ram_permission(
+        name="AWSRAMPermissionLFTagGlueTableReadWriteForCatalog",
+        resource_type="glue:Catalog",
+        is_resource_type_default=False,
+        creation_time="2022-10-27 14:21:37.593000",
+    ),
+]
diff --git a/moto/rds/models.py b/moto/rds/models.py
index 49304d78e..cb4f97375 100644
--- a/moto/rds/models.py
+++ b/moto/rds/models.py
@@ -492,6 +492,7 @@ class DBCluster(RDSBaseModel):
         port: Optional[int] = None,
         preferred_backup_window: str = "01:37-02:07",
         preferred_maintenance_window: str = "wed:02:40-wed:03:10",
+        publicly_accessible: bool = False,
         storage_encrypted: bool = False,
         tags: Optional[List[Dict[str, str]]] = None,
         vpc_security_group_ids: Optional[List[str]] = None,
@@ -582,6 +583,7 @@ class DBCluster(RDSBaseModel):
         self.port = port or DBCluster.default_port(self.engine)
         self.preferred_backup_window = preferred_backup_window
         self.preferred_maintenance_window = preferred_maintenance_window
+        self.publicly_accessible = publicly_accessible
         # This should default to the default security group
         self._vpc_security_group_ids = vpc_security_group_ids or []
         self.hosted_zone_id = "".join(
diff --git a/moto/resourcegroupstaggingapi/models.py b/moto/resourcegroupstaggingapi/models.py
index 136fb0dea..0de8b6697 100644
--- a/moto/resourcegroupstaggingapi/models.py
+++ b/moto/resourcegroupstaggingapi/models.py
@@ -7,6 +7,10 @@ from moto.backup.models import BackupBackend, backup_backends
 from moto.clouddirectory import CloudDirectoryBackend, clouddirectory_backends
 from moto.cloudfront.models import CloudFrontBackend, cloudfront_backends
 from moto.cloudwatch.models import CloudWatchBackend, cloudwatch_backends
+from moto.connectcampaigns.models import (
+    ConnectCampaignServiceBackend,
+    connectcampaigns_backends,
+)
 from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.exceptions import RESTError
 from moto.dms.models import DatabaseMigrationServiceBackend, dms_backends
@@ -210,6 +214,13 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
     def cloudwatch_backend(self) -> CloudWatchBackend:
         return cloudwatch_backends[self.account_id][self.region_name]
 
+    @property
+    def connectcampaigns_backend(self) -> Optional[ConnectCampaignServiceBackend]:
+        # Connect Campaigns service has limited region availability
+        if self.region_name in connectcampaigns_backends[self.account_id].regions:
+            return connectcampaigns_backends[self.account_id][self.region_name]
+        return None
+
     def _get_resources_generator(
         self,
         tag_filters: Optional[List[Dict[str, Any]]] = None,
@@ -388,6 +399,20 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
                             "Tags": tags,
                         }
 
+        # Connect Campaigns v1
+        if self.connectcampaigns_backend:
+            if not resource_type_filters or "connectcampaigns" in resource_type_filters:
+                connectcampaigns_backend: ConnectCampaignServiceBackend = (
+                    connectcampaigns_backends[self.account_id][self.region_name]
+                )
+                for campaign in connectcampaigns_backend.campaigns.values():
+                    tags = connectcampaigns_backend.tagger.list_tags_for_resource(
+                        campaign.arn
+                    )["Tags"]
+                    if not tags or not tag_filter(tags):
+                        continue
+                    yield {"ResourceARN": f"{campaign.arn}", "Tags": tags}
+
         # DMS
         if not resource_type_filters or "dms:endpoint" in resource_type_filters:
             for endpoint in self.dms_backend.endpoints.values():
diff --git a/moto/servicediscovery/models.py b/moto/servicediscovery/models.py
index fbf5e7557..a77e0088b 100644
--- a/moto/servicediscovery/models.py
+++ b/moto/servicediscovery/models.py
@@ -5,6 +5,7 @@ from moto.core.base_backend import BackendDict, BaseBackend
 from moto.core.common_models import BaseModel
 from moto.core.utils import unix_time
 from moto.moto_api._internal import mock_random as random
+from moto.route53 import route53_backends
 from moto.utilities.tagging_service import TaggingService
 from moto.utilities.utils import get_partition
 
@@ -275,7 +276,17 @@ class ServiceDiscoveryBackend(BaseBackend):
             if namespace.vpc == vpc:
                 raise ConflictingDomainExists(vpc)
         dns_properties = (properties or {}).get("DnsProperties", {})
-        dns_properties["HostedZoneId"] = "hzi"
+
+        # create the hosted zone
+        hosted_zone = route53_backends[self.account_id][
+            get_partition(self.region_name)
+        ].create_hosted_zone(
+            f"{name}-hz",
+            private_zone=True,
+            comment=f"hosted zone for private dns namespace {name}",
+        )
+
+        dns_properties["HostedZoneId"] = hosted_zone.id
         namespace = Namespace(
             account_id=self.account_id,
             region=self.region_name,
@@ -304,7 +315,17 @@ class ServiceDiscoveryBackend(BaseBackend):
         properties: Dict[str, Any],
     ) -> str:
         dns_properties = (properties or {}).get("DnsProperties", {})
-        dns_properties["HostedZoneId"] = "hzi"
+
+        # create the hosted zone
+        hosted_zone = route53_backends[self.account_id][
+            get_partition(self.region_name)
+        ].create_hosted_zone(
+            f"{name}-hz",
+            private_zone=False,
+            comment=f"hosted zone for public dns namespace {name}",
+        )
+
+        dns_properties["HostedZoneId"] = hosted_zone.id
         namespace = Namespace(
             account_id=self.account_id,
             region=self.region_name,


Test patch:
diff --git a/.github/workflows/tests_sdk_ruby.yml b/.github/workflows/tests_sdk_ruby.yml
index bc5e97bfe..51232c8c9 100644
--- a/.github/workflows/tests_sdk_ruby.yml
+++ b/.github/workflows/tests_sdk_ruby.yml
@@ -13,7 +13,7 @@ jobs:
     steps:
       - uses: actions/checkout@v4
       - name: Set up Ruby ${{ matrix.ruby-version }}
-        uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb
+        uses: ruby/setup-ruby@a4effe49ee8ee5b8b5091268c473a4628afb5651
         with:
           ruby-version: ${{ matrix.ruby-version }}
       - name: Set up Python 3.12
diff --git a/tests/test_athena/test_athena.py b/tests/test_athena/test_athena.py
index 6229dec8a..0121a7a87 100644
--- a/tests/test_athena/test_athena.py
+++ b/tests/test_athena/test_athena.py
@@ -1,3 +1,5 @@
+from datetime import datetime
+
 import boto3
 import pytest
 from botocore.exceptions import ClientError
@@ -172,7 +174,7 @@ def test_get_query_execution(location):
     # Start Query
     exex_id = client.start_query_execution(
         QueryString=query,
-        QueryExecutionContext={"Database": database},
+        QueryExecutionContext={"Database": database, "Catalog": "awsdatacatalog"},
         ResultConfiguration={"OutputLocation": location},
     )["QueryExecutionId"]
     #
@@ -186,15 +188,24 @@ def test_get_query_execution(location):
         assert result_config["OutputLocation"] == f"{location}{exex_id}.csv"
     else:
         assert result_config["OutputLocation"] == f"{location}/{exex_id}.csv"
+    assert (
+        details["ResultReuseConfiguration"]["ResultReuseByAgeConfiguration"]["Enabled"]
+        is False
+    )
     assert details["QueryExecutionContext"]["Database"] == database
+    assert details["QueryExecutionContext"]["Catalog"] == "awsdatacatalog"
     assert details["Status"]["State"] == "SUCCEEDED"
+    assert isinstance(details["Status"]["SubmissionDateTime"], datetime)
+    assert isinstance(details["Status"]["CompletionDateTime"], datetime)
     assert details["Statistics"] == {
         "EngineExecutionTimeInMillis": 0,
         "DataScannedInBytes": 0,
         "TotalExecutionTimeInMillis": 0,
         "QueryQueueTimeInMillis": 0,
+        "ServicePreProcessingTimeInMillis": 0,
         "QueryPlanningTimeInMillis": 0,
         "ServiceProcessingTimeInMillis": 0,
+        "ResultReuseInformation": {"ReusedPreviousResult": False},
     }
     assert "WorkGroup" not in details
 
diff --git a/tests/test_connectcampaigns/test_connectcampaigns.py b/tests/test_connectcampaigns/test_connectcampaigns.py
index 21da781db..3f195e978 100644
--- a/tests/test_connectcampaigns/test_connectcampaigns.py
+++ b/tests/test_connectcampaigns/test_connectcampaigns.py
@@ -175,3 +175,395 @@ def test_start_instance_onboarding_job():
             connectInstanceId=connect_instance_id,
             encryptionConfig={"enabled": True, "encryptionType": "KMS"},
         )
+
+
+@mock_aws
+def test_start_campaign():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignToStart",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+            "connectSourcePhoneNumber": "+12065550100",
+            "connectQueueId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    campaign_id = create_response["id"]
+
+    client.start_campaign(id=campaign_id)
+    describe_response = client.get_campaign_state(id=campaign_id)
+
+    assert describe_response["state"] == "Running"
+
+
+@mock_aws
+def test_stop_campaign():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignToStop",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+            "connectSourcePhoneNumber": "+12065550100",
+            "connectQueueId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    campaign_id = create_response["id"]
+
+    client.stop_campaign(id=campaign_id)
+    describe_response = client.get_campaign_state(id=campaign_id)
+
+    assert describe_response["state"] == "Stopped"
+
+
+@mock_aws
+def test_list_campaigns():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    # Create a couple of campaigns
+    client.create_campaign(
+        name="Campaign1",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    client.create_campaign(
+        name="Campaign2",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    response = client.list_campaigns()
+
+    assert len(response["campaignSummaryList"]) >= 2
+    assert any(c["name"] == "Campaign1" for c in response["campaignSummaryList"])
+    assert any(c["name"] == "Campaign2" for c in response["campaignSummaryList"])
+
+
+@mock_aws
+def test_list_campaigns_with_filters():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    # Create a couple of campaigns
+    client.create_campaign(
+        name="Campaign1",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    client.create_campaign(
+        name="Campaign2",
+        connectInstanceId="12345678-1234-1234-1234-000000000000",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    # Filter by name
+    response = client.list_campaigns(
+        filters={
+            "instanceIdFilter": {
+                "value": "12345678-1234-1234-1234-123456789012",
+                "operator": "Eq",
+            }
+        }
+    )
+
+    assert len(response["campaignSummaryList"]) == 1
+    assert response["campaignSummaryList"][0]["name"] == "Campaign1"
+
+    # Filter by connectInstanceId
+    response = client.list_campaigns(
+        filters={
+            "instanceIdFilter": {
+                "value": "12345678-1234-1234-1234-12340000012",
+                "operator": "Eq",
+            }
+        }
+    )
+    assert len(response["campaignSummaryList"]) == 0
+
+
+@mock_aws
+def test_start_campaign_invalid_id():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    with pytest.raises(client.exceptions.ResourceNotFoundException):
+        client.start_campaign(id="non-existent-id")
+
+
+@mock_aws
+def test_stop_campaign_invalid_id():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    with pytest.raises(client.exceptions.ResourceNotFoundException):
+        client.stop_campaign(id="non-existent-id")
+
+
+@mock_aws
+def test_tag_resource():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignToTag",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+        tags={"Environment": "TestLater", "Owner": "DevTeamLater"},
+    )
+
+    client.tag_resource(
+        arn=create_response["arn"],
+        tags={"Environment": "Test", "Owner": "DevTeam"},
+    )
+
+    # assert tag_response is None
+    # Verify tags
+    describe_tags = client.list_tags_for_resource(arn=create_response["arn"])
+    assert "tags" in describe_tags
+
+    tags = describe_tags["tags"]
+    assert tags["Environment"] == "Test"
+    assert tags["Owner"] == "DevTeam"
+
+
+@mock_aws
+def test_untag_resource():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignToUntag",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    campaign_id = create_response["id"]
+    client.tag_resource(
+        arn=create_response["arn"],
+        tags={"Environment": "Test", "Owner": "DevTeam"},
+    )
+
+    client.untag_resource(
+        arn=create_response["arn"],
+        tagKeys=["Environment"],
+    )
+    # Verify tags after untagging
+    describe_response = client.describe_campaign(id=campaign_id)
+    assert "tags" in describe_response["campaign"]
+    tags = describe_response["campaign"]["tags"]
+    assert "Environment" not in tags
+    assert tags["Owner"] == "DevTeam"
+
+
+@mock_aws
+def test_list_tags_for_resource():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignToListTags",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    client.tag_resource(
+        arn=create_response["arn"],
+        tags={"Environment": "Test", "Owner": "DevTeam"},
+    )
+
+    tags_response = client.list_tags_for_resource(arn=create_response["arn"])
+
+    assert len(tags_response) == 2
+    assert tags_response["tags"]["Environment"] == "Test"
+    assert tags_response["tags"]["Owner"] == "DevTeam"
+
+
+@mock_aws
+def test_get_campaign_state():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignStateTest",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    campaign_id = create_response["id"]
+
+    # Initially, the campaign state should be 'Initialized'
+    state_response = client.get_campaign_state(id=campaign_id)
+    assert state_response["state"] == "Initialized"
+
+    # Start the campaign
+    client.start_campaign(id=campaign_id)
+    state_response = client.get_campaign_state(id=campaign_id)
+    assert state_response["state"] == "Running"
+
+    # Stop the campaign
+    client.stop_campaign(id=campaign_id)
+    state_response = client.get_campaign_state(id=campaign_id)
+    assert state_response["state"] == "Stopped"
+
+
+@mock_aws
+def test_get_campaign_state_invalid_id():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    with pytest.raises(client.exceptions.ResourceNotFoundException):
+        client.get_campaign_state(id="non-existent-id")
+
+
+@mock_aws
+def test_pause_campaign():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignToPause",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    campaign_id = create_response["id"]
+
+    # Start the campaign
+    client.start_campaign(id=campaign_id)
+
+    # Pause the campaign
+    client.pause_campaign(id=campaign_id)
+    state_response = client.get_campaign_state(id=campaign_id)
+
+    assert state_response["state"] == "Paused"
+
+
+@mock_aws
+def test_resume_campaign():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    create_response = client.create_campaign(
+        name="CampaignToResume",
+        connectInstanceId="12345678-1234-1234-1234-123456789012",
+        dialerConfig={
+            "progressiveDialerConfig": {
+                "bandwidthAllocation": 1.0,
+                "dialingCapacity": 2.0,
+            }
+        },
+        outboundCallConfig={
+            "connectContactFlowId": "12345678-1234-1234-1234-123456789012",
+        },
+    )
+
+    campaign_id = create_response["id"]
+
+    # Start the campaign
+    client.start_campaign(id=campaign_id)
+
+    # Pause the campaign
+    client.pause_campaign(id=campaign_id)
+
+    # Resume the campaign
+    client.resume_campaign(id=campaign_id)
+    state_response = client.get_campaign_state(id=campaign_id)
+
+    assert state_response["state"] == "Running"
+
+
+@mock_aws
+def test_pause_campaign_invalid_id():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    with pytest.raises(client.exceptions.ResourceNotFoundException):
+        client.pause_campaign(id="non-existent-id")
+
+
+@mock_aws
+def test_resume_campaign_invalid_id():
+    client = boto3.client("connectcampaigns", region_name="us-east-1")
+
+    with pytest.raises(client.exceptions.ResourceNotFoundException):
+        client.resume_campaign(id="non-existent-id")
diff --git a/tests/test_ecs/test_ecs_boto3.py b/tests/test_ecs/test_ecs_boto3.py
index f01667131..3bb524597 100644
--- a/tests/test_ecs/test_ecs_boto3.py
+++ b/tests/test_ecs/test_ecs_boto3.py
@@ -506,6 +506,58 @@ def test_list_task_definitions_with_family_prefix():
     )
 
 
+@mock_aws
+def test_list_task_definitions_with_status_filter():
+    client = boto3.client("ecs", region_name=ECS_REGION)
+    client.register_task_definition(
+        family="test_ecs_task",
+        containerDefinitions=[
+            {
+                "name": "hello_world",
+                "image": "docker/hello-world:latest",
+                "cpu": 1024,
+                "memory": 400,
+                "essential": True,
+                "environment": [
+                    {"name": "AWS_ACCESS_KEY_ID", "value": "SOME_ACCESS_KEY"}
+                ],
+                "logConfiguration": {"logDriver": "json-file"},
+            }
+        ],
+    )
+    td2_response = client.register_task_definition(
+        family="test_ecs_task",
+        containerDefinitions=[
+            {
+                "name": "hello_world2",
+                "image": "docker/hello-world2:latest",
+                "cpu": 1024,
+                "memory": 400,
+                "essential": True,
+                "environment": [
+                    {"name": "AWS_ACCESS_KEY_ID", "value": "SOME_ACCESS_KEY2"}
+                ],
+                "logConfiguration": {"logDriver": "json-file"},
+            }
+        ],
+    )
+    client.deregister_task_definition(
+        taskDefinition=td2_response["taskDefinition"]["taskDefinitionArn"]
+    )
+    response = client.list_task_definitions(status="ACTIVE")
+    assert len(response["taskDefinitionArns"]) == 1
+    assert (
+        response["taskDefinitionArns"][0]
+        == f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:1"
+    )
+    response = client.list_task_definitions(status="INACTIVE")
+    assert len(response["taskDefinitionArns"]) == 1
+    assert (
+        response["taskDefinitionArns"][0]
+        == f"arn:aws:ecs:us-east-1:{ACCOUNT_ID}:task-definition/test_ecs_task:2"
+    )
+
+
 @mock_aws
 def test_describe_task_definitions():
     client = boto3.client("ecs", region_name=ECS_REGION)
diff --git a/tests/test_ecs/test_ecs_task_definitions.py b/tests/test_ecs/test_ecs_task_definitions.py
new file mode 100644
index 000000000..a1b341d02
--- /dev/null
+++ b/tests/test_ecs/test_ecs_task_definitions.py
@@ -0,0 +1,130 @@
+"""Unit tests for ecs-supported APIs."""
+
+import boto3
+
+from moto import mock_aws
+
+
+@mock_aws
+def test_delete_task_definitions():
+    client = boto3.client("ecs", region_name="us-east-2")
+    client.register_task_definition(
+        family="test_ecs_task",
+        containerDefinitions=[
+            {
+                "name": "hello_world",
+                "image": "docker/hello-world:latest",
+                "cpu": 1024,
+                "memory": 400,
+                "essential": True,
+                "environment": [
+                    {"name": "AWS_ACCESS_KEY_ID", "value": "SOME_ACCESS_KEY"}
+                ],
+                "logConfiguration": {"logDriver": "json-file"},
+            }
+        ],
+    )
+
+    client.deregister_task_definition(taskDefinition="test_ecs_task:1")
+    resp = client.delete_task_definitions(taskDefinitions=["test_ecs_task:1"])
+
+    assert resp["taskDefinitions"] == [
+        {
+            "family": "test_ecs_task",
+            "revision": 1,
+            "volumes": [],
+            "compatibilities": ["EC2"],
+            "status": "DELETE_IN_PROGRESS",
+            "containerDefinitions": [
+                {
+                    "cpu": 1024,
+                    "portMappings": [],
+                    "essential": True,
+                    "environment": [
+                        {"name": "AWS_ACCESS_KEY_ID", "value": "SOME_ACCESS_KEY"}
+                    ],
+                    "mountPoints": [],
+                    "volumesFrom": [],
+                    "name": "hello_world",
+                    "image": "docker/hello-world:latest",
+                    "memory": 400,
+                    "logConfiguration": {"logDriver": "json-file"},
+                }
+            ],
+            "networkMode": "bridge",
+            "placementConstraints": [],
+            "taskDefinitionArn": "arn:aws:ecs:us-east-2:123456789012:task-definition/test_ecs_task:1",
+        }
+    ]
+    assert resp["failures"] == []
+
+
+@mock_aws
+def test_delete_task_definitions_cannot_delete_active():
+    client = boto3.client("ecs", region_name="us-east-2")
+    task_def_1 = client.register_task_definition(
+        family="test_ecs_task",
+        containerDefinitions=[
+            {
+                "name": "hello_world",
+                "image": "docker/hello-world:latest",
+                "cpu": 1024,
+                "memory": 400,
+                "essential": True,
+                "environment": [
+                    {"name": "AWS_ACCESS_KEY_ID", "value": "SOME_ACCESS_KEY"}
+                ],
+                "logConfiguration": {"logDriver": "json-file"},
+            }
+        ],
+    )
+
+    resp = client.delete_task_definitions(
+        taskDefinitions=[
+            task_def_1["taskDefinition"]["taskDefinitionArn"],
+        ]
+    )
+
+    assert resp["taskDefinitions"] == []
+    assert resp["failures"] == [
+        {
+            "arn": task_def_1["taskDefinition"]["taskDefinitionArn"],
+            "reason": "The specified task definition is still in ACTIVE status. Please deregister the target and try again.",
+        }
+    ]
+
+
+@mock_aws
+def test_delete_task_definitions_invalid_identifier():
+    client = boto3.client("ecs", region_name="us-east-2")
+    resp = client.delete_task_definitions(
+        taskDefinitions=[
+            "invalid-task-definition-name",
+        ]
+    )
+
+    assert resp["taskDefinitions"] == []
+    assert resp["failures"] == [
+        {
+            "arn": "invalid-task-definition-name",
+            "reason": "The specified task definition identifier is invalid. Specify a valid name or ARN and try again.",
+        }
+    ]
+
+
+@mock_aws
+def test_delete_task_definitions_nonexistent():
+    client = boto3.client("ecs", region_name="us-east-2")
+    resp = client.delete_task_definitions(
+        taskDefinitions=[
+            "nonexistent-task-definition:1",
+        ]
+    )
+
+    assert resp["taskDefinitions"] == []
+    assert resp["failures"] == [
+        {
+            "arn": "nonexistent-task-definition:1",
+            "reason": "The specified task definition does not exist. Specify a valid account, family, revision and try again.",
+        }
+    ]
diff --git a/tests/test_ram/test_ram.py b/tests/test_ram/test_ram.py
index da782ad8d..d3637c644 100644
--- a/tests/test_ram/test_ram.py
+++ b/tests/test_ram/test_ram.py
@@ -1,3 +1,4 @@
+import json
 import re
 import time
 from datetime import datetime
@@ -8,6 +9,7 @@ from botocore.exceptions import ClientError
 
 from moto import mock_aws
 from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
+from moto.ram.models import ResourceAccessManagerBackend
 
 
 @mock_aws
@@ -530,3 +532,123 @@ def test_get_resource_share_associations_errors():
         "You cannot specify a principal when the association type is RESOURCE"
         in ex.response["Error"]["Message"]
     )
+
+
+@mock_aws
+@pytest.mark.parametrize(
+    "resource_region_scope, expect_error, error_message",
+    [
+        ({}, False, None),  # default value is "ALL"
+        ({"resourceRegionScope": "ALL"}, False, None),
+        ({"resourceRegionScope": "GLOBAL"}, False, None),
+        ({"resourceRegionScope": "REGIONAL"}, False, None),
+        (
+            {"resourceRegionScope": "INVALID"},
+            True,
+            "INVALID is not a valid resource region scope value. Specify a valid value and try again.",
+        ),
+    ],
+    ids=[
+        "default_region_scope",
+        "all_region_scope",
+        "global_region_scope",
+        "regional_region_scope",
+        "invalid_region_scope",
+    ],
+)
+def test_list_resource_types(resource_region_scope, expect_error, error_message):
+    client = boto3.client("ram", region_name="us-east-1")
+    region_scope = resource_region_scope.get("resourceRegionScope")
+
+    if expect_error:
+        with pytest.raises(ClientError) as e:
+            client.list_resource_types(**resource_region_scope)
+        ex = e.value
+        assert ex.response["ResponseMetadata"]["HTTPStatusCode"] == 400
+        assert "InvalidParameterException" in ex.response["Error"]["Code"]
+        assert ex.response["Error"]["Message"] == error_message
+    else:
+        response = client.list_resource_types(**resource_region_scope)
+        expected_types = ResourceAccessManagerBackend.RESOURCE_TYPES
+        if region_scope == "GLOBAL":
+            expected_types = [
+                rt for rt in expected_types if rt["resourceRegionScope"] == "GLOBAL"
+            ]
+        elif region_scope == "REGIONAL":
+            expected_types = [
+                rt for rt in expected_types if rt["resourceRegionScope"] == "REGIONAL"
+            ]
+
+        assert "resourceTypes" in response
+        assert response["resourceTypes"] == expected_types
+
+
+@mock_aws
+@pytest.mark.parametrize(
+    "parameters, expect_error, error_message",
+    [
+        ({}, False, None),
+        ({"resourceType": "glue:catalog"}, False, None),
+        ({"permissionType": "ALL"}, False, None),
+        ({"resourceType": "glue:catalog", "permissionType": "AWS"}, False, None),
+        (
+            {"resourceType": "gluE:catalog", "permissionType": "AWS"},
+            True,
+            "Invalid resource type: gluE:catalog",
+        ),
+        (
+            {"resourceType": "glue:catalog", "permissionType": "INVALID"},
+            True,
+            "INVALID is not a valid scope. Must be one of: ALL, AWS, LOCAL.",
+        ),
+    ],
+    ids=[
+        "default_params",
+        "valid_resource_type",
+        "valid_permission_type",
+        "valid_resource_type_and_permission_type",
+        "invalid_resource_type",
+        "invalid_permission_type",
+    ],
+)
+def test_list_permissions(parameters, expect_error, error_message):
+    client = boto3.client("ram", region_name="us-east-1")
+    permission_types_relation = {
+        "AWS": "AWS_MANAGED",
+        "LOCAL": "CUSTOMER_MANAGED",
+    }
+    resource_type = parameters.get("resourceType")
+    permission_type = parameters.get("permissionType")
+
+    # when
+    if expect_error:
+        with pytest.raises(ClientError) as e:
+            client.list_permissions(**parameters)
+        ex = e.value
+        assert ex.response["ResponseMetadata"]["HTTPStatusCode"] == 400
+        assert "InvalidParameterException" in ex.response["Error"]["Code"]
+        assert ex.response["Error"]["Message"] == error_message
+    else:
+        response = client.list_permissions(**parameters)
+
+        # then
+        expected_permissions = ResourceAccessManagerBackend.MANAGED_PERMISSIONS
+        if resource_type:
+            expected_permissions = [
+                permission
+                for permission in expected_permissions
+                if permission["resourceType"].lower() == resource_type.lower()
+            ]
+
+        if permission_type and permission_type != "ALL":
+            expected_permissions = [
+                permission
+                for permission in expected_permissions
+                if permission_types_relation.get(permission_type)
+                == permission["permissionType"]
+            ]
+
+        assert "permissions" in response
+        assert json.dumps(response["permissions"], default=str) == json.dumps(
+            expected_permissions, default=str
+        )
diff --git a/tests/test_ram/test_ram_utils.py b/tests/test_ram/test_ram_utils.py
new file mode 100644
index 000000000..4cfd3d566
--- /dev/null
+++ b/tests/test_ram/test_ram_utils.py
@@ -0,0 +1,84 @@
+import re
+
+from moto.ram.utils import (
+    AWS_MANAGED_PERMISSIONS,
+    RAM_RESOURCE_TYPES,
+    format_ram_permission,
+)
+
+
+def test_format_ram_permission_defaults():
+    name = "TestPermission"
+    resource_type = "test:Resource"
+    result = format_ram_permission(name, resource_type)
+    assert result["name"] == name
+    assert result["resourceType"] == resource_type
+    assert result["version"] == "1"
+    assert result["arn"] == f"arn:aws:ram::aws:permission/{name}"
+    assert result["status"] == "ATTACHABLE"
+    assert result["isResourceTypeDefault"] is True
+    assert result["permissionType"] == "AWS_MANAGED"
+    assert result["defaultVersion"] is True
+    # creationTime and lastUpdatedTime should be a string in the expected format
+    assert re.match(
+        r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}", result["creationTime"]
+    )
+    assert result["creationTime"] == result["lastUpdatedTime"]
+
+
+def test_format_ram_permission_custom_values():
+    name = "CustomPermission"
+    resource_type = "custom:Type"
+    version = "2"
+    arn_prefix = "arn:aws:ram::custom:permission/"
+    status = "UNATTACHABLE"
+    creation_time = "2023-01-01 12:00:00.000"
+    last_updated_time = "2023-01-02 13:00:00.000"
+    is_resource_type_default = False
+    permission_type = "CUSTOM"
+    default_version = False
+
+    result = format_ram_permission(
+        name=name,
+        resource_type=resource_type,
+        version=version,
+        arn_prefix=arn_prefix,
+        status=status,
+        creation_time=creation_time,
+        last_updated_time=last_updated_time,
+        is_resource_type_default=is_resource_type_default,
+        permission_type=permission_type,
+        default_version=default_version,
+    )
+    assert result["name"] == name
+    assert result["resourceType"] == resource_type
+    assert result["version"] == version
+    assert result["arn"] == f"{arn_prefix}{name}"
+    assert result["status"] == status
+    assert result["creationTime"] == creation_time
+    assert result["lastUpdatedTime"] == last_updated_time
+    assert result["isResourceTypeDefault"] is False
+    assert result["permissionType"] == permission_type
+    assert result["defaultVersion"] is False
+
+
+def test_ram_resource_types_structure():
+    for entry in RAM_RESOURCE_TYPES:
+        assert "resourceType" in entry
+        assert "serviceName" in entry
+        assert "resourceRegionScope" in entry
+        assert entry["resourceRegionScope"] in ("REGIONAL", "GLOBAL")
+
+
+def test_aws_managed_permissions_structure():
+    for perm in AWS_MANAGED_PERMISSIONS:
+        assert "arn" in perm
+        assert perm["arn"].startswith("arn:aws:ram::aws:permission/")
+        assert "name" in perm
+        assert "resourceType" in perm
+        assert "creationTime" in perm
+        assert "lastUpdatedTime" in perm
+        assert "status" in perm
+        assert "permissionType" in perm
+        assert perm["permissionType"] == "AWS_MANAGED"
+        assert isinstance(perm["isResourceTypeDefault"], bool)
diff --git a/tests/test_rds/test_rds_clusters.py b/tests/test_rds/test_rds_clusters.py
index ec857c7c1..7fc5b9a57 100644
--- a/tests/test_rds/test_rds_clusters.py
+++ b/tests/test_rds/test_rds_clusters.py
@@ -2006,3 +2006,17 @@ def test_db_cluster_identifier_is_case_insensitive(client):
 
     response = client.delete_db_cluster(DBClusterIdentifier="xXyY")
     assert response["DBCluster"]["DBClusterIdentifier"] == "xxyy"
+
+
+@mock_aws
+def test_db_cluster_attributes(client):
+    cluster = client.create_db_cluster(
+        DBClusterIdentifier="test-cluster",
+        Engine="aurora-postgresql",
+        MasterUsername="root",
+        MasterUserPassword="password",
+        PubliclyAccessible=True,
+    )["DBCluster"]
+    assert cluster["DBClusterIdentifier"] == "test-cluster"
+    assert cluster["Engine"] == "aurora-postgresql"
+    assert cluster["PubliclyAccessible"] is True
diff --git a/tests/test_servicediscovery/test_servicediscovery_httpnamespaces.py b/tests/test_servicediscovery/test_servicediscovery_httpnamespaces.py
index 8e00d2aba..9ff9a883f 100644
--- a/tests/test_servicediscovery/test_servicediscovery_httpnamespaces.py
+++ b/tests/test_servicediscovery/test_servicediscovery_httpnamespaces.py
@@ -262,7 +262,18 @@ def test_create_public_dns_namespace():
 
     assert "DnsProperties" in namespace["Properties"]
     dns_props = namespace["Properties"]["DnsProperties"]
-    assert dns_props == {"HostedZoneId": "hzi", "SOA": {"TTL": 124}}
+    hosted_zone_id = dns_props["HostedZoneId"]
+
+    hosted_zone_resp = boto3.client("route53", region_name="us-east-2").get_hosted_zone(
+        Id=hosted_zone_id
+    )
+    assert "HostedZone" in hosted_zone_resp
+    assert "Config" in hosted_zone_resp["HostedZone"]
+    private_zone = hosted_zone_resp["HostedZone"]["Config"]["PrivateZone"]
+    assert not private_zone
+
+    soa = dns_props["SOA"]
+    assert soa == {"TTL": 124}
 
 
 @mock_aws