Repository: getmoto/moto
Pull request #6731 (2023-08-27 06:08:21)

chore: update EC2 Instance Offerings
Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action


Patch:
diff --git a/.github/workflows/data-update_ec2-instance-offerings.yml b/.github/workflows/data-update_ec2-instance-offerings.yml
index dabecb4b9..f8c8bafac 100644
--- a/.github/workflows/data-update_ec2-instance-offerings.yml
+++ b/.github/workflows/data-update_ec2-instance-offerings.yml
@@ -32,7 +32,7 @@ jobs:
         python-version: 3.9
 
     - name: Configure AWS
-      uses: aws-actions/configure-aws-credentials@v2
+      uses: aws-actions/configure-aws-credentials@v3
       with:
         aws-region: us-east-1
         role-to-assume: arn:aws:iam::486285699788:role/GithubActionsRole
diff --git a/.github/workflows/data-update_ec2-instance-types.yml b/.github/workflows/data-update_ec2-instance-types.yml
index 80a7adeb3..d5dd7170d 100644
--- a/.github/workflows/data-update_ec2-instance-types.yml
+++ b/.github/workflows/data-update_ec2-instance-types.yml
@@ -31,7 +31,7 @@ jobs:
         python-version: 3.9
 
     - name: Configure AWS
-      uses: aws-actions/configure-aws-credentials@v2
+      uses: aws-actions/configure-aws-credentials@v3
       with:
         aws-region: us-east-1
         role-to-assume: arn:aws:iam::486285699788:role/GithubActionsRole
diff --git a/.github/workflows/data-update_ssm-default-amis.yml b/.github/workflows/data-update_ssm-default-amis.yml
index 14dab4a8f..e9af93445 100644
--- a/.github/workflows/data-update_ssm-default-amis.yml
+++ b/.github/workflows/data-update_ssm-default-amis.yml
@@ -31,7 +31,7 @@ jobs:
         python-version: 3.9
 
     - name: Configure AWS
-      uses: aws-actions/configure-aws-credentials@v2
+      uses: aws-actions/configure-aws-credentials@v3
       with:
         aws-region: us-east-1
         role-to-assume: arn:aws:iam::486285699788:role/GithubActionsRole
diff --git a/.github/workflows/data-update_ssm-default-parameters.yml b/.github/workflows/data-update_ssm-default-parameters.yml
index 3a7f19056..7e05469fe 100644
--- a/.github/workflows/data-update_ssm-default-parameters.yml
+++ b/.github/workflows/data-update_ssm-default-parameters.yml
@@ -32,7 +32,7 @@ jobs:
         python-version: 3.9
 
     - name: Configure AWS
-      uses: aws-actions/configure-aws-credentials@v2
+      uses: aws-actions/configure-aws-credentials@v3
       with:
         aws-region: us-east-1
         role-to-assume: arn:aws:iam::486285699788:role/GithubActionsRole
diff --git a/IMPLEMENTATION_COVERAGE.md b/IMPLEMENTATION_COVERAGE.md
index 15d2b7f49..a6a66e7ce 100644
--- a/IMPLEMENTATION_COVERAGE.md
+++ b/IMPLEMENTATION_COVERAGE.md
@@ -4368,7 +4368,7 @@
 
 ## logs
 <details>
-<summary>60% implemented</summary>
+<summary>66% implemented</summary>
 
 - [ ] associate_kms_key
 - [ ] cancel_export_task
@@ -4402,7 +4402,7 @@
 - [ ] get_log_group_fields
 - [ ] get_log_record
 - [X] get_query_results
-- [ ] list_tags_for_resource
+- [X] list_tags_for_resource
 - [X] list_tags_log_group
 - [ ] put_account_policy
 - [ ] put_data_protection_policy
@@ -4417,10 +4417,10 @@
 - [X] start_query
 - [ ] stop_query
 - [X] tag_log_group
-- [ ] tag_resource
+- [X] tag_resource
 - [ ] test_metric_filter
 - [X] untag_log_group
-- [ ] untag_resource
+- [X] untag_resource
 </details>
 
 ## managedblockchain
@@ -5792,7 +5792,7 @@
 
 ## resourcegroupstaggingapi
 <details>
-<summary>37% implemented</summary>
+<summary>50% implemented</summary>
 
 - [ ] describe_report_creation
 - [ ] get_compliance_summary
@@ -5800,7 +5800,7 @@
 - [X] get_tag_keys
 - [X] get_tag_values
 - [ ] start_report_creation
-- [ ] tag_resources
+- [X] tag_resources
 - [ ] untag_resources
 </details>
 
diff --git a/docs/docs/services/logs.rst b/docs/docs/services/logs.rst
index af2c105ec..b9862a937 100644
--- a/docs/docs/services/logs.rst
+++ b/docs/docs/services/logs.rst
@@ -38,7 +38,9 @@ logs
 - [X] delete_metric_filter
 - [ ] delete_query_definition
 - [X] delete_resource_policy
-  Remove resource policy with a policy name matching given name.
+  
+        Remove resource policy with a policy name matching given name.
+        
 
 - [X] delete_retention_policy
 - [X] delete_subscription_filter
@@ -55,7 +57,8 @@ logs
 
 - [ ] describe_query_definitions
 - [X] describe_resource_policies
-  Return list of resource policies.
+  
+        Return list of resource policies.
 
         The next_token and limit arguments are ignored.  The maximum
         number of resource policies per region is a small number (less
@@ -79,7 +82,7 @@ logs
         Not all query commands are implemented yet. Please raise an issue if you encounter unexpected results.
         
 
-- [ ] list_tags_for_resource
+- [X] list_tags_for_resource
 - [X] list_tags_log_group
 - [ ] put_account_policy
 - [ ] put_data_protection_policy
@@ -93,15 +96,17 @@ logs
 - [X] put_metric_filter
 - [ ] put_query_definition
 - [X] put_resource_policy
-  Creates/updates resource policy and return policy object
+  
+        Creates/updates resource policy and return policy object
+        
 
 - [X] put_retention_policy
 - [X] put_subscription_filter
 - [X] start_query
 - [ ] stop_query
 - [X] tag_log_group
-- [ ] tag_resource
+- [X] tag_resource
 - [ ] test_metric_filter
 - [X] untag_log_group
-- [ ] untag_resource
+- [X] untag_resource
 
diff --git a/docs/docs/services/resourcegroupstaggingapi.rst b/docs/docs/services/resourcegroupstaggingapi.rst
index af022c2d2..98c033535 100644
--- a/docs/docs/services/resourcegroupstaggingapi.rst
+++ b/docs/docs/services/resourcegroupstaggingapi.rst
@@ -31,6 +31,10 @@ resourcegroupstaggingapi
 - [X] get_tag_keys
 - [X] get_tag_values
 - [ ] start_report_creation
-- [ ] tag_resources
+- [X] tag_resources
+  
+        Only Logs and RDS resources are currently supported
+        
+
 - [ ] untag_resources
 
diff --git a/moto/awslambda/models.py b/moto/awslambda/models.py
index 5987a9a9a..6f96e7321 100644
--- a/moto/awslambda/models.py
+++ b/moto/awslambda/models.py
@@ -761,7 +761,7 @@ class LambdaFunction(CloudFormationModel, DockerModel):
 
     def _invoke_lambda(self, event: Optional[str] = None) -> Tuple[str, bool, str]:
         # Create the LogGroup if necessary, to write the result to
-        self.logs_backend.ensure_log_group(self.logs_group_name, [])
+        self.logs_backend.ensure_log_group(self.logs_group_name)
         # TODO: context not yet implemented
         if event is None:
             event = dict()  # type: ignore[assignment]
diff --git a/moto/batch/models.py b/moto/batch/models.py
index 83abdd52c..a0ef1c80f 100644
--- a/moto/batch/models.py
+++ b/moto/batch/models.py
@@ -858,7 +858,7 @@ class Job(threading.Thread, BaseModel, DockerModel, ManagedState):
 
                     # Send to cloudwatch
                     self.log_stream_name = self._stream_name
-                    self._log_backend.ensure_log_group(self._log_group, None)
+                    self._log_backend.ensure_log_group(self._log_group)
                     self._log_backend.ensure_log_stream(
                         self._log_group, self.log_stream_name
                     )
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json
index 2c62c6a3b..57af429dc 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-1.json
@@ -487,6 +487,38 @@
   "InstanceType": "c7g.xlarge",
   "Location": "euc1-az1"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "euc1-az1"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "euc1-az1"
@@ -1299,6 +1331,38 @@
   "InstanceType": "m7g.xlarge",
   "Location": "euc1-az1"
  },
