Repository: getmoto/moto
Pull request #8574 (2025-02-07 15:10:04)

Allow non kms origin in create_key
This is a change to allow the 'Origin' parameter in create_key to affect the origin of the mocked key.



Patch:
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index cd69f6351..8a77afccf 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,22 +1,126 @@
 {
   "name": "moto",
-  "image": "mcr.microsoft.com/devcontainers/python:0-3.11",
-  "remoteUser": "root",
+  "image": "mcr.microsoft.com/devcontainers/python:3.11",
   "features": {
-    "ghcr.io/devcontainers/features/docker-in-docker:2": {}
+    "ghcr.io/devcontainers/features/docker-in-docker:2": {},
+    "ghcr.io/devcontainers/features/github-cli:1": {}
   },
+  "portsAttributes": {
+    "5000": {
+      "onAutoForward": "silent",
+      "elevateIfNeeded": true,
+      "protocol": "http",
+      "requireLocalPort": false
+    }
+  },
+  "postCreateCommand": "python -m venv .venv",
+  "postStartCommand": ". .venv/bin/activate && make init",
   "customizations": {
     "vscode": {
-      "extensions": ["ms-vscode.makefile-tools", "ms-python.python", "ms-python.black-formatter"],
+      "extensions": [
+        "ms-vscode.makefile-tools",
+        "ms-python.python",
+        "ms-python.black-formatter"
+      ],
       "settings": {
+        "editor.formatOnSave": true,
         "python.defaultInterpreterPath": "${workspaceFolder}/.venv",
         "python.formatting.provider": "none",
         "[python]": {
           "editor.defaultFormatter": "ms-python.black-formatter"
+        },
+        "tasks": {
+          "version": "2.0.0",
+          "tasks": [
+            {
+              "label": "Open Port 5000",
+              "type": "shell",
+              "command": "bash",
+              "args": [
+                "-c",
+                "until gh codespace ports visibility 5000:public --codespace ${CODESPACE_NAME} 2>/dev/null; do sleep 1; done"
+              ],
+              "presentation": {
+                "reveal": "silent",
+                "focus": false
+              }
+            },
+            {
+              "label": "Kill MotoServer",
+              "type": "shell",
+              "command": "pkill -f '${workspaceFolder}/moto/server.py'",
+              "problemMatcher": [],
+              "presentation": {
+                "reveal": "silent",
+                "focus": false
+              }
+            }
+          ]
+        },
+        "launch": {
+          "version": "0.2.0",
+          "configurations": [
+            {
+              "name": "Run MotoServer",
+              "type": "debugpy",
+              "request": "launch",
+              "program": "${workspaceFolder}/moto/server.py",
+              "args": [
+                "--reload"
+              ],
+              "console": "internalConsole",
+              "presentation": {
+                "order": 11
+              }
+            },
+            {
+              "name": "Run MotoServer Tests",
+              "type": "debugpy",
+              "request": "launch",
+              "module": "pytest",
+              "console": "integratedTerminal",
+              "preLaunchTask": "Open Port 5000",
+              "postDebugTask": "Kill MotoServer",
+              "env": {
+                "TEST_SERVER_MODE": "true",
+                "TEST_SERVER_MODE_ENDPOINT": "https://${env:CODESPACE_NAME}-5000.${env:GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}"
+              },
+              "presentation": {
+                "order": 12
+              },
+              "args": [
+                "-sv",
+                "--cov=moto",
+                "--cov-report=xml",
+                "${workspaceFolder}/tests/",
+                "-k",
+                "${input:pytestFilter}"
+              ]
+            }
+          ],
+          "inputs": [
+            {
+              "id": "pytestFilter",
+              "type": "promptString",
+              "description": "pytest -k filter (leave empty to run all tests)",
+              "default": ""
+            }
+          ],
+          "compounds": [
+            {
+              "name": "MotoServer Tests",
+              "configurations": [
+                "Run MotoServer Tests",
+                "Run MotoServer"
+              ],
+              "presentation": {
+                "order": 1
+              },
+              "stopAll": true
+            }
+          ]
         }
       }
     }
-  },
-  "postCreateCommand": "python -m venv .venv",
-  "postStartCommand": ". .venv/bin/activate && make init"
-}
+  }
+}
\ No newline at end of file
diff --git a/moto/backend_index.py b/moto/backend_index.py
index 213550592..e0d9e277f 100644
--- a/moto/backend_index.py
+++ b/moto/backend_index.py
@@ -205,6 +205,10 @@ backend_url_patterns = [
     ("support", re.compile("https?://support\\.(.+)\\.amazonaws\\.com")),
     ("swf", re.compile("https?://swf\\.(.+)\\.amazonaws\\.com")),
     ("textract", re.compile("https?://textract\\.(.+)\\.amazonaws\\.com")),
+    (
+        "timestreaminfluxdb",
+        re.compile("https?://timestream-influxdb\\.(.+)\\.amazonaws\\.com"),
+    ),
     (
         "timestreamquery",
         re.compile("https?://query\\.timestream\\.(.+)\\.amazonaws\\.com"),
diff --git a/moto/backends.py b/moto/backends.py
index aa0fe4c1b..0d918c6ed 100644
--- a/moto/backends.py
+++ b/moto/backends.py
@@ -146,6 +146,7 @@ if TYPE_CHECKING:
     from moto.support.models import SupportBackend
     from moto.swf.models import SWFBackend
     from moto.textract.models import TextractBackend
+    from moto.timestreaminfluxdb.models import TimestreamInfluxDBBackend
     from moto.timestreamquery.models import TimestreamQueryBackend
     from moto.timestreamwrite.models import TimestreamWriteBackend
     from moto.transcribe.models import TranscribeBackend
@@ -330,6 +331,7 @@ SERVICE_NAMES = Union[
     "Literal['support']",
     "Literal['swf']",
     "Literal['textract']",
+    "Literal['timestream-influxdb']",
     "Literal['timestream-query']",
     "Literal['timestream-write']",
     "Literal['transcribe']",
@@ -734,6 +736,10 @@ def get_backend(name: "Literal['swf']") -> "BackendDict[SWFBackend]": ...
 @overload
 def get_backend(name: "Literal['textract']") -> "BackendDict[TextractBackend]": ...
 @overload
+def get_backend(
+    name: "Literal['timestream-influxdb']",
+) -> "BackendDict[TimestreamInfluxDBBackend]": ...
+@overload
 def get_backend(
     name: "Literal['timestream-query']",
 ) -> "BackendDict[TimestreamQueryBackend]": ...
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json
index af9a07bd5..4ae974a95 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-2.json
@@ -5327,6 +5327,46 @@
   "InstanceType": "c6i.xlarge",
   "Location": "apne2-az4"
  },
+ {
+  "InstanceType": "c6in.12xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.16xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.24xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.2xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.32xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.4xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.8xlarge",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.large",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.metal",
+  "Location": "apne2-az4"
+ },
+ {
+  "InstanceType": "c6in.xlarge",
+  "Location": "apne2-az4"
+ },
  {
   "InstanceType": "c7g.12xlarge",
   "Location": "apne2-az4"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json
index f211b6682..2b104a7ce 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-northeast-3.json
@@ -1479,6 +1479,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apne3-az2"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apne3-az2"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apne3-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apne3-az2"
@@ -2343,6 +2379,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apne3-az3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apne3-az3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apne3-az3"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "apne3-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json
index aed88d333..756540e3a 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-south-1.json
@@ -4151,6 +4151,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "aps1-az2"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "aps1-az2"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "aps1-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json
index b77d703c0..ffe3b6121 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-2.json
@@ -2555,6 +2555,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "apse2-az1"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "apse2-az1"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "apse2-az1"
@@ -5143,6 +5147,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "apse2-az2"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "apse2-az2"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "apse2-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
index 214af4216..00e209f1a 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-3.json
@@ -579,6 +579,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse3-az1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apse3-az1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apse3-az1"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "apse3-az1"
@@ -643,6 +679,10 @@
   "InstanceType": "m7i.xlarge",
   "Location": "apse3-az1"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "apse3-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse3-az1"
@@ -1591,6 +1631,10 @@
   "InstanceType": "m7i.xlarge",
   "Location": "apse3-az2"
  },
+ {
+  "InstanceType": "p5en.48xlarge",
+  "Location": "apse3-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse3-az2"
@@ -2443,6 +2487,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "apse3-az3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apse3-az3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apse3-az3"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "apse3-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json
index 26850f6b0..6602cdc35 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/ap-southeast-4.json
@@ -387,6 +387,42 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "apse4-az1"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apse4-az1"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apse4-az1"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse4-az1"
@@ -943,6 +979,42 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "apse4-az2"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apse4-az2"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apse4-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse4-az2"
@@ -1495,6 +1567,42 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "apse4-az3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "apse4-az3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "apse4-az3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "apse4-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json
index 5609bab20..491148e87 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-central-2.json
@@ -1047,6 +1047,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "euc2-az2"
  },
+ {
+  "InstanceType": "c7g.12xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.16xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.2xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.4xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.8xlarge",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.large",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.medium",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.metal",
+  "Location": "euc2-az2"
+ },
+ {
+  "InstanceType": "c7g.xlarge",
+  "Location": "euc2-az2"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "euc2-az2"
@@ -1951,6 +1987,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "euc2-az3"
  },
+ {
+  "InstanceType": "c7g.12xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.16xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.2xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.4xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.8xlarge",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.large",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.medium",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.metal",
+  "Location": "euc2-az3"
+ },
+ {
+  "InstanceType": "c7g.xlarge",
+  "Location": "euc2-az3"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "euc2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
index 35eba9a74..1baf503cd 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/eu-west-2.json
@@ -1243,6 +1243,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "euw2-az1"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "euw2-az1"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "euw2-az1"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "euw2-az1"
@@ -3295,6 +3343,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "euw2-az2"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "euw2-az2"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "euw2-az2"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "euw2-az2"
@@ -3315,6 +3411,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "euw2-az2"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "euw2-az2"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "euw2-az2"
@@ -5227,6 +5327,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "euw2-az3"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "euw2-az3"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "euw2-az3"
+ },
  {
   "InstanceType": "p3.16xlarge",
   "Location": "euw2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json
index 67c940034..a53afeb61 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/sa-east-1.json
@@ -3195,6 +3195,10 @@
   "InstanceType": "m7i.xlarge",
   "Location": "sae1-az2"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "sae1-az2"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "sae1-az2"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json
index 1fc33e540..300a53bfe 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone-id/us-west-2.json
@@ -8911,6 +8911,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "usw2-az3"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "usw2-az3"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "usw2-az3"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json
index 4bb0a4b28..8c5d7a065 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-2.json
@@ -5327,6 +5327,46 @@
   "InstanceType": "c6i.xlarge",
   "Location": "ap-northeast-2d"
  },
+ {
+  "InstanceType": "c6in.12xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.16xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.24xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.2xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.32xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.4xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.8xlarge",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.large",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.metal",
+  "Location": "ap-northeast-2d"
+ },
+ {
+  "InstanceType": "c6in.xlarge",
+  "Location": "ap-northeast-2d"
+ },
  {
   "InstanceType": "c7g.12xlarge",
   "Location": "ap-northeast-2d"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json
index 17de5de34..f9ba916e0 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-northeast-3.json
@@ -575,6 +575,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-3a"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-northeast-3a"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-northeast-3a"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "ap-northeast-3a"
@@ -2343,6 +2379,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-3c"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-northeast-3c"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-northeast-3c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-northeast-3c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json
index 42de8b9a8..4380d9cab 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-south-1.json
@@ -6391,6 +6391,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "ap-south-1c"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "ap-south-1c"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "ap-south-1c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json
index e9d44b10d..419a5cb94 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-2.json
@@ -4991,6 +4991,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "ap-southeast-2b"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "ap-southeast-2b"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "ap-southeast-2b"
@@ -7579,6 +7583,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "ap-southeast-2c"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "ap-southeast-2c"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "ap-southeast-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
index aa2b7bd8b..18b109410 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-3.json
@@ -579,6 +579,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3a"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-3a"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-3a"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "ap-southeast-3a"
@@ -643,6 +679,10 @@
   "InstanceType": "m7i.xlarge",
   "Location": "ap-southeast-3a"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "ap-southeast-3a"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-3a"
@@ -1591,6 +1631,10 @@
   "InstanceType": "m7i.xlarge",
   "Location": "ap-southeast-3b"
  },
+ {
+  "InstanceType": "p5en.48xlarge",
+  "Location": "ap-southeast-3b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-3b"
@@ -2443,6 +2487,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3c"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-3c"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-3c"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "ap-southeast-3c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json
index b4e44d569..28fa6b9dd 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/ap-southeast-4.json
@@ -387,6 +387,42 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "ap-southeast-4a"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-4a"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-4a"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-4a"
@@ -943,6 +979,42 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "ap-southeast-4b"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-4b"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-4b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-4b"
@@ -1495,6 +1567,42 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "ap-southeast-4c"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-4c"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-4c"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-4c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json
index b735ba82c..78e41681a 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-central-2.json
@@ -1047,6 +1047,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "eu-central-2b"
  },
+ {
+  "InstanceType": "c7g.12xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.16xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.2xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.4xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.8xlarge",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.large",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.medium",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.metal",
+  "Location": "eu-central-2b"
+ },
+ {
+  "InstanceType": "c7g.xlarge",
+  "Location": "eu-central-2b"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "eu-central-2b"
@@ -1951,6 +1987,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "eu-central-2c"
  },
+ {
+  "InstanceType": "c7g.12xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.16xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.2xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.4xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.8xlarge",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.large",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.medium",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.metal",
+  "Location": "eu-central-2c"
+ },
+ {
+  "InstanceType": "c7g.xlarge",
+  "Location": "eu-central-2c"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "eu-central-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
index b4c685a5f..af25d37ce 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/eu-west-2.json
@@ -1371,6 +1371,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-west-2a"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-west-2a"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-west-2a"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-west-2a"
@@ -1391,6 +1439,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "eu-west-2a"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "eu-west-2a"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "eu-west-2a"
@@ -3303,6 +3355,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-west-2b"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-west-2b"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-west-2b"
+ },
  {
   "InstanceType": "p3.16xlarge",
   "Location": "eu-west-2b"
@@ -5199,6 +5299,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-west-2c"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-west-2c"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-west-2c"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-west-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json b/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json
index 6a7276f6e..65209499e 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/sa-east-1.json
@@ -3195,6 +3195,10 @@
   "InstanceType": "m7i.xlarge",
   "Location": "sa-east-1b"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "sa-east-1b"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "sa-east-1b"
diff --git a/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json b/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json
index 605c2c309..cff8135e6 100644
--- a/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/availability-zone/us-west-2.json
@@ -8911,6 +8911,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "us-west-2c"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "us-west-2c"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "us-west-2c"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json
index ebc01903d..306f15f60 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-northeast-3.json
@@ -647,6 +647,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-northeast-3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-northeast-3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-northeast-3"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "ap-northeast-3"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json b/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json
index 4244b0df4..290c00d8a 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-south-1.json
@@ -2143,6 +2143,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "ap-south-1"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "ap-south-1"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "ap-south-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json
index ce28aebeb..c05b94ea9 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-2.json
@@ -2555,6 +2555,10 @@
   "InstanceType": "t4g.xlarge",
   "Location": "ap-southeast-2"
  },
+ {
+  "InstanceType": "trn1.32xlarge",
+  "Location": "ap-southeast-2"
+ },
  {
   "InstanceType": "u-12tb1.112xlarge",
   "Location": "ap-southeast-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
index 54d624a49..2eac2ee44 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-3.json
@@ -579,6 +579,42 @@
   "InstanceType": "m6i.xlarge",
   "Location": "ap-southeast-3"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-3"
+ },
  {
   "InstanceType": "m7i-flex.2xlarge",
   "Location": "ap-southeast-3"
@@ -643,6 +679,14 @@
   "InstanceType": "m7i.xlarge",
   "Location": "ap-southeast-3"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "ap-southeast-3"
+ },
+ {
+  "InstanceType": "p5en.48xlarge",
+  "Location": "ap-southeast-3"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-3"
diff --git a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json
index d432c6e57..df3ae83d2 100644
--- a/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json
+++ b/moto/ec2/resources/instance_type_offerings/region/ap-southeast-4.json
@@ -387,6 +387,42 @@
   "InstanceType": "m6gd.xlarge",
   "Location": "ap-southeast-4"
  },
+ {
+  "InstanceType": "m7g.12xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.16xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.2xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.4xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.8xlarge",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.large",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.medium",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.metal",
+  "Location": "ap-southeast-4"
+ },
+ {
+  "InstanceType": "m7g.xlarge",
+  "Location": "ap-southeast-4"
+ },
  {
   "InstanceType": "r5.12xlarge",
   "Location": "ap-southeast-4"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json b/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json
index a324c1322..9050ced0d 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-central-2.json
@@ -183,6 +183,42 @@
   "InstanceType": "c6in.xlarge",
   "Location": "eu-central-2"
  },
+ {
+  "InstanceType": "c7g.12xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.16xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.2xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.4xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.8xlarge",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.large",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.medium",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.metal",
+  "Location": "eu-central-2"
+ },
+ {
+  "InstanceType": "c7g.xlarge",
+  "Location": "eu-central-2"
+ },
  {
   "InstanceType": "d3.2xlarge",
   "Location": "eu-central-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json b/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
index 9ee4e38c0..8235fab22 100644
--- a/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/eu-west-2.json
@@ -1371,6 +1371,54 @@
   "InstanceType": "m7i.xlarge",
   "Location": "eu-west-2"
  },
+ {
+  "InstanceType": "m8g.12xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.16xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.24xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.2xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.48xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.4xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.8xlarge",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.large",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.medium",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.metal-24xl",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.metal-48xl",
+  "Location": "eu-west-2"
+ },
+ {
+  "InstanceType": "m8g.xlarge",
+  "Location": "eu-west-2"
+ },
  {
   "InstanceType": "mac1.metal",
   "Location": "eu-west-2"
@@ -1391,6 +1439,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "eu-west-2"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "eu-west-2"
+ },
  {
   "InstanceType": "r4.16xlarge",
   "Location": "eu-west-2"
diff --git a/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json b/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json
index 4c93cc3a5..0e9d923bc 100644
--- a/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json
+++ b/moto/ec2/resources/instance_type_offerings/region/sa-east-1.json
@@ -1399,6 +1399,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "sa-east-1"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "sa-east-1"
+ },
  {
   "InstanceType": "r3.2xlarge",
   "Location": "sa-east-1"
diff --git a/moto/ec2/resources/instance_type_offerings/region/us-west-2.json b/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
index 29a423014..4fd5c146a 100644
--- a/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
+++ b/moto/ec2/resources/instance_type_offerings/region/us-west-2.json
@@ -2227,6 +2227,10 @@
   "InstanceType": "p5.48xlarge",
   "Location": "us-west-2"
  },
+ {
+  "InstanceType": "p5e.48xlarge",
+  "Location": "us-west-2"
+ },
  {
   "InstanceType": "p5en.48xlarge",
   "Location": "us-west-2"
diff --git a/moto/ec2/resources/instance_types.json b/moto/ec2/resources/instance_types.json
index 4ac6bab10..4f526af94 100644
--- a/moto/ec2/resources/instance_types.json
+++ b/moto/ec2/resources/instance_types.json
@@ -17145,7 +17145,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.12xlarge",
@@ -17288,7 +17288,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.16xlarge",
@@ -17450,7 +17450,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.2xlarge",
@@ -17553,7 +17553,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.4xlarge",
@@ -17664,7 +17664,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.8xlarge",
@@ -17791,7 +17791,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.large",
@@ -17888,7 +17888,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.medium",
@@ -18065,7 +18065,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "c7gn.xlarge",
@@ -33523,7 +33523,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -33633,7 +33633,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -33885,7 +33885,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -33989,7 +33989,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -54142,7 +54142,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -54405,7 +54405,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -54522,7 +54522,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -54647,7 +54647,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -54863,7 +54863,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -55344,7 +55344,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "m6in.2xlarge",
@@ -55583,7 +55583,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "m6in.4xlarge",
@@ -55688,7 +55688,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "m6in.8xlarge",
@@ -55801,7 +55801,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "m6in.large",
@@ -55993,7 +55993,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "m6in.xlarge",
@@ -79200,7 +79200,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -79463,7 +79463,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -79705,7 +79705,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -79921,7 +79921,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageInfo": {
    "Disks": [
@@ -80402,7 +80402,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "r6in.2xlarge",
@@ -80641,7 +80641,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "r6in.4xlarge",
@@ -80859,7 +80859,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "r6in.large",
@@ -81051,7 +81051,7 @@
    "NvmeSupport": "required"
   },
   "FreeTierEligible": false,
-  "HibernationSupported": false,
+  "HibernationSupported": true,
   "Hypervisor": "nitro",
   "InstanceStorageSupported": false,
   "InstanceType": "r6in.xlarge",
diff --git a/moto/ecs/models.py b/moto/ecs/models.py
index bcb8c5fbe..15fa3b03a 100644
--- a/moto/ecs/models.py
+++ b/moto/ecs/models.py
@@ -386,7 +386,7 @@ class Task(BaseObject, ManagedState):
         self.desired_status = "RUNNING"
         self.task_definition_arn = task_definition.arn
         self.overrides = overrides or {}
-        self.containers: List[Dict[str, Any]] = []
+        self.containers = [Container(task_definition)]
         self.started_by = started_by
         self.tags = tags or []
         self.launch_type = launch_type
@@ -451,6 +451,7 @@ class Task(BaseObject, ManagedState):
             response_object.pop("tags", None)
         response_object["taskArn"] = self.task_arn
         response_object["lastStatus"] = self.last_status
+        response_object["containers"] = [self.containers[0].response_object]
         return response_object
 
 
@@ -757,6 +758,29 @@ class Service(BaseObject, CloudFormationModel):
         raise UnformattedGetAttTemplateException()
 
 
+class Container(BaseObject, CloudFormationModel):
+    def __init__(
+        self,
+        task_def: TaskDefinition,
+    ):
+        self.container_arn = f"{task_def.arn}/{str(mock_random.uuid4())}"
+        self.task_arn = task_def.arn
+
+        container_def = task_def.container_definitions[0]
+        self.image = container_def.get("image")
+        self.last_status = "PENDING"
+        self.exitCode = 0
+
+        self.network_interfaces: List[Dict[str, Any]] = []
+        self.health_status = "HEALTHY"
+
+        self.cpu = container_def.get("cpu")
+        self.memory = container_def.get("memory")
+        self.environment = container_def.get("environment")
+        self.name = container_def.get("name")
+        self.command = container_def.get("command")
+
+
 class ContainerInstance(BaseObject):
     def __init__(
         self,
diff --git a/moto/kms/models.py b/moto/kms/models.py
index 03b834c37..61a95990c 100644
--- a/moto/kms/models.py
+++ b/moto/kms/models.py
@@ -74,6 +74,7 @@ class Key(CloudFormationModel):
         account_id: str,
         region: str,
         multi_region: bool = False,
+        origin: str = "AWS_KMS",
     ):
         self.id = generate_key_id(multi_region)
         self.creation_date = unix_time()
@@ -97,7 +98,7 @@ class Key(CloudFormationModel):
         self.key_rotation_status = False
         self.deletion_date: Optional[datetime] = None
         self.key_material = generate_master_key()
-        self.origin = "AWS_KMS"
+        self.origin = origin
         self.key_manager = "CUSTOMER"
         self.key_spec = key_spec or "SYMMETRIC_DEFAULT"
         self.private_key = generate_private_key(self.key_spec)
@@ -317,6 +318,7 @@ class KmsBackend(BaseBackend):
         description: str,
         tags: Optional[List[Dict[str, str]]],
         multi_region: bool = False,
+        origin: str = "AWS_KMS",
     ) -> Key:
         """
         The provided Policy currently does not need to be valid. If it is valid, Moto will perform authorization checks on key-related operations, just like AWS does.
@@ -336,6 +338,7 @@ class KmsBackend(BaseBackend):
             self.account_id,
             self.region_name,
             multi_region,
+            origin,
         )
         self.keys[key.id] = key
         if tags is not None and len(tags) > 0:
diff --git a/moto/kms/responses.py b/moto/kms/responses.py
index a5c90a268..3a9c3aa0c 100644
--- a/moto/kms/responses.py
+++ b/moto/kms/responses.py
@@ -123,9 +123,10 @@ class KmsResponse(BaseResponse):
         description = self._get_param("Description")
         tags = self._get_param("Tags")
         multi_region = self._get_param("MultiRegion")
+        origin = self._get_param("Origin") or "AWS_KMS"
 
         key = self.kms_backend.create_key(
-            policy, key_usage, key_spec, description, tags, multi_region
+            policy, key_usage, key_spec, description, tags, multi_region, origin
         )
         return json.dumps(key.to_dict())
 
diff --git a/moto/ssm/resources/regions.json b/moto/ssm/resources/regions.json
index 5982ea9f1..601192c4d 100644
--- a/moto/ssm/resources/regions.json
+++ b/moto/ssm/resources/regions.json
@@ -2171,6 +2171,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-east-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -6959,6 +6965,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-northeast-2.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -9254,6 +9266,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-northeast-3.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -13251,6 +13269,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-south-2.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -14982,6 +15006,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-southeast-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -17724,6 +17754,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-southeast-2.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -23280,6 +23316,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "launch-wizard": {
+                "Value": "launch-wizard",
+                "endpoint": {
+                  "Value": "launchwizard.ap-southeast-5.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "license-manager": {
                 "Value": "license-manager",
                 "endpoint": {
@@ -24259,6 +24304,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "securityhub": {
+                "Value": "securityhub",
+                "endpoint": {
+                  "Value": "securityhub.ap-southeast-7.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "service-quotas": {
                 "Value": "service-quotas",
                 "endpoint": {
@@ -27476,6 +27530,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "launch-wizard": {
+                "Value": "launch-wizard",
+                "endpoint": {
+                  "Value": "launchwizard.ca-west-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "license-manager": {
                 "Value": "license-manager",
                 "endpoint": {
@@ -31525,6 +31588,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.eu-central-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -40985,6 +41054,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.eu-west-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -46374,6 +46449,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.eu-west-3.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -48297,6 +48378,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.il-central-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -48705,6 +48792,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "launch-wizard": {
+                "Value": "launch-wizard",
+                "endpoint": {
+                  "Value": "launchwizard.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "license-manager": {
                 "Value": "license-manager",
                 "endpoint": {
@@ -51278,6 +51374,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.me-south-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -53124,6 +53226,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "securityhub": {
+                "Value": "securityhub",
+                "endpoint": {
+                  "Value": "securityhub.mx-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "service-quotas": {
                 "Value": "service-quotas",
                 "endpoint": {
@@ -53764,6 +53875,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.sa-east-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -56209,6 +56326,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.us-east-1.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
@@ -59371,6 +59494,12 @@
                   "Value": "HTTPS"
                 }
               },
+              "controlcatalog": {
+                "Value": "controlcatalog",
+                "endpoint": {
+                  "Value": "controlcatalog.us-east-2.amazonaws.com"
+                }
+              },
               "controltower": {
                 "Value": "controltower",
                 "endpoint": {
diff --git a/moto/ssm/resources/services.json b/moto/ssm/resources/services.json
index 15b7096c2..22430330d 100644
--- a/moto/ssm/resources/services.json
+++ b/moto/ssm/resources/services.json
@@ -16565,18 +16565,54 @@
                   "Value": "controlcatalog.af-south-1.amazonaws.com"
                 }
               },
+              "ap-east-1": {
+                "Value": "ap-east-1",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-east-1.amazonaws.com"
+                }
+              },
               "ap-northeast-1": {
                 "Value": "ap-northeast-1",
                 "endpoint": {
                   "Value": "controlcatalog.ap-northeast-1.amazonaws.com"
                 }
               },
+              "ap-northeast-2": {
+                "Value": "ap-northeast-2",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-northeast-2.amazonaws.com"
+                }
+              },
+              "ap-northeast-3": {
+                "Value": "ap-northeast-3",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-northeast-3.amazonaws.com"
+                }
+              },
               "ap-south-1": {
                 "Value": "ap-south-1",
                 "endpoint": {
                   "Value": "controlcatalog.ap-south-1.amazonaws.com"
                 }
               },
+              "ap-south-2": {
+                "Value": "ap-south-2",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-south-2.amazonaws.com"
+                }
+              },
+              "ap-southeast-1": {
+                "Value": "ap-southeast-1",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-southeast-1.amazonaws.com"
+                }
+              },
+              "ap-southeast-2": {
+                "Value": "ap-southeast-2",
+                "endpoint": {
+                  "Value": "controlcatalog.ap-southeast-2.amazonaws.com"
+                }
+              },
               "ap-southeast-3": {
                 "Value": "ap-southeast-3",
                 "endpoint": {
@@ -16607,6 +16643,12 @@
                   "Value": "controlcatalog.ca-west-1.amazonaws.com"
                 }
               },
+              "eu-central-1": {
+                "Value": "eu-central-1",
+                "endpoint": {
+                  "Value": "controlcatalog.eu-central-1.amazonaws.com"
+                }
+              },
               "eu-central-2": {
                 "Value": "eu-central-2",
                 "endpoint": {
@@ -16631,18 +16673,60 @@
                   "Value": "controlcatalog.eu-south-2.amazonaws.com"
                 }
               },
+              "eu-west-1": {
+                "Value": "eu-west-1",
+                "endpoint": {
+                  "Value": "controlcatalog.eu-west-1.amazonaws.com"
+                }
+              },
               "eu-west-2": {
                 "Value": "eu-west-2",
                 "endpoint": {
                   "Value": "controlcatalog.eu-west-2.amazonaws.com"
                 }
               },
+              "eu-west-3": {
+                "Value": "eu-west-3",
+                "endpoint": {
+                  "Value": "controlcatalog.eu-west-3.amazonaws.com"
+                }
+              },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "controlcatalog.il-central-1.amazonaws.com"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
                   "Value": "controlcatalog.me-central-1.amazonaws.com"
                 }
               },
+              "me-south-1": {
+                "Value": "me-south-1",
+                "endpoint": {
+                  "Value": "controlcatalog.me-south-1.amazonaws.com"
+                }
+              },
+              "sa-east-1": {
+                "Value": "sa-east-1",
+                "endpoint": {
+                  "Value": "controlcatalog.sa-east-1.amazonaws.com"
+                }
+              },
+              "us-east-1": {
+                "Value": "us-east-1",
+                "endpoint": {
+                  "Value": "controlcatalog.us-east-1.amazonaws.com"
+                }
+              },
+              "us-east-2": {
+                "Value": "us-east-2",
+                "endpoint": {
+                  "Value": "controlcatalog.us-east-2.amazonaws.com"
+                }
+              },
               "us-gov-west-1": {
                 "Value": "us-gov-west-1",
                 "endpoint": {
@@ -38644,6 +38728,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-5": {
+                "Value": "ap-southeast-5",
+                "endpoint": {
+                  "Value": "launchwizard.ap-southeast-5.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ca-central-1": {
                 "Value": "ca-central-1",
                 "endpoint": {
@@ -38653,6 +38746,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ca-west-1": {
+                "Value": "ca-west-1",
+                "endpoint": {
+                  "Value": "launchwizard.ca-west-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "cn-north-1": {
                 "Value": "cn-north-1",
                 "endpoint": {
@@ -38743,6 +38845,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "il-central-1": {
+                "Value": "il-central-1",
+                "endpoint": {
+                  "Value": "launchwizard.il-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "me-central-1": {
                 "Value": "me-central-1",
                 "endpoint": {
@@ -60170,6 +60281,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "ap-southeast-7": {
+                "Value": "ap-southeast-7",
+                "endpoint": {
+                  "Value": "securityhub.ap-southeast-7.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "ca-central-1": {
                 "Value": "ca-central-1",
                 "endpoint": {
@@ -60305,6 +60425,15 @@
                   "Value": "HTTPS"
                 }
               },
+              "mx-central-1": {
+                "Value": "mx-central-1",
+                "endpoint": {
+                  "Value": "securityhub.mx-central-1.amazonaws.com"
+                },
+                "protocols": {
+                  "Value": "HTTPS"
+                }
+              },
               "sa-east-1": {
                 "Value": "sa-east-1",
                 "endpoint": {
@@ -65533,7 +65662,7 @@
               "Value": "AWS Step Functions"
             },
             "marketingHomeURL": {
-              "Value": "https://aws.amazon.com/step-functions/details/"
+              "Value": "https://aws.amazon.com/step-functions/"
             },
             "regions": {
               "af-south-1": {
diff --git a/moto/timestreaminfluxdb/__init__.py b/moto/timestreaminfluxdb/__init__.py
new file mode 100644
index 000000000..e051c6f8d
--- /dev/null
+++ b/moto/timestreaminfluxdb/__init__.py
@@ -0,0 +1,1 @@
+from .models import timestreaminfluxdb_backends  # noqa: F401
diff --git a/moto/timestreaminfluxdb/exceptions.py b/moto/timestreaminfluxdb/exceptions.py
new file mode 100644
index 000000000..4208034cb
--- /dev/null
+++ b/moto/timestreaminfluxdb/exceptions.py
@@ -0,0 +1,28 @@
+"""Exceptions raised by the timestreaminfluxdb service."""
+
+from moto.core.exceptions import JsonRESTError
+
+
+class TimestreamInfluxDBException(JsonRESTError):
+    pass
+
+
+class ValidationException(TimestreamInfluxDBException):
+    code = 400
+
+    def __init__(self, message: str):
+        super().__init__("ValidationException", message)
+
+
+class ConflictException(TimestreamInfluxDBException):
+    code = 400
+
+    def __init__(self, message: str):
+        super().__init__("ConflictException", message)
+
+
+class ResourceNotFoundException(TimestreamInfluxDBException):
+    code = 400
+
+    def __init__(self, message: str):
+        super().__init__("ResourceNotFoundException", message)
diff --git a/moto/timestreaminfluxdb/models.py b/moto/timestreaminfluxdb/models.py
new file mode 100644
index 000000000..ce92e2a29
--- /dev/null
+++ b/moto/timestreaminfluxdb/models.py
@@ -0,0 +1,286 @@
+"""TimestreamInfluxDBBackend class with methods for supported APIs."""
+
+from enum import Enum
+from typing import Any, Dict, List, Optional
+
+from moto.core.base_backend import BackendDict, BaseBackend
+from moto.core.common_models import BaseModel
+from moto.utilities.tagging_service import TaggingService
+
+from .exceptions import (
+    ConflictException,
+    ResourceNotFoundException,
+    ValidationException,
+)
+from .utils import random_id, validate_name
+
+
+class InstanceStatus(str, Enum):
+    CREATING = "CREATING"
+    AVAILABLE = "AVAILABLE"
+    DELETING = "DELETING"
+    MODIFYING = "MODIFYING"
+    UPDATING = "UPDATING"
+    DELETED = "DELETED"
+    FAILED = "FAILED"
+    UPDATING_DEPLOYMENT_TYPE = "UPDATING_DEPLOYMENT_TYPE"
+    UPDATING_INSTANCE_TYPE = "UPDATING_INSTANCE_TYPE"
+
+
+class NetworkType(str, Enum):
+    IPV4 = "IPV4"
+    DUAL = "DUAL"
+
+
+class InstanceType(str, Enum):
+    DB_INFLUX_MEDIUM = "db.influx.medium"
+    DB_INFLUX_LARGE = "db.influx.large"
+    DB_INFLUX_XLARGE = "db.influx.xlarge"
+    DB_INFLUX_2XLARGE = "db.influx.2xlarge"
+    DB_INFLUX_4XLARGE = "db.influx.4xlarge"
+    DB_INFLUX_8XLARGE = "db.influx.8xlarge"
+    DB_INFLUX_12XLARGE = "db.influx.12xlarge"
+    DB_INFLUX_16XLARGE = "db.influx.16xlarge"
+
+
+class DBStorageType(str, Enum):
+    InfluxIOIncludedT1 = "InfluxIOIncludedT1"
+    InfluxIOIncludedT2 = "InfluxIOIncludedT2"
+    InfluxIOIncludedT3 = "InfluxIOIncludedT3"
+
+
+class DeploymentType(str, Enum):
+    SINGLE_AZ = "SINGLE_AZ"
+    WITH_MULTIAZ_STANDBY = "WITH_MULTIAZ_STANDBY"
+
+
+class DBInstance(BaseModel):
+    def __init__(
+        self,
+        name: str,
+        username: Optional[str],
+        password: str,
+        organization: str,
+        bucket: str,
+        dbInstanceType: str,
+        vpcSubnetIds: List[str],
+        vpcSecurityGroupIds: List[str],
+        publiclyAccessible: bool,
+        dbStorageType: str,
+        allocatedStorage: int,
+        dbParameterGroupIdentifier: Optional[str],
+        deploymentType: str,
+        logDeliveryConfiguration: Optional[Dict[str, Any]],
+        tags: Optional[Dict[str, Any]],
+        port: int,
+        networkType: str,
+        region_name: str,
+        account_id: str,
+        endpoint_id: str,
+    ):
+        # Generate a random id of size 10
+        self.id = random_id()
+
+        self.name = name
+        self.username = username
+        self.password = password
+        self.organization = organization
+        self.bucket = bucket
+        self.db_instance_type = dbInstanceType
+        self.vpc_subnet_ids = vpcSubnetIds
+        self.vpc_security_group_ids = vpcSecurityGroupIds
+        self.publicly_accessible = publiclyAccessible
+        self.db_storage_type = dbStorageType
+        self.allocated_storage = allocatedStorage
+        self.db_parameter_group_id = dbParameterGroupIdentifier
+        self.deployment_type = deploymentType
+        self.log_delivery_configuration = logDeliveryConfiguration
+        self.port = port
+        self.network_type = networkType
+        self.status = InstanceStatus.CREATING
+        self.arn = f"arn:aws:timestream-influxdb:{region_name}:{account_id}:db-instance/{self.id}"
+        self.endpoint = (
+            f"{self.id}-{endpoint_id}.timestream-influxdb.{region_name}.on.aws"
+        )
+        # Before 12/09/2024, there was a different endpoint format.
+        self.endpoint_old = (
+            f"{self.name}-{endpoint_id}.timestream-influxdb.{region_name}.on.aws"
+        )
+
+        self.availability_zone = ""  # TODO implement this
+        self.secondary_availability_zone = ""  # TODO implement this
+
+    def to_dict(self) -> Dict[str, Any]:
+        return {
+            "id": self.id,
+            "name": self.name,
+            "arn": self.arn,
+            "status": self.status,
+            "endpoint": self.endpoint,
+            "port": self.port,
+            "networkType": self.network_type,
+            "dbInstanceType": self.db_instance_type,
+            "dbStorageType": self.db_storage_type,
+            "allocatedStorage": self.allocated_storage,
+            "deploymentType": self.deployment_type,
+            "vpcSubnetIds": self.vpc_subnet_ids,
+            "publiclyAccessible": self.publicly_accessible,
+            "vpcSecurityGroupIds": self.vpc_security_group_ids,
+            "dbParameterGroupIdentifier": self.db_parameter_group_id,  # TODO implement this
+            "availabilityZone": self.availability_zone,  # TODO implement this
+            "secondaryAvailabilityZone": self.secondary_availability_zone,  # TODO implement this
+            "logDeliveryConfiguration": self.log_delivery_configuration,  # TODO implement this
+            "influxAuthParametersSecretArn": "",  # TODO implement this
+        }
+
+
+class TimestreamInfluxDBBackend(BaseBackend):
+    """Implementation of TimestreamInfluxDB APIs."""
+
+    def __init__(self, region_name: str, account_id: str):
+        super().__init__(region_name, account_id)
+
+        # the endpoint identifier is unique per account and per region
+        # https://docs.aws.amazon.com/timestream/latest/developerguide/timestream-for-influxdb.html
+        self.endpoint_id: str = random_id(10)
+        self.db_instances: Dict[str, DBInstance] = {}
+        self.tagger = TaggingService()
+
+    def create_db_instance(
+        self,
+        name: str,
+        username: Optional[str],  # required if using InfluxDB UI though
+        password: str,
+        organization: str,
+        bucket: str,
+        db_instance_type: str,
+        vpc_subnet_ids: List[str],
+        vpc_security_group_ids: List[str],
+        db_storage_type: str,
+        publicly_accessible: bool,
+        allocated_storage: int,
+        db_parameter_group_identifier: str,
+        deployment_type: str,
+        log_delivery_configuration: Optional[Dict[str, Any]],
+        tags: Optional[Dict[str, str]],
+        port: int,
+        network_type: str,
+    ) -> DBInstance:
+        """
+        dbParameterGroupIdentifier argument is not yet handled
+        deploymentType currently is auto set to 'SINGLE_AZ' if not passed in.
+        publicAccessible is not yet handled
+        logDeliveryConfiguration is not yet handled
+        AvailabilityZone and SecondaryAvailabilityZone are not yet handled
+        influxAuthParametersSecretArn is not yet handled
+        """
+
+        # Checks:
+        for db_instance in self.db_instances.values():
+            if db_instance.name == name:
+                raise ConflictException(
+                    f"A DB Instance with the name {name} already exists"
+                )
+
+        validate_name(name)
+
+        if db_storage_type not in [t.value for t in DBStorageType]:
+            raise ValidationException(f"Unknown DB storage type {db_storage_type}")
+
+        if db_instance_type not in [t.value for t in InstanceType]:
+            raise ValidationException(f"Unknown DB instance type {db_instance_type}")
+
+        new_instance = DBInstance(
+            name,
+            username,
+            password,
+            organization,
+            bucket,
+            db_instance_type,
+            vpc_subnet_ids,
+            vpc_security_group_ids,
+            publicly_accessible,
+            db_storage_type,
+            allocated_storage,
+            db_parameter_group_identifier,
+            deployment_type,
+            log_delivery_configuration,
+            tags,
+            port,
+            network_type,
+            self.region_name,
+            self.account_id,
+            self.endpoint_id,
+        )
+
+        # add to the list
+        self.db_instances[new_instance.id] = new_instance
+
+        # add tags
+        if tags:
+            self.tag_resource(new_instance.arn, tags)
+
+        return new_instance
+
+    def delete_db_instance(self, id: str) -> DBInstance:
+        if id not in self.db_instances:
+            raise ResourceNotFoundException(f"DB Instance with id {id} not found")
+
+        # mark as deleting
+        self.db_instances[id].status = InstanceStatus.DELETING
+        return self.db_instances.pop(id)
+
+    def get_db_instance(self, id: str) -> DBInstance:
+        if id not in self.db_instances:
+            raise ResourceNotFoundException(f"DB Instance with id {id} not found")
+
+        return self.db_instances[id]
+
+    def list_db_instances(self) -> List[Dict[str, Any]]:
+        """
+        Pagination is not yet implemented
+        """
+        return [
+            {
+                "allocatedStorage": instance.allocated_storage,
+                "arn": instance.arn,
+                "dbInstanceType": instance.db_instance_type,
+                "dbStorageType": instance.db_storage_type,
+                "deploymentType": instance.deployment_type,
+                "endpoint": instance.endpoint,
+                "id": instance.id,
+                "name": instance.name,
+                "networkType": instance.network_type,
+                "port": instance.port,
+                "status": instance.status,
+            }
+            for instance in self.db_instances.values()
+        ]
+
+    def tag_resource(self, resource_arn: str, tags: Dict[str, str]) -> None:
+        tag_list = self.tagger.convert_dict_to_tags_input(tags)
+        errmsg = self.tagger.validate_tags(tag_list)
+        if errmsg:
+            raise ValidationException(errmsg)
+        self.tagger.tag_resource(resource_arn, tag_list)
+
+    def untag_resource(self, resource_arn: str, tag_keys: List[str]) -> None:
+        self.tagger.untag_resource_using_names(resource_arn, tag_keys)
+
+    def list_tags_for_resource(self, resource_arn: str) -> Dict[str, str]:
+        return self.tagger.get_tag_dict_for_resource(resource_arn)
+
+
+timestreaminfluxdb_backends = BackendDict(
+    TimestreamInfluxDBBackend,
+    "timestream-influxdb",
+    additional_regions=[
+        "us-east-1",
+        "us-east-2",
+        "us-west-2",
+        "eu-central-1",
+        "eu-west-1",
+        "ap-southeast-2",
+        "ap-northeast-1",
+    ],
+)
diff --git a/moto/timestreaminfluxdb/responses.py b/moto/timestreaminfluxdb/responses.py
new file mode 100644
index 000000000..b6b9dece9
--- /dev/null
+++ b/moto/timestreaminfluxdb/responses.py
@@ -0,0 +1,105 @@
+import json
+
+from moto.core.responses import BaseResponse
+
+from .models import (
+    DBStorageType,
+    DeploymentType,
+    NetworkType,
+    TimestreamInfluxDBBackend,
+    timestreaminfluxdb_backends,
+)
+
+
+class TimestreamInfluxDBResponse(BaseResponse):
+    """Handler for TimestreamInfluxDB requests and responses."""
+
+    def __init__(self) -> None:
+        super().__init__(service_name="timestream-influxdb")
+
+    @property
+    def timestreaminfluxdb_backend(self) -> TimestreamInfluxDBBackend:
+        return timestreaminfluxdb_backends[self.current_account][self.region]
+
+    def create_db_instance(self) -> str:
+        params = json.loads(self.body)
+        name = params.get("name")
+        username = params.get("username")
+        password = params.get("password")
+        organization = params.get("organization")
+        bucket = params.get("bucket")
+        db_instance_type = params.get("dbInstanceType")
+        vpc_subnet_ids = params.get("vpcSubnetIds")
+        vpc_security_group_ids = params.get("vpcSecurityGroupIds")
+        publicly_accessible = params.get("publiclyAccessible", False)
+        db_storage_type = params.get("dbStorageType", DBStorageType.InfluxIOIncludedT1)
+        allocated_storage = params.get("allocatedStorage")
+        db_parameter_group_identifier = params.get("dbParameterGroupIdentifier")
+        deployment_type = params.get("deploymentType", DeploymentType.SINGLE_AZ)
+        log_delivery_configuration = params.get("logDeliveryConfiguration", {})
+        tags = params.get("tags", {})
+        port = int(params.get("port", 8086))
+        network_type = params.get("networkType", NetworkType.IPV4)
+
+        created_instance = self.timestreaminfluxdb_backend.create_db_instance(
+            name=name,
+            username=username,
+            password=password,
+            organization=organization,
+            bucket=bucket,
+            db_instance_type=db_instance_type,
+            vpc_subnet_ids=vpc_subnet_ids,
+            vpc_security_group_ids=vpc_security_group_ids,
+            publicly_accessible=publicly_accessible,
+            db_storage_type=db_storage_type,
+            allocated_storage=allocated_storage,
+            db_parameter_group_identifier=db_parameter_group_identifier,
+            deployment_type=deployment_type,
+            log_delivery_configuration=log_delivery_configuration,
+            tags=tags,
+            port=port,
+            network_type=network_type,
+        )
+        return json.dumps(created_instance.to_dict())
+
+    def delete_db_instance(self) -> str:
+        params = json.loads(self.body)
+        id = params.get("identifier")
+        deleted_instance = self.timestreaminfluxdb_backend.delete_db_instance(id=id)
+        return json.dumps(deleted_instance.to_dict())
+
+    def get_db_instance(self) -> str:
+        params = json.loads(self.body)
+        id = params.get("identifier")
+        instance = self.timestreaminfluxdb_backend.get_db_instance(id=id)
+        return json.dumps(instance.to_dict())
+
+    def list_db_instances(self) -> str:
+        """
+        Pagination is not yet implemented
+        """
+        instances = self.timestreaminfluxdb_backend.list_db_instances()
+
+        return json.dumps({"items": instances})
+
+    def tag_resource(self) -> str:
+        params = json.loads(self.body)
+        arn = params.get("resourceArn")
+        tags = params.get("tags")
+        self.timestreaminfluxdb_backend.tag_resource(resource_arn=arn, tags=tags)
+        return "{}"
+
+    def untag_resource(self) -> str:
+        params = json.loads(self.body)
+        arn = params.get("resourceArn")
+        tag_keys = params.get("tagKeys")
+        self.timestreaminfluxdb_backend.untag_resource(
+            resource_arn=arn, tag_keys=tag_keys
+        )
+        return "{}"
+
+    def list_tags_for_resource(self) -> str:
+        params = json.loads(self.body)
+        arn = params.get("resourceArn")
+        tags = self.timestreaminfluxdb_backend.list_tags_for_resource(resource_arn=arn)
+        return json.dumps({"tags": tags})
diff --git a/moto/timestreaminfluxdb/urls.py b/moto/timestreaminfluxdb/urls.py
new file mode 100644
index 000000000..ea9c57eaf
--- /dev/null
+++ b/moto/timestreaminfluxdb/urls.py
@@ -0,0 +1,11 @@
+"""timestreaminfluxdb base URL and path."""
+
+from .responses import TimestreamInfluxDBResponse
+
+url_bases = [
+    r"https?://timestream-influxdb\.(.+)\.amazonaws\.com",
+]
+
+url_paths = {
+    "{0}/$": TimestreamInfluxDBResponse.dispatch,
+}
diff --git a/moto/timestreaminfluxdb/utils.py b/moto/timestreaminfluxdb/utils.py
new file mode 100644
index 000000000..1aa3390e4
--- /dev/null
+++ b/moto/timestreaminfluxdb/utils.py
@@ -0,0 +1,34 @@
+import random
+import re
+import string
+
+from .exceptions import ValidationException
+
+
+def random_id(size: int = 10) -> str:
+    chars = list(range(10)) + list(string.ascii_lowercase)
+    return "".join(str(random.choice(chars)) for x in range(size))
+
+
+def validate_name(name: str) -> None:
+    """
+    The name that uniquely identifies the DB instance when interacting with the Amazon Timestream for InfluxDB API and CLI commands.
+    This name will also be a prefix included in the endpoint.
+    DB instance names must be unique per customer and per region.
+    Length Constraints: Minimum length of 3. Maximum length of 40.
+    Pattern: ^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$
+
+    """
+
+    if len(name) < 3:
+        raise ValidationException(
+            f"Expected name to have a minimum length of 3, got {len(name)}"
+        )
+    elif len(name) > 40:
+        raise ValidationException(
+            f"Expected name to have a maximum length of 40, got {len(name)}"
+        )
+    elif not re.match(r"^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$", name):
+        raise ValidationException(
+            f"Expected name to match the pattern ^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$, got {name}"
+        )


Test patch:
diff --git a/tests/test_ecs/test_ecs_boto3.py b/tests/test_ecs/test_ecs_boto3.py
index 465178f1b..f0f1e988d 100644
--- a/tests/test_ecs/test_ecs_boto3.py
+++ b/tests/test_ecs/test_ecs_boto3.py
@@ -1854,31 +1854,27 @@ def test_update_container_instances_state_by_arn():
 
 @mock_aws
 def test_run_task():
+    # Setup
+    test_cluster_name = "test_ecs_cluster"
+    image = "docker/hello-world:latest"
     client = boto3.client("ecs", region_name=ECS_REGION)
     ec2 = boto3.resource("ec2", region_name=ECS_REGION)
-
-    test_cluster_name = "test_ecs_cluster"
-
     client.create_cluster(clusterName=test_cluster_name)
-
     test_instance = ec2.create_instances(
         ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1
     )[0]
-
     instance_id_document = json.dumps(
         ec2_utils.generate_instance_identity_document(test_instance)
     )
-
-    response = client.register_container_instance(
+    client.register_container_instance(
         cluster=test_cluster_name, instanceIdentityDocument=instance_id_document
     )
-
-    client.register_task_definition(
+    td = client.register_task_definition(
         family="test_ecs_task",
         containerDefinitions=[
             {
                 "name": "hello_world",
-                "image": "docker/hello-world:latest",
+                "image": image,
                 "cpu": 1024,
                 "memory": 400,
                 "essential": True,
@@ -1889,12 +1885,16 @@ def test_run_task():
             }
         ],
     )
+
+    # Execute
     response = client.run_task(
         cluster="test_ecs_cluster",
         overrides={},
         taskDefinition="test_ecs_task",
         startedBy="moto",
     )
+
+    # Verify
     assert len(response["tasks"]) == 1
     response = client.run_task(
         cluster="test_ecs_cluster",
@@ -1928,6 +1928,13 @@ def test_run_task():
     assert task["startedBy"] == "moto"
     assert task["stoppedReason"] == ""
     assert task["tags"][0].get("value") == "tagValue0"
+    assert len(task["containers"]) == 1
+
+    con = task["containers"][0]
+    assert td["taskDefinition"]["taskDefinitionArn"] in con["containerArn"]
+    assert con["taskArn"] == td["taskDefinition"]["taskDefinitionArn"]
+    assert con["lastStatus"] == "PENDING"
+    assert con["image"] == image
 
 
 @mock_aws
diff --git a/tests/test_kms/test_kms_boto3.py b/tests/test_kms/test_kms_boto3.py
index bafccb20f..11f84bc80 100644
--- a/tests/test_kms/test_kms_boto3.py
+++ b/tests/test_kms/test_kms_boto3.py
@@ -118,6 +118,10 @@ def test_create_key():
     assert "EncryptionAlgorithms" not in key["KeyMetadata"]
     assert key["KeyMetadata"]["SigningAlgorithms"] == ["ECDSA_SHA_512"]
 
+    key = conn.create_key(Origin="EXTERNAL")
+
+    assert key["KeyMetadata"]["Origin"] == "EXTERNAL"
+
 
 @mock_aws
 def test_create_multi_region_key():
diff --git a/tests/test_timestreaminfluxdb/__init__.py b/tests/test_timestreaminfluxdb/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/test_timestreaminfluxdb/test_timestreaminfluxdb.py b/tests/test_timestreaminfluxdb/test_timestreaminfluxdb.py
new file mode 100644
index 000000000..8721ba2b7
--- /dev/null
+++ b/tests/test_timestreaminfluxdb/test_timestreaminfluxdb.py
@@ -0,0 +1,280 @@
+"""Unit tests for timestreaminfluxdb-supported APIs."""
+
+import boto3
+import pytest
+from botocore.exceptions import ClientError
+
+from moto import mock_aws
+
+# See our Development Tips on writing tests for hints on how to write good tests:
+# http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
+
+
+"""Unit tests for timestreaminfluxdb-supported APIs."""
+
+
+@mock_aws
+def test_create_db_instance_success():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    response = client.create_db_instance(
+        name="test-instance",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+    )
+
+    assert response["allocatedStorage"] == 123
+    assert response["dbInstanceType"] == "db.influx.medium"
+    assert response["name"] == "test-instance"
+    assert response["vpcSecurityGroupIds"] == ["sg-0123456789abcdef0"]
+    assert response["vpcSubnetIds"] == ["subnet-0123456789abcdef0"]
+
+    assert "arn" in response
+    assert "availabilityZone" in response
+    assert "dbStorageType" in response
+    assert "deploymentType" in response
+    assert "endpoint" in response
+    assert "id" in response
+    assert "influxAuthParametersSecretArn" in response
+    assert "networkType" in response
+    assert "port" in response
+    assert "publiclyAccessible" in response
+    assert "secondaryAvailabilityZone" in response
+    assert "status" in response
+    assert "logDeliveryConfiguration" in response
+
+
+@mock_aws
+def test_create_db_instance_duplicate_identifier():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    client.create_db_instance(
+        name="test-instance",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+    )
+
+    with pytest.raises(ClientError) as exc:
+        client.create_db_instance(
+            name="test-instance",
+            password="password123",
+            dbInstanceType="db.influx.medium",
+            vpcSubnetIds=["subnet-0123456789abcdef0"],
+            vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+            allocatedStorage=123,
+        )
+
+    assert exc.value.response["Error"]["Code"] == "ConflictException"
+
+
+@mock_aws
+def test_create_db_instance_name_invalid():
+    invalid_names = [
+        "1muststartwithletter",
+        "cantendwithhyphen_",
+        "nodoublehyphen--",
+        "no",
+        "longlonglonglonglonglonglonglonglonglongname",
+    ]
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    for invalid_name in invalid_names:
+        with pytest.raises(ClientError) as exc:
+            client.create_db_instance(
+                name="invalid_name",
+                password="password123",
+                dbInstanceType="db.influx.medium",
+                vpcSubnetIds=["subnet-0123456789abcdef0"],
+                vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+                allocatedStorage=123,
+            )
+        assert exc.value.response["Error"]["Code"] == "ValidationException"
+
+
+@mock_aws
+def test_create_db_instance_invalid_storage_type():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+    with pytest.raises(ClientError) as exc:
+        client.create_db_instance(
+            name="test-instance",
+            password="password123",
+            dbInstanceType="db.influx.medium",
+            vpcSubnetIds=["subnet-0123456789abcdef0"],
+            vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+            allocatedStorage=123,
+            dbStorageType="invalid",
+        )
+
+        assert exc.value.response["Error"]["Code"] == "ValidationException"
+
+
+@mock_aws
+def test_create_db_instance_invalid_instance_type():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    with pytest.raises(ClientError) as exc:
+        client.create_db_instance(
+            name="test-instance",
+            password="password123",
+            vpcSubnetIds=["subnet-0123456789abcdef0"],
+            vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+            allocatedStorage=123,
+            dbInstanceType="invalid",
+        )
+
+    assert exc.value.response["Error"]["Code"] == "ValidationException"
+
+
+@mock_aws
+def test_delete_db_instance():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    response = client.create_db_instance(
+        name="test-instance",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+    )
+
+    id = response["id"]
+
+    response = client.delete_db_instance(identifier=id)
+    assert response["allocatedStorage"] == 123
+    assert response["dbInstanceType"] == "db.influx.medium"
+    assert response["name"] == "test-instance"
+    assert response["vpcSecurityGroupIds"] == ["sg-0123456789abcdef0"]
+    assert response["vpcSubnetIds"] == ["subnet-0123456789abcdef0"]
+
+    assert "arn" in response
+    assert "availabilityZone" in response
+    assert "dbStorageType" in response
+    assert "deploymentType" in response
+    assert "endpoint" in response
+    assert "id" in response
+    assert "influxAuthParametersSecretArn" in response
+    assert "networkType" in response
+    assert "port" in response
+    assert "publiclyAccessible" in response
+    assert "secondaryAvailabilityZone" in response
+    assert "logDeliveryConfiguration" in response
+
+    assert response["status"] == "DELETING"
+
+
+@mock_aws
+def test_delete_db_instance_invalid_name():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    id = "-100000"
+    with pytest.raises(ClientError) as exc:
+        client.delete_db_instance(identifier=id)
+
+    assert exc.value.response["Error"]["Code"] == "ResourceNotFoundException"
+
+
+@mock_aws
+def test_get_db_instance():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    created_instance = client.create_db_instance(
+        name="test-instance",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+    )
+
+    id = created_instance["id"]
+    response = client.get_db_instance(identifier=id)
+    assert response["allocatedStorage"] == 123
+    assert response["dbInstanceType"] == "db.influx.medium"
+    assert response["name"] == "test-instance"
+    assert response["vpcSecurityGroupIds"] == ["sg-0123456789abcdef0"]
+    assert response["vpcSubnetIds"] == ["subnet-0123456789abcdef0"]
+
+    assert "arn" in response
+    assert "availabilityZone" in response
+    assert "dbStorageType" in response
+    assert "deploymentType" in response
+    assert "endpoint" in response
+    assert "id" in response
+    assert "influxAuthParametersSecretArn" in response
+    assert "networkType" in response
+    assert "port" in response
+    assert "publiclyAccessible" in response
+    assert "secondaryAvailabilityZone" in response
+    assert "logDeliveryConfiguration" in response
+    assert "status" in response
+
+
+@mock_aws
+def test_get_db_instance_invalid():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    id = "-100000"
+    with pytest.raises(ClientError) as exc:
+        client.get_db_instance(identifier=id)
+
+    assert exc.value.response["Error"]["Code"] == "ResourceNotFoundException"
+
+
+@mock_aws
+def test_list_db_instances_empty():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+    response = client.list_db_instances()
+    assert len(response["items"]) == 0
+
+
+@mock_aws
+def test_list_db_instances():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+    client.create_db_instance(
+        name="test-instance1",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+    )
+
+    client.create_db_instance(
+        name="test-instance2",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+    )
+
+    response = client.list_db_instances()
+    resources = response["items"]
+    assert len(resources) == 2
+
+    for resource in resources:
+        assert "allocatedStorage" in resource
+        assert "arn" in resource
+        assert "dbInstanceType" in resource
+        assert "dbStorageType" in resource
+        assert "deploymentType" in resource
+        assert "endpoint" in resource
+        assert "id" in resource
+        assert "name" in resource
+        assert "networkType" in resource
+        assert "port" in resource
+        assert "status" in resource
+
+    # delete one and confirm only one left
+    client.delete_db_instance(identifier=resources[0]["id"])
+
+    response = client.list_db_instances()
+    resources = response["items"]
+    assert len(resources) == 1
diff --git a/tests/test_timestreaminfluxdb/test_timestreaminfluxdb_tagging.py b/tests/test_timestreaminfluxdb/test_timestreaminfluxdb_tagging.py
new file mode 100644
index 000000000..823f3dcb5
--- /dev/null
+++ b/tests/test_timestreaminfluxdb/test_timestreaminfluxdb_tagging.py
@@ -0,0 +1,69 @@
+import boto3
+
+from moto import mock_aws
+
+
+@mock_aws
+def test_list_tags_for_db_instance():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    response = client.create_db_instance(
+        name="test-instance",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+        tags={"key1": "value1", "key2": "value2"},
+    )
+
+    arn = response["arn"]
+    response = client.list_tags_for_resource(resourceArn=arn)
+    assert response["tags"] == {"key1": "value1", "key2": "value2"}
+
+
+@mock_aws
+def test_tag_resources():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    response = client.create_db_instance(
+        name="test-instance",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+        tags={"key1": "value1", "key2": "value2"},
+    )
+
+    arn = response["arn"]
+
+    # add a tag
+    additional_tags = {"key3": "value3"}
+    response = client.tag_resource(resourceArn=arn, tags=additional_tags)
+
+    response = client.list_tags_for_resource(resourceArn=arn)
+    assert response["tags"] == {"key1": "value1", "key2": "value2", "key3": "value3"}
+
+
+@mock_aws
+def test_untag_resources():
+    client = boto3.client("timestream-influxdb", region_name="us-east-1")
+
+    response = client.create_db_instance(
+        name="test-instance",
+        password="password123",
+        dbInstanceType="db.influx.medium",
+        vpcSubnetIds=["subnet-0123456789abcdef0"],
+        vpcSecurityGroupIds=["sg-0123456789abcdef0"],
+        allocatedStorage=123,
+        tags={"key1": "value1", "key2": "value2"},
+    )
+
+    arn = response["arn"]
+
+    # remove tags
+    response = client.untag_resource(resourceArn=arn, tagKeys=["key1"])
+
+    response = client.list_tags_for_resource(resourceArn=arn)
+    assert response["tags"] == {"key2": "value2"}