Repository: cloudtools/troposphere
Pull request #2126 (2023-02-22 15:44:05)

Mark constants as final
mypy (don't know about pyright) treats `Delete = "Delete"` as `Delete: str = "Delete"` for backwards compatibility, see https://mypy.readthedocs.io/en/stable/literal_types.html#declaring-literal-variables.

`Delete: Final = "Delete"` is the same as `Delete: Literal["Delete"] = "Delete"`.

michael-k: No worries.  I need to fix some type errors anyway.

Patch:
diff --git a/troposphere/__init__.py b/troposphere/__init__.py
index 33f7de6d..f3e581c2 100644
--- a/troposphere/__init__.py
+++ b/troposphere/__init__.py
@@ -34,29 +34,36 @@ from . import validators
 if TYPE_CHECKING:
     from .type_defs.protocols import JSONreprProtocol, ToDictProtocol
 
+    # We cannot `from .type_defs.compat import Final` here for now
+    # https://github.com/microsoft/pyright/issues/4197
+    if sys.version_info < (3, 8):
+        from typing_extensions import Final
+    else:
+        from typing import Final
+
 __version__ = "4.3.0"
 
 # constants for DeletionPolicy and UpdateReplacePolicy
-Delete = "Delete"
-Retain = "Retain"
-Snapshot = "Snapshot"
+Delete: Final = "Delete"
+Retain: Final = "Retain"
+Snapshot: Final = "Snapshot"
 
 # Pseudo Parameters
-AWS_ACCOUNT_ID = "AWS::AccountId"
-AWS_NOTIFICATION_ARNS = "AWS::NotificationARNs"
-AWS_NO_VALUE = "AWS::NoValue"
-AWS_PARTITION = "AWS::Partition"
-AWS_REGION = "AWS::Region"
-AWS_STACK_ID = "AWS::StackId"
-AWS_STACK_NAME = "AWS::StackName"
-AWS_URL_SUFFIX = "AWS::URLSuffix"
+AWS_ACCOUNT_ID: Final = "AWS::AccountId"
+AWS_NOTIFICATION_ARNS: Final = "AWS::NotificationARNs"
+AWS_NO_VALUE: Final = "AWS::NoValue"
+AWS_PARTITION: Final = "AWS::Partition"
+AWS_REGION: Final = "AWS::Region"
+AWS_STACK_ID: Final = "AWS::StackId"
+AWS_STACK_NAME: Final = "AWS::StackName"
+AWS_URL_SUFFIX: Final = "AWS::URLSuffix"
 
 # Template Limits
-MAX_MAPPINGS = 200
-MAX_OUTPUTS = 200
-MAX_PARAMETERS = 200
-MAX_RESOURCES = 500
-PARAMETER_TITLE_MAX = 255
+MAX_MAPPINGS: Final[int] = 200
+MAX_OUTPUTS: Final[int] = 200
+MAX_PARAMETERS: Final[int] = 200
+MAX_RESOURCES: Final[int] = 500
+PARAMETER_TITLE_MAX: Final[int] = 255
 
 
 valid_names = re.compile(r"^[a-zA-Z0-9]+$")
diff --git a/troposphere/constants.py b/troposphere/constants.py
index 5d186f86..043ef931 100644
--- a/troposphere/constants.py
+++ b/troposphere/constants.py
@@ -1,1211 +1,1212 @@
+from .type_defs.compat import Final
 #
 # Regions
 #
 
-AF_SOUTH_1 = "af-south-1"
-AP_EAST_1 = "ap-east-1"
-AP_NORTHEAST_1 = "ap-northeast-1"
-AP_NORTHEAST_2 = "ap-northeast-2"
-AP_NORTHEAST_3 = "ap-northeast-3"
-AP_SOUTHEAST_1 = "ap-southeast-1"
-AP_SOUTHEAST_2 = "ap-southeast-2"
-AP_SOUTHEAST_3 = "ap-southeast-3"
-AP_SOUTH_1 = "ap-south-1"
-CA_CENTRAL_1 = "ca-central-1"
-CN_NORTH_1 = "cn-north-1"
-CN_NORTHWEST_1 = "cn-northwest-1"
-EU_WEST_1 = "eu-west-1"
-EU_WEST_2 = "eu-west-2"
-EU_WEST_3 = "eu-west-3"
-EU_CENTRAL_1 = "eu-central-1"
-EU_NORTH_1 = "eu-north-1"
-EU_SOUTH_1 = "eu-south-1"
-ME_CENTRAL_1 = "me-central-1"
-ME_SOUTH_1 = "me-south-1"
-SA_EAST_1 = "sa-east-1"
-US_EAST_1 = "us-east-1"
-US_EAST_2 = "us-east-2"
-US_GOV_EAST_1 = "us-gov-east-1"
-US_GOV_WEST_1 = "us-gov-west-1"
-US_WEST_1 = "us-west-1"
-US_WEST_2 = "us-west-2"
+AF_SOUTH_1: Final = "af-south-1"
+AP_EAST_1: Final = "ap-east-1"
+AP_NORTHEAST_1: Final = "ap-northeast-1"
+AP_NORTHEAST_2: Final = "ap-northeast-2"
+AP_NORTHEAST_3: Final = "ap-northeast-3"
+AP_SOUTHEAST_1: Final = "ap-southeast-1"
+AP_SOUTHEAST_2: Final = "ap-southeast-2"
+AP_SOUTHEAST_3: Final = "ap-southeast-3"
+AP_SOUTH_1: Final = "ap-south-1"
+CA_CENTRAL_1: Final = "ca-central-1"
+CN_NORTH_1: Final = "cn-north-1"
+CN_NORTHWEST_1: Final = "cn-northwest-1"
+EU_WEST_1: Final = "eu-west-1"
+EU_WEST_2: Final = "eu-west-2"
+EU_WEST_3: Final = "eu-west-3"
+EU_CENTRAL_1: Final = "eu-central-1"
+EU_NORTH_1: Final = "eu-north-1"
+EU_SOUTH_1: Final = "eu-south-1"
+ME_CENTRAL_1: Final = "me-central-1"
+ME_SOUTH_1: Final = "me-south-1"
+SA_EAST_1: Final = "sa-east-1"
+US_EAST_1: Final = "us-east-1"
+US_EAST_2: Final = "us-east-2"
+US_GOV_EAST_1: Final = "us-gov-east-1"
+US_GOV_WEST_1: Final = "us-gov-west-1"
+US_WEST_1: Final = "us-west-1"
+US_WEST_2: Final = "us-west-2"
 
 #
 # Availability Zones
 #
 
-AF_SOUTH_1A = "af-south-1a"
-AF_SOUTH_1B = "af-south-1b"
-AF_SOUTH_1C = "af-south-1c"
-
-AP_EAST_1A = "ap-east-1a"
-AP_EAST_1B = "ap-east-1b"
-AP_EAST_1C = "ap-east-1c"
-
-AP_NORTHEAST_1A = "ap-northeast-1a"
-AP_NORTHEAST_1B = "ap-northeast-1b"
-AP_NORTHEAST_1C = "ap-northeast-1c"
-AP_NORTHEAST_1D = "ap-northeast-1d"
-
-AP_NORTHEAST_2A = "ap-northeast-2a"
-AP_NORTHEAST_2B = "ap-northeast-2b"
-AP_NORTHEAST_2C = "ap-northeast-2c"
-AP_NORTHEAST_2D = "ap-northeast-2d"
+AF_SOUTH_1A: Final = "af-south-1a"
+AF_SOUTH_1B: Final = "af-south-1b"
+AF_SOUTH_1C: Final = "af-south-1c"
+
+AP_EAST_1A: Final = "ap-east-1a"
+AP_EAST_1B: Final = "ap-east-1b"
+AP_EAST_1C: Final = "ap-east-1c"
+
+AP_NORTHEAST_1A: Final = "ap-northeast-1a"
+AP_NORTHEAST_1B: Final = "ap-northeast-1b"
+AP_NORTHEAST_1C: Final = "ap-northeast-1c"
+AP_NORTHEAST_1D: Final = "ap-northeast-1d"
+
+AP_NORTHEAST_2A: Final = "ap-northeast-2a"
+AP_NORTHEAST_2B: Final = "ap-northeast-2b"
+AP_NORTHEAST_2C: Final = "ap-northeast-2c"
+AP_NORTHEAST_2D: Final = "ap-northeast-2d"
 
-AP_NORTHEAST_3A = "ap-northeast-3a"
-AP_NORTHEAST_3B = "ap-northeast-3b"
-AP_NORTHEAST_3C = "ap-northeast-3c"
+AP_NORTHEAST_3A: Final = "ap-northeast-3a"
+AP_NORTHEAST_3B: Final = "ap-northeast-3b"
+AP_NORTHEAST_3C: Final = "ap-northeast-3c"
 
-AP_SOUTHEAST_1A = "ap-southeast-1a"
-AP_SOUTHEAST_1B = "ap-southeast-1b"
-AP_SOUTHEAST_1C = "ap-southeast-1c"
+AP_SOUTHEAST_1A: Final = "ap-southeast-1a"
+AP_SOUTHEAST_1B: Final = "ap-southeast-1b"
+AP_SOUTHEAST_1C: Final = "ap-southeast-1c"
 
-AP_SOUTHEAST_2A = "ap-southeast-2a"
-AP_SOUTHEAST_2B = "ap-southeast-2b"
-AP_SOUTHEAST_2C = "ap-southeast-2c"
+AP_SOUTHEAST_2A: Final = "ap-southeast-2a"
+AP_SOUTHEAST_2B: Final = "ap-southeast-2b"
+AP_SOUTHEAST_2C: Final = "ap-southeast-2c"
 
-AP_SOUTHEAST_3A = "ap-southeast-3a"
-AP_SOUTHEAST_3B = "ap-southeast-3b"
-AP_SOUTHEAST_3C = "ap-southeast-3c"
+AP_SOUTHEAST_3A: Final = "ap-southeast-3a"
+AP_SOUTHEAST_3B: Final = "ap-southeast-3b"
+AP_SOUTHEAST_3C: Final = "ap-southeast-3c"
 
-AP_SOUTH_1A = "ap-south-1a"
-AP_SOUTH_1B = "ap-south-1b"
-AP_SOUTH_1C = "ap-south-1c"
+AP_SOUTH_1A: Final = "ap-south-1a"
+AP_SOUTH_1B: Final = "ap-south-1b"
+AP_SOUTH_1C: Final = "ap-south-1c"
 
-CA_CENTRAL_1A = "ca-central-1a"
-CA_CENTRAL_1B = "ca-central-1b"
-CA_CENTRAL_1D = "ca-central-1d"
+CA_CENTRAL_1A: Final = "ca-central-1a"
+CA_CENTRAL_1B: Final = "ca-central-1b"
+CA_CENTRAL_1D: Final = "ca-central-1d"
 
-CN_NORTH_1A = "cn-north-1a"
-CN_NORTH_1B = "cn-north-1b"
-CN_NORTH_1C = "cn-north-1c"
+CN_NORTH_1A: Final = "cn-north-1a"
+CN_NORTH_1B: Final = "cn-north-1b"
+CN_NORTH_1C: Final = "cn-north-1c"
 
-CN_NORTHWEST_1A = "cn-northwest-1a"
-CN_NORTHWEST_1B = "cn-northwest-1b"
-CN_NORTHWEST_1C = "cn-northwest-1c"
+CN_NORTHWEST_1A: Final = "cn-northwest-1a"
+CN_NORTHWEST_1B: Final = "cn-northwest-1b"
+CN_NORTHWEST_1C: Final = "cn-northwest-1c"
 
-EU_WEST_1A = "eu-west-1a"
-EU_WEST_1B = "eu-west-1b"
-EU_WEST_1C = "eu-west-1c"
+EU_WEST_1A: Final = "eu-west-1a"
+EU_WEST_1B: Final = "eu-west-1b"
+EU_WEST_1C: Final = "eu-west-1c"
 
-EU_WEST_2A = "eu-west-2a"
-EU_WEST_2B = "eu-west-2b"
-EU_WEST_2C = "eu-west-2c"
+EU_WEST_2A: Final = "eu-west-2a"
+EU_WEST_2B: Final = "eu-west-2b"
+EU_WEST_2C: Final = "eu-west-2c"
 
-EU_WEST_3A = "eu-west-3a"
-EU_WEST_3B = "eu-west-3b"
-EU_WEST_3C = "eu-west-3c"
+EU_WEST_3A: Final = "eu-west-3a"
+EU_WEST_3B: Final = "eu-west-3b"
+EU_WEST_3C: Final = "eu-west-3c"
 
-EU_CENTRAL_1A = "eu-central-1a"
-EU_CENTRAL_1B = "eu-central-1b"
-EU_CENTRAL_1C = "eu-central-1c"
+EU_CENTRAL_1A: Final = "eu-central-1a"
+EU_CENTRAL_1B: Final = "eu-central-1b"
+EU_CENTRAL_1C: Final = "eu-central-1c"
 
-EU_NORTH_1A = "eu-north-1a"
-EU_NORTH_1B = "eu-north-1b"
-EU_NORTH_1C = "eu-north-1c"
+EU_NORTH_1A: Final = "eu-north-1a"
+EU_NORTH_1B: Final = "eu-north-1b"
+EU_NORTH_1C: Final = "eu-north-1c"
 
-EU_SOUTH_1A = "eu-south-1a"
-EU_SOUTH_1B = "eu-south-1b"
-EU_SOUTH_1C = "eu-south-1c"
+EU_SOUTH_1A: Final = "eu-south-1a"
+EU_SOUTH_1B: Final = "eu-south-1b"
+EU_SOUTH_1C: Final = "eu-south-1c"
 
-ME_CENTRAL_1A = "me-central-1a"
-ME_CENTRAL_1B = "me-central-1b"
-ME_CENTRAL_1C = "me-central-1c"
+ME_CENTRAL_1A: Final = "me-central-1a"
+ME_CENTRAL_1B: Final = "me-central-1b"
+ME_CENTRAL_1C: Final = "me-central-1c"
 
-ME_SOUTH_1A = "me-south-1a"
-ME_SOUTH_1B = "me-south-1b"
-ME_SOUTH_1C = "me-south-1c"
+ME_SOUTH_1A: Final = "me-south-1a"
+ME_SOUTH_1B: Final = "me-south-1b"
+ME_SOUTH_1C: Final = "me-south-1c"
 
-SA_EAST_1A = "sa-east-1a"
-SA_EAST_1B = "sa-east-1b"
-SA_EAST_1C = "sa-east-1c"
+SA_EAST_1A: Final = "sa-east-1a"
+SA_EAST_1B: Final = "sa-east-1b"
+SA_EAST_1C: Final = "sa-east-1c"
 
-US_EAST_1A = "us-east-1a"
-US_EAST_1B = "us-east-1b"
-US_EAST_1C = "us-east-1c"
-US_EAST_1D = "us-east-1d"
-US_EAST_1E = "us-east-1e"
-US_EAST_1F = "us-east-1f"
+US_EAST_1A: Final = "us-east-1a"
+US_EAST_1B: Final = "us-east-1b"
+US_EAST_1C: Final = "us-east-1c"
+US_EAST_1D: Final = "us-east-1d"
+US_EAST_1E: Final = "us-east-1e"
+US_EAST_1F: Final = "us-east-1f"
 
-US_EAST_2A = "us-east-2a"
-US_EAST_2B = "us-east-2b"
-US_EAST_2C = "us-east-2c"
+US_EAST_2A: Final = "us-east-2a"
+US_EAST_2B: Final = "us-east-2b"
+US_EAST_2C: Final = "us-east-2c"
 
-US_WEST_1A = "us-west-1a"
-US_WEST_1B = "us-west-1b"
-US_WEST_1C = "us-west-1c"
-
-US_GOV_EAST_1A = "us-gov-east-1a"
-US_GOV_EAST_1B = "us-gov-east-1b"
-US_GOV_EAST_1C = "us-gov-east-1c"
-
-US_GOV_WEST_1A = "us-gov-west-1a"
-US_GOV_WEST_1B = "us-gov-west-1b"
-US_GOV_WEST_1C = "us-gov-west-1c"
-
-US_WEST_2A = "us-west-2a"
-US_WEST_2B = "us-west-2b"
-US_WEST_2C = "us-west-2c"
-US_WEST_2D = "us-west-2d"
+US_WEST_1A: Final = "us-west-1a"
+US_WEST_1B: Final = "us-west-1b"
+US_WEST_1C: Final = "us-west-1c"
+
+US_GOV_EAST_1A: Final = "us-gov-east-1a"
+US_GOV_EAST_1B: Final = "us-gov-east-1b"
+US_GOV_EAST_1C: Final = "us-gov-east-1c"
+
+US_GOV_WEST_1A: Final = "us-gov-west-1a"
+US_GOV_WEST_1B: Final = "us-gov-west-1b"
+US_GOV_WEST_1C: Final = "us-gov-west-1c"
+
+US_WEST_2A: Final = "us-west-2a"
+US_WEST_2B: Final = "us-west-2b"
+US_WEST_2C: Final = "us-west-2c"
+US_WEST_2D: Final = "us-west-2d"
 
 #
 # Networking
 #
 
-QUAD_ZERO = "0.0.0.0/0"
-VPC_CIDR_16 = "10.0.0.0/16"
-
-SSH_PORT = 22
-MONGODB_PORT = 27017
-NTP_PORT = 123
-SMTP_PORT_25 = 25
-SMTP_PORT_587 = 587
-HTTP_PORT = 80
-HTTPS_PORT = 443
-REDIS_PORT = 6379
-MEMCACHED_PORT = 11211
-POSTGRESQL_PORT = 5432
-
-TCP_PROTOCOL = 6
-UDP_PROTOCOL = 17
-ICMP_PROTOCOL = 1
-ALL_PROTOCOL = -1
+QUAD_ZERO: Final = "0.0.0.0/0"
+VPC_CIDR_16: Final = "10.0.0.0/16"
+
+SSH_PORT: Final = 22
+MONGODB_PORT: Final = 27017
+NTP_PORT: Final = 123
+SMTP_PORT_25: Final = 25
+SMTP_PORT_587: Final = 587
+HTTP_PORT: Final = 80
+HTTPS_PORT: Final = 443
+REDIS_PORT: Final = 6379
+MEMCACHED_PORT: Final = 11211
+POSTGRESQL_PORT: Final = 5432
+
+TCP_PROTOCOL: Final = 6
+UDP_PROTOCOL: Final = 17
+ICMP_PROTOCOL: Final = 1
+ALL_PROTOCOL: Final = -1
 
 #
 # EC2 instance types
 #
 
-T2_NANO = "t2.nano"
-T2_MICRO = "t2.micro"
-T2_SMALL = "t2.small"
-T2_MEDIUM = "t2.medium"
-T2_LARGE = "t2.large"
-T2_XLARGE = "t2.xlarge"
-T2_2XLARGE = "t2.2xlarge"
-
-T3_NANO = "t3.nano"
-T3_MICRO = "t3.micro"
-T3_SMALL = "t3.small"
-T3_MEDIUM = "t3.medium"
-T3_LARGE = "t3.large"
-T3_XLARGE = "t3.xlarge"
-T3_2XLARGE = "t3.2xlarge"
-
-T3A_NANO = "t3a.nano"
-T3A_MICRO = "t3a.micro"
-T3A_SMALL = "t3a.small"
-T3A_MEDIUM = "t3a.medium"
-T3A_LARGE = "t3a.large"
-T3A_XLARGE = "t3a.xlarge"
-T3A_2XLARGE = "t3a.2xlarge"
-
-T4G_NANO = "t4g.nano"
-T4G_MICRO = "t4g.micro"
-T4G_SMALL = "t4g.small"
-T4G_MEDIUM = "t4g.medium"
-T4G_LARGE = "t4g.large"
-T4G_XLARGE = "t4g.xlarge"
-T4G_2XLARGE = "t4g.2xlarge"
-
-M6A_LARGE = "m6a.large"
-M6A_XLARGE = "m6a.xlarge"
-M6A_2XLARGE = "m6a.2xlarge"
-M6A_4XLARGE = "m6a.4xlarge"
-M6A_8XLARGE = "m6a.8xlarge"
-M6A_12XLARGE = "m6a.12xlarge"
-M6A_16XLARGE = "m6a.16xlarge"
-M6A_24XLARGE = "m6a.24xlarge"
-M6A_32XLARGE = "m6a.32xlarge"
-M6A_48XLARGE = "m6a.48xlarge"
-M6A_METAL = "m6a.metal"
-
-M6IN_LARGE = "m6in.large"
-M6IN_XLARGE = "m6in.xlarge"
-M6IN_2XLARGE = "m6in.2xlarge"
-M6IN_4XLARGE = "m6in.4xlarge"
-M6IN_8XLARGE = "m6in.8xlarge"
-M6IN_12XLARGE = "m6in.12xlarge"
-M6IN_16XLARGE = "m6in.16xlarge"
-M6IN_24XLARGE = "m6in.24xlarge"
-M6IN_32XLARGE = "m6in.32xlarge"
-
-M6IDN_LARGE = "m6idn.large"
-M6IDN_XLARGE = "m6idn.xlarge"
-M6IDN_2XLARGE = "m6idn.2xlarge"
-M6IDN_4XLARGE = "m6idn.4xlarge"
-M6IDN_8XLARGE = "m6idn.8xlarge"
-M6IDN_12XLARGE = "m6idn.12xlarge"
-M6IDN_16XLARGE = "m6idn.16xlarge"
-M6IDN_24XLARGE = "m6idn.24xlarge"
-M6IDN_32XLARGE = "m6idn.32xlarge"
-
-M6I_LARGE = "m6i.large"
-M6I_XLARGE = "m6i.xlarge"
-M6I_2XLARGE = "m6i.2xlarge"
-M6I_4XLARGE = "m6i.4xlarge"
-M6I_8XLARGE = "m6i.8xlarge"
-M6I_12XLARGE = "m6i.12xlarge"
-M6I_16XLARGE = "m6i.16xlarge"
-M6I_24XLARGE = "m6i.24xlarge"
-M6I_32XLARGE = "m6i.32xlarge"
-M6I_METAL = "m6i.metal"
-
-M6ID_LARGE = "m6id.large"
-M6ID_XLARGE = "m6id.xlarge"
-M6ID_2XLARGE = "m6id.2xlarge"
-M6ID_4XLARGE = "m6id.4xlarge"
-M6ID_8XLARGE = "m6id.8xlarge"
-M6ID_12XLARGE = "m6id.12xlarge"
-M6ID_16XLARGE = "m6id.16xlarge"
-M6ID_24XLARGE = "m6id.24xlarge"
-M6ID_32XLARGE = "m6id.32xlarge"
-M6ID_METAL = "m6id.metal"
-
-M6G_MEDIUM = "m6g.medium"
-M6G_LARGE = "m6g.large"
-M6G_XLARGE = "m6g.xlarge"
-M6G_2XLARGE = "m6g.2xlarge"
-M6G_4XLARGE = "m6g.4xlarge"
-M6G_8XLARGE = "m6g.8xlarge"
-M6G_12XLARGE = "m6g.12xlarge"
-M6G_16XLARGE = "m6g.16xlarge"
-M6G_METAL = "m6g.metal"
-
-M6GD_MEDIUM = "m6gd.medium"
-M6GD_LARGE = "m6gd.large"
-M6GD_XLARGE = "m6gd.xlarge"
-M6GD_2XLARGE = "m6gd.2xlarge"
-M6GD_4XLARGE = "m6gd.4xlarge"
-M6GD_8XLARGE = "m6gd.8xlarge"
-M6GD_12XLARGE = "m6gd.12xlarge"
-M6GD_16XLARGE = "m6gd.16xlarge"
-M6GD_METAL = "m6gd.metal"
-
-M7G_MEDIUM = "m7g.medium"
-M7G_LARGE = "m7g.large"
-M7G_XLARGE = "m7g.xlarge"
-M7G_2XLARGE = "m7g.2xlarge"
-M7G_4XLARGE = "m7g.4xlarge"
-M7G_8XLARGE = "m7g.8xlarge"
-M7G_12XLARGE = "m7g.12xlarge"
-M7G_16XLARGE = "m7g.16xlarge"
-M7G_METAL = "m7g.metal"
-
-M5_LARGE = "m5.large"
-M5_XLARGE = "m5.xlarge"
-M5_2XLARGE = "m5.2xlarge"
-M5_4XLARGE = "m5.4xlarge"
-M5_8XLARGE = "m5.8xlarge"
-M5_12XLARGE = "m5.12xlarge"
-M5_16XLARGE = "m5.16xlarge"
-M5_24XLARGE = "m5.24xlarge"
-M5_METAL = "m5.metal"
-
-M5D_LARGE = "m5d.large"
-M5D_XLARGE = "m5d.xlarge"
-M5D_2XLARGE = "m5d.2xlarge"
-M5D_4XLARGE = "m5d.4xlarge"
-M5D_8XLARGE = "m5d.8xlarge"
-M5D_12XLARGE = "m5d.12xlarge"
-M5D_16XLARGE = "m5d.16xlarge"
-M5D_24XLARGE = "m5d.24xlarge"
-M5D_METAL = "m5d.metal"
-
-M5A_LARGE = "m5a.large"
-M5A_XLARGE = "m5a.xlarge"
-M5A_2XLARGE = "m5a.2xlarge"
-M5A_4XLARGE = "m5a.4xlarge"
-M5A_12XLARGE = "m5a.12xlarge"
-M5A_24XLARGE = "m5a.24xlarge"
-
-M5AD_LARGE = "m5ad.large"
-M5AD_XLARGE = "m5ad.xlarge"
-M5AD_2XLARGE = "m5ad.2xlarge"
-M5AD_4XLARGE = "m5ad.4xlarge"
-M5AD_12XLARGE = "m5ad.12xlarge"
-M5AD_24XLARGE = "m5ad.24xlarge"
-
-M5ZN_LARGE = "m5zn.large"
-M5ZN_XLARGE = "m5zn.xlarge"
-M5ZN_2XLARGE = "m5zn.2xlarge"
-M5ZN_3XLARGE = "m5zn.3xlarge"
-M5ZN_6XLARGE = "m5zn.6xlarge"
-M5ZN_12XLARGE = "m5zn.12xlarge"
-M5ZN_METAL = "m5zn.metal"
-
-M5N_LARGE = "m5n.large"
-M5N_XLARGE = "m5n.xlarge"
-M5N_2XLARGE = "m5n.2xlarge"
-M5N_4XLARGE = "m5n.4xlarge"
-M5N_8XLARGE = "m5n.8xlarge"
-M5N_12XLARGE = "m5n.12xlarge"
-M5N_16XLARGE = "m5n.16xlarge"
-M5N_24XLARGE = "m5n.24xlarge"
-M5N_METAL = "m5n.metal"
-M5DN_LARGE = "m5dn.large"
-M5DN_XLARGE = "m5dn.xlarge"
-M5DN_2XLARGE = "m5dn.2xlarge"
-M5DN_4XLARGE = "m5dn.4xlarge"
-M5DN_8XLARGE = "m5dn.8xlarge"
-M5DN_12XLARGE = "m5dn.12xlarge"
-M5DN_16XLARGE = "m5dn.16xlarge"
-M5DN_24XLARGE = "m5dn.24xlarge"
-M5DN_METAL = "m5dn.metal"
-
-M4_LARGE = "m4.large"
-M4_XLARGE = "m4.xlarge"
-M4_2XLARGE = "m4.2xlarge"
-M4_4XLARGE = "m4.4xlarge"
-M4_10XLARGE = "m4.10xlarge"
-M4_16XLARGE = "m4.16xlarge"
-
-M3_MEDIUM = "m3.medium"
-M3_LARGE = "m3.large"
-M3_XLARGE = "m3.xlarge"
-M3_2XLARGE = "m3.2xlarge"
-
-A1_MEDIUM = "a1.medium"
-A1_LARGE = "a1.large"
-A1_XLARGE = "a1.xlarge"
-A1_2XLARGE = "a1.2xlarge"
-A1_4XLARGE = "a1.4xlarge"
-A1_METAL = "a1.metal"
-
-C3_LARGE = "c3.large"
-C3_XLARGE = "c3.xlarge"
-C3_2XLARGE = "c3.2xlarge"
-C3_4XLARGE = "c3.4xlarge"
-C3_8XLARGE = "c3.8xlarge"
-
-C4_LARGE = "c4.large"
-C4_XLARGE = "c4.xlarge"
-C4_2XLARGE = "c4.2xlarge"
-C4_4XLARGE = "c4.4xlarge"
-C4_8XLARGE = "c4.8xlarge"
-
-C5_LARGE = "c5.large"
-C5_XLARGE = "c5.xlarge"
-C5_2XLARGE = "c5.2xlarge"
-C5_4XLARGE = "c5.4xlarge"
-C5_9XLARGE = "c5.9xlarge"
-C5_12XLARGE = "c5.12xlarge"
-C5_18XLARGE = "c5.18xlarge"
-C5_24XLARGE = "c5.24xlarge"
-C5_METAL = "c5.metal"
-
-C5A_LARGE = "c5a.large"
-C5A_XLARGE = "c5a.xlarge"
-C5A_2XLARGE = "c5a.2xlarge"
-C5A_4XLARGE = "c5a.4xlarge"
-C5A_8XLARGE = "c5a.8xlarge"
-C5A_12XLARGE = "c5a.12xlarge"
-C5A_16XLARGE = "c5a.16xlarge"
-C5A_24XLARGE = "c5a.24xlarge"
-
-C5AD_LARGE = "c5ad.large"
-C5AD_XLARGE = "c5ad.xlarge"
-C5AD_2XLARGE = "c5ad.2xlarge"
-C5AD_4XLARGE = "c5ad.4xlarge"
-C5AD_8XLARGE = "c5ad.8xlarge"
-C5AD_12XLARGE = "c5ad.12xlarge"
-C5AD_16XLARGE = "c5ad.16xlarge"
-C5AD_24XLARGE = "c5ad.24xlarge"
-
-C5D_LARGE = "c5d.large"
-C5D_XLARGE = "c5d.xlarge"
-C5D_2XLARGE = "c5d.2xlarge"
-C5D_4XLARGE = "c5d.4xlarge"
-C5D_9XLARGE = "c5d.9xlarge"
-C5D_12XLARGE = "c5d.12xlarge"
-C5D_18XLARGE = "c5d.18xlarge"
-C5D_24XLARGE = "c5d.24xlarge"
-C5D_METAL = "c5d.metal"
-
-C5N_LARGE = "c5n.large"
-C5N_XLARGE = "c5n.xlarge"
-C5N_2XLARGE = "c5n.2xlarge"
-C5N_4XLARGE = "c5n.4xlarge"
-C5N_9XLARGE = "c5n.9xlarge"
-C5N_18XLARGE = "c5n.18xlarge"
-C5N_METAL = "c5n.metal"
-
-C6G_MEDIUM = "c6g.medium"
-C6G_LARGE = "c6g.large"
-C6G_XLARGE = "c6g.xlarge"
-C6G_2XLARGE = "c6g.2xlarge"
-C6G_4XLARGE = "c6g.4xlarge"
-C6G_8XLARGE = "c6g.8xlarge"
-C6G_12XLARGE = "c6g.12xlarge"
-C6G_16XLARGE = "c6g.16xlarge"
-C6G_METAL = "c6g.metal"
-
-C6GD_MEDIUM = "c6gd.medium"
-C6GD_LARGE = "c6gd.large"
-C6GD_XLARGE = "c6gd.xlarge"
-C6GD_2XLARGE = "c6gd.2xlarge"
-C6GD_4XLARGE = "c6gd.4xlarge"
-C6GD_8XLARGE = "c6gd.8xlarge"
-C6GD_12XLARGE = "c6gd.12xlarge"
-C6GD_16XLARGE = "c6gd.16xlarge"
-C6GD_METAL = "c6gd.metal"
-
-C6GN_MEDIUM = "c6gn.medium"
-C6GN_LARGE = "c6gn.large"
-C6GN_XLARGE = "c6gn.xlarge"
-C6GN_2XLARGE = "c6gn.2xlarge"
-C6GN_4XLARGE = "c6gn.4xlarge"
-C6GN_8XLARGE = "c6gn.8xlarge"
-C6GN_12XLARGE = "c6gn.12xlarge"
-C6GN_16XLARGE = "c6gn.16xlarge"
-
-C6A_LARGE = "c6a.large"
-C6A_XLARGE = "c6a.xlarge"
-C6A_2XLARGE = "c6a.2xlarge"
-C6A_4XLARGE = "c6a.4xlarge"
-C6A_8XLARGE = "c6a.8xlarge"
-C6A_12XLARGE = "c6a.12xlarge"
-C6A_16XLARGE = "c6a.16xlarge"
-C6A_24XLARGE = "c6a.24xlarge"
-C6A_32XLARGE = "c6a.32xlarge"
-C6A_48XLARGE = "c6a.48xlarge"
-C6A_METAL = "c6a.metal"
-
-C6IN_LARGE = "c6in.large"
-C6IN_XLARGE = "c6in.xlarge"
-C6IN_2XLARGE = "c6in.2xlarge"
-C6IN_4XLARGE = "c6in.4xlarge"
-C6IN_8XLARGE = "c6in.8xlarge"
-C6IN_12XLARGE = "c6in.12xlarge"
-C6IN_16XLARGE = "c6in.16xlarge"
-C6IN_24XLARGE = "c6in.24xlarge"
-C6IN_32XLARGE = "c6in.32xlarge"
-
-C6I_LARGE = "c6i.large"
-C6I_XLARGE = "c6i.xlarge"
-C6I_2XLARGE = "c6i.2xlarge"
-C6I_4XLARGE = "c6i.4xlarge"
-C6I_8XLARGE = "c6i.8xlarge"
-C6I_12XLARGE = "c6i.12xlarge"
-C6I_16XLARGE = "c6i.16xlarge"
-C6I_24XLARGE = "c6i.24xlarge"
-C6I_32XLARGE = "c6i.32xlarge"
-C6I_METAL = "c6i.metal"
-
-C6ID_LARGE = "c6id.large"
-C6ID_XLARGE = "c6id.xlarge"
-C6ID_2XLARGE = "c6id.2xlarge"
-C6ID_4XLARGE = "c6id.4xlarge"
-C6ID_8XLARGE = "c6id.8xlarge"
-C6ID_12XLARGE = "c6id.12xlarge"
-C6ID_16XLARGE = "c6id.16xlarge"
-C6ID_24XLARGE = "c6id.24xlarge"
-C6ID_32XLARGE = "c6id.32xlarge"
-C6ID_METAL = "c6id.metal"
-
-C7G_MEDIUM = "c7g.medium"
-C7G_LARGE = "c7g.large"
-C7G_XLARGE = "c7g.xlarge"
-C7G_2XLARGE = "c7g.2xlarge"
-C7G_4XLARGE = "c7g.4xlarge"
-C7G_8XLARGE = "c7g.8xlarge"
-C7G_12XLARGE = "c7g.12xlarge"
-C7G_16XLARGE = "c7g.16xlarge"
-C7G_METAL = "c7g.metal"
-
-R3_LARGE = "r3.large"
-R3_XLARGE = "r3.xlarge"
-R3_2XLARGE = "r3.2xlarge"
-R3_4XLARGE = "r3.4xlarge"
-R3_8XLARGE = "r3.8xlarge"
-
-G2_2XLARGE = "g2.2xlarge"
-G2_8XLARGE = "g2.8xlarge"
-
-G3S_XLARGE = "g3s.xlarge"
-G3_4XLARGE = "g3.4xlarge"
-G3_8XLARGE = "g3.8xlarge"
-G3_16XLARGE = "g3.16xlarge"
-
-G4AD_4XLARGE = "g4ad.4xlarge"
-G4AD_8XLARGE = "g4ad.8xlarge"
-G4AD_16XLARGE = "g4ad.16xlarge"
-
-G4DN_XLARGE = "g4dn.xlarge"
-G4DN_2XLARGE = "g4dn.2xlarge"
-G4DN_4XLARGE = "g4dn.4xlarge"
-G4DN_8XLARGE = "g4dn.8xlarge"
-G4DN_12XLARGE = "g4dn.12xlarge"
-G4DN_16XLARGE = "g4dn.16xlarge"
-G4DN_METAL = "g4dn.metal"
-
-I2_XLARGE = "i2.xlarge"
-I2_2XLARGE = "i2.2xlarge"
-I2_4XLARGE = "i2.4xlarge"
-I2_8XLARGE = "i2.8xlarge"
-
-H1_2XLARGE = "h1.2xlarge"
-H1_4XLARGE = "h1.4xlarge"
-H1_8XLARGE = "h1.8xlarge"
-H1_16XLARGE = "h1.16xlarge"
-
-I3_LARGE = "i3.large"
-I3_XLARGE = "i3.xlarge"
-I3_2XLARGE = "i3.2xlarge"
-I3_4XLARGE = "i3.4xlarge"
-I3_8XLARGE = "i3.8xlarge"
-I3_16XLARGE = "i3.16xlarge"
-I3_METAL = "i3.metal"
-
-I3EN_LARGE = "i3en.large"
-I3EN_XLARGE = "i3en.xlarge"
-I3EN_2XLARGE = "i3en.2xlarge"
-I3EN_3XLARGE = "i3en.3xlarge"
-I3EN_6XLARGE = "i3en.6xlarge"
-I3EN_12XLARGE = "i3en.12xlarge"
-I3EN_24XLARGE = "i3en.24xlarge"
-I3EN_METAL = "i3en.metal"
-
-D2_XLARGE = "d2.xlarge"
-D2_2XLARGE = "d2.2xlarge"
-D2_4XLARGE = "d2.4xlarge"
-D2_8XLARGE = "d2.8xlarge"
-
-D3_XLARGE = "d3.xlarge"
-D3_2XLARGE = "d3.2xlarge"
-D3_4XLARGE = "d3.4xlarge"
-D3_8XLARGE = "d3.8xlarge"
-
-D3EN_XLARGE = "d3en.xlarge"
-D3EN_2XLARGE = "d3en.2xlarge"
-D3EN_4XLARGE = "d3en.4xlarge"
-D3EN_6XLARGE = "d3en.6xlarge"
-D3EN_8XLARGE = "d3en.8xlarge"
-D3EN_12XLARGE = "d3en.12xlarge"
-
-HS1_8XLARGE = "hs1.8xlarge"
-
-M1_SMALL = "m1.small"
-M1_MEDIUM = "m1.medium"
-M1_LARGE = "m1.large"
-M1_XLARGE = "m1.xlarge"
-
-C1_MEDIUM = "c1.medium"
-C1_XLARGE = "c1.xlarge"
-CC2_8XLARGE = "cc2.8xlarge"
-
-CG1_4XLARGE = "cg1.4xlarge"
-
-M2_XLARGE = "m2.xlarge"
-M2_2XLARGE = "m2.2xlarge"
-M2_4XLARGE = "m2.4xlarge"
-CR1_8XLARGE = "cr1.8xlarge"
-
-HI1_4XLARGE = "hi1.4xlarge"
-
-T1_MICRO = "t1.micro"
-
-X1_32XLARGE = "x1.32xlarge"
-X1_16XLARGE = "x1.16xlarge"
-
-X1E_XLARGE = "x1e.xlarge"
-X1E_2XLARGE = "x1e.2xlarge"
-X1E_4XLARGE = "x1e.4xlarge"
-X1E_8XLARGE = "x1e.8xlarge"
-X1E_16XLARGE = "x1e.16xlarge"
-X1E_32XLARGE = "x1e.32xlarge"
-
-U_6TB1_METAL = "u-6tb1.metal"
-U_9TB1_METAL = "u-9tb1.metal"
-U_12TB1_METAL = "u-12tb1.metal"
-U_18TB1_METAL = "u-18tb1.metal"
-U_24TB1_METAL = "u-24tb1.metal"
-
-Z1D_LARGE = "z1d.large"
-Z1D_XLARGE = "z1d.xlarge"
-Z1D_2XLARGE = "z1d.2xlarge"
-Z1D_3XLARGE = "z1d.3xlarge"
-Z1D_6XLARGE = "z1d.6xlarge"
-Z1D_12XLARGE = "z1d.12xlarge"
-Z1D_METAL = "z1d.metal"
-
-R4_LARGE = "r4.large"
-R4_XLARGE = "r4.xlarge"
-R4_2XLARGE = "r4.2xlarge"
-R4_4XLARGE = "r4.4xlarge"
-R4_8XLARGE = "r4.8xlarge"
-R4_16XLARGE = "r4.16xlarge"
-
-R5_LARGE = "r5.large"
-R5_XLARGE = "r5.xlarge"
-R5_2XLARGE = "r5.2xlarge"
-R5_4XLARGE = "r5.4xlarge"
-R5_8XLARGE = "r5.8xlarge"
-R5_12XLARGE = "r5.12xlarge"
-R5_16XLARGE = "r5.16xlarge"
-R5_24XLARGE = "r5.24xlarge"
-R5_METAL = "r5.metal"
-
-R5D_LARGE = "r5d.large"
-R5D_XLARGE = "r5d.xlarge"
-R5D_2XLARGE = "r5d.2xlarge"
-R5D_4XLARGE = "r5d.4xlarge"
-R5D_8XLARGE = "r5d.8xlarge"
-R5D_12XLARGE = "r5d.12xlarge"
-R5D_16XLARGE = "r5d.16xlarge"
-R5D_24XLARGE = "r5d.24xlarge"
-R5D_METAL = "r5d.metal"
-
-R5A_LARGE = "r5a.large"
-R5A_XLARGE = "r5a.xlarge"
-R5A_2XLARGE = "r5a.2xlarge"
-R5A_4XLARGE = "r5a.4xlarge"
-R5A_8XLARGE = "r5a.8xlarge"
-R5A_12XLARGE = "r5a.12xlarge"
-R5A_16XLARGE = "r5a.16xlarge"
-R5A_24XLARGE = "r5a.24xlarge"
-
-R5AD_LARGE = "r5ad.large"
-R5AD_XLARGE = "r5ad.xlarge"
-R5AD_2XLARGE = "r5ad.2xlarge"
-R5AD_4XLARGE = "r5ad.4xlarge"
-R5AD_8XLARGE = "r5ad.8xlarge"
-R5AD_12XLARGE = "r5ad.12xlarge"
-R5AD_16XLARGE = "r5ad.16xlarge"
-R5AD_24XLARGE = "r5ad.24xlarge"
-
-R5N_LARGE = "r5n.large"
-R5N_XLARGE = "r5n.xlarge"
-R5N_2XLARGE = "r5n.2xlarge"
-R5N_4XLARGE = "r5n.4xlarge"
-R5N_8XLARGE = "r5n.8xlarge"
-R5N_12XLARGE = "r5n.12xlarge"
-R5N_16XLARGE = "r5n.16xlarge"
-R5N_24XLARGE = "r5n.24xlarge"
-R5N_METAL = "r5n.metal"
-
-R5DN_LARGE = "r5dn.large"
-R5DN_XLARGE = "r5dn.xlarge"
-R5DN_2XLARGE = "r5dn.2xlarge"
-R5DN_4XLARGE = "r5dn.4xlarge"
-R5DN_8XLARGE = "r5dn.8xlarge"
-R5DN_12XLARGE = "r5dn.12xlarge"
-R5DN_16XLARGE = "r5dn.16xlarge"
-R5DN_24XLARGE = "r5dn.24xlarge"
-R5DN_METAL = "r5dn.metal"
-
-R5B_LARGE = "r5b.large"
-R5B_XLARGE = "r5b.xlarge"
-R5B_2XLARGE = "r5b.2xlarge"
-R5B_4XLARGE = "r5b.4xlarge"
-R5B_8XLARGE = "r5b.8xlarge"
-R5B_12XLARGE = "r5b.12xlarge"
-R5B_16XLARGE = "r5b.16xlarge"
-R5B_24XLARGE = "r5b.24xlarge"
-R5B_METAL = "r5b.metal"
-
-R6G_MEDIUM = "r6g.medium"
-R6G_LARGE = "r6g.large"
-R6G_XLARGE = "r6g.xlarge"
-R6G_2XLARGE = "r6g.2xlarge"
-R6G_4XLARGE = "r6g.4xlarge"
-R6G_8XLARGE = "r6g.8xlarge"
-R6G_12XLARGE = "r6g.12xlarge"
-R6G_16XLARGE = "r6g.16xlarge"
-R6G_METAL = "r6g.metal"
-
-R6GD_MEDIUM = "r6gd.medium"
-R6GD_LARGE = "r6gd.large"
-R6GD_XLARGE = "r6gd.xlarge"
-R6GD_2XLARGE = "r6gd.2xlarge"
-R6GD_4XLARGE = "r6gd.4xlarge"
-R6GD_8XLARGE = "r6gd.8xlarge"
-R6GD_12XLARGE = "r6gd.12xlarge"
-R6GD_16XLARGE = "r6gd.16xlarge"
-R6GD_METAL = "r6gd.metal"
-
-R6I_LARGE = "r6i.large"
-R6I_XLARGE = "r6i.xlarge"
-R6I_2XLARGE = "r6i.2xlarge"
-R6I_4XLARGE = "r6i.4xlarge"
-R6I_8XLARGE = "r6i.8xlarge"
-R6I_12XLARGE = "r6i.12xlarge"
-R6I_16XLARGE = "r6i.16xlarge"
-R6I_24XLARGE = "r6i.24xlarge"
-R6I_32XLARGE = "r6i.32xlarge"
-R6I_METAL = "r6i.metal"
-
-R6ID_LARGE = "r6id.large"
-R6ID_XLARGE = "r6id.xlarge"
-R6ID_2XLARGE = "r6id.2xlarge"
-R6ID_4XLARGE = "r6id.4xlarge"
-R6ID_8XLARGE = "r6id.8xlarge"
-R6ID_12XLARGE = "r6id.12xlarge"
-R6ID_16XLARGE = "r6id.16xlarge"
-R6ID_24XLARGE = "r6id.24xlarge"
-R6ID_32XLARGE = "r6id.32xlarge"
-R6ID_METAL = "r6id.metal"
-
-R6IN_LARGE = "r6in.large"
-R6IN_XLARGE = "r6in.xlarge"
-R6IN_2XLARGE = "r6in.2xlarge"
-R6IN_4XLARGE = "r6in.4xlarge"
-R6IN_8XLARGE = "r6in.8xlarge"
-R6IN_12XLARGE = "r6in.12xlarge"
-R6IN_16XLARGE = "r6in.16xlarge"
-R6IN_24XLARGE = "r6in.24xlarge"
-R6IN_32XLARGE = "r6in.32xlarge"
-
-R6IDN_LARGE = "r6idn.large"
-R6IDN_XLARGE = "r6idn.xlarge"
-R6IDN_2XLARGE = "r6idn.2xlarge"
-R6IDN_4XLARGE = "r6idn.4xlarge"
-R6IDN_8XLARGE = "r6idn.8xlarge"
-R6IDN_12XLARGE = "r6idn.12xlarge"
-R6IDN_16XLARGE = "r6idn.16xlarge"
-R6IDN_24XLARGE = "r6idn.24xlarge"
-R6IDN_32XLARGE = "r6idn.32xlarge"
-
-R6A_LARGE = "r6a.large"
-R6A_XLARGE = "r6a.xlarge"
-R6A_2XLARGE = "r6a.2xlarge"
-R6A_4XLARGE = "r6a.4xlarge"
-R6A_8XLARGE = "r6a.8xlarge"
-R6A_12XLARGE = "r6a.12xlarge"
-R6A_16XLARGE = "r6a.16xlarge"
-R6A_24XLARGE = "r6a.24xlarge"
-R6A_32XLARGE = "r6a.32xlarge"
-R6A_48XLARGE = "r6a.48xlarge"
-R6A_METAL = "r6a.metal"
-
-R7G_MEDIUM = "r7g.medium"
-R7G_LARGE = "r7g.large"
-R7G_XLARGE = "r7g.xlarge"
-R7G_2XLARGE = "r7g.2xlarge"
-R7G_4XLARGE = "r7g.4xlarge"
-R7G_8XLARGE = "r7g.8xlarge"
-R7G_12XLARGE = "r7g.12xlarge"
-R7G_16XLARGE = "r7g.16xlarge"
-R7G_METAL = "r7g.metal"
-
-P2_XLARGE = "p2.xlarge"
-P2_8XLARGE = "p2.8xlarge"
-P2_16XLARGE = "p2.16xlarge"
-
-P3_2XLARGE = "p3.2xlarge"
-P3_8XLARGE = "p3.8xlarge"
-P3_16XLARGE = "p3.16xlarge"
-P3DN_24XLARGE = "p3dn.24xlarge"
-
-F1_2XLARGE = "f1.2xlarge"
-F1_4XLARGE = "f1.4xlarge"
-F1_16XLARGE = "f1.16xlarge"
-
-INF1_XLARGE = "inf1.xlarge"
-INF1_2XLARGE = "inf1.2xlarge"
-INF1_6XLARGE = "inf1.6xlarge"
-INF1_24XLARGE = "inf1.24xlarge"
+T2_NANO: Final = "t2.nano"
+T2_MICRO: Final = "t2.micro"
+T2_SMALL: Final = "t2.small"
+T2_MEDIUM: Final = "t2.medium"
+T2_LARGE: Final = "t2.large"
+T2_XLARGE: Final = "t2.xlarge"
+T2_2XLARGE: Final = "t2.2xlarge"
+
+T3_NANO: Final = "t3.nano"
+T3_MICRO: Final = "t3.micro"
+T3_SMALL: Final = "t3.small"
+T3_MEDIUM: Final = "t3.medium"
+T3_LARGE: Final = "t3.large"
+T3_XLARGE: Final = "t3.xlarge"
+T3_2XLARGE: Final = "t3.2xlarge"
+
+T3A_NANO: Final = "t3a.nano"
+T3A_MICRO: Final = "t3a.micro"
+T3A_SMALL: Final = "t3a.small"
+T3A_MEDIUM: Final = "t3a.medium"
+T3A_LARGE: Final = "t3a.large"
+T3A_XLARGE: Final = "t3a.xlarge"
+T3A_2XLARGE: Final = "t3a.2xlarge"
+
+T4G_NANO: Final = "t4g.nano"
+T4G_MICRO: Final = "t4g.micro"
+T4G_SMALL: Final = "t4g.small"
+T4G_MEDIUM: Final = "t4g.medium"
+T4G_LARGE: Final = "t4g.large"
+T4G_XLARGE: Final = "t4g.xlarge"
+T4G_2XLARGE: Final = "t4g.2xlarge"
+
+M6A_LARGE: Final = "m6a.large"
+M6A_XLARGE: Final = "m6a.xlarge"
+M6A_2XLARGE: Final = "m6a.2xlarge"
+M6A_4XLARGE: Final = "m6a.4xlarge"
+M6A_8XLARGE: Final = "m6a.8xlarge"
+M6A_12XLARGE: Final = "m6a.12xlarge"
+M6A_16XLARGE: Final = "m6a.16xlarge"
+M6A_24XLARGE: Final = "m6a.24xlarge"
+M6A_32XLARGE: Final = "m6a.32xlarge"
+M6A_48XLARGE: Final = "m6a.48xlarge"
+M6A_METAL: Final = "m6a.metal"
+
+M6IN_LARGE: Final = "m6in.large"
+M6IN_XLARGE: Final = "m6in.xlarge"
+M6IN_2XLARGE: Final = "m6in.2xlarge"
+M6IN_4XLARGE: Final = "m6in.4xlarge"
+M6IN_8XLARGE: Final = "m6in.8xlarge"
+M6IN_12XLARGE: Final = "m6in.12xlarge"
+M6IN_16XLARGE: Final = "m6in.16xlarge"
+M6IN_24XLARGE: Final = "m6in.24xlarge"
+M6IN_32XLARGE: Final = "m6in.32xlarge"
+
+M6IDN_LARGE: Final = "m6idn.large"
+M6IDN_XLARGE: Final = "m6idn.xlarge"
+M6IDN_2XLARGE: Final = "m6idn.2xlarge"
+M6IDN_4XLARGE: Final = "m6idn.4xlarge"
+M6IDN_8XLARGE: Final = "m6idn.8xlarge"
+M6IDN_12XLARGE: Final = "m6idn.12xlarge"
+M6IDN_16XLARGE: Final = "m6idn.16xlarge"
+M6IDN_24XLARGE: Final = "m6idn.24xlarge"
+M6IDN_32XLARGE: Final = "m6idn.32xlarge"
+
+M6I_LARGE: Final = "m6i.large"
+M6I_XLARGE: Final = "m6i.xlarge"
+M6I_2XLARGE: Final = "m6i.2xlarge"
+M6I_4XLARGE: Final = "m6i.4xlarge"
+M6I_8XLARGE: Final = "m6i.8xlarge"
+M6I_12XLARGE: Final = "m6i.12xlarge"
+M6I_16XLARGE: Final = "m6i.16xlarge"
+M6I_24XLARGE: Final = "m6i.24xlarge"
+M6I_32XLARGE: Final = "m6i.32xlarge"
+M6I_METAL: Final = "m6i.metal"
+
+M6ID_LARGE: Final = "m6id.large"
+M6ID_XLARGE: Final = "m6id.xlarge"
+M6ID_2XLARGE: Final = "m6id.2xlarge"
+M6ID_4XLARGE: Final = "m6id.4xlarge"
+M6ID_8XLARGE: Final = "m6id.8xlarge"
+M6ID_12XLARGE: Final = "m6id.12xlarge"
+M6ID_16XLARGE: Final = "m6id.16xlarge"
+M6ID_24XLARGE: Final = "m6id.24xlarge"
+M6ID_32XLARGE: Final = "m6id.32xlarge"
+M6ID_METAL: Final = "m6id.metal"
+
+M6G_MEDIUM: Final = "m6g.medium"
+M6G_LARGE: Final = "m6g.large"
+M6G_XLARGE: Final = "m6g.xlarge"
+M6G_2XLARGE: Final = "m6g.2xlarge"
+M6G_4XLARGE: Final = "m6g.4xlarge"
+M6G_8XLARGE: Final = "m6g.8xlarge"
+M6G_12XLARGE: Final = "m6g.12xlarge"
+M6G_16XLARGE: Final = "m6g.16xlarge"
+M6G_METAL: Final = "m6g.metal"
+
+M6GD_MEDIUM: Final = "m6gd.medium"
+M6GD_LARGE: Final = "m6gd.large"
+M6GD_XLARGE: Final = "m6gd.xlarge"
+M6GD_2XLARGE: Final = "m6gd.2xlarge"
+M6GD_4XLARGE: Final = "m6gd.4xlarge"
+M6GD_8XLARGE: Final = "m6gd.8xlarge"
+M6GD_12XLARGE: Final = "m6gd.12xlarge"
+M6GD_16XLARGE: Final = "m6gd.16xlarge"
+M6GD_METAL: Final = "m6gd.metal"
+
+M7G_MEDIUM: Final = "m7g.medium"
+M7G_LARGE: Final = "m7g.large"
+M7G_XLARGE: Final = "m7g.xlarge"
+M7G_2XLARGE: Final = "m7g.2xlarge"
+M7G_4XLARGE: Final = "m7g.4xlarge"
+M7G_8XLARGE: Final = "m7g.8xlarge"
+M7G_12XLARGE: Final = "m7g.12xlarge"
+M7G_16XLARGE: Final = "m7g.16xlarge"
+M7G_METAL: Final = "m7g.metal"
+
+M5_LARGE: Final = "m5.large"
+M5_XLARGE: Final = "m5.xlarge"
+M5_2XLARGE: Final = "m5.2xlarge"
+M5_4XLARGE: Final = "m5.4xlarge"
+M5_8XLARGE: Final = "m5.8xlarge"
+M5_12XLARGE: Final = "m5.12xlarge"
+M5_16XLARGE: Final = "m5.16xlarge"
+M5_24XLARGE: Final = "m5.24xlarge"
+M5_METAL: Final = "m5.metal"
+
+M5D_LARGE: Final = "m5d.large"
+M5D_XLARGE: Final = "m5d.xlarge"
+M5D_2XLARGE: Final = "m5d.2xlarge"
+M5D_4XLARGE: Final = "m5d.4xlarge"
+M5D_8XLARGE: Final = "m5d.8xlarge"
+M5D_12XLARGE: Final = "m5d.12xlarge"
+M5D_16XLARGE: Final = "m5d.16xlarge"
+M5D_24XLARGE: Final = "m5d.24xlarge"
+M5D_METAL: Final = "m5d.metal"
+
+M5A_LARGE: Final = "m5a.large"
+M5A_XLARGE: Final = "m5a.xlarge"
+M5A_2XLARGE: Final = "m5a.2xlarge"
+M5A_4XLARGE: Final = "m5a.4xlarge"
+M5A_12XLARGE: Final = "m5a.12xlarge"
+M5A_24XLARGE: Final = "m5a.24xlarge"
+
+M5AD_LARGE: Final = "m5ad.large"
+M5AD_XLARGE: Final = "m5ad.xlarge"
+M5AD_2XLARGE: Final = "m5ad.2xlarge"
+M5AD_4XLARGE: Final = "m5ad.4xlarge"
+M5AD_12XLARGE: Final = "m5ad.12xlarge"
+M5AD_24XLARGE: Final = "m5ad.24xlarge"
+
+M5ZN_LARGE: Final = "m5zn.large"
+M5ZN_XLARGE: Final = "m5zn.xlarge"
+M5ZN_2XLARGE: Final = "m5zn.2xlarge"
+M5ZN_3XLARGE: Final = "m5zn.3xlarge"
+M5ZN_6XLARGE: Final = "m5zn.6xlarge"
+M5ZN_12XLARGE: Final = "m5zn.12xlarge"
+M5ZN_METAL: Final = "m5zn.metal"
+
+M5N_LARGE: Final = "m5n.large"
+M5N_XLARGE: Final = "m5n.xlarge"
+M5N_2XLARGE: Final = "m5n.2xlarge"
+M5N_4XLARGE: Final = "m5n.4xlarge"
+M5N_8XLARGE: Final = "m5n.8xlarge"
+M5N_12XLARGE: Final = "m5n.12xlarge"
+M5N_16XLARGE: Final = "m5n.16xlarge"
+M5N_24XLARGE: Final = "m5n.24xlarge"
+M5N_METAL: Final = "m5n.metal"
+M5DN_LARGE: Final = "m5dn.large"
+M5DN_XLARGE: Final = "m5dn.xlarge"
+M5DN_2XLARGE: Final = "m5dn.2xlarge"
+M5DN_4XLARGE: Final = "m5dn.4xlarge"
+M5DN_8XLARGE: Final = "m5dn.8xlarge"
+M5DN_12XLARGE: Final = "m5dn.12xlarge"
+M5DN_16XLARGE: Final = "m5dn.16xlarge"
+M5DN_24XLARGE: Final = "m5dn.24xlarge"
+M5DN_METAL: Final = "m5dn.metal"
+
+M4_LARGE: Final = "m4.large"
+M4_XLARGE: Final = "m4.xlarge"
+M4_2XLARGE: Final = "m4.2xlarge"
+M4_4XLARGE: Final = "m4.4xlarge"
+M4_10XLARGE: Final = "m4.10xlarge"
+M4_16XLARGE: Final = "m4.16xlarge"
+
+M3_MEDIUM: Final = "m3.medium"
+M3_LARGE: Final = "m3.large"
+M3_XLARGE: Final = "m3.xlarge"
+M3_2XLARGE: Final = "m3.2xlarge"
+
+A1_MEDIUM: Final = "a1.medium"
+A1_LARGE: Final = "a1.large"
+A1_XLARGE: Final = "a1.xlarge"
+A1_2XLARGE: Final = "a1.2xlarge"
+A1_4XLARGE: Final = "a1.4xlarge"
+A1_METAL: Final = "a1.metal"
+
+C3_LARGE: Final = "c3.large"
+C3_XLARGE: Final = "c3.xlarge"
+C3_2XLARGE: Final = "c3.2xlarge"
+C3_4XLARGE: Final = "c3.4xlarge"
+C3_8XLARGE: Final = "c3.8xlarge"
+
+C4_LARGE: Final = "c4.large"
+C4_XLARGE: Final = "c4.xlarge"
+C4_2XLARGE: Final = "c4.2xlarge"
+C4_4XLARGE: Final = "c4.4xlarge"
+C4_8XLARGE: Final = "c4.8xlarge"
+
+C5_LARGE: Final = "c5.large"
+C5_XLARGE: Final = "c5.xlarge"
+C5_2XLARGE: Final = "c5.2xlarge"
+C5_4XLARGE: Final = "c5.4xlarge"
+C5_9XLARGE: Final = "c5.9xlarge"
+C5_12XLARGE: Final = "c5.12xlarge"
+C5_18XLARGE: Final = "c5.18xlarge"
+C5_24XLARGE: Final = "c5.24xlarge"
+C5_METAL: Final = "c5.metal"
+
+C5A_LARGE: Final = "c5a.large"
+C5A_XLARGE: Final = "c5a.xlarge"
+C5A_2XLARGE: Final = "c5a.2xlarge"
+C5A_4XLARGE: Final = "c5a.4xlarge"
+C5A_8XLARGE: Final = "c5a.8xlarge"
+C5A_12XLARGE: Final = "c5a.12xlarge"
+C5A_16XLARGE: Final = "c5a.16xlarge"
+C5A_24XLARGE: Final = "c5a.24xlarge"
+
+C5AD_LARGE: Final = "c5ad.large"
+C5AD_XLARGE: Final = "c5ad.xlarge"
+C5AD_2XLARGE: Final = "c5ad.2xlarge"
+C5AD_4XLARGE: Final = "c5ad.4xlarge"
+C5AD_8XLARGE: Final = "c5ad.8xlarge"
+C5AD_12XLARGE: Final = "c5ad.12xlarge"
+C5AD_16XLARGE: Final = "c5ad.16xlarge"
+C5AD_24XLARGE: Final = "c5ad.24xlarge"
+
+C5D_LARGE: Final = "c5d.large"
+C5D_XLARGE: Final = "c5d.xlarge"
+C5D_2XLARGE: Final = "c5d.2xlarge"
+C5D_4XLARGE: Final = "c5d.4xlarge"
+C5D_9XLARGE: Final = "c5d.9xlarge"
+C5D_12XLARGE: Final = "c5d.12xlarge"
+C5D_18XLARGE: Final = "c5d.18xlarge"
+C5D_24XLARGE: Final = "c5d.24xlarge"
+C5D_METAL: Final = "c5d.metal"
+
+C5N_LARGE: Final = "c5n.large"
+C5N_XLARGE: Final = "c5n.xlarge"
+C5N_2XLARGE: Final = "c5n.2xlarge"
+C5N_4XLARGE: Final = "c5n.4xlarge"
+C5N_9XLARGE: Final = "c5n.9xlarge"
+C5N_18XLARGE: Final = "c5n.18xlarge"
+C5N_METAL: Final = "c5n.metal"
+
+C6G_MEDIUM: Final = "c6g.medium"
+C6G_LARGE: Final = "c6g.large"
+C6G_XLARGE: Final = "c6g.xlarge"
+C6G_2XLARGE: Final = "c6g.2xlarge"
+C6G_4XLARGE: Final = "c6g.4xlarge"
+C6G_8XLARGE: Final = "c6g.8xlarge"
+C6G_12XLARGE: Final = "c6g.12xlarge"
+C6G_16XLARGE: Final = "c6g.16xlarge"
+C6G_METAL: Final = "c6g.metal"
+
+C6GD_MEDIUM: Final = "c6gd.medium"
+C6GD_LARGE: Final = "c6gd.large"
+C6GD_XLARGE: Final = "c6gd.xlarge"
+C6GD_2XLARGE: Final = "c6gd.2xlarge"
+C6GD_4XLARGE: Final = "c6gd.4xlarge"
+C6GD_8XLARGE: Final = "c6gd.8xlarge"
+C6GD_12XLARGE: Final = "c6gd.12xlarge"
+C6GD_16XLARGE: Final = "c6gd.16xlarge"
+C6GD_METAL: Final = "c6gd.metal"
+
+C6GN_MEDIUM: Final = "c6gn.medium"
+C6GN_LARGE: Final = "c6gn.large"
+C6GN_XLARGE: Final = "c6gn.xlarge"
+C6GN_2XLARGE: Final = "c6gn.2xlarge"
+C6GN_4XLARGE: Final = "c6gn.4xlarge"
+C6GN_8XLARGE: Final = "c6gn.8xlarge"
+C6GN_12XLARGE: Final = "c6gn.12xlarge"
+C6GN_16XLARGE: Final = "c6gn.16xlarge"
+
+C6A_LARGE: Final = "c6a.large"
+C6A_XLARGE: Final = "c6a.xlarge"
+C6A_2XLARGE: Final = "c6a.2xlarge"
+C6A_4XLARGE: Final = "c6a.4xlarge"
+C6A_8XLARGE: Final = "c6a.8xlarge"
+C6A_12XLARGE: Final = "c6a.12xlarge"
+C6A_16XLARGE: Final = "c6a.16xlarge"
+C6A_24XLARGE: Final = "c6a.24xlarge"
+C6A_32XLARGE: Final = "c6a.32xlarge"
+C6A_48XLARGE: Final = "c6a.48xlarge"
+C6A_METAL: Final = "c6a.metal"
+
+C6IN_LARGE: Final = "c6in.large"
+C6IN_XLARGE: Final = "c6in.xlarge"
+C6IN_2XLARGE: Final = "c6in.2xlarge"
+C6IN_4XLARGE: Final = "c6in.4xlarge"
+C6IN_8XLARGE: Final = "c6in.8xlarge"
+C6IN_12XLARGE: Final = "c6in.12xlarge"
+C6IN_16XLARGE: Final = "c6in.16xlarge"
+C6IN_24XLARGE: Final = "c6in.24xlarge"
+C6IN_32XLARGE: Final = "c6in.32xlarge"
+
+C6I_LARGE: Final = "c6i.large"
+C6I_XLARGE: Final = "c6i.xlarge"
+C6I_2XLARGE: Final = "c6i.2xlarge"
+C6I_4XLARGE: Final = "c6i.4xlarge"
+C6I_8XLARGE: Final = "c6i.8xlarge"
+C6I_12XLARGE: Final = "c6i.12xlarge"
+C6I_16XLARGE: Final = "c6i.16xlarge"
+C6I_24XLARGE: Final = "c6i.24xlarge"
+C6I_32XLARGE: Final = "c6i.32xlarge"
+C6I_METAL: Final = "c6i.metal"
+
+C6ID_LARGE: Final = "c6id.large"
+C6ID_XLARGE: Final = "c6id.xlarge"
+C6ID_2XLARGE: Final = "c6id.2xlarge"
+C6ID_4XLARGE: Final = "c6id.4xlarge"
+C6ID_8XLARGE: Final = "c6id.8xlarge"
+C6ID_12XLARGE: Final = "c6id.12xlarge"
+C6ID_16XLARGE: Final = "c6id.16xlarge"
+C6ID_24XLARGE: Final = "c6id.24xlarge"
+C6ID_32XLARGE: Final = "c6id.32xlarge"
+C6ID_METAL: Final = "c6id.metal"
+
+C7G_MEDIUM: Final = "c7g.medium"
+C7G_LARGE: Final = "c7g.large"
+C7G_XLARGE: Final = "c7g.xlarge"
+C7G_2XLARGE: Final = "c7g.2xlarge"
+C7G_4XLARGE: Final = "c7g.4xlarge"
+C7G_8XLARGE: Final = "c7g.8xlarge"
+C7G_12XLARGE: Final = "c7g.12xlarge"
+C7G_16XLARGE: Final = "c7g.16xlarge"
+C7G_METAL: Final = "c7g.metal"
+
+R3_LARGE: Final = "r3.large"
+R3_XLARGE: Final = "r3.xlarge"
+R3_2XLARGE: Final = "r3.2xlarge"
+R3_4XLARGE: Final = "r3.4xlarge"
+R3_8XLARGE: Final = "r3.8xlarge"
+
+G2_2XLARGE: Final = "g2.2xlarge"
+G2_8XLARGE: Final = "g2.8xlarge"
+
+G3S_XLARGE: Final = "g3s.xlarge"
+G3_4XLARGE: Final = "g3.4xlarge"
+G3_8XLARGE: Final = "g3.8xlarge"
+G3_16XLARGE: Final = "g3.16xlarge"
+
+G4AD_4XLARGE: Final = "g4ad.4xlarge"
+G4AD_8XLARGE: Final = "g4ad.8xlarge"
+G4AD_16XLARGE: Final = "g4ad.16xlarge"
+
+G4DN_XLARGE: Final = "g4dn.xlarge"
+G4DN_2XLARGE: Final = "g4dn.2xlarge"
+G4DN_4XLARGE: Final = "g4dn.4xlarge"
+G4DN_8XLARGE: Final = "g4dn.8xlarge"
+G4DN_12XLARGE: Final = "g4dn.12xlarge"
+G4DN_16XLARGE: Final = "g4dn.16xlarge"
+G4DN_METAL: Final = "g4dn.metal"
+
+I2_XLARGE: Final = "i2.xlarge"
+I2_2XLARGE: Final = "i2.2xlarge"
+I2_4XLARGE: Final = "i2.4xlarge"
+I2_8XLARGE: Final = "i2.8xlarge"
+
+H1_2XLARGE: Final = "h1.2xlarge"
+H1_4XLARGE: Final = "h1.4xlarge"
+H1_8XLARGE: Final = "h1.8xlarge"
+H1_16XLARGE: Final = "h1.16xlarge"
+
+I3_LARGE: Final = "i3.large"
+I3_XLARGE: Final = "i3.xlarge"
+I3_2XLARGE: Final = "i3.2xlarge"
+I3_4XLARGE: Final = "i3.4xlarge"
+I3_8XLARGE: Final = "i3.8xlarge"
+I3_16XLARGE: Final = "i3.16xlarge"
+I3_METAL: Final = "i3.metal"
+
+I3EN_LARGE: Final = "i3en.large"
+I3EN_XLARGE: Final = "i3en.xlarge"
+I3EN_2XLARGE: Final = "i3en.2xlarge"
+I3EN_3XLARGE: Final = "i3en.3xlarge"
+I3EN_6XLARGE: Final = "i3en.6xlarge"
+I3EN_12XLARGE: Final = "i3en.12xlarge"
+I3EN_24XLARGE: Final = "i3en.24xlarge"
+I3EN_METAL: Final = "i3en.metal"
+
+D2_XLARGE: Final = "d2.xlarge"
+D2_2XLARGE: Final = "d2.2xlarge"
+D2_4XLARGE: Final = "d2.4xlarge"
+D2_8XLARGE: Final = "d2.8xlarge"
+
+D3_XLARGE: Final = "d3.xlarge"
+D3_2XLARGE: Final = "d3.2xlarge"
+D3_4XLARGE: Final = "d3.4xlarge"
+D3_8XLARGE: Final = "d3.8xlarge"
+
+D3EN_XLARGE: Final = "d3en.xlarge"
+D3EN_2XLARGE: Final = "d3en.2xlarge"
+D3EN_4XLARGE: Final = "d3en.4xlarge"
+D3EN_6XLARGE: Final = "d3en.6xlarge"
+D3EN_8XLARGE: Final = "d3en.8xlarge"
+D3EN_12XLARGE: Final = "d3en.12xlarge"
+
+HS1_8XLARGE: Final = "hs1.8xlarge"
+
+M1_SMALL: Final = "m1.small"
+M1_MEDIUM: Final = "m1.medium"
+M1_LARGE: Final = "m1.large"
+M1_XLARGE: Final = "m1.xlarge"
+
+C1_MEDIUM: Final = "c1.medium"
+C1_XLARGE: Final = "c1.xlarge"
+CC2_8XLARGE: Final = "cc2.8xlarge"
+
+CG1_4XLARGE: Final = "cg1.4xlarge"
+
+M2_XLARGE: Final = "m2.xlarge"
+M2_2XLARGE: Final = "m2.2xlarge"
+M2_4XLARGE: Final = "m2.4xlarge"
+CR1_8XLARGE: Final = "cr1.8xlarge"
+
+HI1_4XLARGE: Final = "hi1.4xlarge"
+
+T1_MICRO: Final = "t1.micro"
+
+X1_32XLARGE: Final = "x1.32xlarge"
+X1_16XLARGE: Final = "x1.16xlarge"
+
+X1E_XLARGE: Final = "x1e.xlarge"
+X1E_2XLARGE: Final = "x1e.2xlarge"
+X1E_4XLARGE: Final = "x1e.4xlarge"
+X1E_8XLARGE: Final = "x1e.8xlarge"
+X1E_16XLARGE: Final = "x1e.16xlarge"
+X1E_32XLARGE: Final = "x1e.32xlarge"
+
+U_6TB1_METAL: Final = "u-6tb1.metal"
+U_9TB1_METAL: Final = "u-9tb1.metal"
+U_12TB1_METAL: Final = "u-12tb1.metal"
+U_18TB1_METAL: Final = "u-18tb1.metal"
+U_24TB1_METAL: Final = "u-24tb1.metal"
+
+Z1D_LARGE: Final = "z1d.large"
+Z1D_XLARGE: Final = "z1d.xlarge"
+Z1D_2XLARGE: Final = "z1d.2xlarge"
+Z1D_3XLARGE: Final = "z1d.3xlarge"
+Z1D_6XLARGE: Final = "z1d.6xlarge"
+Z1D_12XLARGE: Final = "z1d.12xlarge"
+Z1D_METAL: Final = "z1d.metal"
+
+R4_LARGE: Final = "r4.large"
+R4_XLARGE: Final = "r4.xlarge"
+R4_2XLARGE: Final = "r4.2xlarge"
+R4_4XLARGE: Final = "r4.4xlarge"
+R4_8XLARGE: Final = "r4.8xlarge"
+R4_16XLARGE: Final = "r4.16xlarge"
+
+R5_LARGE: Final = "r5.large"
+R5_XLARGE: Final = "r5.xlarge"
+R5_2XLARGE: Final = "r5.2xlarge"
+R5_4XLARGE: Final = "r5.4xlarge"
+R5_8XLARGE: Final = "r5.8xlarge"
+R5_12XLARGE: Final = "r5.12xlarge"
+R5_16XLARGE: Final = "r5.16xlarge"
+R5_24XLARGE: Final = "r5.24xlarge"
+R5_METAL: Final = "r5.metal"
+
+R5D_LARGE: Final = "r5d.large"
+R5D_XLARGE: Final = "r5d.xlarge"
+R5D_2XLARGE: Final = "r5d.2xlarge"
+R5D_4XLARGE: Final = "r5d.4xlarge"
+R5D_8XLARGE: Final = "r5d.8xlarge"
+R5D_12XLARGE: Final = "r5d.12xlarge"
+R5D_16XLARGE: Final = "r5d.16xlarge"
+R5D_24XLARGE: Final = "r5d.24xlarge"
+R5D_METAL: Final = "r5d.metal"
+
+R5A_LARGE: Final = "r5a.large"
+R5A_XLARGE: Final = "r5a.xlarge"
+R5A_2XLARGE: Final = "r5a.2xlarge"
+R5A_4XLARGE: Final = "r5a.4xlarge"
+R5A_8XLARGE: Final = "r5a.8xlarge"
+R5A_12XLARGE: Final = "r5a.12xlarge"
+R5A_16XLARGE: Final = "r5a.16xlarge"
+R5A_24XLARGE: Final = "r5a.24xlarge"
+
+R5AD_LARGE: Final = "r5ad.large"
+R5AD_XLARGE: Final = "r5ad.xlarge"
+R5AD_2XLARGE: Final = "r5ad.2xlarge"
+R5AD_4XLARGE: Final = "r5ad.4xlarge"
+R5AD_8XLARGE: Final = "r5ad.8xlarge"
+R5AD_12XLARGE: Final = "r5ad.12xlarge"
+R5AD_16XLARGE: Final = "r5ad.16xlarge"
+R5AD_24XLARGE: Final = "r5ad.24xlarge"
+
+R5N_LARGE: Final = "r5n.large"
+R5N_XLARGE: Final = "r5n.xlarge"
+R5N_2XLARGE: Final = "r5n.2xlarge"
+R5N_4XLARGE: Final = "r5n.4xlarge"
+R5N_8XLARGE: Final = "r5n.8xlarge"
+R5N_12XLARGE: Final = "r5n.12xlarge"
+R5N_16XLARGE: Final = "r5n.16xlarge"
+R5N_24XLARGE: Final = "r5n.24xlarge"
+R5N_METAL: Final = "r5n.metal"
+
+R5DN_LARGE: Final = "r5dn.large"
+R5DN_XLARGE: Final = "r5dn.xlarge"
+R5DN_2XLARGE: Final = "r5dn.2xlarge"
+R5DN_4XLARGE: Final = "r5dn.4xlarge"
+R5DN_8XLARGE: Final = "r5dn.8xlarge"
+R5DN_12XLARGE: Final = "r5dn.12xlarge"
+R5DN_16XLARGE: Final = "r5dn.16xlarge"
+R5DN_24XLARGE: Final = "r5dn.24xlarge"
+R5DN_METAL: Final = "r5dn.metal"
+
+R5B_LARGE: Final = "r5b.large"
+R5B_XLARGE: Final = "r5b.xlarge"
+R5B_2XLARGE: Final = "r5b.2xlarge"
+R5B_4XLARGE: Final = "r5b.4xlarge"
+R5B_8XLARGE: Final = "r5b.8xlarge"
+R5B_12XLARGE: Final = "r5b.12xlarge"
+R5B_16XLARGE: Final = "r5b.16xlarge"
+R5B_24XLARGE: Final = "r5b.24xlarge"
+R5B_METAL: Final = "r5b.metal"
+
+R6G_MEDIUM: Final = "r6g.medium"
+R6G_LARGE: Final = "r6g.large"
+R6G_XLARGE: Final = "r6g.xlarge"
+R6G_2XLARGE: Final = "r6g.2xlarge"
+R6G_4XLARGE: Final = "r6g.4xlarge"
+R6G_8XLARGE: Final = "r6g.8xlarge"
+R6G_12XLARGE: Final = "r6g.12xlarge"
+R6G_16XLARGE: Final = "r6g.16xlarge"
+R6G_METAL: Final = "r6g.metal"
+
+R6GD_MEDIUM: Final = "r6gd.medium"
+R6GD_LARGE: Final = "r6gd.large"
+R6GD_XLARGE: Final = "r6gd.xlarge"
+R6GD_2XLARGE: Final = "r6gd.2xlarge"
+R6GD_4XLARGE: Final = "r6gd.4xlarge"
+R6GD_8XLARGE: Final = "r6gd.8xlarge"
+R6GD_12XLARGE: Final = "r6gd.12xlarge"
+R6GD_16XLARGE: Final = "r6gd.16xlarge"
+R6GD_METAL: Final = "r6gd.metal"
+
+R6I_LARGE: Final = "r6i.large"
+R6I_XLARGE: Final = "r6i.xlarge"
+R6I_2XLARGE: Final = "r6i.2xlarge"
+R6I_4XLARGE: Final = "r6i.4xlarge"
+R6I_8XLARGE: Final = "r6i.8xlarge"
+R6I_12XLARGE: Final = "r6i.12xlarge"
+R6I_16XLARGE: Final = "r6i.16xlarge"
+R6I_24XLARGE: Final = "r6i.24xlarge"
+R6I_32XLARGE: Final = "r6i.32xlarge"
+R6I_METAL: Final = "r6i.metal"
+
+R6ID_LARGE: Final = "r6id.large"
+R6ID_XLARGE: Final = "r6id.xlarge"
+R6ID_2XLARGE: Final = "r6id.2xlarge"
+R6ID_4XLARGE: Final = "r6id.4xlarge"
+R6ID_8XLARGE: Final = "r6id.8xlarge"
+R6ID_12XLARGE: Final = "r6id.12xlarge"
+R6ID_16XLARGE: Final = "r6id.16xlarge"
+R6ID_24XLARGE: Final = "r6id.24xlarge"
+R6ID_32XLARGE: Final = "r6id.32xlarge"
+R6ID_METAL: Final = "r6id.metal"
+
+R6IN_LARGE: Final = "r6in.large"
+R6IN_XLARGE: Final = "r6in.xlarge"
+R6IN_2XLARGE: Final = "r6in.2xlarge"
+R6IN_4XLARGE: Final = "r6in.4xlarge"
+R6IN_8XLARGE: Final = "r6in.8xlarge"
+R6IN_12XLARGE: Final = "r6in.12xlarge"
+R6IN_16XLARGE: Final = "r6in.16xlarge"
+R6IN_24XLARGE: Final = "r6in.24xlarge"
+R6IN_32XLARGE: Final = "r6in.32xlarge"
+
+R6IDN_LARGE: Final = "r6idn.large"
+R6IDN_XLARGE: Final = "r6idn.xlarge"
+R6IDN_2XLARGE: Final = "r6idn.2xlarge"
+R6IDN_4XLARGE: Final = "r6idn.4xlarge"
+R6IDN_8XLARGE: Final = "r6idn.8xlarge"
+R6IDN_12XLARGE: Final = "r6idn.12xlarge"
+R6IDN_16XLARGE: Final = "r6idn.16xlarge"
+R6IDN_24XLARGE: Final = "r6idn.24xlarge"
+R6IDN_32XLARGE: Final = "r6idn.32xlarge"
+
+R6A_LARGE: Final = "r6a.large"
+R6A_XLARGE: Final = "r6a.xlarge"
+R6A_2XLARGE: Final = "r6a.2xlarge"
+R6A_4XLARGE: Final = "r6a.4xlarge"
+R6A_8XLARGE: Final = "r6a.8xlarge"
+R6A_12XLARGE: Final = "r6a.12xlarge"
+R6A_16XLARGE: Final = "r6a.16xlarge"
+R6A_24XLARGE: Final = "r6a.24xlarge"
+R6A_32XLARGE: Final = "r6a.32xlarge"
+R6A_48XLARGE: Final = "r6a.48xlarge"
+R6A_METAL: Final = "r6a.metal"
+
+R7G_MEDIUM: Final = "r7g.medium"
+R7G_LARGE: Final = "r7g.large"
+R7G_XLARGE: Final = "r7g.xlarge"
+R7G_2XLARGE: Final = "r7g.2xlarge"
+R7G_4XLARGE: Final = "r7g.4xlarge"
+R7G_8XLARGE: Final = "r7g.8xlarge"
+R7G_12XLARGE: Final = "r7g.12xlarge"
+R7G_16XLARGE: Final = "r7g.16xlarge"
+R7G_METAL: Final = "r7g.metal"
+
+P2_XLARGE: Final = "p2.xlarge"
+P2_8XLARGE: Final = "p2.8xlarge"
+P2_16XLARGE: Final = "p2.16xlarge"
+
+P3_2XLARGE: Final = "p3.2xlarge"
+P3_8XLARGE: Final = "p3.8xlarge"
+P3_16XLARGE: Final = "p3.16xlarge"
+P3DN_24XLARGE: Final = "p3dn.24xlarge"
+
+F1_2XLARGE: Final = "f1.2xlarge"
+F1_4XLARGE: Final = "f1.4xlarge"
+F1_16XLARGE: Final = "f1.16xlarge"
+
+INF1_XLARGE: Final = "inf1.xlarge"
+INF1_2XLARGE: Final = "inf1.2xlarge"
+INF1_6XLARGE: Final = "inf1.6xlarge"
+INF1_24XLARGE: Final = "inf1.24xlarge"
 
 #
 # RDS DB instance classes
 #
 
-DB_T1_MICRO = "db.t1.micro"
-
-DB_T2_MICRO = "db.t2.micro"
-DB_T2_SMALL = "db.t2.small"
-DB_T2_MEDIUM = "db.t2.medium"
-DB_T2_LARGE = "db.t2.large"
-DB_T2_XLARGE = "db.t2.xlarge"
-DB_T2_2XLARGE = "db.t2.2xlarge"
-
-DB_T3_MICRO = "db.t3.micro"
-DB_T3_SMALL = "db.t3.small"
-DB_T3_MEDIUM = "db.t3.medium"
-DB_T3_LARGE = "db.t3.large"
-DB_T3_XLARGE = "db.t3.xlarge"
-DB_T3_2XLARGE = "db.t3.2xlarge"
-
-DB_T4G_MICRO = "db.t4g.micro"
-DB_T4G_SMALL = "db.t4g.small"
-DB_T4G_MEDIUM = "db.t4g.medium"
-DB_T4G_LARGE = "db.t4g.large"
-DB_T4G_XLARGE = "db.t4g.xlarge"
-DB_T4G_2XLARGE = "db.t4g.2xlarge"
-
-DB_M1_SMALL = "db.m1.small"
-DB_M1_MEDIUM = "db.m1.medium"
-DB_M1_LARGE = "db.m1.large"
-DB_M1_XLARGE = "db.m1.xlarge"
-
-DB_M2_XLARGE = "db.m2.xlarge"
-DB_M2_2XLARGE = "db.m2.2xlarge"
-DB_M2_4XLARGE = "db.m2.4xlarge"
-
-DB_M3_MEDIUM = "db.m3.medium"
-DB_M3_LARGE = "db.m3.large"
-DB_M3_XLARGE = "db.m3.xlarge"
-DB_M3_2XLARGE = "db.m3.2xlarge"
-
-DB_M4_LARGE = "db.m4.large"
-DB_M4_XLARGE = "db.m4.xlarge"
-DB_M4_2XLARGE = "db.m4.2xlarge"
-DB_M4_4XLARGE = "db.m4.4xlarge"
-DB_M4_10XLARGE = "db.m4.10xlarge"
-DB_M4_16XLARGE = "db.m4.16xlarge"
-
-DB_M5_LARGE = "db.m5.large"
-DB_M5_XLARGE = "db.m5.xlarge"
-DB_M5_2XLARGE = "db.m5.2xlarge"
-DB_M5_4XLARGE = "db.m5.4xlarge"
-DB_M5_8XLARGE = "db.m5.8xlarge"
-DB_M5_12XLARGE = "db.m5.12xlarge"
-DB_M5_16XLARGE = "db.m5.16xlarge"
-DB_M5_24XLARGE = "db.m5.24xlarge"
-
-DB_M5D_LARGE = "db.m5d.large"
-DB_M5D_XLARGE = "db.m5d.xlarge"
-DB_M5D_2XLARGE = "db.m5d.2xlarge"
-DB_M5D_4XLARGE = "db.m5d.4xlarge"
-DB_M5D_8XLARGE = "db.m5d.8xlarge"
-DB_M5D_12XLARGE = "db.m5d.12xlarge"
-DB_M5D_16XLARGE = "db.m5d.16xlarge"
-DB_M5D_24XLARGE = "db.m5d.24xlarge"
-
-DB_M6G_LARGE = "db.m6g.large"
-DB_M6G_XLARGE = "db.m6g.xlarge"
-DB_M6G_2XLARGE = "db.m6g.2xlarge"
-DB_M6G_4XLARGE = "db.m6g.4xlarge"
-DB_M6G_8XLARGE = "db.m6g.8xlarge"
-DB_M6G_12XLARGE = "db.m6g.12xlarge"
-DB_M6G_16XLARGE = "db.m6g.16xlarge"
-
-DB_R3_LARGE = "db.r3.large"
-DB_R3_XLARGE = "db.r3.xlarge"
-DB_R3_2XLARGE = "db.r3.2xlarge"
-DB_R3_4XLARGE = "db.r3.4xlarge"
-DB_R3_8XLARGE = "db.r3.8xlarge"
-
-DB_R4_LARGE = "db.r4.large"
-DB_R4_XLARGE = "db.r4.xlarge"
-DB_R4_2XLARGE = "db.r4.2xlarge"
-DB_R4_4XLARGE = "db.r4.4xlarge"
-DB_R4_8XLARGE = "db.r4.8xlarge"
-DB_R4_16XLARGE = "db.r4.16xlarge"
-
-DB_R5_LARGE = "db.r5.large"
-DB_R5_XLARGE = "db.r5.xlarge"
-DB_R5_2XLARGE = "db.r5.2xlarge"
-DB_R5_4XLARGE = "db.r5.4xlarge"
-DB_R5_8XLARGE = "db.r5.8xlarge"
-DB_R5_12XLARGE = "db.r5.12xlarge"
-DB_R5_16XLARGE = "db.r5.16xlarge"
-DB_R5_24XLARGE = "db.r5.24xlarge"
-
-DB_R5_LARGE_TPC1_MEM2X = "db.r5.large.tpc1.mem2x"
-DB_R5_XLARGE_TPC2_MEM2X = "db.r5.xlarge.tpc2.mem2x"
-DB_R5_XLARGE_TPC2_MEM4X = "db.r5.xlarge.tpc2.mem4x"
-DB_R5_2XLARGE_TPC1_MEM2X = "db.r5.2xlarge.tpc1.mem2x"
-DB_R5_2XLARGE_TPC2_MEM4X = "db.r5.2xlarge.tpc2.mem4x"
-DB_R5_2XLARGE_TPC2_MEM8X = "db.r5.2xlarge.tpc2.mem8x"
-DB_R5_4XLARGE_TPC2_MEM2X = "db.r5.4xlarge.tpc2.mem2x"
-DB_R5_4XLARGE_TPC2_MEM3X = "db.r5.4xlarge.tpc2.mem3x"
-DB_R5_4XLARGE_TPC2_MEM4X = "db.r5.4xlarge.tpc2.mem4x"
-DB_R5_6XLARGE_TPC2_MEM4X = "db.r5.6xlarge.tpc2.mem4x"
-DB_R5_8XLARGE_TPC2_MEM3X = "db.r5.8xlarge.tpc2.mem3x"
-DB_R5_12XLARGE_TPC2_MEM2X = "db.r5.12xlarge.tpc2.mem2x"
-
-DB_R5B_LARGE = "db.r5b.large"
-DB_R5B_XLARGE = "db.r5b.xlarge"
-DB_R5B_2XLARGE = "db.r5b.2xlarge"
-DB_R5B_4XLARGE = "db.r5b.4xlarge"
-DB_R5B_8XLARGE = "db.r5b.8xlarge"
-DB_R5B_12XLARGE = "db.r5b.12xlarge"
-DB_R5B_16XLARGE = "db.r5b.16xlarge"
-DB_R5B_24XLARGE = "db.r5b.24xlarge"
-
-DB_R5D_LARGE = "db.r5d.large"
-DB_R5D_XLARGE = "db.r5d.xlarge"
-DB_R5D_2XLARGE = "db.r5d.2xlarge"
-DB_R5D_4XLARGE = "db.r5d.4xlarge"
-DB_R5D_8XLARGE = "db.r5d.8xlarge"
-DB_R5D_12XLARGE = "db.r5d.12xlarge"
-DB_R5D_16XLARGE = "db.r5d.16xlarge"
-DB_R5D_24XLARGE = "db.r5d.24xlarge"
-
-DB_R6G_LARGE = "db.r6g.large"
-DB_R6G_XLARGE = "db.r6g.xlarge"
-DB_R6G_2XLARGE = "db.r6g.2xlarge"
-DB_R6G_4XLARGE = "db.r6g.4xlarge"
-DB_R6G_8XLARGE = "db.r6g.8xlarge"
-DB_R6G_12XLARGE = "db.r6g.12xlarge"
-DB_R6G_16XLARGE = "db.r6g.16xlarge"
-
-DB_X1_16XLARGE = "db.x1.16xlarge"
-DB_X1_32XLARGE = "db.x1.32xlarge"
-
-DB_X1E_XLARGE = "db.x1e.xlarge"
-DB_X1E_2XLARGE = "db.x1e.2xlarge"
-DB_X1E_4XLARGE = "db.x1e.4xlarge"
-DB_X1E_8XLARGE = "db.x1e.8xlarge"
-DB_X1E_16XLARGE = "db.x1e.16xlarge"
-DB_X1E_32XLARGE = "db.x1e.32xlarge"
-
-DB_X2G_MEDIUM = "db.x2g.medium"
-DB_X2G_LARGE = "db.x2g.large"
-DB_X2G_XLARGE = "db.x2g.xlarge"
-DB_X2G_2XLARGE = "db.x2g.2xlarge"
-DB_X2G_4XLARGE = "db.x2g.4xlarge"
-DB_X2G_8XLARGE = "db.x2g.8xlarge"
-DB_X2G_12XLARGE = "db.x2g.12xlarge"
-DB_X2G_16XLARGE = "db.x2g.16xlarge"
-
-DB_Z1D_LARGE = "db.z1d.large"
-DB_Z1D_XLARGE = "db.z1d.xlarge"
-DB_Z1D_2XLARGE = "db.z1d.2xlarge"
-DB_Z1D_3XLARGE = "db.z1d.3xlarge"
-DB_Z1D_6XLARGE = "db.z1d.6xlarge"
-DB_Z1D_12XLARGE = "db.z1d.12xlarge"
-
-DB_CR1_8XLARGE = "db.cr1.8xlarge"
+DB_T1_MICRO: Final = "db.t1.micro"
+
+DB_T2_MICRO: Final = "db.t2.micro"
+DB_T2_SMALL: Final = "db.t2.small"
+DB_T2_MEDIUM: Final = "db.t2.medium"
+DB_T2_LARGE: Final = "db.t2.large"
+DB_T2_XLARGE: Final = "db.t2.xlarge"
+DB_T2_2XLARGE: Final = "db.t2.2xlarge"
+
+DB_T3_MICRO: Final = "db.t3.micro"
+DB_T3_SMALL: Final = "db.t3.small"
+DB_T3_MEDIUM: Final = "db.t3.medium"
+DB_T3_LARGE: Final = "db.t3.large"
+DB_T3_XLARGE: Final = "db.t3.xlarge"
+DB_T3_2XLARGE: Final = "db.t3.2xlarge"
+
+DB_T4G_MICRO: Final = "db.t4g.micro"
+DB_T4G_SMALL: Final = "db.t4g.small"
+DB_T4G_MEDIUM: Final = "db.t4g.medium"
+DB_T4G_LARGE: Final = "db.t4g.large"
+DB_T4G_XLARGE: Final = "db.t4g.xlarge"
+DB_T4G_2XLARGE: Final = "db.t4g.2xlarge"
+
+DB_M1_SMALL: Final = "db.m1.small"
+DB_M1_MEDIUM: Final = "db.m1.medium"
+DB_M1_LARGE: Final = "db.m1.large"
+DB_M1_XLARGE: Final = "db.m1.xlarge"
+
+DB_M2_XLARGE: Final = "db.m2.xlarge"
+DB_M2_2XLARGE: Final = "db.m2.2xlarge"
+DB_M2_4XLARGE: Final = "db.m2.4xlarge"
+
+DB_M3_MEDIUM: Final = "db.m3.medium"
+DB_M3_LARGE: Final = "db.m3.large"
+DB_M3_XLARGE: Final = "db.m3.xlarge"
+DB_M3_2XLARGE: Final = "db.m3.2xlarge"
+
+DB_M4_LARGE: Final = "db.m4.large"
+DB_M4_XLARGE: Final = "db.m4.xlarge"
+DB_M4_2XLARGE: Final = "db.m4.2xlarge"
+DB_M4_4XLARGE: Final = "db.m4.4xlarge"
+DB_M4_10XLARGE: Final = "db.m4.10xlarge"
+DB_M4_16XLARGE: Final = "db.m4.16xlarge"
+
+DB_M5_LARGE: Final = "db.m5.large"
+DB_M5_XLARGE: Final = "db.m5.xlarge"
+DB_M5_2XLARGE: Final = "db.m5.2xlarge"
+DB_M5_4XLARGE: Final = "db.m5.4xlarge"
+DB_M5_8XLARGE: Final = "db.m5.8xlarge"
+DB_M5_12XLARGE: Final = "db.m5.12xlarge"
+DB_M5_16XLARGE: Final = "db.m5.16xlarge"
+DB_M5_24XLARGE: Final = "db.m5.24xlarge"
+
+DB_M5D_LARGE: Final = "db.m5d.large"
+DB_M5D_XLARGE: Final = "db.m5d.xlarge"
+DB_M5D_2XLARGE: Final = "db.m5d.2xlarge"
+DB_M5D_4XLARGE: Final = "db.m5d.4xlarge"
+DB_M5D_8XLARGE: Final = "db.m5d.8xlarge"
+DB_M5D_12XLARGE: Final = "db.m5d.12xlarge"
+DB_M5D_16XLARGE: Final = "db.m5d.16xlarge"
+DB_M5D_24XLARGE: Final = "db.m5d.24xlarge"
+
+DB_M6G_LARGE: Final = "db.m6g.large"
+DB_M6G_XLARGE: Final = "db.m6g.xlarge"
+DB_M6G_2XLARGE: Final = "db.m6g.2xlarge"
+DB_M6G_4XLARGE: Final = "db.m6g.4xlarge"
+DB_M6G_8XLARGE: Final = "db.m6g.8xlarge"
+DB_M6G_12XLARGE: Final = "db.m6g.12xlarge"
+DB_M6G_16XLARGE: Final = "db.m6g.16xlarge"
+
+DB_R3_LARGE: Final = "db.r3.large"
+DB_R3_XLARGE: Final = "db.r3.xlarge"
+DB_R3_2XLARGE: Final = "db.r3.2xlarge"
+DB_R3_4XLARGE: Final = "db.r3.4xlarge"
+DB_R3_8XLARGE: Final = "db.r3.8xlarge"
+
+DB_R4_LARGE: Final = "db.r4.large"
+DB_R4_XLARGE: Final = "db.r4.xlarge"
+DB_R4_2XLARGE: Final = "db.r4.2xlarge"
+DB_R4_4XLARGE: Final = "db.r4.4xlarge"
+DB_R4_8XLARGE: Final = "db.r4.8xlarge"
+DB_R4_16XLARGE: Final = "db.r4.16xlarge"
+
+DB_R5_LARGE: Final = "db.r5.large"
+DB_R5_XLARGE: Final = "db.r5.xlarge"
+DB_R5_2XLARGE: Final = "db.r5.2xlarge"
+DB_R5_4XLARGE: Final = "db.r5.4xlarge"
+DB_R5_8XLARGE: Final = "db.r5.8xlarge"
+DB_R5_12XLARGE: Final = "db.r5.12xlarge"
+DB_R5_16XLARGE: Final = "db.r5.16xlarge"
+DB_R5_24XLARGE: Final = "db.r5.24xlarge"
+
+DB_R5_LARGE_TPC1_MEM2X: Final = "db.r5.large.tpc1.mem2x"
+DB_R5_XLARGE_TPC2_MEM2X: Final = "db.r5.xlarge.tpc2.mem2x"
+DB_R5_XLARGE_TPC2_MEM4X: Final = "db.r5.xlarge.tpc2.mem4x"
+DB_R5_2XLARGE_TPC1_MEM2X: Final = "db.r5.2xlarge.tpc1.mem2x"
+DB_R5_2XLARGE_TPC2_MEM4X: Final = "db.r5.2xlarge.tpc2.mem4x"
+DB_R5_2XLARGE_TPC2_MEM8X: Final = "db.r5.2xlarge.tpc2.mem8x"
+DB_R5_4XLARGE_TPC2_MEM2X: Final = "db.r5.4xlarge.tpc2.mem2x"
+DB_R5_4XLARGE_TPC2_MEM3X: Final = "db.r5.4xlarge.tpc2.mem3x"
+DB_R5_4XLARGE_TPC2_MEM4X: Final = "db.r5.4xlarge.tpc2.mem4x"
+DB_R5_6XLARGE_TPC2_MEM4X: Final = "db.r5.6xlarge.tpc2.mem4x"
+DB_R5_8XLARGE_TPC2_MEM3X: Final = "db.r5.8xlarge.tpc2.mem3x"
+DB_R5_12XLARGE_TPC2_MEM2X: Final = "db.r5.12xlarge.tpc2.mem2x"
+
+DB_R5B_LARGE: Final = "db.r5b.large"
+DB_R5B_XLARGE: Final = "db.r5b.xlarge"
+DB_R5B_2XLARGE: Final = "db.r5b.2xlarge"
+DB_R5B_4XLARGE: Final = "db.r5b.4xlarge"
+DB_R5B_8XLARGE: Final = "db.r5b.8xlarge"
+DB_R5B_12XLARGE: Final = "db.r5b.12xlarge"
+DB_R5B_16XLARGE: Final = "db.r5b.16xlarge"
+DB_R5B_24XLARGE: Final = "db.r5b.24xlarge"
+
+DB_R5D_LARGE: Final = "db.r5d.large"
+DB_R5D_XLARGE: Final = "db.r5d.xlarge"
+DB_R5D_2XLARGE: Final = "db.r5d.2xlarge"
+DB_R5D_4XLARGE: Final = "db.r5d.4xlarge"
+DB_R5D_8XLARGE: Final = "db.r5d.8xlarge"
+DB_R5D_12XLARGE: Final = "db.r5d.12xlarge"
+DB_R5D_16XLARGE: Final = "db.r5d.16xlarge"
+DB_R5D_24XLARGE: Final = "db.r5d.24xlarge"
+
+DB_R6G_LARGE: Final = "db.r6g.large"
+DB_R6G_XLARGE: Final = "db.r6g.xlarge"
+DB_R6G_2XLARGE: Final = "db.r6g.2xlarge"
+DB_R6G_4XLARGE: Final = "db.r6g.4xlarge"
+DB_R6G_8XLARGE: Final = "db.r6g.8xlarge"
+DB_R6G_12XLARGE: Final = "db.r6g.12xlarge"
+DB_R6G_16XLARGE: Final = "db.r6g.16xlarge"
+
+DB_X1_16XLARGE: Final = "db.x1.16xlarge"
+DB_X1_32XLARGE: Final = "db.x1.32xlarge"
+
+DB_X1E_XLARGE: Final = "db.x1e.xlarge"
+DB_X1E_2XLARGE: Final = "db.x1e.2xlarge"
+DB_X1E_4XLARGE: Final = "db.x1e.4xlarge"
+DB_X1E_8XLARGE: Final = "db.x1e.8xlarge"
+DB_X1E_16XLARGE: Final = "db.x1e.16xlarge"
+DB_X1E_32XLARGE: Final = "db.x1e.32xlarge"
+
+DB_X2G_MEDIUM: Final = "db.x2g.medium"
+DB_X2G_LARGE: Final = "db.x2g.large"
+DB_X2G_XLARGE: Final = "db.x2g.xlarge"
+DB_X2G_2XLARGE: Final = "db.x2g.2xlarge"
+DB_X2G_4XLARGE: Final = "db.x2g.4xlarge"
+DB_X2G_8XLARGE: Final = "db.x2g.8xlarge"
+DB_X2G_12XLARGE: Final = "db.x2g.12xlarge"
+DB_X2G_16XLARGE: Final = "db.x2g.16xlarge"
+
+DB_Z1D_LARGE: Final = "db.z1d.large"
+DB_Z1D_XLARGE: Final = "db.z1d.xlarge"
+DB_Z1D_2XLARGE: Final = "db.z1d.2xlarge"
+DB_Z1D_3XLARGE: Final = "db.z1d.3xlarge"
+DB_Z1D_6XLARGE: Final = "db.z1d.6xlarge"
+DB_Z1D_12XLARGE: Final = "db.z1d.12xlarge"
+
+DB_CR1_8XLARGE: Final = "db.cr1.8xlarge"
 
 #
 # ElastiCache node types
 #
 
-CACHE_T1_MICRO = "cache.t1.micro"
-
-CACHE_T2_MICRO = "cache.t2.micro"
-CACHE_T2_SMALL = "cache.t2.small"
-CACHE_T2_MEDIUM = "cache.t2.medium"
-
-CACHE_T3_MICRO = "cache.t3.micro"
-CACHE_T3_SMALL = "cache.t3.small"
-CACHE_T3_MEDIUM = "cache.t3.medium"
-
-CACHE_T4G_MICRO = "cache.t4g.micro"
-CACHE_T4G_SMALL = "cache.t4g.small"
-CACHE_T4G_MEDIUM = "cache.t4g.medium"
-
-CACHE_M1_SMALL = "cache.m1.small"
-CACHE_M1_MEDIUM = "cache.m1.medium"
-CACHE_M1_LARGE = "cache.m1.large"
-CACHE_M1_XLARGE = "cache.m1.xlarge"
-
-CACHE_M2_XLARGE = "cache.m2.xlarge"
-CACHE_M2_2XLARGE = "cache.m2.2xlarge"
-CACHE_M2_4XLARGE = "cache.m2.4xlarge"
-
-CACHE_M3_MEDIUM = "cache.m3.medium"
-CACHE_M3_LARGE = "cache.m3.large"
-CACHE_M3_XLARGE = "cache.m3.xlarge"
-CACHE_M3_2XLARGE = "cache.m3.2xlarge"
-
-CACHE_M4_LARGE = "cache.m4.large"
-CACHE_M4_XLARGE = "cache.m4.xlarge"
-CACHE_M4_2XLARGE = "cache.m4.2xlarge"
-CACHE_M4_4XLARGE = "cache.m4.4xlarge"
-CACHE_M4_10XLARGE = "cache.m4.10xlarge"
-
-CACHE_M5_LARGE = "cache.m5.large"
-CACHE_M5_XLARGE = "cache.m5.xlarge"
-CACHE_M5_2XLARGE = "cache.m5.2xlarge"
-CACHE_M5_4XLARGE = "cache.m5.4xlarge"
-CACHE_M5_12XLARGE = "cache.m5.12xlarge"
-CACHE_M5_24XLARGE = "cache.m5.24xlarge"
-
-CACHE_M6G_LARGE = "cache.m6g.large"
-CACHE_M6G_XLARGE = "cache.m6g.xlarge"
-CACHE_M6G_2XLARGE = "cache.m6g.2xlarge"
-CACHE_M6G_4XLARGE = "cache.m6g.4xlarge"
-CACHE_M6G_8XLARGE = "cache.m6g.8xlarge"
-CACHE_M6G_12XLARGE = "cache.m6g.12xlarge"
-CACHE_M6G_16XLARGE = "cache.m6g.16xlarge"
-
-CACHE_R3_LARGE = "cache.r3.large"
-CACHE_R3_XLARGE = "cache.r3.xlarge"
-CACHE_R3_2XLARGE = "cache.r3.2xlarge"
-CACHE_R3_4XLARGE = "cache.r3.4xlarge"
-CACHE_R3_8XLARGE = "cache.r3.8xlarge"
-
-CACHE_R4_LARGE = "cache.r4.large"
-CACHE_R4_XLARGE = "cache.r4.xlarge"
-CACHE_R4_2XLARGE = "cache.r4.2xlarge"
-CACHE_R4_4XLARGE = "cache.r4.4xlarge"
-CACHE_R4_8XLARGE = "cache.r4.8xlarge"
-CACHE_R4_16XLARGE = "cache.r4.16xlarge"
-
-CACHE_R5_LARGE = "cache.r5.large"
-CACHE_R5_XLARGE = "cache.r5.xlarge"
-CACHE_R5_2XLARGE = "cache.r5.2xlarge"
-CACHE_R5_4XLARGE = "cache.r5.4xlarge"
-CACHE_R5_12XLARGE = "cache.r5.12xlarge"
-CACHE_R5_24XLARGE = "cache.r5.24xlarge"
-
-CACHE_R6G_LARGE = "cache.r6g.large"
-CACHE_R6G_XLARGE = "cache.r6g.xlarge"
-CACHE_R6G_2XLARGE = "cache.r6g.2xlarge"
-CACHE_R6G_4XLARGE = "cache.r6g.4xlarge"
-CACHE_R6G_8XLARGE = "cache.r6g.8xlarge"
-CACHE_R6G_12XLARGE = "cache.r6g.12xlarge"
-CACHE_R6G_16XLARGE = "cache.r6g.16xlarge"
-
-CACHE_R6GD_XLARGE = "cache.r6gd.xlarge"
-CACHE_R6GD_2XLARGE = "cache.r6gd.2xlarge"
-CACHE_R6GD_4XLARGE = "cache.r6gd.4xlarge"
-CACHE_R6GD_8XLARGE = "cache.r6gd.8xlarge"
-CACHE_R6GD_12XLARGE = "cache.r6gd.12xlarge"
-CACHE_R6GD_16XLARGE = "cache.r6gd.16xlarge"
-
-CACHE_C1_XLARGE = "cache.c1.xlarge"
+CACHE_T1_MICRO: Final = "cache.t1.micro"
+
+CACHE_T2_MICRO: Final = "cache.t2.micro"
+CACHE_T2_SMALL: Final = "cache.t2.small"
+CACHE_T2_MEDIUM: Final = "cache.t2.medium"
+
+CACHE_T3_MICRO: Final = "cache.t3.micro"
+CACHE_T3_SMALL: Final = "cache.t3.small"
+CACHE_T3_MEDIUM: Final = "cache.t3.medium"
+
+CACHE_T4G_MICRO: Final = "cache.t4g.micro"
+CACHE_T4G_SMALL: Final = "cache.t4g.small"
+CACHE_T4G_MEDIUM: Final = "cache.t4g.medium"
+
+CACHE_M1_SMALL: Final = "cache.m1.small"
+CACHE_M1_MEDIUM: Final = "cache.m1.medium"
+CACHE_M1_LARGE: Final = "cache.m1.large"
+CACHE_M1_XLARGE: Final = "cache.m1.xlarge"
+
+CACHE_M2_XLARGE: Final = "cache.m2.xlarge"
+CACHE_M2_2XLARGE: Final = "cache.m2.2xlarge"
+CACHE_M2_4XLARGE: Final = "cache.m2.4xlarge"
+
+CACHE_M3_MEDIUM: Final = "cache.m3.medium"
+CACHE_M3_LARGE: Final = "cache.m3.large"
+CACHE_M3_XLARGE: Final = "cache.m3.xlarge"
+CACHE_M3_2XLARGE: Final = "cache.m3.2xlarge"
+
+CACHE_M4_LARGE: Final = "cache.m4.large"
+CACHE_M4_XLARGE: Final = "cache.m4.xlarge"
+CACHE_M4_2XLARGE: Final = "cache.m4.2xlarge"
+CACHE_M4_4XLARGE: Final = "cache.m4.4xlarge"
+CACHE_M4_10XLARGE: Final = "cache.m4.10xlarge"
+
+CACHE_M5_LARGE: Final = "cache.m5.large"
+CACHE_M5_XLARGE: Final = "cache.m5.xlarge"
+CACHE_M5_2XLARGE: Final = "cache.m5.2xlarge"
+CACHE_M5_4XLARGE: Final = "cache.m5.4xlarge"
+CACHE_M5_12XLARGE: Final = "cache.m5.12xlarge"
+CACHE_M5_24XLARGE: Final = "cache.m5.24xlarge"
+
+CACHE_M6G_LARGE: Final = "cache.m6g.large"
+CACHE_M6G_XLARGE: Final = "cache.m6g.xlarge"
+CACHE_M6G_2XLARGE: Final = "cache.m6g.2xlarge"
+CACHE_M6G_4XLARGE: Final = "cache.m6g.4xlarge"
+CACHE_M6G_8XLARGE: Final = "cache.m6g.8xlarge"
+CACHE_M6G_12XLARGE: Final = "cache.m6g.12xlarge"
+CACHE_M6G_16XLARGE: Final = "cache.m6g.16xlarge"
+
+CACHE_R3_LARGE: Final = "cache.r3.large"
+CACHE_R3_XLARGE: Final = "cache.r3.xlarge"
+CACHE_R3_2XLARGE: Final = "cache.r3.2xlarge"
+CACHE_R3_4XLARGE: Final = "cache.r3.4xlarge"
+CACHE_R3_8XLARGE: Final = "cache.r3.8xlarge"
+
+CACHE_R4_LARGE: Final = "cache.r4.large"
+CACHE_R4_XLARGE: Final = "cache.r4.xlarge"
+CACHE_R4_2XLARGE: Final = "cache.r4.2xlarge"
+CACHE_R4_4XLARGE: Final = "cache.r4.4xlarge"
+CACHE_R4_8XLARGE: Final = "cache.r4.8xlarge"
+CACHE_R4_16XLARGE: Final = "cache.r4.16xlarge"
+
+CACHE_R5_LARGE: Final = "cache.r5.large"
+CACHE_R5_XLARGE: Final = "cache.r5.xlarge"
+CACHE_R5_2XLARGE: Final = "cache.r5.2xlarge"
+CACHE_R5_4XLARGE: Final = "cache.r5.4xlarge"
+CACHE_R5_12XLARGE: Final = "cache.r5.12xlarge"
+CACHE_R5_24XLARGE: Final = "cache.r5.24xlarge"
+
+CACHE_R6G_LARGE: Final = "cache.r6g.large"
+CACHE_R6G_XLARGE: Final = "cache.r6g.xlarge"
+CACHE_R6G_2XLARGE: Final = "cache.r6g.2xlarge"
+CACHE_R6G_4XLARGE: Final = "cache.r6g.4xlarge"
+CACHE_R6G_8XLARGE: Final = "cache.r6g.8xlarge"
+CACHE_R6G_12XLARGE: Final = "cache.r6g.12xlarge"
+CACHE_R6G_16XLARGE: Final = "cache.r6g.16xlarge"
+
+CACHE_R6GD_XLARGE: Final = "cache.r6gd.xlarge"
+CACHE_R6GD_2XLARGE: Final = "cache.r6gd.2xlarge"
+CACHE_R6GD_4XLARGE: Final = "cache.r6gd.4xlarge"
+CACHE_R6GD_8XLARGE: Final = "cache.r6gd.8xlarge"
+CACHE_R6GD_12XLARGE: Final = "cache.r6gd.12xlarge"
+CACHE_R6GD_16XLARGE: Final = "cache.r6gd.16xlarge"
+
+CACHE_C1_XLARGE: Final = "cache.c1.xlarge"
 
 #
 # Elasticsearch instance types
 #
 
 # Note: t2.micro.elasticsearch is deprecated.
-ELASTICSEARCH_T2_MICRO = "t2.micro.elasticsearch"
-ELASTICSEARCH_T2_SMALL = "t2.small.elasticsearch"
-ELASTICSEARCH_T2_MEDIUM = "t2.medium.elasticsearch"
-
-ELASTICSEARCH_T3_SMALL = "t3.small.elasticsearch"
-ELASTICSEARCH_T3_MEDIUM = "t3.medium.elasticsearch"
-
-ELASTICSEARCH_M3_MEDIUM = "m3.medium.elasticsearch"
-ELASTICSEARCH_M3_LARGE = "m3.large.elasticsearch"
-ELASTICSEARCH_M3_XLARGE = "m3.xlarge.elasticsearch"
-ELASTICSEARCH_M3_2XLARGE = "m3.2xlarge.elasticsearch"
-
-ELASTICSEARCH_M4_LARGE = "m4.large.elasticsearch"
-ELASTICSEARCH_M4_XLARGE = "m4.xlarge.elasticsearch"
-ELASTICSEARCH_M4_2XLARGE = "m4.2xlarge.elasticsearch"
-ELASTICSEARCH_M4_4XLARGE = "m4.4xlarge.elasticsearch"
-ELASTICSEARCH_M4_10XLARGE = "m4.10xlarge.elasticsearch"
-
-ELASTICSEARCH_M5_LARGE = "m5.large.elasticsearch"
-ELASTICSEARCH_M5_XLARGE = "m5.xlarge.elasticsearch"
-ELASTICSEARCH_M5_2XLARGE = "m5.2xlarge.elasticsearch"
-ELASTICSEARCH_M5_4XLARGE = "m5.4xlarge.elasticsearch"
-ELASTICSEARCH_M5_12XLARGE = "m5.12xlarge.elasticsearch"
-
-ELASTICSEARCH_M6G_LARGE = "m6g.large.elasticsearch"
-ELASTICSEARCH_M6G_XLARGE = "m6g.xlarge.elasticsearch"
-ELASTICSEARCH_M6G_2XLARGE = "m6g.2xlarge.elasticsearch"
-ELASTICSEARCH_M6G_4XLARGE = "m6g.4xlarge.elasticsearch"
-ELASTICSEARCH_M6G_8XLARGE = "m6g.8xlarge.elasticsearch"
-ELASTICSEARCH_M6G_12XLARGE = "m6g.12xlarge.elasticsearch"
-
-ELASTICSEARCH_C4_LARGE = "c4.large.elasticsearch"
-ELASTICSEARCH_C4_XLARGE = "c4.xlarge.elasticsearch"
-ELASTICSEARCH_C4_2XLARGE = "c4.2xlarge.elasticsearch"
-ELASTICSEARCH_C4_4XLARGE = "c4.4xlarge.elasticsearch"
-ELASTICSEARCH_C4_8XLARGE = "c4.8xlarge.elasticsearch"
-
-ELASTICSEARCH_C5_LARGE = "c5.large.elasticsearch"
-ELASTICSEARCH_C5_XLARGE = "c5.xlarge.elasticsearch"
-ELASTICSEARCH_C5_2XLARGE = "c5.2xlarge.elasticsearch"
-ELASTICSEARCH_C5_4XLARGE = "c5.4xlarge.elasticsearch"
-ELASTICSEARCH_C5_9XLARGE = "c5.9xlarge.elasticsearch"
-ELASTICSEARCH_C5_18XLARGE = "c5.18xlarge.elasticsearch"
-
-ELASTICSEARCH_C6G_LARGE = "c6g.large.elasticsearch"
-ELASTICSEARCH_C6G_XLARGE = "c6g.xlarge.elasticsearch"
-ELASTICSEARCH_C6G_2XLARGE = "c6g.2xlarge.elasticsearch"
-ELASTICSEARCH_C6G_4XLARGE = "c6g.4xlarge.elasticsearch"
-ELASTICSEARCH_C6G_8XLARGE = "c6g.8xlarge.elasticsearch"
-ELASTICSEARCH_C6G_12XLARGE = "c6g.12xlarge.elasticsearch"
-
-ELASTICSEARCH_R3_LARGE = "r3.large.elasticsearch"
-ELASTICSEARCH_R3_XLARGE = "r3.xlarge.elasticsearch"
-ELASTICSEARCH_R3_2XLARGE = "r3.2xlarge.elasticsearch"
-ELASTICSEARCH_R3_4XLARGE = "r3.4xlarge.elasticsearch"
-ELASTICSEARCH_R3_8XLARGE = "r3.8xlarge.elasticsearch"
-
-ELASTICSEARCH_R4_LARGE = "r4.large.elasticsearch"
-ELASTICSEARCH_R4_XLARGE = "r4.xlarge.elasticsearch"
-ELASTICSEARCH_R4_2XLARGE = "r4.2xlarge.elasticsearch"
-ELASTICSEARCH_R4_4XLARGE = "r4.4xlarge.elasticsearch"
-ELASTICSEARCH_R4_8XLARGE = "r4.8xlarge.elasticsearch"
-ELASTICSEARCH_R4_16XLARGE = "r4.16xlarge.elasticsearch"
-
-ELASTICSEARCH_R5_LARGE = "r5.large.elasticsearch"
-ELASTICSEARCH_R5_XLARGE = "r5.xlarge.elasticsearch"
-ELASTICSEARCH_R5_2XLARGE = "r5.2xlarge.elasticsearch"
-ELASTICSEARCH_R5_4XLARGE = "r5.4xlarge.elasticsearch"
-ELASTICSEARCH_R5_12XLARGE = "r5.12xlarge.elasticsearch"
-
-ELASTICSEARCH_R6G_LARGE = "r6g.large.elasticsearch"
-ELASTICSEARCH_R6G_XLARGE = "r6g.xlarge.elasticsearch"
-ELASTICSEARCH_R6G_2XLARGE = "r6g.2xlarge.elasticsearch"
-ELASTICSEARCH_R6G_4XLARGE = "r6g.4xlarge.elasticsearch"
-ELASTICSEARCH_R6G_8XLARGE = "r6g.8xlarge.elasticsearch"
-ELASTICSEARCH_R6G_12XLARGE = "r6g.12xlarge.elasticsearch"
-
-ELASTICSEARCH_R6GD_LARGE = "r6gd.large.elasticsearch"
-ELASTICSEARCH_R6GD_XLARGE = "r6gd.xlarge.elasticsearch"
-ELASTICSEARCH_R6GD_2XLARGE = "r6gd.2xlarge.elasticsearch"
-ELASTICSEARCH_R6GD_4XLARGE = "r6gd.4xlarge.elasticsearch"
-ELASTICSEARCH_R6GD_8XLARGE = "r6gd.8xlarge.elasticsearch"
-ELASTICSEARCH_R6GD_12XLARGE = "r6gd.12xlarge.elasticsearch"
-ELASTICSEARCH_R6GD_16XLARGE = "r6gd.16xlarge.elasticsearch"
-
-ELASTICSEARCH_I2_XLARGE = "i2.xlarge.elasticsearch"
-ELASTICSEARCH_I2_2XLARGE = "i2.2xlarge.elasticsearch"
-
-ELASTICSEARCH_I3_LARGE = "i3.large.elasticsearch"
-ELASTICSEARCH_I3_XLARGE = "i3.xlarge.elasticsearch"
-ELASTICSEARCH_I3_2XLARGE = "i3.2xlarge.elasticsearch"
-ELASTICSEARCH_I3_4XLARGE = "i3.4xlarge.elasticsearch"
-ELASTICSEARCH_I3_8XLARGE = "i3.8xlarge.elasticsearch"
-ELASTICSEARCH_I3_16XLARGE = "i3.16xlarge.elasticsearch"
-
-ELASTICSEARCH_ULTRAWARM1_MEDIUM = "ultrawarm1.medium.elasticsearch"
-ELASTICSEARCH_ULTRAWARM1_LARGE = "ultrawarm1.large.elasticsearch"
+ELASTICSEARCH_T2_MICRO: Final = "t2.micro.elasticsearch"
+ELASTICSEARCH_T2_SMALL: Final = "t2.small.elasticsearch"
+ELASTICSEARCH_T2_MEDIUM: Final = "t2.medium.elasticsearch"
+
+ELASTICSEARCH_T3_SMALL: Final = "t3.small.elasticsearch"
+ELASTICSEARCH_T3_MEDIUM: Final = "t3.medium.elasticsearch"
+
+ELASTICSEARCH_M3_MEDIUM: Final = "m3.medium.elasticsearch"
+ELASTICSEARCH_M3_LARGE: Final = "m3.large.elasticsearch"
+ELASTICSEARCH_M3_XLARGE: Final = "m3.xlarge.elasticsearch"
+ELASTICSEARCH_M3_2XLARGE: Final = "m3.2xlarge.elasticsearch"
+
+ELASTICSEARCH_M4_LARGE: Final = "m4.large.elasticsearch"
+ELASTICSEARCH_M4_XLARGE: Final = "m4.xlarge.elasticsearch"
+ELASTICSEARCH_M4_2XLARGE: Final = "m4.2xlarge.elasticsearch"
+ELASTICSEARCH_M4_4XLARGE: Final = "m4.4xlarge.elasticsearch"
+ELASTICSEARCH_M4_10XLARGE: Final = "m4.10xlarge.elasticsearch"
+
+ELASTICSEARCH_M5_LARGE: Final = "m5.large.elasticsearch"
+ELASTICSEARCH_M5_XLARGE: Final = "m5.xlarge.elasticsearch"
+ELASTICSEARCH_M5_2XLARGE: Final = "m5.2xlarge.elasticsearch"
+ELASTICSEARCH_M5_4XLARGE: Final = "m5.4xlarge.elasticsearch"
+ELASTICSEARCH_M5_12XLARGE: Final = "m5.12xlarge.elasticsearch"
+
+ELASTICSEARCH_M6G_LARGE: Final = "m6g.large.elasticsearch"
+ELASTICSEARCH_M6G_XLARGE: Final = "m6g.xlarge.elasticsearch"
+ELASTICSEARCH_M6G_2XLARGE: Final = "m6g.2xlarge.elasticsearch"
+ELASTICSEARCH_M6G_4XLARGE: Final = "m6g.4xlarge.elasticsearch"
+ELASTICSEARCH_M6G_8XLARGE: Final = "m6g.8xlarge.elasticsearch"
+ELASTICSEARCH_M6G_12XLARGE: Final = "m6g.12xlarge.elasticsearch"
+
+ELASTICSEARCH_C4_LARGE: Final = "c4.large.elasticsearch"
+ELASTICSEARCH_C4_XLARGE: Final = "c4.xlarge.elasticsearch"
+ELASTICSEARCH_C4_2XLARGE: Final = "c4.2xlarge.elasticsearch"
+ELASTICSEARCH_C4_4XLARGE: Final = "c4.4xlarge.elasticsearch"
+ELASTICSEARCH_C4_8XLARGE: Final = "c4.8xlarge.elasticsearch"
+
+ELASTICSEARCH_C5_LARGE: Final = "c5.large.elasticsearch"
+ELASTICSEARCH_C5_XLARGE: Final = "c5.xlarge.elasticsearch"
+ELASTICSEARCH_C5_2XLARGE: Final = "c5.2xlarge.elasticsearch"
+ELASTICSEARCH_C5_4XLARGE: Final = "c5.4xlarge.elasticsearch"
+ELASTICSEARCH_C5_9XLARGE: Final = "c5.9xlarge.elasticsearch"
+ELASTICSEARCH_C5_18XLARGE: Final = "c5.18xlarge.elasticsearch"
+
+ELASTICSEARCH_C6G_LARGE: Final = "c6g.large.elasticsearch"
+ELASTICSEARCH_C6G_XLARGE: Final = "c6g.xlarge.elasticsearch"
+ELASTICSEARCH_C6G_2XLARGE: Final = "c6g.2xlarge.elasticsearch"
+ELASTICSEARCH_C6G_4XLARGE: Final = "c6g.4xlarge.elasticsearch"
+ELASTICSEARCH_C6G_8XLARGE: Final = "c6g.8xlarge.elasticsearch"
+ELASTICSEARCH_C6G_12XLARGE: Final = "c6g.12xlarge.elasticsearch"
+
+ELASTICSEARCH_R3_LARGE: Final = "r3.large.elasticsearch"
+ELASTICSEARCH_R3_XLARGE: Final = "r3.xlarge.elasticsearch"
+ELASTICSEARCH_R3_2XLARGE: Final = "r3.2xlarge.elasticsearch"
+ELASTICSEARCH_R3_4XLARGE: Final = "r3.4xlarge.elasticsearch"
+ELASTICSEARCH_R3_8XLARGE: Final = "r3.8xlarge.elasticsearch"
+
+ELASTICSEARCH_R4_LARGE: Final = "r4.large.elasticsearch"
+ELASTICSEARCH_R4_XLARGE: Final = "r4.xlarge.elasticsearch"
+ELASTICSEARCH_R4_2XLARGE: Final = "r4.2xlarge.elasticsearch"
+ELASTICSEARCH_R4_4XLARGE: Final = "r4.4xlarge.elasticsearch"
+ELASTICSEARCH_R4_8XLARGE: Final = "r4.8xlarge.elasticsearch"
+ELASTICSEARCH_R4_16XLARGE: Final = "r4.16xlarge.elasticsearch"
+
+ELASTICSEARCH_R5_LARGE: Final = "r5.large.elasticsearch"
+ELASTICSEARCH_R5_XLARGE: Final = "r5.xlarge.elasticsearch"
+ELASTICSEARCH_R5_2XLARGE: Final = "r5.2xlarge.elasticsearch"
+ELASTICSEARCH_R5_4XLARGE: Final = "r5.4xlarge.elasticsearch"
+ELASTICSEARCH_R5_12XLARGE: Final = "r5.12xlarge.elasticsearch"
+
+ELASTICSEARCH_R6G_LARGE: Final = "r6g.large.elasticsearch"
+ELASTICSEARCH_R6G_XLARGE: Final = "r6g.xlarge.elasticsearch"
+ELASTICSEARCH_R6G_2XLARGE: Final = "r6g.2xlarge.elasticsearch"
+ELASTICSEARCH_R6G_4XLARGE: Final = "r6g.4xlarge.elasticsearch"
+ELASTICSEARCH_R6G_8XLARGE: Final = "r6g.8xlarge.elasticsearch"
+ELASTICSEARCH_R6G_12XLARGE: Final = "r6g.12xlarge.elasticsearch"
+
+ELASTICSEARCH_R6GD_LARGE: Final = "r6gd.large.elasticsearch"
+ELASTICSEARCH_R6GD_XLARGE: Final = "r6gd.xlarge.elasticsearch"
+ELASTICSEARCH_R6GD_2XLARGE: Final = "r6gd.2xlarge.elasticsearch"
+ELASTICSEARCH_R6GD_4XLARGE: Final = "r6gd.4xlarge.elasticsearch"
+ELASTICSEARCH_R6GD_8XLARGE: Final = "r6gd.8xlarge.elasticsearch"
+ELASTICSEARCH_R6GD_12XLARGE: Final = "r6gd.12xlarge.elasticsearch"
+ELASTICSEARCH_R6GD_16XLARGE: Final = "r6gd.16xlarge.elasticsearch"
+
+ELASTICSEARCH_I2_XLARGE: Final = "i2.xlarge.elasticsearch"
+ELASTICSEARCH_I2_2XLARGE: Final = "i2.2xlarge.elasticsearch"
+
+ELASTICSEARCH_I3_LARGE: Final = "i3.large.elasticsearch"
+ELASTICSEARCH_I3_XLARGE: Final = "i3.xlarge.elasticsearch"
+ELASTICSEARCH_I3_2XLARGE: Final = "i3.2xlarge.elasticsearch"
+ELASTICSEARCH_I3_4XLARGE: Final = "i3.4xlarge.elasticsearch"
+ELASTICSEARCH_I3_8XLARGE: Final = "i3.8xlarge.elasticsearch"
+ELASTICSEARCH_I3_16XLARGE: Final = "i3.16xlarge.elasticsearch"
+
+ELASTICSEARCH_ULTRAWARM1_MEDIUM: Final = "ultrawarm1.medium.elasticsearch"
+ELASTICSEARCH_ULTRAWARM1_LARGE: Final = "ultrawarm1.large.elasticsearch"
 
 #
 # Kafka brokers instance types
 #
 
-KAFKA_M5_LARGE = "kafka.m5.large"
-KAFKA_M5_XLARGE = "kafka.m5.xlarge"
-KAFKA_M5_2XLARGE = "kafka.m5.2xlarge"
-KAFKA_M5_4XLARGE = "kafka.m5.4xlarge"
-KAFKA_M5_12XLARGE = "kafka.m5.12xlarge"
-KAFKA_M5_24XLARGE = "kafka.m5.24xlarge"
+KAFKA_M5_LARGE: Final = "kafka.m5.large"
+KAFKA_M5_XLARGE: Final = "kafka.m5.xlarge"
+KAFKA_M5_2XLARGE: Final = "kafka.m5.2xlarge"
+KAFKA_M5_4XLARGE: Final = "kafka.m5.4xlarge"
+KAFKA_M5_12XLARGE: Final = "kafka.m5.12xlarge"
+KAFKA_M5_24XLARGE: Final = "kafka.m5.24xlarge"
 
 #
 # Parameter types
 #
 
-STRING = "String"
-NUMBER = "Number"
-LIST_OF_NUMBERS = "List<Number>"
-COMMA_DELIMITED_LIST = "CommaDelimitedList"
-
-AVAILABILITY_ZONE_NAME = "AWS::EC2::AvailabilityZone::Name"
-IMAGE_ID = "AWS::EC2::Image::Id"
-INSTANCE_ID = "AWS::EC2::Instance::Id"
-KEY_PAIR_NAME = "AWS::EC2::KeyPair::KeyName"
-SECURITY_GROUP_NAME = "AWS::EC2::SecurityGroup::GroupName"
-SECURITY_GROUP_ID = "AWS::EC2::SecurityGroup::Id"
-SUBNET_ID = "AWS::EC2::Subnet::Id"
-VOLUME_ID = "AWS::EC2::Volume::Id"
-VPC_ID = "AWS::EC2::VPC::Id"
-HOSTED_ZONE_ID = "AWS::Route53::HostedZone::Id"
-
-LIST_OF_AVAILABILITY_ZONE_NAMES = "List<AWS::EC2::AvailabilityZone::Name>"
-LIST_OF_IMAGE_ID = "List<AWS::EC2::Image::Id>"
-LIST_OF_INSTANCE_IDS = "List<AWS::EC2::Instance::Id>"
-LIST_OF_SECURITY_GROUP_NAMES = "List<AWS::EC2::SecurityGroup::GroupName>"
-LIST_OF_SECURITY_GROUP_IDS = "List<AWS::EC2::SecurityGroup::Id>"
-LIST_OF_SUBNET_IDS = "List<AWS::EC2::Subnet::Id>"
-LIST_OF_VOLUME_IDS = "List<AWS::EC2::Volume::Id>"
-LIST_OF_VPC_IDS = "List<AWS::EC2::VPC::Id>"
-LIST_OF_HOSTED_ZONE_IDS = "List<AWS::Route53::HostedZone::Id>"
+STRING: Final = "String"
+NUMBER: Final = "Number"
+LIST_OF_NUMBERS: Final = "List<Number>"
+COMMA_DELIMITED_LIST: Final = "CommaDelimitedList"
+
+AVAILABILITY_ZONE_NAME: Final = "AWS::EC2::AvailabilityZone::Name"
+IMAGE_ID: Final = "AWS::EC2::Image::Id"
+INSTANCE_ID: Final = "AWS::EC2::Instance::Id"
+KEY_PAIR_NAME: Final = "AWS::EC2::KeyPair::KeyName"
+SECURITY_GROUP_NAME: Final = "AWS::EC2::SecurityGroup::GroupName"
+SECURITY_GROUP_ID: Final = "AWS::EC2::SecurityGroup::Id"
+SUBNET_ID: Final = "AWS::EC2::Subnet::Id"
+VOLUME_ID: Final = "AWS::EC2::Volume::Id"
+VPC_ID: Final = "AWS::EC2::VPC::Id"
+HOSTED_ZONE_ID: Final = "AWS::Route53::HostedZone::Id"
+
+LIST_OF_AVAILABILITY_ZONE_NAMES: Final = "List<AWS::EC2::AvailabilityZone::Name>"
+LIST_OF_IMAGE_ID: Final = "List<AWS::EC2::Image::Id>"
+LIST_OF_INSTANCE_IDS: Final = "List<AWS::EC2::Instance::Id>"
+LIST_OF_SECURITY_GROUP_NAMES: Final = "List<AWS::EC2::SecurityGroup::GroupName>"
+LIST_OF_SECURITY_GROUP_IDS: Final = "List<AWS::EC2::SecurityGroup::Id>"
+LIST_OF_SUBNET_IDS: Final = "List<AWS::EC2::Subnet::Id>"
+LIST_OF_VOLUME_IDS: Final = "List<AWS::EC2::Volume::Id>"
+LIST_OF_VPC_IDS: Final = "List<AWS::EC2::VPC::Id>"
+LIST_OF_HOSTED_ZONE_IDS: Final = "List<AWS::Route53::HostedZone::Id>"
 
 #
 # Logs
 #
-LOGS_ALLOWED_RETENTION_DAYS = [
+LOGS_ALLOWED_RETENTION_DAYS: Final = [
     1,
     3,
     5,
@@ -1229,4 +1230,4 @@ LOGS_ALLOWED_RETENTION_DAYS = [
 # Route53
 #
 
-CLOUDFRONT_HOSTEDZONEID = "Z2FDTNDATAQYW2"
+CLOUDFRONT_HOSTEDZONEID: Final = "Z2FDTNDATAQYW2"
diff --git a/troposphere/type_defs/compat.py b/troposphere/type_defs/compat.py
index 7ee92aba..dbc27f20 100644
--- a/troposphere/type_defs/compat.py
+++ b/troposphere/type_defs/compat.py
@@ -5,6 +5,6 @@ from __future__ import annotations
 import sys
 
 if sys.version_info < (3, 8):  # 3.7
-    from typing_extensions import Literal, Protocol, SupportsIndex
+    from typing_extensions import Final, Literal, Protocol, SupportsIndex
 else:
-    from typing import Literal, Protocol, SupportsIndex
+    from typing import Final, Literal, Protocol, SupportsIndex
diff --git a/troposphere/validators/appconfig.py b/troposphere/validators/appconfig.py
index 2ead80d4..055eb9a0 100644
--- a/troposphere/validators/appconfig.py
+++ b/troposphere/validators/appconfig.py
@@ -9,12 +9,12 @@ def validate_growth_type(growth_type):
     Property: DeploymentStrategy.GrowthType
     """
 
-    VALID_GROWTH_TYPE = "LINEAR"
+    VALID_GROWTH_TYPES = ("LINEAR",)
 
-    if growth_type not in VALID_GROWTH_TYPE:
+    if growth_type not in VALID_GROWTH_TYPES:
         raise ValueError(
             "DeploymentStrategy GrowthType must be one of: %s"
-            % ", ".join(VALID_GROWTH_TYPE)
+            % ", ".join(VALID_GROWTH_TYPES)
         )
     return growth_type
 
diff --git a/troposphere/validators/autoscaling.py b/troposphere/validators/autoscaling.py
index 3dffc0bc..629b554f 100644
--- a/troposphere/validators/autoscaling.py
+++ b/troposphere/validators/autoscaling.py
@@ -5,22 +5,23 @@
 
 
 from .. import AWSHelperFn, FindInMap, If, Ref, cloudformation
+from ..type_defs.compat import Final
 from . import boolean, exactly_one, mutually_exclusive
 
-EC2_INSTANCE_LAUNCH = "autoscaling:EC2_INSTANCE_LAUNCH"
-EC2_INSTANCE_LAUNCH_ERROR = "autoscaling:EC2_INSTANCE_LAUNCH_ERROR"
-EC2_INSTANCE_TERMINATE = "autoscaling:EC2_INSTANCE_TERMINATE"
-EC2_INSTANCE_TERMINATE_ERROR = "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"
-TEST_NOTIFICATION = "autoscaling:TEST_NOTIFICATION"
+EC2_INSTANCE_LAUNCH: Final = "autoscaling:EC2_INSTANCE_LAUNCH"
+EC2_INSTANCE_LAUNCH_ERROR: Final = "autoscaling:EC2_INSTANCE_LAUNCH_ERROR"
+EC2_INSTANCE_TERMINATE: Final = "autoscaling:EC2_INSTANCE_TERMINATE"
+EC2_INSTANCE_TERMINATE_ERROR: Final = "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"
+TEST_NOTIFICATION: Final = "autoscaling:TEST_NOTIFICATION"
 
 # Termination Policy constants
-Default = "Default"
-OldestInstance = "OldestInstance"
-NewestInstance = "NewestInstance"
-OldestLaunchConfiguration = "OldestLaunchConfiguration"
-OldestLaunchTemplate = "OldestLaunchTemplate"
-ClosestToNextInstanceHour = "ClosestToNextInstanceHour"
-AllocationStrategy = "AllocationStrategy"
+Default: Final = "Default"
+OldestInstance: Final = "OldestInstance"
+NewestInstance: Final = "NewestInstance"
+OldestLaunchConfiguration: Final = "OldestLaunchConfiguration"
+OldestLaunchTemplate: Final = "OldestLaunchTemplate"
+ClosestToNextInstanceHour: Final = "ClosestToNextInstanceHour"
+AllocationStrategy: Final = "AllocationStrategy"
 
 
 def validate_int_to_str(x):
diff --git a/troposphere/validators/codebuild.py b/troposphere/validators/codebuild.py
index f6428701..5390fda2 100644
--- a/troposphere/validators/codebuild.py
+++ b/troposphere/validators/codebuild.py
@@ -51,7 +51,7 @@ def validate_credentials_provider(credential_provider):
     Property: RegistryCredential.CredentialProvider
     """
 
-    VALID_CREDENTIAL_PROVIDERS = "SECRETS_MANAGER"
+    VALID_CREDENTIAL_PROVIDERS = ("SECRETS_MANAGER",)
 
     if credential_provider not in VALID_CREDENTIAL_PROVIDERS:
         raise ValueError(
@@ -89,12 +89,12 @@ def validate_projectfilesystemlocation_type(projectfilesystemlocation_type):
     Property: ProjectFileSystemLocation.Type
     """
 
-    VALID_PROJECTFILESYSTEMLOCATION_TYPE = "EFS"
+    VALID_PROJECTFILESYSTEMLOCATION_TYPES = ("EFS",)
 
-    if projectfilesystemlocation_type not in VALID_PROJECTFILESYSTEMLOCATION_TYPE:
+    if projectfilesystemlocation_type not in VALID_PROJECTFILESYSTEMLOCATION_TYPES:
         raise ValueError(
             "ProjectFileSystemLocation Type must be one of: %s"
-            % ", ".join(VALID_PROJECTFILESYSTEMLOCATION_TYPE)
+            % ", ".join(VALID_PROJECTFILESYSTEMLOCATION_TYPES)
         )
     return projectfilesystemlocation_type
 
diff --git a/troposphere/validators/codedeploy.py b/troposphere/validators/codedeploy.py
index 7d0f770e..8f8c318c 100644
--- a/troposphere/validators/codedeploy.py
+++ b/troposphere/validators/codedeploy.py
@@ -3,11 +3,12 @@
 #
 # See LICENSE file for full license.
 
+from ..type_defs.compat import Final
 from . import exactly_one, mutually_exclusive
 
-KEY_ONLY = "KEY_ONLY"
-VALUE_ONLY = "VALUE_ONLY"
-KEY_AND_VALUE = "KEY_AND_VALUE"
+KEY_ONLY: Final = "KEY_ONLY"
+VALUE_ONLY: Final = "VALUE_ONLY"
+KEY_AND_VALUE: Final = "KEY_AND_VALUE"
 
 
 def deployment_option_validator(x):
diff --git a/troposphere/validators/config.py b/troposphere/validators/config.py
index 2a77c80b..d7a60190 100644
--- a/troposphere/validators/config.py
+++ b/troposphere/validators/config.py
@@ -4,11 +4,13 @@
 # See LICENSE file for full license.
 
 
-ONE_HOUR = "One_Hour"
-THREE_HOURS = "Three_Hours"
-SIX_HOURS = "Six_Hours"
-TWELVE_HOURS = "Twelve_Hours"
-TWENTYFOUR_HOURS = "TwentyFour_Hours"
+from ..type_defs.compat import Final
+
+ONE_HOUR: Final = "One_Hour"
+THREE_HOURS: Final = "Three_Hours"
+SIX_HOURS: Final = "Six_Hours"
+TWELVE_HOURS: Final = "Twelve_Hours"
+TWENTYFOUR_HOURS: Final = "TwentyFour_Hours"
 
 
 def validate_source_details(self):
diff --git a/troposphere/validators/dlm.py b/troposphere/validators/dlm.py
index a9d13c2c..8607402d 100644
--- a/troposphere/validators/dlm.py
+++ b/troposphere/validators/dlm.py
@@ -25,7 +25,10 @@ def validate_interval(interval):
     VALID_INTERVALS = (2, 3, 4, 6, 8, 12, 24)
 
     if interval not in VALID_INTERVALS:
-        raise ValueError("Interval must be one of : %s" % ", ".join(VALID_INTERVALS))
+        raise ValueError(
+            "Interval must be one of : %s"
+            % ", ".join([str(i) for i in VALID_INTERVALS])
+        )
     return interval
 
 
@@ -35,7 +38,7 @@ def validate_interval_unit(interval_unit):
     Property: CreateRule.IntervalUnit
     """
 
-    VALID_INTERVAL_UNITS = "HOURS"
+    VALID_INTERVAL_UNITS = ("HOURS",)
 
     if interval_unit not in VALID_INTERVAL_UNITS:
         raise ValueError(
diff --git a/troposphere/validators/dms.py b/troposphere/validators/dms.py
index e754b161..961c56d6 100644
--- a/troposphere/validators/dms.py
+++ b/troposphere/validators/dms.py
@@ -4,11 +4,12 @@
 # See LICENSE file for full license.
 
 
+from ..type_defs.compat import Final
 from . import network_port
 
-CDC = "cdc"
-FULL_LOAD = "full-load"
-FULL_LOAD_AND_CDC = "full-load-and-cdc"
+CDC: Final = "cdc"
+FULL_LOAD: Final = "full-load"
+FULL_LOAD_AND_CDC: Final = "full-load-and-cdc"
 
 
 def validate_network_port(x):
diff --git a/troposphere/validators/ec2.py b/troposphere/validators/ec2.py
index b08a52a3..b840471e 100644
--- a/troposphere/validators/ec2.py
+++ b/troposphere/validators/ec2.py
@@ -6,12 +6,13 @@
 
 from .. import AWSProperty
 from ..compat import validate_policytype
+from ..type_defs.compat import Final
 from . import exactly_one, integer_range, network_port, tags_or_list
 
-PERMISSION_INSTANCE_ATTACH = "INSTANCE-ATTACH"
-PERMISSION_EIP_ASSOCIATE = "EIP-ASSOCIATE"
+PERMISSION_INSTANCE_ATTACH: Final = "INSTANCE-ATTACH"
+PERMISSION_EIP_ASSOCIATE: Final = "EIP-ASSOCIATE"
 
-NO_DEVICE = {}
+NO_DEVICE: Final = {}
 
 
 def Ipv6Addresses(ipv6_address):
diff --git a/troposphere/validators/ecs.py b/troposphere/validators/ecs.py
index 847d1686..18dcdd97 100644
--- a/troposphere/validators/ecs.py
+++ b/troposphere/validators/ecs.py
@@ -4,17 +4,18 @@
 # See LICENSE file for full license.
 
 
+from ..type_defs.compat import Final
 from . import integer_range, network_port, one_of
 
-LAUNCH_TYPE_EC2 = "EC2"
-LAUNCH_TYPE_FARGATE = "FARGATE"
+LAUNCH_TYPE_EC2: Final = "EC2"
+LAUNCH_TYPE_FARGATE: Final = "FARGATE"
 
-SCHEDULING_STRATEGY_REPLICA = "REPLICA"
-SCHEDULING_STRATEGY_DAEMON = "DAEMON"
+SCHEDULING_STRATEGY_REPLICA: Final = "REPLICA"
+SCHEDULING_STRATEGY_DAEMON: Final = "DAEMON"
 
 
-RUNTIME_PLATFORM_CPU_CONFIGURATIONS = ["ARM64", "X86_64"]
-RUNTIME_PLATFORM_OS_FAMILY = [
+RUNTIME_PLATFORM_CPU_CONFIGURATIONS: Final = ["ARM64", "X86_64"]
+RUNTIME_PLATFORM_OS_FAMILY: Final = [
     "LINUX",
     "WINDOWS_SERVER_2004_CORE",
     "WINDOWS_SERVER_2016_FULL",
diff --git a/troposphere/validators/elasticloadbalancingv2.py b/troposphere/validators/elasticloadbalancingv2.py
index df509129..979663e2 100644
--- a/troposphere/validators/elasticloadbalancingv2.py
+++ b/troposphere/validators/elasticloadbalancingv2.py
@@ -5,6 +5,7 @@
 
 
 from .. import If
+from ..type_defs.compat import Final
 from . import elb_name, exactly_one, network_port, one_of, tags_or_list
 
 
@@ -115,10 +116,10 @@ def validate_action(self):
     requires("fixed-response", ["FixedResponseConfig"])
 
 
-TARGET_TYPE_ALB = "alb"
-TARGET_TYPE_INSTANCE = "instance"
-TARGET_TYPE_IP = "ip"
-TARGET_TYPE_LAMBDA = "lambda"
+TARGET_TYPE_ALB: Final = "alb"
+TARGET_TYPE_INSTANCE: Final = "instance"
+TARGET_TYPE_IP: Final = "ip"
+TARGET_TYPE_LAMBDA: Final = "lambda"
 
 
 def validate_target_type(target_type):
diff --git a/troposphere/validators/emr.py b/troposphere/validators/emr.py
index 20219aa5..17c44b2c 100644
--- a/troposphere/validators/emr.py
+++ b/troposphere/validators/emr.py
@@ -4,11 +4,12 @@
 # See LICENSE file for full license.
 
 from .. import AWSHelperFn, AWSProperty
+from ..type_defs.compat import Final
 from . import defer, double, integer, positive_integer
 
-CHANGE_IN_CAPACITY = "CHANGE_IN_CAPACITY"
-PERCENT_CHANGE_IN_CAPACITY = "PERCENT_CHANGE_IN_CAPACITY"
-EXACT_CAPACITY = "EXACT_CAPACITY"
+CHANGE_IN_CAPACITY: Final = "CHANGE_IN_CAPACITY"
+PERCENT_CHANGE_IN_CAPACITY: Final = "PERCENT_CHANGE_IN_CAPACITY"
+EXACT_CAPACITY: Final = "EXACT_CAPACITY"
 
 
 class KeyValueClass(AWSProperty):


Test patch:
diff --git a/tests/test_appconfig.py b/tests/test_appconfig.py
new file mode 100644
index 00000000..fe42431c
--- /dev/null
+++ b/tests/test_appconfig.py
@@ -0,0 +1,47 @@
+import unittest
+
+from troposphere.appconfig import DeploymentStrategy, Validators
+
+
+class TestAppconfigDeploymentStrategy(unittest.TestCase):
+    def test_deploymentstrategy_growthtype_bad_value(self):
+        with self.assertRaisesRegex(ValueError, "GrowthType must be one of"):
+            DeploymentStrategy(
+                "DeploymentStrategy",
+                DeploymentDurationInMinutes=1,
+                GrowthFactor=1,
+                GrowthType="LINEA",
+                Name="DeploymentStrategy",
+                ReplicateTo="NONE",
+            )
+
+    def test_deploymentstrategy_replicateto_bad_value(self):
+        with self.assertRaisesRegex(ValueError, "ReplicateTo must be one of"):
+            DeploymentStrategy(
+                "DeploymentStrategy",
+                DeploymentDurationInMinutes=1,
+                GrowthFactor=1,
+                Name="DeploymentStrategy",
+                ReplicateTo="none",
+            )
+
+    def test_deploymentstrategy(self):
+        for replicate_to in ("NONE", "SSM_DOCUMENT"):
+            DeploymentStrategy(
+                "DeploymentStrategy",
+                DeploymentDurationInMinutes=1,
+                GrowthFactor=1,
+                GrowthType="LINEAR",
+                Name="DeploymentStrategy",
+                ReplicateTo=replicate_to,
+            )
+
+
+class TestAppconfigValidators(unittest.TestCase):
+    def test_validators_type_bad_value(self):
+        with self.assertRaisesRegex(ValueError, "Validator Type must be one of"):
+            Validators(Type="JSON_SCHEM")
+
+    def test_validators_type(self):
+        for validator_type in ("JSON_SCHEMA", "LAMBDA"):
+            Validators(Type=validator_type)
diff --git a/tests/test_codebuild.py b/tests/test_codebuild.py
index 818e072b..3e70bd86 100644
--- a/tests/test_codebuild.py
+++ b/tests/test_codebuild.py
@@ -84,3 +84,37 @@ class TestCodeBuildFilters(unittest.TestCase):
                     [None],
                 ]
             ).validate()
+
+
+class TestCodeBuildRegistryCredential(unittest.TestCase):
+    def test_registrycredential_provider_bad_value(self):
+        with self.assertRaisesRegex(ValueError, "CredentialProvider must be one of"):
+            codebuild.RegistryCredential(
+                Credential="Foo",
+                CredentialProvider="SECRETS",
+            )
+
+    def test_registrycredential(self):
+        codebuild.RegistryCredential(
+            Credential="Foo",
+            CredentialProvider="SECRETS_MANAGER",
+        )
+
+
+class TestCodeBuildProjectFileSystemLocation(unittest.TestCase):
+    def test_projectfilesystemlocation_type_bad_value(self):
+        with self.assertRaisesRegex(ValueError, "Type must be one of"):
+            codebuild.ProjectFileSystemLocation(
+                Identifier="foo",
+                Location="bar",
+                MountPoint="baz",
+                Type="EF",
+            )
+
+    def test_projectfilesystemlocation(self):
+        codebuild.ProjectFileSystemLocation(
+            Identifier="foo",
+            Location="bar",
+            MountPoint="baz",
+            Type="EFS",
+        )
diff --git a/tests/test_dlm.py b/tests/test_dlm.py
new file mode 100644
index 00000000..044deb8f
--- /dev/null
+++ b/tests/test_dlm.py
@@ -0,0 +1,16 @@
+import unittest
+
+from troposphere.dlm import CreateRule
+
+
+class TestDlmCreateRule(unittest.TestCase):
+    def test_createrule_interval_bad_value(self):
+        with self.assertRaisesRegex(ValueError, "Interval must be one of"):
+            CreateRule("CreateRule", Interval=25)
+
+    def test_createrule_intervalunit_bad_value(self):
+        with self.assertRaisesRegex(ValueError, "Interval unit must be one of"):
+            CreateRule("CreateRule", Interval=24, IntervalUnit="HOUR")
+
+    def test_createrule(self):
+        CreateRule("CreateRule", Interval=24, IntervalUnit="HOURS")