+ {
+  "InstanceType": "m7gd.12xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "m7gd.16xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "m7gd.2xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "m7gd.4xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "m7gd.8xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "m7gd.large",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "m7gd.medium",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "m7gd.xlarge",
+  "Location": "euc1-az1"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "euc1-az1"
@@ -1883,6 +1947,38 @@
   "InstanceType": "r7g.xlarge",
   "Location": "euc1-az1"
  },
+ {
+  "InstanceType": "r7gd.12xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "r7gd.16xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "r7gd.2xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "r7gd.4xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "r7gd.8xlarge",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "r7gd.large",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "r7gd.medium",
+  "Location": "euc1-az1"
+ },
+ {
+  "InstanceType": "r7gd.xlarge",
+  "Location": "euc1-az1"
+ },
  {
   "InstanceType": "t2.2xlarge",
   "Location": "euc1-az1"
@@ -4719,6 +4815,38 @@
   "InstanceType": "c7g.xlarge",
   "Location": "euc1-az3"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "euc1-az3"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "euc1-az3"
@@ -5671,6 +5799,38 @@
   "InstanceType": "m7g.xlarge",
   "Location": "euc1-az3"
  },
+ {
+  "InstanceType": "m7gd.12xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "m7gd.16xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "m7gd.2xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "m7gd.4xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "m7gd.8xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "m7gd.large",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "m7gd.medium",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "m7gd.xlarge",
+  "Location": "euc1-az3"
+ },
  {
   "InstanceType": "p2.16xlarge",
   "Location": "euc1-az3"
@@ -6299,6 +6459,38 @@
   "InstanceType": "r7g.xlarge",
   "Location": "euc1-az3"
  },
+ {
+  "InstanceType": "r7gd.12xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "r7gd.16xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "r7gd.2xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "r7gd.4xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "r7gd.8xlarge",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "r7gd.large",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "r7gd.medium",
+  "Location": "euc1-az3"
+ },
+ {
+  "InstanceType": "r7gd.xlarge",
+  "Location": "euc1-az3"
+ },
  {
   "InstanceType": "t2.2xlarge",
   "Location": "euc1-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json
index 3a5b8c495..b22b84980 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-north-1.json
@@ -651,6 +651,62 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eun1-az1"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eun1-az1"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eun1-az1"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eun1-az1"
@@ -1663,6 +1719,62 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eun1-az2"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eun1-az2"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eun1-az2"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eun1-az2"
@@ -2755,6 +2867,62 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eun1-az3"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eun1-az3"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eun1-az3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eun1-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 b182d12fb..06071c97e 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
@@ -331,6 +331,62 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "eus2-az1"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eus2-az1"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eus2-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eus2-az1"
@@ -819,6 +875,62 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "eus2-az2"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eus2-az2"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eus2-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eus2-az2"
@@ -1307,6 +1419,62 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "eus2-az3"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eus2-az3"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eus2-az3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eus2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-2.json
index 8a325a96c..ac009b2cc 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-east-2.json
@@ -7523,6 +7523,14 @@
   "InstanceType": "t4g.xlarge",
   "Location": "use2-az3"
  },
+ {
+  "InstanceType": "trn1.2xlarge",
+  "Location": "use2-az3"
+ },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "use2-az3"
+ },
  {
   "InstanceType": "u-3tb1.56xlarge",
   "Location": "use2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json
index 0eb926426..5a6919448 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-1.json
@@ -2595,6 +2595,38 @@
   "InstanceType": "c7g.xlarge",
   "Location": "eu-central-1b"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "eu-central-1b"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "eu-central-1b"
@@ -3547,6 +3579,38 @@
   "InstanceType": "m7g.xlarge",
   "Location": "eu-central-1b"
  },
+ {
+  "InstanceType": "m7gd.12xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "m7gd.16xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "m7gd.2xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "m7gd.4xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "m7gd.8xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "m7gd.large",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "m7gd.medium",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "m7gd.xlarge",
+  "Location": "eu-central-1b"
+ },
  {
   "InstanceType": "p2.16xlarge",
   "Location": "eu-central-1b"
@@ -4175,6 +4239,38 @@
   "InstanceType": "r7g.xlarge",
   "Location": "eu-central-1b"
  },
+ {
+  "InstanceType": "r7gd.12xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "r7gd.16xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "r7gd.2xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "r7gd.4xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "r7gd.8xlarge",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "r7gd.large",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "r7gd.medium",
+  "Location": "eu-central-1b"
+ },
+ {
+  "InstanceType": "r7gd.xlarge",
+  "Location": "eu-central-1b"
+ },
  {
   "InstanceType": "t2.2xlarge",
   "Location": "eu-central-1b"
@@ -4903,6 +4999,38 @@
   "InstanceType": "c7g.xlarge",
   "Location": "eu-central-1c"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "eu-central-1c"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "eu-central-1c"
@@ -5715,6 +5843,38 @@
   "InstanceType": "m7g.xlarge",
   "Location": "eu-central-1c"
  },
+ {
+  "InstanceType": "m7gd.12xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "m7gd.16xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "m7gd.2xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "m7gd.4xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "m7gd.8xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "m7gd.large",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "m7gd.medium",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "m7gd.xlarge",
+  "Location": "eu-central-1c"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-central-1c"
@@ -6299,6 +6459,38 @@
   "InstanceType": "r7g.xlarge",
   "Location": "eu-central-1c"
  },
+ {
+  "InstanceType": "r7gd.12xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "r7gd.16xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "r7gd.2xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "r7gd.4xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "r7gd.8xlarge",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "r7gd.large",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "r7gd.medium",
+  "Location": "eu-central-1c"
+ },
+ {
+  "InstanceType": "r7gd.xlarge",
+  "Location": "eu-central-1c"
+ },
  {
   "InstanceType": "t2.2xlarge",
   "Location": "eu-central-1c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json
index 5a734eb3a..1d95aee63 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-north-1.json
@@ -651,6 +651,62 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eu-north-1a"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-north-1a"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-north-1a"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-north-1a"
@@ -1663,6 +1719,62 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eu-north-1b"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-north-1b"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-north-1b"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-north-1b"
@@ -2755,6 +2867,62 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eu-north-1c"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-north-1c"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-north-1c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-north-1c"
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 27519b1f2..e845b59b1 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
@@ -331,6 +331,62 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "eu-south-2a"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-south-2a"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-south-2a"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2a"
@@ -819,6 +875,62 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "eu-south-2b"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-south-2b"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-south-2b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2b"
@@ -1307,6 +1419,62 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "eu-south-2c"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-south-2c"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-south-2c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-2.json
index 79702896c..f9d425116 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/us-east-2.json
@@ -7523,6 +7523,14 @@
   "InstanceType": "t4g.xlarge",
   "Location": "us-east-2c"
  },
+ {
+  "InstanceType": "trn1.2xlarge",
+  "Location": "us-east-2c"
+ },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "us-east-2c"
+ },
  {
   "InstanceType": "u-3tb1.56xlarge",
   "Location": "us-east-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json b/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json
index 69d5d6f58..50dcb81a1 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-central-1.json
@@ -531,6 +531,38 @@
   "InstanceType": "c7g.xlarge",
   "Location": "eu-central-1"
  },
+ {
+  "InstanceType": "c7gd.12xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "c7gd.16xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "c7gd.2xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "c7gd.4xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "c7gd.8xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "c7gd.large",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "c7gd.medium",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "c7gd.xlarge",
+  "Location": "eu-central-1"
+ },
  {
   "InstanceType": "d2.2xlarge",
   "Location": "eu-central-1"
@@ -1483,6 +1515,38 @@
   "InstanceType": "m7g.xlarge",
   "Location": "eu-central-1"
  },
+ {
+  "InstanceType": "m7gd.12xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "m7gd.16xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "m7gd.2xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "m7gd.4xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "m7gd.8xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "m7gd.large",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "m7gd.medium",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "m7gd.xlarge",
+  "Location": "eu-central-1"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-central-1"
@@ -2115,6 +2179,38 @@
   "InstanceType": "r7g.xlarge",
   "Location": "eu-central-1"
  },
+ {
+  "InstanceType": "r7gd.12xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "r7gd.16xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "r7gd.2xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "r7gd.4xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "r7gd.8xlarge",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "r7gd.large",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "r7gd.medium",
+  "Location": "eu-central-1"
+ },
+ {
+  "InstanceType": "r7gd.xlarge",
+  "Location": "eu-central-1"
+ },
  {
   "InstanceType": "t2.2xlarge",
   "Location": "eu-central-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json b/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json
index a895c6ff7..5baf3da51 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-north-1.json
@@ -691,6 +691,62 @@
   "InstanceType": "m6i.xlarge",
   "Location": "eu-north-1"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-north-1"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-north-1"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-north-1"
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 6200d428b..26f4406af 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
@@ -331,6 +331,62 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "eu-south-2"
  },
+ {
+  "InstanceType": "m7i-flex.2xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i-flex.4xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i-flex.8xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i-flex.large",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i-flex.xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.12xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.16xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.24xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.2xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.48xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.4xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.8xlarge",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.large",
+  "Location": "eu-south-2"
+ },
+ {
+  "InstanceType": "m7i.xlarge",
+  "Location": "eu-south-2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "eu-south-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/us-east-2.json b/moto/ec2/resources/instance_type_offerings/region/us-east-2.json
index 54c50d412..8e7377d70 100644
--- a/moto/ec2/resources/instance_type_offerings/region/us-east-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/us-east-2.json
@@ -2443,6 +2443,14 @@
   "InstanceType": "t4g.xlarge",
   "Location": "us-east-2"
  },
+ {
+  "InstanceType": "trn1.2xlarge",
+  "Location": "us-east-2"
+ },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "us-east-2"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "us-east-2"
diff --git a/moto/ec2/resources/instance_types.json b/moto/ec2/resources/instance_types.json
index 6ab545ab0..38549cb52 100644
--- a/moto/ec2/resources/instance_types.json
+++ b/moto/ec2/resources/instance_types.json
@@ -1206,7 +1206,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -1299,7 +1299,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -1396,7 +1396,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -1494,7 +1494,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -1584,7 +1584,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -30476,7 +30476,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -30575,7 +30575,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": false,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -30680,7 +30680,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -30773,7 +30773,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -30870,7 +30870,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -30960,7 +30960,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -51537,7 +51537,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -51642,7 +51642,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -51735,7 +51735,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -51832,7 +51832,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -51937,7 +51937,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
@@ -52027,7 +52027,7 @@
   "AutoRecoverySupported": true,
   "BareMetal": false,
   "BurstablePerformanceSupported": false,
-  "CurrentGeneration": true,
+  "CurrentGeneration": false,
   "DedicatedHostsSupported": true,
   "EbsInfo": {
    "EbsOptimizedInfo": {
diff --git a/moto/kms/models.py b/moto/kms/models.py
index 461ce5c15..db6c20ae1 100644
--- a/moto/kms/models.py
+++ b/moto/kms/models.py
@@ -167,12 +167,12 @@ class Key(CloudFormationModel):
             return None  # type: ignore[return-value]
         elif self.key_spec in KeySpec.ecc_key_specs():
             if self.key_spec == KeySpec.ECC_NIST_P384:
-                return [SigningAlgorithm.ECDSA_SHA_384]
-            elif self.key_spec == KeySpec.ECC_NIST_P512:
-                return [SigningAlgorithm.ECDSA_SHA_512]
+                return [SigningAlgorithm.ECDSA_SHA_384.value]
+            elif self.key_spec == KeySpec.ECC_NIST_P521:
+                return [SigningAlgorithm.ECDSA_SHA_512.value]
             else:
                 # key_spec is 'ECC_NIST_P256' or 'ECC_SECG_P256K1'
-                return [SigningAlgorithm.ECDSA_SHA_256]
+                return [SigningAlgorithm.ECDSA_SHA_256.value]
         elif self.key_spec in KeySpec.rsa_key_specs():
             return SigningAlgorithm.rsa_signing_algorithms()
         elif self.key_spec == KeySpec.SM2:
diff --git a/moto/kms/utils.py b/moto/kms/utils.py
index 46fff7faf..0e6b322cd 100644
--- a/moto/kms/utils.py
+++ b/moto/kms/utils.py
@@ -12,7 +12,7 @@ from cryptography.hazmat.backends import default_backend
 from cryptography.hazmat.primitives.ciphers import algorithms, Cipher, modes
 from cryptography.hazmat.primitives import hashes, serialization
 from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding
-from cryptography.hazmat.primitives.asymmetric import rsa, padding
+from cryptography.hazmat.primitives.asymmetric import rsa, padding, ec
 
 
 from .exceptions import (
@@ -62,7 +62,7 @@ class KeySpec(str, Enum):
     ECC_NIST_P256 = "ECC_NIST_P256"
     ECC_SECG_P256K1 = "ECC_SECG_P256K1"
     ECC_NIST_P384 = "ECC_NIST_P384"
-    ECC_NIST_P512 = "ECC_NIST_P521"
+    ECC_NIST_P521 = "ECC_NIST_P521"
     SM2 = "SM2"  # China Regions only
     # Symmetric key specs
     SYMMETRIC_DEFAULT = "SYMMETRIC_DEFAULT"
@@ -165,6 +165,16 @@ def validate_signing_algorithm(
         )
 
 
+def validate_key_spec(target_key_spec: str, valid_key_specs: List[str]) -> None:
+    if target_key_spec not in valid_key_specs:
+        raise ValidationException(
+            (
+                "1 validation error detected: Value at 'key_spec' failed "
+                "to satisfy constraint: Member must satisfy enum value set: {valid_key_specs}"
+            ).format(valid_key_specs=valid_key_specs)
+        )
+
+
 class RSAPrivateKey(AbstractPrivateKey):
     # See https://docs.aws.amazon.com/kms/latest/cryptographic-details/crypto-primitives.html
     __supported_key_sizes = [2048, 3072, 4096]
@@ -237,6 +247,57 @@ class RSAPrivateKey(AbstractPrivateKey):
         )
 
 
+class ECDSAPrivateKey(AbstractPrivateKey):
+    def __init__(self, key_spec: str):
+        validate_key_spec(key_spec, KeySpec.ecc_key_specs())
+
+        if key_spec == KeySpec.ECC_NIST_P256:
+            curve = ec.SECP256R1()  # type: ec.EllipticCurve
+            valid_signing_algorithms = ["ECDSA_SHA_256"]  # type: List[str]
+        elif key_spec == KeySpec.ECC_SECG_P256K1:
+            curve = ec.SECP256K1()
+            valid_signing_algorithms = ["ECDSA_SHA_256"]
+        elif key_spec == KeySpec.ECC_NIST_P384:
+            curve = ec.SECP384R1()
+            valid_signing_algorithms = ["ECDSA_SHA_384"]
+        else:
+            curve = ec.SECP521R1()
+            valid_signing_algorithms = ["ECDSA_SHA_512"]
+
+        self.private_key = ec.generate_private_key(curve)
+        self.valid_signing_algorithms = valid_signing_algorithms
+
+    def __hash_algorithm(self, signing_algorithm: str) -> hashes.HashAlgorithm:
+        if signing_algorithm == SigningAlgorithm.ECDSA_SHA_256:
+            algorithm = hashes.SHA256()  # type: Any
+        elif signing_algorithm == SigningAlgorithm.ECDSA_SHA_384:
+            algorithm = hashes.SHA384()
+        else:
+            algorithm = hashes.SHA512()
+        return algorithm
+
+    def sign(self, message: bytes, signing_algorithm: str) -> bytes:
+        validate_signing_algorithm(signing_algorithm, self.valid_signing_algorithms)
+        hash_algorithm = self.__hash_algorithm(signing_algorithm)
+        return self.private_key.sign(message, ec.ECDSA(hash_algorithm))
+
+    def verify(self, message: bytes, signature: bytes, signing_algorithm: str) -> bool:
+        validate_signing_algorithm(signing_algorithm, self.valid_signing_algorithms)
+        hash_algorithm = self.__hash_algorithm(signing_algorithm)
+        public_key = self.private_key.public_key()
+        try:
+            public_key.verify(signature, message, ec.ECDSA(hash_algorithm))
+            return True
+        except InvalidSignature:
+            return False
+
+    def public_key(self) -> bytes:
+        return self.private_key.public_key().public_bytes(
+            encoding=serialization.Encoding.DER,
+            format=serialization.PublicFormat.SubjectPublicKeyInfo,
+        )
+
+
 def generate_private_key(key_spec: str) -> AbstractPrivateKey:
     """Generate a private key to be used on asymmetric sign/verify."""
     if key_spec == KeySpec.RSA_2048:
@@ -245,6 +306,8 @@ def generate_private_key(key_spec: str) -> AbstractPrivateKey:
         return RSAPrivateKey(key_size=3072)
     elif key_spec == KeySpec.RSA_4096:
         return RSAPrivateKey(key_size=4096)
+    elif key_spec in KeySpec.ecc_key_specs():
+        return ECDSAPrivateKey(key_spec)
     else:
         return RSAPrivateKey(key_size=2048)
 
diff --git a/moto/logs/models.py b/moto/logs/models.py
index 6cd2700d5..4fb14dddf 100644
--- a/moto/logs/models.py
+++ b/moto/logs/models.py
@@ -14,6 +14,7 @@ from moto.logs.logs_query import execute_query
 from moto.moto_api._internal import mock_random
 from moto.s3.models import s3_backends
 from moto.utilities.paginator import paginate
+from moto.utilities.tagging_service import TaggingService
 from .utils import PAGINATION_MODEL, EventMessageFilter
 
 MAX_RESOURCE_POLICIES_PER_REGION = 10
@@ -373,7 +374,6 @@ class LogGroup(CloudFormationModel):
         account_id: str,
         region: str,
         name: str,
-        tags: Optional[Dict[str, str]],
         **kwargs: Any,
     ):
         self.name = name
@@ -381,7 +381,6 @@ class LogGroup(CloudFormationModel):
         self.region = region
         self.arn = f"arn:aws:logs:{region}:{account_id}:log-group:{name}"
         self.creation_time = int(unix_time_millis())
-        self.tags = tags
         self.streams: Dict[str, LogStream] = dict()  # {name: LogStream}
         # AWS defaults to Never Expire for log group retention
         self.retention_in_days = kwargs.get("RetentionInDays")
@@ -607,21 +606,6 @@ class LogGroup(CloudFormationModel):
     def set_retention_policy(self, retention_in_days: Optional[str]) -> None:
         self.retention_in_days = retention_in_days
 
-    def list_tags(self) -> Dict[str, str]:
-        return self.tags if self.tags else {}
-
-    def tag(self, tags: Dict[str, str]) -> None:
-        if self.tags:
-            self.tags.update(tags)
-        else:
-            self.tags = tags
-
-    def untag(self, tags_to_remove: List[str]) -> None:
-        if self.tags:
-            self.tags = {
-                k: v for (k, v) in self.tags.items() if k not in tags_to_remove
-            }
-
     def describe_subscription_filters(self) -> Iterable[SubscriptionFilter]:
         return self.subscription_filters.values()
 
@@ -741,6 +725,7 @@ class LogsBackend(BaseBackend):
         self.queries: Dict[str, LogQuery] = dict()
         self.resource_policies: Dict[str, LogResourcePolicy] = dict()
         self.destinations: Dict[str, Destination] = dict()
+        self.tagger = TaggingService()
 
     @staticmethod
     def default_vpc_endpoint_service(
@@ -763,17 +748,18 @@ class LogsBackend(BaseBackend):
                 value=log_group_name,
             )
         self.groups[log_group_name] = LogGroup(
-            self.account_id, self.region_name, log_group_name, tags, **kwargs
+            self.account_id, self.region_name, log_group_name, **kwargs
         )
+        self.tag_resource(self.groups[log_group_name].arn, tags)
         return self.groups[log_group_name]
 
-    def ensure_log_group(
-        self, log_group_name: str, tags: Optional[Dict[str, str]]
-    ) -> None:
+    def ensure_log_group(self, log_group_name: str) -> None:
         if log_group_name in self.groups:
             return
         self.groups[log_group_name] = LogGroup(
-            self.account_id, self.region_name, log_group_name, tags
+            self.account_id,
+            self.region_name,
+            log_group_name,
         )
 
     def delete_log_group(self, log_group_name: str) -> None:
@@ -801,7 +787,11 @@ class LogsBackend(BaseBackend):
         raise ResourceNotFoundException()
 
     def put_destination(
-        self, destination_name: str, role_arn: str, target_arn: str
+        self,
+        destination_name: str,
+        role_arn: str,
+        target_arn: str,
+        tags: Dict[str, str],
     ) -> Destination:
         for _, destination in self.destinations.items():
             if destination.destination_name == destination_name:
@@ -814,6 +804,7 @@ class LogsBackend(BaseBackend):
             self.account_id, self.region_name, destination_name, role_arn, target_arn
         )
         self.destinations[destination.arn] = destination
+        self.tag_resource(destination.arn, tags)
         return destination
 
     def delete_destination(self, destination_name: str) -> None:
@@ -1010,7 +1001,8 @@ class LogsBackend(BaseBackend):
         self.groups[log_group_name].set_retention_policy(None)
 
     def describe_resource_policies(self) -> List[LogResourcePolicy]:
-        """Return list of resource policies.
+        """
+        Return list of resource policies.
 
         The next_token and limit arguments are ignored.  The maximum
         number of resource policies per region is a small number (less
@@ -1022,7 +1014,9 @@ class LogsBackend(BaseBackend):
     def put_resource_policy(
         self, policy_name: str, policy_doc: str
     ) -> LogResourcePolicy:
-        """Creates/updates resource policy and return policy object"""
+        """
+        Creates/updates resource policy and return policy object
+        """
         if policy_name in self.resource_policies:
             policy = self.resource_policies[policy_name]
             policy.update(policy_doc)
@@ -1034,7 +1028,9 @@ class LogsBackend(BaseBackend):
         return policy
 
     def delete_resource_policy(self, policy_name: str) -> None:
-        """Remove resource policy with a policy name matching given name."""
+        """
+        Remove resource policy with a policy name matching given name.
+        """
         if policy_name not in self.resource_policies:
             raise ResourceNotFoundException(
                 msg=f"Policy with name [{policy_name}] does not exist"
@@ -1045,19 +1041,19 @@ class LogsBackend(BaseBackend):
         if log_group_name not in self.groups:
             raise ResourceNotFoundException()
         log_group = self.groups[log_group_name]
-        return log_group.list_tags()
+        return self.list_tags_for_resource(log_group.arn)
 
     def tag_log_group(self, log_group_name: str, tags: Dict[str, str]) -> None:
         if log_group_name not in self.groups:
             raise ResourceNotFoundException()
         log_group = self.groups[log_group_name]
-        log_group.tag(tags)
+        self.tag_resource(log_group.arn, tags)
 
     def untag_log_group(self, log_group_name: str, tags: List[str]) -> None:
         if log_group_name not in self.groups:
             raise ResourceNotFoundException()
         log_group = self.groups[log_group_name]
-        log_group.untag(tags)
+        self.untag_resource(log_group.arn, tags)
 
     def put_metric_filter(
         self,
@@ -1213,5 +1209,14 @@ class LogsBackend(BaseBackend):
             raise ResourceNotFoundException()
         return str(mock_random.uuid4())
 
+    def list_tags_for_resource(self, resource_arn: str) -> Dict[str, str]:
+        return self.tagger.get_tag_dict_for_resource(resource_arn)
+
+    def tag_resource(self, arn: str, tags: Dict[str, str]) -> None:
+        self.tagger.tag_resource(arn, TaggingService.convert_dict_to_tags_input(tags))
+
+    def untag_resource(self, arn: str, tag_keys: List[str]) -> None:
+        self.tagger.untag_resource_using_names(arn, tag_keys)
+
 
 logs_backends = BackendDict(LogsBackend, "logs")
diff --git a/moto/logs/responses.py b/moto/logs/responses.py
index a798b4039..ae7d6d434 100644
--- a/moto/logs/responses.py
+++ b/moto/logs/responses.py
@@ -187,9 +187,13 @@ class LogsResponse(BaseResponse):
         destination_name = self._get_param("destinationName")
         role_arn = self._get_param("roleArn")
         target_arn = self._get_param("targetArn")
+        tags = self._get_param("tags")
 
         destination = self.logs_backend.put_destination(
-            destination_name, role_arn, target_arn
+            destination_name,
+            role_arn,
+            target_arn,
+            tags,
         )
         result = {"destination": destination.to_dict()}
         return json.dumps(result)
@@ -435,3 +439,20 @@ class LogsResponse(BaseResponse):
             log_group_name=log_group_name, destination=destination
         )
         return json.dumps(dict(taskId=str(task_id)))
+
+    def list_tags_for_resource(self) -> str:
+        resource_arn = self._get_param("resourceArn")
+        tags = self.logs_backend.list_tags_for_resource(resource_arn)
+        return json.dumps({"tags": tags})
+
+    def tag_resource(self) -> str:
+        resource_arn = self._get_param("resourceArn")
+        tags = self._get_param("tags")
+        self.logs_backend.tag_resource(resource_arn, tags)
+        return "{}"
+
+    def untag_resource(self) -> str:
+        resource_arn = self._get_param("resourceArn")
+        tag_keys = self._get_param("tagKeys")
+        self.logs_backend.untag_resource(resource_arn, tag_keys)
+        return "{}"
diff --git a/moto/rds/models.py b/moto/rds/models.py
index 10020677b..8405171e7 100644
--- a/moto/rds/models.py
+++ b/moto/rds/models.py
@@ -208,6 +208,9 @@ class Cluster:
                 "timeout_action": "RollbackCapacityChange",
                 "seconds_before_timeout": 300,
             }
+        self.serverless_v2_scaling_configuration = kwargs.get(
+            "serverless_v2_scaling_configuration"
+        )
         self.cluster_members: List[str] = list()
         self.replication_source_identifier = kwargs.get("replication_source_identifier")
         self.read_replica_identifiers: List[str] = list()
@@ -378,6 +381,12 @@ class Cluster:
                 {% if "seconds_before_timeout" in cluster.scaling_configuration %}<SecondsBeforeTimeout>{{ cluster.scaling_configuration["seconds_before_timeout"] }}</SecondsBeforeTimeout>{% endif %}
               </ScalingConfigurationInfo>
               {% endif %}
+              {% if cluster.serverless_v2_scaling_configuration %}
+              <ServerlessV2ScalingConfiguration>
+                {% if "MinCapacity" in cluster.serverless_v2_scaling_configuration %}<MinCapacity>{{ cluster.serverless_v2_scaling_configuration["MinCapacity"] }}</MinCapacity>{% endif %}
+                {% if "MaxCapacity" in cluster.serverless_v2_scaling_configuration %}<MaxCapacity>{{ cluster.serverless_v2_scaling_configuration["MaxCapacity"] }}</MaxCapacity>{% endif %}
+              </ServerlessV2ScalingConfiguration>
+              {% endif %}
               {%- if cluster.global_cluster_identifier -%}
               <GlobalClusterIdentifier>{{ cluster.global_cluster_identifier }}</GlobalClusterIdentifier>
               {%- endif -%}
diff --git a/moto/rds/responses.py b/moto/rds/responses.py
index 1ef2bb3f5..001734ef9 100644
--- a/moto/rds/responses.py
+++ b/moto/rds/responses.py
@@ -178,13 +178,12 @@ class RDSResponse(BaseResponse):
         }
 
     def _get_db_cluster_kwargs(self) -> Dict[str, Any]:
+        params = self._get_params()
         return {
             "availability_zones": self._get_multi_param(
                 "AvailabilityZones.AvailabilityZone"
             ),
-            "enable_cloudwatch_logs_exports": self._get_params().get(
-                "EnableCloudwatchLogsExports"
-            ),
+            "enable_cloudwatch_logs_exports": params.get("EnableCloudwatchLogsExports"),
             "db_name": self._get_param("DatabaseName"),
             "db_cluster_identifier": self._get_param("DBClusterIdentifier"),
             "db_subnet_group_name": self._get_param("DBSubnetGroupName"),
@@ -208,6 +207,9 @@ class RDSResponse(BaseResponse):
             "copy_tags_to_snapshot": self._get_param("CopyTagsToSnapshot"),
             "tags": self.unpack_list_params("Tags", "Tag"),
             "scaling_configuration": self._get_dict_param("ScalingConfiguration."),
+            "serverless_v2_scaling_configuration": params.get(
+                "ServerlessV2ScalingConfiguration"
+            ),
             "replication_source_identifier": self._get_param(
                 "ReplicationSourceIdentifier"
             ),
diff --git a/moto/resourcegroupstaggingapi/models.py b/moto/resourcegroupstaggingapi/models.py
index 67a03e2db..898921b2d 100644
--- a/moto/resourcegroupstaggingapi/models.py
+++ b/moto/resourcegroupstaggingapi/models.py
@@ -10,6 +10,7 @@ from moto.elb.models import elb_backends, ELBBackend
 from moto.elbv2.models import elbv2_backends, ELBv2Backend
 from moto.glue.models import glue_backends, GlueBackend
 from moto.kinesis.models import kinesis_backends, KinesisBackend
+from moto.logs.models import logs_backends, LogsBackend
 from moto.kms.models import kms_backends, KmsBackend
 from moto.rds.models import rds_backends, RDSBackend
 from moto.glacier.models import glacier_backends, GlacierBackend
@@ -31,7 +32,7 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
         # Like 'someuuid': {'gen': <generator>, 'misc': None}
         # Misc is there for peeking from a generator and it cant
         # fit in the current request. As we only store generators
-        # theres not really any point to clean up
+        # there is really no point cleaning up
 
     @property
     def s3_backend(self) -> S3Backend:
@@ -61,6 +62,10 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
     def kms_backend(self) -> KmsBackend:
         return kms_backends[self.account_id][self.region_name]
 
+    @property
+    def logs_backend(self) -> LogsBackend:
+        return logs_backends[self.account_id][self.region_name]
+
     @property
     def rds_backend(self) -> RDSBackend:
         return rds_backends[self.account_id][self.region_name]
@@ -101,7 +106,7 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
                 # Check key matches
                 filters.append(lambda t, v, key=tag_filter_dict["Key"]: t == key)
             elif len(values) == 1:
-                # Check its exactly the same as key, value
+                # Check it's exactly the same as key, value
                 filters.append(
                     lambda t, v, key=tag_filter_dict["Key"], value=values[0]: t == key  # type: ignore
                     and v == value
@@ -371,6 +376,21 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
 
                 yield {"ResourceARN": f"{kms_key.arn}", "Tags": tags}
 
+        # LOGS
+        if (
+            not resource_type_filters
+            or "logs" in resource_type_filters
+            or "logs:loggroup" in resource_type_filters
+        ):
+            for group in self.logs_backend.groups.values():
+                log_tags = self.logs_backend.list_tags_for_resource(group.arn)
+                tags = format_tags(log_tags)
+
+                if not log_tags or not tag_filter(tags):
+                    # Skip if no tags, or invalid filter
+                    continue
+                yield {"ResourceARN": group.arn, "Tags": tags}
+
         # RDS resources
         resource_map: Dict[str, Dict[str, Any]] = {
             "rds:cluster": self.rds_backend.clusters,
@@ -733,7 +753,7 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
         self, resource_arns: List[str], tags: Dict[str, str]
     ) -> Dict[str, Dict[str, Any]]:
         """
-        Only RDS resources are currently supported
+        Only Logs and RDS resources are currently supported
         """
         missing_resources = []
         missing_error: Dict[str, Any] = {
@@ -746,6 +766,8 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
                 self.rds_backend.add_tags_to_resource(
                     arn, TaggingService.convert_dict_to_tags_input(tags)
                 )
+            if arn.startswith("arn:aws:logs:"):
+                self.logs_backend.tag_resource(arn, tags)
             else:
                 missing_resources.append(arn)
         return {arn: missing_error for arn in missing_resources}
diff --git a/moto/ssm/resources/regions.json b/moto/ssm/resources/regions.json
index 2c0848aff..1babc3e19 100644
--- a/moto/ssm/resources/regions.json
+++ b/moto/ssm/resources/regions.json
@@ -18893,6 +18893,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "storagegateway": {
+                "Value": "storagegateway",
+                "endpoint": {
+                  "Value": "storagegateway.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "sts": {
                 "Value": "sts",
                 "endpoint": {
@@ -40115,6 +40124,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "appmesh": {
+                "Value": "appmesh",
+                "endpoint": {
+                  "Value": "appmesh.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "arc-zonal-shift": {
                 "Value": "arc-zonal-shift",
                 "endpoint": {
@@ -40127,6 +40145,15 @@
               "artifact": {
                 "Value": "artifact"
               },
+              "athena": {
+                "Value": "athena",
+                "endpoint": {
+                  "Value": "athena.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "aurora": {
                 "Value": "aurora",
                 "endpoint": {
@@ -40154,6 +40181,24 @@
                   "Value": "HTTPS, HTTP"
                 }
               },
+              "backup": {
+                "Value": "backup",
+                "endpoint": {
+                  "Value": "backup.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "batch": {
+                "Value": "batch",
+                "endpoint": {
+                  "Value": "batch.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "cloudcontrolapi": {
                 "Value": "cloudcontrolapi",
                 "endpoint": {
@@ -40235,6 +40280,24 @@
                   "Value": "HTTPS"
                 }
               },
+              "datasync": {
+                "Value": "datasync",
+                "endpoint": {
+                  "Value": "datasync.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "detective": {
+                "Value": "detective",
+                "endpoint": {
+                  "Value": "api.detective.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "directconnect": {
                 "Value": "directconnect",
                 "endpoint": {
@@ -40418,6 +40481,33 @@
                   "Value": "HTTPS"
                 }
               },
+              "fsx": {
+                "Value": "fsx",
+                "endpoint": {
+                  "Value": "fsx.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "fsx-lustre": {
+                "Value": "fsx-lustre",
+                "endpoint": {
+                  "Value": "fsx.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "fsx-windows": {
+                "Value": "fsx-windows",
+                "endpoint": {
+                  "Value": "fsx.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "glue": {
                 "Value": "glue",
                 "endpoint": {
@@ -40427,6 +40517,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "guardduty": {
+                "Value": "guardduty",
+                "endpoint": {
+                  "Value": "guardduty.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "iam": {
                 "Value": "iam",
                 "endpoint": {
@@ -40490,6 +40589,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "license-manager": {
+                "Value": "license-manager",
+                "endpoint": {
+                  "Value": "license-manager.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "license-manager-linux-subscriptions": {
                 "Value": "license-manager-linux-subscriptions",
                 "endpoint": {
@@ -40520,6 +40628,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "mgn": {
+                "Value": "mgn",
+                "endpoint": {
+                  "Value": "mgn.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "oam": {
                 "Value": "oam",
                 "endpoint": {
@@ -40538,6 +40655,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "outposts": {
+                "Value": "outposts",
+                "endpoint": {
+                  "Value": "outposts.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "pi": {
                 "Value": "pi",
                 "endpoint": {
@@ -40595,6 +40721,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "rekognition": {
+                "Value": "rekognition",
+                "endpoint": {
+                  "Value": "rekognition.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "resource-groups": {
                 "Value": "resource-groups",
                 "endpoint": {
@@ -40640,6 +40775,15 @@
                   "Value": "HTTPS, HTTP"
                 }
               },
+              "s3outposts": {
+                "Value": "s3outposts",
+                "endpoint": {
+                  "Value": "s3-outposts.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "sagemaker": {
                 "Value": "sagemaker",
                 "endpoint": {
@@ -40703,6 +40847,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "service-quotas": {
+                "Value": "service-quotas",
+                "endpoint": {
+                  "Value": "servicequotas.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "servicecatalog": {
                 "Value": "servicecatalog",
                 "endpoint": {
@@ -40721,6 +40874,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ses": {
+                "Value": "ses",
+                "endpoint": {
+                  "Value": "email.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "shield": {
                 "Value": "shield",
                 "endpoint": {
@@ -40730,6 +40892,9 @@
                   "Value": "HTTPS"
                 }
               },
+              "snowcone": {
+                "Value": "snowcone"
+              },
               "sns": {
                 "Value": "sns",
                 "endpoint": {
@@ -40766,6 +40931,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "storagegateway": {
+                "Value": "storagegateway",
+                "endpoint": {
+                  "Value": "storagegateway.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "sts": {
                 "Value": "sts",
                 "endpoint": {
@@ -41622,6 +41796,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "outposts": {
+                "Value": "outposts",
+                "endpoint": {
+                  "Value": "outposts.me-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "pi": {
                 "Value": "pi",
                 "endpoint": {
diff --git a/moto/ssm/resources/services.json b/moto/ssm/resources/services.json
index 9e6a36664..fc4e39d22 100644
--- a/moto/ssm/resources/services.json
+++ b/moto/ssm/resources/services.json
@@ -4035,6 +4035,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "appmesh.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -5306,6 +5315,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "athena.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -6659,6 +6677,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "backup.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -7451,6 +7478,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "batch.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -15379,6 +15415,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "datasync.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -15812,6 +15857,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "api.detective.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -24629,6 +24683,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "fsx.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -24919,6 +24982,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "fsx.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -25609,6 +25681,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "fsx.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -27235,6 +27316,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "guardduty.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -34370,6 +34460,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "license-manager.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -38667,6 +38766,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "mgn.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -41698,6 +41806,24 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "outposts.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
+              "me-central-1": {
+                "Value": "me-central-1",
+                "endpoint": {
+                  "Value": "outposts.me-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -45475,6 +45601,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "rekognition.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "us-east-1": {
                 "Value": "us-east-1",
                 "endpoint": {
@@ -48358,6 +48493,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "s3-outposts.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -51621,6 +51765,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "servicequotas.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -52715,6 +52868,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "email.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-south-1": {
                 "Value": "me-south-1",
                 "endpoint": {
@@ -53817,6 +53979,9 @@
               "eu-west-3": {
                 "Value": "eu-west-3"
               },
+              "il-central-1": {
+                "Value": "il-central-1"
+              },
               "sa-east-1": {
                 "Value": "sa-east-1"
               },
@@ -55883,6 +56048,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-3": {
+                "Value": "ap-southeast-3",
+                "endpoint": {
+                  "Value": "storagegateway.ap-southeast-3.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ap-southeast-4": {
                 "Value": "ap-southeast-4",
                 "endpoint": {
@@ -55991,6 +56165,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "storagegateway.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {


Test patch:
diff --git a/tests/terraformtests/terraform-tests.success.txt b/tests/terraformtests/terraform-tests.success.txt
index cca9beeb6..b3c0f2f87 100644
--- a/tests/terraformtests/terraform-tests.success.txt
+++ b/tests/terraformtests/terraform-tests.success.txt
@@ -367,6 +367,13 @@ lambda:
   - TestAccLambdaFunctionURL_Alias
   - TestAccLambdaFunctionURL_basic
   - TestAccLambdaFunctionURL_TwoURLs
+logs:
+  - TestAccLogsDestination_
+  - TestAccLogsGroupDataSource_basic
+  - TestAccLogsGroupsDataSource_basic
+  - TestAccLogsGroup_basic
+  - TestAccLogsGroup_tags
+  - TestAccLogsStream
 meta:
   - TestAccMetaBillingServiceAccountDataSource
 mq:
diff --git a/tests/test_kms/test_kms_boto3.py b/tests/test_kms/test_kms_boto3.py
index c0f9682a3..b2db4817a 100644
--- a/tests/test_kms/test_kms_boto3.py
+++ b/tests/test_kms/test_kms_boto3.py
@@ -1233,7 +1233,10 @@ def test_fail_verify_digest_message_type_RSA(
     digest = hashes.Hash(hashes.SHA256())
     digest.update(b"this works")
     digest.update(b"as well")
+    falsified_digest = digest.copy()
     message = digest.finalize()
+    falsified_digest.update(b"This sentence has been falsified")
+    falsified_message = falsified_digest.finalize()
 
     sign_response = client.sign(
         KeyId=key_id,
@@ -1242,6 +1245,16 @@ def test_fail_verify_digest_message_type_RSA(
         MessageType="DIGEST",
     )
 
+    # Verification fails if a message has been falsified.
+    verify_response = client.verify(
+        KeyId=key_id,
+        Message=falsified_message,
+        Signature=sign_response["Signature"],
+        SigningAlgorithm=signing_algorithm,
+    )
+    assert verify_response["SignatureValid"] is False
+
+    # Verification fails if a different signing algorithm is used than the one used in signature.
     verify_response = client.verify(
         KeyId=key_id,
         Message=message,
@@ -1252,6 +1265,133 @@ def test_fail_verify_digest_message_type_RSA(
     assert verify_response["SignatureValid"] is False
 
 
+@mock_kms
+@pytest.mark.parametrize(
+    "key_spec, signing_algorithm",
+    [
+        ("ECC_NIST_P256", "ECDSA_SHA_256"),
+        ("ECC_SECG_P256K1", "ECDSA_SHA_256"),
+        ("ECC_NIST_P384", "ECDSA_SHA_384"),
+        ("ECC_NIST_P521", "ECDSA_SHA_512"),
+    ],
+)
+def test_sign_and_verify_digest_message_type_ECDSA(key_spec, signing_algorithm):
+    client = boto3.client("kms", region_name="us-west-2")
+
+    key = client.create_key(
+        Description="sign-key", KeyUsage="SIGN_VERIFY", KeySpec=key_spec
+    )
+    key_id = key["KeyMetadata"]["KeyId"]
+
+    digest = hashes.Hash(hashes.SHA256())
+    digest.update(b"this works")
+    digest.update(b"as well")
+    message = digest.finalize()
+
+    sign_response = client.sign(
+        KeyId=key_id,
+        Message=message,
+        SigningAlgorithm=signing_algorithm,
+        MessageType="DIGEST",
+    )
+
+    verify_response = client.verify(
+        KeyId=key_id,
+        Message=message,
+        Signature=sign_response["Signature"],
+        SigningAlgorithm=signing_algorithm,
+    )
+
+    assert verify_response["SignatureValid"] is True
+
+
+@mock_kms
+@pytest.mark.parametrize(
+    "key_spec, signing_algorithm, valid_signing_algorithms",
+    [
+        ("ECC_NIST_P256", "ECDSA_SHA_384", ["ECDSA_SHA_256"]),
+        ("ECC_SECG_P256K1", "ECDSA_SHA_512", ["ECDSA_SHA_256"]),
+        ("ECC_NIST_P384", "ECDSA_SHA_256", ["ECDSA_SHA_384"]),
+        ("ECC_NIST_P521", "ECDSA_SHA_384", ["ECDSA_SHA_512"]),
+    ],
+)
+def test_invalid_signing_algorithm_for_key_spec_type_ECDSA(
+    key_spec, signing_algorithm, valid_signing_algorithms
+):
+    client = boto3.client("kms", region_name="us-west-2")
+
+    key = client.create_key(
+        Description="sign-key", KeyUsage="SIGN_VERIFY", KeySpec=key_spec
+    )
+    key_id = key["KeyMetadata"]["KeyId"]
+
+    digest = hashes.Hash(hashes.SHA256())
+    digest.update(b"this works")
+    digest.update(b"as well")
+    message = digest.finalize()
+
+    with pytest.raises(ClientError) as ex:
+        _ = client.sign(
+            KeyId=key_id,
+            Message=message,
+            SigningAlgorithm=signing_algorithm,
+            MessageType="DIGEST",
+        )
+    err = ex.value.response["Error"]
+    assert err["Code"] == "ValidationException"
+    assert err["Message"] == (
+        "1 validation error detected: Value '{signing_algorithm}' at 'SigningAlgorithm' failed "
+        "to satisfy constraint: Member must satisfy enum value set: "
+        "{valid_sign_algorithms}"
+    ).format(
+        signing_algorithm=signing_algorithm,
+        valid_sign_algorithms=valid_signing_algorithms,
+    )
+
+
+@mock_kms
+@pytest.mark.parametrize(
+    "key_spec, signing_algorithm",
+    [
+        ("ECC_NIST_P256", "ECDSA_SHA_256"),
+        ("ECC_SECG_P256K1", "ECDSA_SHA_256"),
+        ("ECC_NIST_P384", "ECDSA_SHA_384"),
+        ("ECC_NIST_P521", "ECDSA_SHA_512"),
+    ],
+)
+def test_fail_verify_digest_message_type_ECDSA(key_spec, signing_algorithm):
+    client = boto3.client("kms", region_name="us-west-2")
+
+    key = client.create_key(
+        Description="sign-key", KeyUsage="SIGN_VERIFY", KeySpec=key_spec
+    )
+    key_id = key["KeyMetadata"]["KeyId"]
+
+    digest = hashes.Hash(hashes.SHA256())
+    digest.update(b"this works")
+    digest.update(b"as well")
+    falsified_digest = digest.copy()
+    message = digest.finalize()
+    falsified_digest.update(b"This sentence has been falsified")
+    falsified_message = falsified_digest.finalize()
+
+    sign_response = client.sign(
+        KeyId=key_id,
+        Message=message,
+        SigningAlgorithm=signing_algorithm,
+        MessageType="DIGEST",
+    )
+
+    verify_response = client.verify(
+        KeyId=key_id,
+        Message=falsified_message,
+        Signature=sign_response["Signature"],
+        SigningAlgorithm=signing_algorithm,
+    )
+
+    assert verify_response["SignatureValid"] is False
+
+
 @mock_kms
 def test_sign_invalid_key_usage():
     client = boto3.client("kms", region_name="us-west-2")
diff --git a/tests/test_kms/test_utils.py b/tests/test_kms/test_utils.py
index 039b7ab36..03e8b8d4e 100644
--- a/tests/test_kms/test_utils.py
+++ b/tests/test_kms/test_utils.py
@@ -20,6 +20,7 @@ from moto.kms.utils import (
     KeySpec,
     SigningAlgorithm,
     RSAPrivateKey,
+    ECDSAPrivateKey,
 )
 
 ENCRYPTION_CONTEXT_VECTORS = [
@@ -69,7 +70,7 @@ def test_KeySpec_Enum():
             KeySpec.ECC_NIST_P256,
             KeySpec.ECC_SECG_P256K1,
             KeySpec.ECC_NIST_P384,
-            KeySpec.ECC_NIST_P512,
+            KeySpec.ECC_NIST_P521,
         ]
     )
     assert KeySpec.hmac_key_specs() == sorted(
@@ -106,6 +107,15 @@ def test_RSAPrivateKey_invalid_key_size():
     )
 
 
+def test_ECDSAPrivateKey_invalid_key_spec():
+    with pytest.raises(ValidationException) as ex:
+        _ = ECDSAPrivateKey(key_spec="InvalidKeySpec")
+    assert (
+        ex.value.message
+        == "1 validation error detected: Value at 'key_spec' failed to satisfy constraint: Member must satisfy enum value set: ['ECC_NIST_P256', 'ECC_NIST_P384', 'ECC_NIST_P521', 'ECC_SECG_P256K1']"
+    )
+
+
 def test_generate_data_key():
     test = generate_data_key(123)
 
diff --git a/tests/test_logs/test_logs.py b/tests/test_logs/test_logs.py
index 2dfe9b3b6..350754ccb 100644
--- a/tests/test_logs/test_logs.py
+++ b/tests/test_logs/test_logs.py
@@ -440,7 +440,7 @@ def test_create_log_group(kms_key_id):
         create_logs_params["kmsKeyId"] = kms_key_id
 
     # When
-    response = conn.create_log_group(**create_logs_params)
+    conn.create_log_group(**create_logs_params)
     response = conn.describe_log_groups()
 
     # Then
@@ -992,16 +992,16 @@ def test_list_tags_log_group():
     log_group_name = "dummy"
     tags = {"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2"}
 
-    response = conn.create_log_group(logGroupName=log_group_name)
+    conn.create_log_group(logGroupName=log_group_name)
     response = conn.list_tags_log_group(logGroupName=log_group_name)
     assert response["tags"] == {}
 
-    response = conn.delete_log_group(logGroupName=log_group_name)
-    response = conn.create_log_group(logGroupName=log_group_name, tags=tags)
+    conn.delete_log_group(logGroupName=log_group_name)
+    conn.create_log_group(logGroupName=log_group_name, tags=tags)
     response = conn.list_tags_log_group(logGroupName=log_group_name)
     assert response["tags"] == tags
 
-    response = conn.delete_log_group(logGroupName=log_group_name)
+    conn.delete_log_group(logGroupName=log_group_name)
 
 
 @mock_logs
@@ -1009,47 +1009,43 @@ def test_tag_log_group():
     conn = boto3.client("logs", TEST_REGION)
     log_group_name = "dummy"
     tags = {"tag_key_1": "tag_value_1"}
-    response = conn.create_log_group(logGroupName=log_group_name)
+    conn.create_log_group(logGroupName=log_group_name)
 
-    response = conn.tag_log_group(logGroupName=log_group_name, tags=tags)
+    conn.tag_log_group(logGroupName=log_group_name, tags=tags)
     response = conn.list_tags_log_group(logGroupName=log_group_name)
     assert response["tags"] == tags
 
     tags_with_added_value = {"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2"}
-    response = conn.tag_log_group(
-        logGroupName=log_group_name, tags={"tag_key_2": "tag_value_2"}
-    )
+    conn.tag_log_group(logGroupName=log_group_name, tags={"tag_key_2": "tag_value_2"})
     response = conn.list_tags_log_group(logGroupName=log_group_name)
     assert response["tags"] == tags_with_added_value
 
     tags_with_updated_value = {"tag_key_1": "tag_value_XX", "tag_key_2": "tag_value_2"}
-    response = conn.tag_log_group(
-        logGroupName=log_group_name, tags={"tag_key_1": "tag_value_XX"}
-    )
+    conn.tag_log_group(logGroupName=log_group_name, tags={"tag_key_1": "tag_value_XX"})
     response = conn.list_tags_log_group(logGroupName=log_group_name)
     assert response["tags"] == tags_with_updated_value
 
-    response = conn.delete_log_group(logGroupName=log_group_name)
+    conn.delete_log_group(logGroupName=log_group_name)
 
 
 @mock_logs
 def test_untag_log_group():
     conn = boto3.client("logs", TEST_REGION)
     log_group_name = "dummy"
-    response = conn.create_log_group(logGroupName=log_group_name)
+    conn.create_log_group(logGroupName=log_group_name)
 
     tags = {"tag_key_1": "tag_value_1", "tag_key_2": "tag_value_2"}
-    response = conn.tag_log_group(logGroupName=log_group_name, tags=tags)
+    conn.tag_log_group(logGroupName=log_group_name, tags=tags)
     response = conn.list_tags_log_group(logGroupName=log_group_name)
     assert response["tags"] == tags
 
     tags_to_remove = ["tag_key_1"]
     remaining_tags = {"tag_key_2": "tag_value_2"}
-    response = conn.untag_log_group(logGroupName=log_group_name, tags=tags_to_remove)
+    conn.untag_log_group(logGroupName=log_group_name, tags=tags_to_remove)
     response = conn.list_tags_log_group(logGroupName=log_group_name)
     assert response["tags"] == remaining_tags
 
-    response = conn.delete_log_group(logGroupName=log_group_name)
+    conn.delete_log_group(logGroupName=log_group_name)
 
 
 @mock_logs
diff --git a/tests/test_logs/test_logs_tags.py b/tests/test_logs/test_logs_tags.py
new file mode 100644
index 000000000..acef5da1f
--- /dev/null
+++ b/tests/test_logs/test_logs_tags.py
@@ -0,0 +1,40 @@
+import boto3
+
+from moto import mock_logs
+
+
+@mock_logs
+def test_destination_tags():
+    logs = boto3.client("logs", "us-west-2")
+    destination_name = "test-destination"
+    role_arn = "arn:aws:iam::123456789012:role/my-subscription-role"
+    target_arn = "arn:aws:kinesis:us-east-1:123456789012:stream/my-kinesis-stream"
+
+    destination_arn = logs.put_destination(
+        destinationName=destination_name,
+        targetArn=target_arn,
+        roleArn=role_arn,
+        tags={"key1": "val1"},
+    )["destination"]["arn"]
+
+    _verify_tag_operations(destination_arn, logs)
+
+
+@mock_logs
+def test_log_groups_tags():
+    logs = boto3.client("logs", "us-west-2")
+    log_group_name = "test"
+
+    logs.create_log_group(logGroupName=log_group_name, tags={"key1": "val1"})
+    arn = logs.describe_log_groups()["logGroups"][0]["arn"]
+
+    _verify_tag_operations(arn, logs)
+
+
+def _verify_tag_operations(arn, logs):
+    logs.tag_resource(resourceArn=arn, tags={"key2": "val2"})
+    tags = logs.list_tags_for_resource(resourceArn=arn)["tags"]
+    assert tags == {"key1": "val1", "key2": "val2"}
+    logs.untag_resource(resourceArn=arn, tagKeys=["key2"])
+    tags = logs.list_tags_for_resource(resourceArn=arn)["tags"]
+    assert tags == {"key1": "val1"}
diff --git a/tests/test_logs/test_models.py b/tests/test_logs/test_models.py
index d010d4874..18c25eb8f 100644
--- a/tests/test_logs/test_models.py
+++ b/tests/test_logs/test_models.py
@@ -6,14 +6,13 @@ def test_log_group_to_describe_dict():
     # Given
     region = "us-east-1"
     name = "test-log-group"
-    tags = {"TestTag": "TestValue"}
     kms_key_id = (
         "arn:aws:kms:us-east-1:000000000000:key/51d81fab-b138-4bd2-8a09-07fd6d37224d"
     )
     kwargs = dict(kmsKeyId=kms_key_id)
 
     # When
-    log_group = LogGroup(DEFAULT_ACCOUNT_ID, region, name, tags, **kwargs)
+    log_group = LogGroup(DEFAULT_ACCOUNT_ID, region, name, **kwargs)
     describe_dict = log_group.to_describe_dict()
 
     # Then
diff --git a/tests/test_rds/test_rds_clusters.py b/tests/test_rds/test_rds_clusters.py
index c047e276e..3190bc8ae 100644
--- a/tests/test_rds/test_rds_clusters.py
+++ b/tests/test_rds/test_rds_clusters.py
@@ -219,6 +219,10 @@ def test_create_db_cluster_additional_parameters():
             "MinCapacity": 5,
             "AutoPause": True,
         },
+        ServerlessV2ScalingConfiguration={
+            "MinCapacity": 2,
+            "MaxCapacity": 4,
+        },
         VpcSecurityGroupIds=["sg1", "sg2"],
     )
 
@@ -236,6 +240,10 @@ def test_create_db_cluster_additional_parameters():
     assert cluster["NetworkType"] == "IPV4"
     assert cluster["DBSubnetGroup"] == "subnetgroupname"
     assert cluster["ScalingConfigurationInfo"] == {"MinCapacity": 5, "AutoPause": True}
+    assert cluster["ServerlessV2ScalingConfiguration"] == {
+        "MaxCapacity": 4.0,
+        "MinCapacity": 2.0,
+    }
 
     security_groups = cluster["VpcSecurityGroups"]
     assert len(security_groups) == 2
diff --git a/tests/test_resourcegroupstaggingapi/test_resourcegroupstagging_logs.py b/tests/test_resourcegroupstaggingapi/test_resourcegroupstagging_logs.py
new file mode 100644
index 000000000..9bae4d153
--- /dev/null
+++ b/tests/test_resourcegroupstaggingapi/test_resourcegroupstagging_logs.py
@@ -0,0 +1,41 @@
+import boto3
+import unittest
+
+from moto import mock_logs
+from moto import mock_resourcegroupstaggingapi
+
+
+@mock_logs
+@mock_resourcegroupstaggingapi
+class TestLogsTagging(unittest.TestCase):
+    def setUp(self) -> None:
+        self.logs = boto3.client("logs", region_name="us-east-2")
+        self.rtapi = boto3.client("resourcegroupstaggingapi", region_name="us-east-2")
+        self.resources_tagged = []
+        self.resources_untagged = []
+        for i in range(3):
+            self.logs.create_log_group(logGroupName=f"test{i}", tags={"key1": "val1"})
+        self.arns = [lg["arn"] for lg in self.logs.describe_log_groups()["logGroups"]]
+
+    def test_get_resources_logs(self):
+        resp = self.rtapi.get_resources(ResourceTypeFilters=["logs"])
+        assert len(resp["ResourceTagMappingList"]) == 3
+
+        resp = self.rtapi.get_resources(ResourceTypeFilters=["logs:loggroup"])
+        assert len(resp["ResourceTagMappingList"]) == 3
+
+    def test_tag_resources_logs(self):
+        # WHEN
+        # we tag resources
+        self.rtapi.tag_resources(
+            ResourceARNList=self.arns,
+            Tags={"key2": "val2"},
+        )
+
+        # THEN
+        # we can retrieve the tags using the RDS API
+        def get_tags(arn):
+            return self.logs.list_tags_for_resource(resourceArn=arn)["tags"]
+
+        for arn in self.arns:
+            assert get_tags(arn) == {"key1": "val1", "key2": "val2"}