diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.50.0
+
+* Update resource specification document to version 11.4.0
+
 ## 0.49.0
 
 * Fixed `ImportValue` not allowing `Val` as argument (thanks @mbj!)
diff --git a/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthorityCrlConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthorityCrlConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthorityCrlConfiguration.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html
+
+module Stratosphere.ResourceProperties.ACMPCACertificateAuthorityCrlConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ACMPCACertificateAuthorityCrlConfiguration.
+-- See 'acmpcaCertificateAuthorityCrlConfiguration' for a more convenient
+-- constructor.
+data ACMPCACertificateAuthorityCrlConfiguration =
+  ACMPCACertificateAuthorityCrlConfiguration
+  { _aCMPCACertificateAuthorityCrlConfigurationCustomCname :: Maybe (Val Text)
+  , _aCMPCACertificateAuthorityCrlConfigurationEnabled :: Maybe (Val Bool)
+  , _aCMPCACertificateAuthorityCrlConfigurationExpirationInDays :: Maybe (Val Integer)
+  , _aCMPCACertificateAuthorityCrlConfigurationS3BucketName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ACMPCACertificateAuthorityCrlConfiguration where
+  toJSON ACMPCACertificateAuthorityCrlConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("CustomCname",) . toJSON) _aCMPCACertificateAuthorityCrlConfigurationCustomCname
+    , fmap (("Enabled",) . toJSON) _aCMPCACertificateAuthorityCrlConfigurationEnabled
+    , fmap (("ExpirationInDays",) . toJSON) _aCMPCACertificateAuthorityCrlConfigurationExpirationInDays
+    , fmap (("S3BucketName",) . toJSON) _aCMPCACertificateAuthorityCrlConfigurationS3BucketName
+    ]
+
+-- | Constructor for 'ACMPCACertificateAuthorityCrlConfiguration' containing
+-- required fields as arguments.
+acmpcaCertificateAuthorityCrlConfiguration
+  :: ACMPCACertificateAuthorityCrlConfiguration
+acmpcaCertificateAuthorityCrlConfiguration  =
+  ACMPCACertificateAuthorityCrlConfiguration
+  { _aCMPCACertificateAuthorityCrlConfigurationCustomCname = Nothing
+  , _aCMPCACertificateAuthorityCrlConfigurationEnabled = Nothing
+  , _aCMPCACertificateAuthorityCrlConfigurationExpirationInDays = Nothing
+  , _aCMPCACertificateAuthorityCrlConfigurationS3BucketName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-customcname
+acmpcacaccCustomCname :: Lens' ACMPCACertificateAuthorityCrlConfiguration (Maybe (Val Text))
+acmpcacaccCustomCname = lens _aCMPCACertificateAuthorityCrlConfigurationCustomCname (\s a -> s { _aCMPCACertificateAuthorityCrlConfigurationCustomCname = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-enabled
+acmpcacaccEnabled :: Lens' ACMPCACertificateAuthorityCrlConfiguration (Maybe (Val Bool))
+acmpcacaccEnabled = lens _aCMPCACertificateAuthorityCrlConfigurationEnabled (\s a -> s { _aCMPCACertificateAuthorityCrlConfigurationEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-expirationindays
+acmpcacaccExpirationInDays :: Lens' ACMPCACertificateAuthorityCrlConfiguration (Maybe (Val Integer))
+acmpcacaccExpirationInDays = lens _aCMPCACertificateAuthorityCrlConfigurationExpirationInDays (\s a -> s { _aCMPCACertificateAuthorityCrlConfigurationExpirationInDays = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html#cfn-acmpca-certificateauthority-crlconfiguration-s3bucketname
+acmpcacaccS3BucketName :: Lens' ACMPCACertificateAuthorityCrlConfiguration (Maybe (Val Text))
+acmpcacaccS3BucketName = lens _aCMPCACertificateAuthorityCrlConfigurationS3BucketName (\s a -> s { _aCMPCACertificateAuthorityCrlConfigurationS3BucketName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthorityRevocationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthorityRevocationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthorityRevocationConfiguration.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-revocationconfiguration.html
+
+module Stratosphere.ResourceProperties.ACMPCACertificateAuthorityRevocationConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ACMPCACertificateAuthorityCrlConfiguration
+
+-- | Full data type definition for
+-- ACMPCACertificateAuthorityRevocationConfiguration. See
+-- 'acmpcaCertificateAuthorityRevocationConfiguration' for a more convenient
+-- constructor.
+data ACMPCACertificateAuthorityRevocationConfiguration =
+  ACMPCACertificateAuthorityRevocationConfiguration
+  { _aCMPCACertificateAuthorityRevocationConfigurationCrlConfiguration :: Maybe ACMPCACertificateAuthorityCrlConfiguration
+  } deriving (Show, Eq)
+
+instance ToJSON ACMPCACertificateAuthorityRevocationConfiguration where
+  toJSON ACMPCACertificateAuthorityRevocationConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("CrlConfiguration",) . toJSON) _aCMPCACertificateAuthorityRevocationConfigurationCrlConfiguration
+    ]
+
+-- | Constructor for 'ACMPCACertificateAuthorityRevocationConfiguration'
+-- containing required fields as arguments.
+acmpcaCertificateAuthorityRevocationConfiguration
+  :: ACMPCACertificateAuthorityRevocationConfiguration
+acmpcaCertificateAuthorityRevocationConfiguration  =
+  ACMPCACertificateAuthorityRevocationConfiguration
+  { _aCMPCACertificateAuthorityRevocationConfigurationCrlConfiguration = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-revocationconfiguration.html#cfn-acmpca-certificateauthority-revocationconfiguration-crlconfiguration
+acmpcacarcCrlConfiguration :: Lens' ACMPCACertificateAuthorityRevocationConfiguration (Maybe ACMPCACertificateAuthorityCrlConfiguration)
+acmpcacarcCrlConfiguration = lens _aCMPCACertificateAuthorityRevocationConfigurationCrlConfiguration (\s a -> s { _aCMPCACertificateAuthorityRevocationConfigurationCrlConfiguration = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthoritySubject.hs b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthoritySubject.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateAuthoritySubject.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html
+
+module Stratosphere.ResourceProperties.ACMPCACertificateAuthoritySubject where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ACMPCACertificateAuthoritySubject. See
+-- 'acmpcaCertificateAuthoritySubject' for a more convenient constructor.
+data ACMPCACertificateAuthoritySubject =
+  ACMPCACertificateAuthoritySubject
+  { _aCMPCACertificateAuthoritySubjectCommonName :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectCountry :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectDistinguishedNameQualifier :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectGenerationQualifier :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectGivenName :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectInitials :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectLocality :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectOrganization :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectOrganizationalUnit :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectPseudonym :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectSerialNumber :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectState :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectSurname :: Maybe (Val Text)
+  , _aCMPCACertificateAuthoritySubjectTitle :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ACMPCACertificateAuthoritySubject where
+  toJSON ACMPCACertificateAuthoritySubject{..} =
+    object $
+    catMaybes
+    [ fmap (("CommonName",) . toJSON) _aCMPCACertificateAuthoritySubjectCommonName
+    , fmap (("Country",) . toJSON) _aCMPCACertificateAuthoritySubjectCountry
+    , fmap (("DistinguishedNameQualifier",) . toJSON) _aCMPCACertificateAuthoritySubjectDistinguishedNameQualifier
+    , fmap (("GenerationQualifier",) . toJSON) _aCMPCACertificateAuthoritySubjectGenerationQualifier
+    , fmap (("GivenName",) . toJSON) _aCMPCACertificateAuthoritySubjectGivenName
+    , fmap (("Initials",) . toJSON) _aCMPCACertificateAuthoritySubjectInitials
+    , fmap (("Locality",) . toJSON) _aCMPCACertificateAuthoritySubjectLocality
+    , fmap (("Organization",) . toJSON) _aCMPCACertificateAuthoritySubjectOrganization
+    , fmap (("OrganizationalUnit",) . toJSON) _aCMPCACertificateAuthoritySubjectOrganizationalUnit
+    , fmap (("Pseudonym",) . toJSON) _aCMPCACertificateAuthoritySubjectPseudonym
+    , fmap (("SerialNumber",) . toJSON) _aCMPCACertificateAuthoritySubjectSerialNumber
+    , fmap (("State",) . toJSON) _aCMPCACertificateAuthoritySubjectState
+    , fmap (("Surname",) . toJSON) _aCMPCACertificateAuthoritySubjectSurname
+    , fmap (("Title",) . toJSON) _aCMPCACertificateAuthoritySubjectTitle
+    ]
+
+-- | Constructor for 'ACMPCACertificateAuthoritySubject' containing required
+-- fields as arguments.
+acmpcaCertificateAuthoritySubject
+  :: ACMPCACertificateAuthoritySubject
+acmpcaCertificateAuthoritySubject  =
+  ACMPCACertificateAuthoritySubject
+  { _aCMPCACertificateAuthoritySubjectCommonName = Nothing
+  , _aCMPCACertificateAuthoritySubjectCountry = Nothing
+  , _aCMPCACertificateAuthoritySubjectDistinguishedNameQualifier = Nothing
+  , _aCMPCACertificateAuthoritySubjectGenerationQualifier = Nothing
+  , _aCMPCACertificateAuthoritySubjectGivenName = Nothing
+  , _aCMPCACertificateAuthoritySubjectInitials = Nothing
+  , _aCMPCACertificateAuthoritySubjectLocality = Nothing
+  , _aCMPCACertificateAuthoritySubjectOrganization = Nothing
+  , _aCMPCACertificateAuthoritySubjectOrganizationalUnit = Nothing
+  , _aCMPCACertificateAuthoritySubjectPseudonym = Nothing
+  , _aCMPCACertificateAuthoritySubjectSerialNumber = Nothing
+  , _aCMPCACertificateAuthoritySubjectState = Nothing
+  , _aCMPCACertificateAuthoritySubjectSurname = Nothing
+  , _aCMPCACertificateAuthoritySubjectTitle = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-commonname
+acmpcacasCommonName :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasCommonName = lens _aCMPCACertificateAuthoritySubjectCommonName (\s a -> s { _aCMPCACertificateAuthoritySubjectCommonName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-country
+acmpcacasCountry :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasCountry = lens _aCMPCACertificateAuthoritySubjectCountry (\s a -> s { _aCMPCACertificateAuthoritySubjectCountry = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-distinguishednamequalifier
+acmpcacasDistinguishedNameQualifier :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasDistinguishedNameQualifier = lens _aCMPCACertificateAuthoritySubjectDistinguishedNameQualifier (\s a -> s { _aCMPCACertificateAuthoritySubjectDistinguishedNameQualifier = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-generationqualifier
+acmpcacasGenerationQualifier :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasGenerationQualifier = lens _aCMPCACertificateAuthoritySubjectGenerationQualifier (\s a -> s { _aCMPCACertificateAuthoritySubjectGenerationQualifier = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-givenname
+acmpcacasGivenName :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasGivenName = lens _aCMPCACertificateAuthoritySubjectGivenName (\s a -> s { _aCMPCACertificateAuthoritySubjectGivenName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-initials
+acmpcacasInitials :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasInitials = lens _aCMPCACertificateAuthoritySubjectInitials (\s a -> s { _aCMPCACertificateAuthoritySubjectInitials = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-locality
+acmpcacasLocality :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasLocality = lens _aCMPCACertificateAuthoritySubjectLocality (\s a -> s { _aCMPCACertificateAuthoritySubjectLocality = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-organization
+acmpcacasOrganization :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasOrganization = lens _aCMPCACertificateAuthoritySubjectOrganization (\s a -> s { _aCMPCACertificateAuthoritySubjectOrganization = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-organizationalunit
+acmpcacasOrganizationalUnit :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasOrganizationalUnit = lens _aCMPCACertificateAuthoritySubjectOrganizationalUnit (\s a -> s { _aCMPCACertificateAuthoritySubjectOrganizationalUnit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-pseudonym
+acmpcacasPseudonym :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasPseudonym = lens _aCMPCACertificateAuthoritySubjectPseudonym (\s a -> s { _aCMPCACertificateAuthoritySubjectPseudonym = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-serialnumber
+acmpcacasSerialNumber :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasSerialNumber = lens _aCMPCACertificateAuthoritySubjectSerialNumber (\s a -> s { _aCMPCACertificateAuthoritySubjectSerialNumber = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-state
+acmpcacasState :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasState = lens _aCMPCACertificateAuthoritySubjectState (\s a -> s { _aCMPCACertificateAuthoritySubjectState = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-surname
+acmpcacasSurname :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasSurname = lens _aCMPCACertificateAuthoritySubjectSurname (\s a -> s { _aCMPCACertificateAuthoritySubjectSurname = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subject.html#cfn-acmpca-certificateauthority-subject-title
+acmpcacasTitle :: Lens' ACMPCACertificateAuthoritySubject (Maybe (Val Text))
+acmpcacasTitle = lens _aCMPCACertificateAuthoritySubjectTitle (\s a -> s { _aCMPCACertificateAuthoritySubjectTitle = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateValidity.hs b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateValidity.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ACMPCACertificateValidity.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificate-validity.html
+
+module Stratosphere.ResourceProperties.ACMPCACertificateValidity where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ACMPCACertificateValidity. See
+-- 'acmpcaCertificateValidity' for a more convenient constructor.
+data ACMPCACertificateValidity =
+  ACMPCACertificateValidity
+  { _aCMPCACertificateValidityType :: Val Text
+  , _aCMPCACertificateValidityValue :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON ACMPCACertificateValidity where
+  toJSON ACMPCACertificateValidity{..} =
+    object $
+    catMaybes
+    [ (Just . ("Type",) . toJSON) _aCMPCACertificateValidityType
+    , (Just . ("Value",) . toJSON) _aCMPCACertificateValidityValue
+    ]
+
+-- | Constructor for 'ACMPCACertificateValidity' containing required fields as
+-- arguments.
+acmpcaCertificateValidity
+  :: Val Text -- ^ 'acmpcacvType'
+  -> Val Integer -- ^ 'acmpcacvValue'
+  -> ACMPCACertificateValidity
+acmpcaCertificateValidity typearg valuearg =
+  ACMPCACertificateValidity
+  { _aCMPCACertificateValidityType = typearg
+  , _aCMPCACertificateValidityValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificate-validity.html#cfn-acmpca-certificate-validity-type
+acmpcacvType :: Lens' ACMPCACertificateValidity (Val Text)
+acmpcacvType = lens _aCMPCACertificateValidityType (\s a -> s { _aCMPCACertificateValidityType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificate-validity.html#cfn-acmpca-certificate-validity-value
+acmpcacvValue :: Lens' ACMPCACertificateValidity (Val Integer)
+acmpcacvValue = lens _aCMPCACertificateValidityValue (\s a -> s { _aCMPCACertificateValidityValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppConfigApplicationTags.hs b/library-gen/Stratosphere/ResourceProperties/AppConfigApplicationTags.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppConfigApplicationTags.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html
+
+module Stratosphere.ResourceProperties.AppConfigApplicationTags where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppConfigApplicationTags. See
+-- 'appConfigApplicationTags' for a more convenient constructor.
+data AppConfigApplicationTags =
+  AppConfigApplicationTags
+  { _appConfigApplicationTagsKey :: Maybe (Val Text)
+  , _appConfigApplicationTagsValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppConfigApplicationTags where
+  toJSON AppConfigApplicationTags{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _appConfigApplicationTagsKey
+    , fmap (("Value",) . toJSON) _appConfigApplicationTagsValue
+    ]
+
+-- | Constructor for 'AppConfigApplicationTags' containing required fields as
+-- arguments.
+appConfigApplicationTags
+  :: AppConfigApplicationTags
+appConfigApplicationTags  =
+  AppConfigApplicationTags
+  { _appConfigApplicationTagsKey = Nothing
+  , _appConfigApplicationTagsValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html#cfn-appconfig-application-tags-key
+acatKey :: Lens' AppConfigApplicationTags (Maybe (Val Text))
+acatKey = lens _appConfigApplicationTagsKey (\s a -> s { _appConfigApplicationTagsKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-application-tags.html#cfn-appconfig-application-tags-value
+acatValue :: Lens' AppConfigApplicationTags (Maybe (Val Text))
+acatValue = lens _appConfigApplicationTagsValue (\s a -> s { _appConfigApplicationTagsValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppConfigConfigurationProfileTags.hs b/library-gen/Stratosphere/ResourceProperties/AppConfigConfigurationProfileTags.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppConfigConfigurationProfileTags.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html
+
+module Stratosphere.ResourceProperties.AppConfigConfigurationProfileTags where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppConfigConfigurationProfileTags. See
+-- 'appConfigConfigurationProfileTags' for a more convenient constructor.
+data AppConfigConfigurationProfileTags =
+  AppConfigConfigurationProfileTags
+  { _appConfigConfigurationProfileTagsKey :: Maybe (Val Text)
+  , _appConfigConfigurationProfileTagsValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppConfigConfigurationProfileTags where
+  toJSON AppConfigConfigurationProfileTags{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _appConfigConfigurationProfileTagsKey
+    , fmap (("Value",) . toJSON) _appConfigConfigurationProfileTagsValue
+    ]
+
+-- | Constructor for 'AppConfigConfigurationProfileTags' containing required
+-- fields as arguments.
+appConfigConfigurationProfileTags
+  :: AppConfigConfigurationProfileTags
+appConfigConfigurationProfileTags  =
+  AppConfigConfigurationProfileTags
+  { _appConfigConfigurationProfileTagsKey = Nothing
+  , _appConfigConfigurationProfileTagsValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html#cfn-appconfig-configurationprofile-tags-key
+accptKey :: Lens' AppConfigConfigurationProfileTags (Maybe (Val Text))
+accptKey = lens _appConfigConfigurationProfileTagsKey (\s a -> s { _appConfigConfigurationProfileTagsKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-tags.html#cfn-appconfig-configurationprofile-tags-value
+accptValue :: Lens' AppConfigConfigurationProfileTags (Maybe (Val Text))
+accptValue = lens _appConfigConfigurationProfileTagsValue (\s a -> s { _appConfigConfigurationProfileTagsValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppConfigConfigurationProfileValidators.hs b/library-gen/Stratosphere/ResourceProperties/AppConfigConfigurationProfileValidators.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppConfigConfigurationProfileValidators.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html
+
+module Stratosphere.ResourceProperties.AppConfigConfigurationProfileValidators where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppConfigConfigurationProfileValidators.
+-- See 'appConfigConfigurationProfileValidators' for a more convenient
+-- constructor.
+data AppConfigConfigurationProfileValidators =
+  AppConfigConfigurationProfileValidators
+  { _appConfigConfigurationProfileValidatorsContent :: Maybe (Val Text)
+  , _appConfigConfigurationProfileValidatorsType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppConfigConfigurationProfileValidators where
+  toJSON AppConfigConfigurationProfileValidators{..} =
+    object $
+    catMaybes
+    [ fmap (("Content",) . toJSON) _appConfigConfigurationProfileValidatorsContent
+    , fmap (("Type",) . toJSON) _appConfigConfigurationProfileValidatorsType
+    ]
+
+-- | Constructor for 'AppConfigConfigurationProfileValidators' containing
+-- required fields as arguments.
+appConfigConfigurationProfileValidators
+  :: AppConfigConfigurationProfileValidators
+appConfigConfigurationProfileValidators  =
+  AppConfigConfigurationProfileValidators
+  { _appConfigConfigurationProfileValidatorsContent = Nothing
+  , _appConfigConfigurationProfileValidatorsType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html#cfn-appconfig-configurationprofile-validators-content
+accpvContent :: Lens' AppConfigConfigurationProfileValidators (Maybe (Val Text))
+accpvContent = lens _appConfigConfigurationProfileValidatorsContent (\s a -> s { _appConfigConfigurationProfileValidatorsContent = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-configurationprofile-validators.html#cfn-appconfig-configurationprofile-validators-type
+accpvType :: Lens' AppConfigConfigurationProfileValidators (Maybe (Val Text))
+accpvType = lens _appConfigConfigurationProfileValidatorsType (\s a -> s { _appConfigConfigurationProfileValidatorsType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppConfigDeploymentStrategyTags.hs b/library-gen/Stratosphere/ResourceProperties/AppConfigDeploymentStrategyTags.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppConfigDeploymentStrategyTags.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deploymentstrategy-tags.html
+
+module Stratosphere.ResourceProperties.AppConfigDeploymentStrategyTags where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppConfigDeploymentStrategyTags. See
+-- 'appConfigDeploymentStrategyTags' for a more convenient constructor.
+data AppConfigDeploymentStrategyTags =
+  AppConfigDeploymentStrategyTags
+  { _appConfigDeploymentStrategyTagsKey :: Maybe (Val Text)
+  , _appConfigDeploymentStrategyTagsValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppConfigDeploymentStrategyTags where
+  toJSON AppConfigDeploymentStrategyTags{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _appConfigDeploymentStrategyTagsKey
+    , fmap (("Value",) . toJSON) _appConfigDeploymentStrategyTagsValue
+    ]
+
+-- | Constructor for 'AppConfigDeploymentStrategyTags' containing required
+-- fields as arguments.
+appConfigDeploymentStrategyTags
+  :: AppConfigDeploymentStrategyTags
+appConfigDeploymentStrategyTags  =
+  AppConfigDeploymentStrategyTags
+  { _appConfigDeploymentStrategyTagsKey = Nothing
+  , _appConfigDeploymentStrategyTagsValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deploymentstrategy-tags.html#cfn-appconfig-deploymentstrategy-tags-key
+acdstKey :: Lens' AppConfigDeploymentStrategyTags (Maybe (Val Text))
+acdstKey = lens _appConfigDeploymentStrategyTagsKey (\s a -> s { _appConfigDeploymentStrategyTagsKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deploymentstrategy-tags.html#cfn-appconfig-deploymentstrategy-tags-value
+acdstValue :: Lens' AppConfigDeploymentStrategyTags (Maybe (Val Text))
+acdstValue = lens _appConfigDeploymentStrategyTagsValue (\s a -> s { _appConfigDeploymentStrategyTagsValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppConfigDeploymentTags.hs b/library-gen/Stratosphere/ResourceProperties/AppConfigDeploymentTags.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppConfigDeploymentTags.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-tags.html
+
+module Stratosphere.ResourceProperties.AppConfigDeploymentTags where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppConfigDeploymentTags. See
+-- 'appConfigDeploymentTags' for a more convenient constructor.
+data AppConfigDeploymentTags =
+  AppConfigDeploymentTags
+  { _appConfigDeploymentTagsKey :: Maybe (Val Text)
+  , _appConfigDeploymentTagsValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppConfigDeploymentTags where
+  toJSON AppConfigDeploymentTags{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _appConfigDeploymentTagsKey
+    , fmap (("Value",) . toJSON) _appConfigDeploymentTagsValue
+    ]
+
+-- | Constructor for 'AppConfigDeploymentTags' containing required fields as
+-- arguments.
+appConfigDeploymentTags
+  :: AppConfigDeploymentTags
+appConfigDeploymentTags  =
+  AppConfigDeploymentTags
+  { _appConfigDeploymentTagsKey = Nothing
+  , _appConfigDeploymentTagsValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-tags.html#cfn-appconfig-deployment-tags-key
+acdtKey :: Lens' AppConfigDeploymentTags (Maybe (Val Text))
+acdtKey = lens _appConfigDeploymentTagsKey (\s a -> s { _appConfigDeploymentTagsKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-deployment-tags.html#cfn-appconfig-deployment-tags-value
+acdtValue :: Lens' AppConfigDeploymentTags (Maybe (Val Text))
+acdtValue = lens _appConfigDeploymentTagsValue (\s a -> s { _appConfigDeploymentTagsValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppConfigEnvironmentMonitors.hs b/library-gen/Stratosphere/ResourceProperties/AppConfigEnvironmentMonitors.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppConfigEnvironmentMonitors.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitors.html
+
+module Stratosphere.ResourceProperties.AppConfigEnvironmentMonitors where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppConfigEnvironmentMonitors. See
+-- 'appConfigEnvironmentMonitors' for a more convenient constructor.
+data AppConfigEnvironmentMonitors =
+  AppConfigEnvironmentMonitors
+  { _appConfigEnvironmentMonitorsAlarmArn :: Maybe (Val Text)
+  , _appConfigEnvironmentMonitorsAlarmRoleArn :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppConfigEnvironmentMonitors where
+  toJSON AppConfigEnvironmentMonitors{..} =
+    object $
+    catMaybes
+    [ fmap (("AlarmArn",) . toJSON) _appConfigEnvironmentMonitorsAlarmArn
+    , fmap (("AlarmRoleArn",) . toJSON) _appConfigEnvironmentMonitorsAlarmRoleArn
+    ]
+
+-- | Constructor for 'AppConfigEnvironmentMonitors' containing required fields
+-- as arguments.
+appConfigEnvironmentMonitors
+  :: AppConfigEnvironmentMonitors
+appConfigEnvironmentMonitors  =
+  AppConfigEnvironmentMonitors
+  { _appConfigEnvironmentMonitorsAlarmArn = Nothing
+  , _appConfigEnvironmentMonitorsAlarmRoleArn = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitors.html#cfn-appconfig-environment-monitors-alarmarn
+acemAlarmArn :: Lens' AppConfigEnvironmentMonitors (Maybe (Val Text))
+acemAlarmArn = lens _appConfigEnvironmentMonitorsAlarmArn (\s a -> s { _appConfigEnvironmentMonitorsAlarmArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-monitors.html#cfn-appconfig-environment-monitors-alarmrolearn
+acemAlarmRoleArn :: Lens' AppConfigEnvironmentMonitors (Maybe (Val Text))
+acemAlarmRoleArn = lens _appConfigEnvironmentMonitorsAlarmRoleArn (\s a -> s { _appConfigEnvironmentMonitorsAlarmRoleArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppConfigEnvironmentTags.hs b/library-gen/Stratosphere/ResourceProperties/AppConfigEnvironmentTags.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppConfigEnvironmentTags.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-tags.html
+
+module Stratosphere.ResourceProperties.AppConfigEnvironmentTags where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppConfigEnvironmentTags. See
+-- 'appConfigEnvironmentTags' for a more convenient constructor.
+data AppConfigEnvironmentTags =
+  AppConfigEnvironmentTags
+  { _appConfigEnvironmentTagsKey :: Maybe (Val Text)
+  , _appConfigEnvironmentTagsValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppConfigEnvironmentTags where
+  toJSON AppConfigEnvironmentTags{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _appConfigEnvironmentTagsKey
+    , fmap (("Value",) . toJSON) _appConfigEnvironmentTagsValue
+    ]
+
+-- | Constructor for 'AppConfigEnvironmentTags' containing required fields as
+-- arguments.
+appConfigEnvironmentTags
+  :: AppConfigEnvironmentTags
+appConfigEnvironmentTags  =
+  AppConfigEnvironmentTags
+  { _appConfigEnvironmentTagsKey = Nothing
+  , _appConfigEnvironmentTagsValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-tags.html#cfn-appconfig-environment-tags-key
+acetKey :: Lens' AppConfigEnvironmentTags (Maybe (Val Text))
+acetKey = lens _appConfigEnvironmentTagsKey (\s a -> s { _appConfigEnvironmentTagsKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appconfig-environment-tags.html#cfn-appconfig-environment-tags-value
+acetValue :: Lens' AppConfigEnvironmentTags (Maybe (Val Text))
+acetValue = lens _appConfigEnvironmentTagsValue (\s a -> s { _appConfigEnvironmentTagsValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeBackendDefaults.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeBackendDefaults.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeBackendDefaults.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-backenddefaults.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeBackendDefaults where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicy
+
+-- | Full data type definition for AppMeshVirtualNodeBackendDefaults. See
+-- 'appMeshVirtualNodeBackendDefaults' for a more convenient constructor.
+data AppMeshVirtualNodeBackendDefaults =
+  AppMeshVirtualNodeBackendDefaults
+  { _appMeshVirtualNodeBackendDefaultsClientPolicy :: Maybe AppMeshVirtualNodeClientPolicy
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeBackendDefaults where
+  toJSON AppMeshVirtualNodeBackendDefaults{..} =
+    object $
+    catMaybes
+    [ fmap (("ClientPolicy",) . toJSON) _appMeshVirtualNodeBackendDefaultsClientPolicy
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeBackendDefaults' containing required
+-- fields as arguments.
+appMeshVirtualNodeBackendDefaults
+  :: AppMeshVirtualNodeBackendDefaults
+appMeshVirtualNodeBackendDefaults  =
+  AppMeshVirtualNodeBackendDefaults
+  { _appMeshVirtualNodeBackendDefaultsClientPolicy = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-backenddefaults.html#cfn-appmesh-virtualnode-backenddefaults-clientpolicy
+amvnbdClientPolicy :: Lens' AppMeshVirtualNodeBackendDefaults (Maybe AppMeshVirtualNodeClientPolicy)
+amvnbdClientPolicy = lens _appMeshVirtualNodeBackendDefaultsClientPolicy (\s a -> s { _appMeshVirtualNodeBackendDefaultsClientPolicy = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeClientPolicy.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeClientPolicy.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeClientPolicy.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicy.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicy where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicyTls
+
+-- | Full data type definition for AppMeshVirtualNodeClientPolicy. See
+-- 'appMeshVirtualNodeClientPolicy' for a more convenient constructor.
+data AppMeshVirtualNodeClientPolicy =
+  AppMeshVirtualNodeClientPolicy
+  { _appMeshVirtualNodeClientPolicyTLS :: Maybe AppMeshVirtualNodeClientPolicyTls
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeClientPolicy where
+  toJSON AppMeshVirtualNodeClientPolicy{..} =
+    object $
+    catMaybes
+    [ fmap (("TLS",) . toJSON) _appMeshVirtualNodeClientPolicyTLS
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeClientPolicy' containing required
+-- fields as arguments.
+appMeshVirtualNodeClientPolicy
+  :: AppMeshVirtualNodeClientPolicy
+appMeshVirtualNodeClientPolicy  =
+  AppMeshVirtualNodeClientPolicy
+  { _appMeshVirtualNodeClientPolicyTLS = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicy.html#cfn-appmesh-virtualnode-clientpolicy-tls
+amvncpTLS :: Lens' AppMeshVirtualNodeClientPolicy (Maybe AppMeshVirtualNodeClientPolicyTls)
+amvncpTLS = lens _appMeshVirtualNodeClientPolicyTLS (\s a -> s { _appMeshVirtualNodeClientPolicyTLS = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeClientPolicyTls.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeClientPolicyTls.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeClientPolicyTls.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicytls.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicyTls where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContext
+
+-- | Full data type definition for AppMeshVirtualNodeClientPolicyTls. See
+-- 'appMeshVirtualNodeClientPolicyTls' for a more convenient constructor.
+data AppMeshVirtualNodeClientPolicyTls =
+  AppMeshVirtualNodeClientPolicyTls
+  { _appMeshVirtualNodeClientPolicyTlsEnforce :: Maybe (Val Bool)
+  , _appMeshVirtualNodeClientPolicyTlsPorts :: Maybe (ValList Integer)
+  , _appMeshVirtualNodeClientPolicyTlsValidation :: AppMeshVirtualNodeTlsValidationContext
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeClientPolicyTls where
+  toJSON AppMeshVirtualNodeClientPolicyTls{..} =
+    object $
+    catMaybes
+    [ fmap (("Enforce",) . toJSON) _appMeshVirtualNodeClientPolicyTlsEnforce
+    , fmap (("Ports",) . toJSON) _appMeshVirtualNodeClientPolicyTlsPorts
+    , (Just . ("Validation",) . toJSON) _appMeshVirtualNodeClientPolicyTlsValidation
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeClientPolicyTls' containing required
+-- fields as arguments.
+appMeshVirtualNodeClientPolicyTls
+  :: AppMeshVirtualNodeTlsValidationContext -- ^ 'amvncptValidation'
+  -> AppMeshVirtualNodeClientPolicyTls
+appMeshVirtualNodeClientPolicyTls validationarg =
+  AppMeshVirtualNodeClientPolicyTls
+  { _appMeshVirtualNodeClientPolicyTlsEnforce = Nothing
+  , _appMeshVirtualNodeClientPolicyTlsPorts = Nothing
+  , _appMeshVirtualNodeClientPolicyTlsValidation = validationarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicytls.html#cfn-appmesh-virtualnode-clientpolicytls-enforce
+amvncptEnforce :: Lens' AppMeshVirtualNodeClientPolicyTls (Maybe (Val Bool))
+amvncptEnforce = lens _appMeshVirtualNodeClientPolicyTlsEnforce (\s a -> s { _appMeshVirtualNodeClientPolicyTlsEnforce = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicytls.html#cfn-appmesh-virtualnode-clientpolicytls-ports
+amvncptPorts :: Lens' AppMeshVirtualNodeClientPolicyTls (Maybe (ValList Integer))
+amvncptPorts = lens _appMeshVirtualNodeClientPolicyTlsPorts (\s a -> s { _appMeshVirtualNodeClientPolicyTlsPorts = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-clientpolicytls.html#cfn-appmesh-virtualnode-clientpolicytls-validation
+amvncptValidation :: Lens' AppMeshVirtualNodeClientPolicyTls AppMeshVirtualNodeTlsValidationContext
+amvncptValidation = lens _appMeshVirtualNodeClientPolicyTlsValidation (\s a -> s { _appMeshVirtualNodeClientPolicyTlsValidation = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListener.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListener.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListener.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListener.hs
@@ -10,6 +10,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeHealthCheck
 import Stratosphere.ResourceProperties.AppMeshVirtualNodePortMapping
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTls
 
 -- | Full data type definition for AppMeshVirtualNodeListener. See
 -- 'appMeshVirtualNodeListener' for a more convenient constructor.
@@ -17,6 +18,7 @@
   AppMeshVirtualNodeListener
   { _appMeshVirtualNodeListenerHealthCheck :: Maybe AppMeshVirtualNodeHealthCheck
   , _appMeshVirtualNodeListenerPortMapping :: AppMeshVirtualNodePortMapping
+  , _appMeshVirtualNodeListenerTLS :: Maybe AppMeshVirtualNodeListenerTls
   } deriving (Show, Eq)
 
 instance ToJSON AppMeshVirtualNodeListener where
@@ -25,6 +27,7 @@
     catMaybes
     [ fmap (("HealthCheck",) . toJSON) _appMeshVirtualNodeListenerHealthCheck
     , (Just . ("PortMapping",) . toJSON) _appMeshVirtualNodeListenerPortMapping
+    , fmap (("TLS",) . toJSON) _appMeshVirtualNodeListenerTLS
     ]
 
 -- | Constructor for 'AppMeshVirtualNodeListener' containing required fields
@@ -36,6 +39,7 @@
   AppMeshVirtualNodeListener
   { _appMeshVirtualNodeListenerHealthCheck = Nothing
   , _appMeshVirtualNodeListenerPortMapping = portMappingarg
+  , _appMeshVirtualNodeListenerTLS = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-healthcheck
@@ -45,3 +49,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-portmapping
 amvnlPortMapping :: Lens' AppMeshVirtualNodeListener AppMeshVirtualNodePortMapping
 amvnlPortMapping = lens _appMeshVirtualNodeListenerPortMapping (\s a -> s { _appMeshVirtualNodeListenerPortMapping = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-tls
+amvnlTLS :: Lens' AppMeshVirtualNodeListener (Maybe AppMeshVirtualNodeListenerTls)
+amvnlTLS = lens _appMeshVirtualNodeListenerTLS (\s a -> s { _appMeshVirtualNodeListenerTLS = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTls.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTls.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTls.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertls.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTls where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsCertificate
+
+-- | Full data type definition for AppMeshVirtualNodeListenerTls. See
+-- 'appMeshVirtualNodeListenerTls' for a more convenient constructor.
+data AppMeshVirtualNodeListenerTls =
+  AppMeshVirtualNodeListenerTls
+  { _appMeshVirtualNodeListenerTlsCertificate :: AppMeshVirtualNodeListenerTlsCertificate
+  , _appMeshVirtualNodeListenerTlsMode :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeListenerTls where
+  toJSON AppMeshVirtualNodeListenerTls{..} =
+    object $
+    catMaybes
+    [ (Just . ("Certificate",) . toJSON) _appMeshVirtualNodeListenerTlsCertificate
+    , (Just . ("Mode",) . toJSON) _appMeshVirtualNodeListenerTlsMode
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeListenerTls' containing required
+-- fields as arguments.
+appMeshVirtualNodeListenerTls
+  :: AppMeshVirtualNodeListenerTlsCertificate -- ^ 'amvnltCertificate'
+  -> Val Text -- ^ 'amvnltMode'
+  -> AppMeshVirtualNodeListenerTls
+appMeshVirtualNodeListenerTls certificatearg modearg =
+  AppMeshVirtualNodeListenerTls
+  { _appMeshVirtualNodeListenerTlsCertificate = certificatearg
+  , _appMeshVirtualNodeListenerTlsMode = modearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertls.html#cfn-appmesh-virtualnode-listenertls-certificate
+amvnltCertificate :: Lens' AppMeshVirtualNodeListenerTls AppMeshVirtualNodeListenerTlsCertificate
+amvnltCertificate = lens _appMeshVirtualNodeListenerTlsCertificate (\s a -> s { _appMeshVirtualNodeListenerTlsCertificate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertls.html#cfn-appmesh-virtualnode-listenertls-mode
+amvnltMode :: Lens' AppMeshVirtualNodeListenerTls (Val Text)
+amvnltMode = lens _appMeshVirtualNodeListenerTlsMode (\s a -> s { _appMeshVirtualNodeListenerTlsMode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsAcmCertificate.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsAcmCertificate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsAcmCertificate.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsacmcertificate.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsAcmCertificate where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AppMeshVirtualNodeListenerTlsAcmCertificate. See
+-- 'appMeshVirtualNodeListenerTlsAcmCertificate' for a more convenient
+-- constructor.
+data AppMeshVirtualNodeListenerTlsAcmCertificate =
+  AppMeshVirtualNodeListenerTlsAcmCertificate
+  { _appMeshVirtualNodeListenerTlsAcmCertificateCertificateArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeListenerTlsAcmCertificate where
+  toJSON AppMeshVirtualNodeListenerTlsAcmCertificate{..} =
+    object $
+    catMaybes
+    [ (Just . ("CertificateArn",) . toJSON) _appMeshVirtualNodeListenerTlsAcmCertificateCertificateArn
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeListenerTlsAcmCertificate' containing
+-- required fields as arguments.
+appMeshVirtualNodeListenerTlsAcmCertificate
+  :: Val Text -- ^ 'amvnltacCertificateArn'
+  -> AppMeshVirtualNodeListenerTlsAcmCertificate
+appMeshVirtualNodeListenerTlsAcmCertificate certificateArnarg =
+  AppMeshVirtualNodeListenerTlsAcmCertificate
+  { _appMeshVirtualNodeListenerTlsAcmCertificateCertificateArn = certificateArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsacmcertificate.html#cfn-appmesh-virtualnode-listenertlsacmcertificate-certificatearn
+amvnltacCertificateArn :: Lens' AppMeshVirtualNodeListenerTlsAcmCertificate (Val Text)
+amvnltacCertificateArn = lens _appMeshVirtualNodeListenerTlsAcmCertificateCertificateArn (\s a -> s { _appMeshVirtualNodeListenerTlsAcmCertificateCertificateArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsCertificate.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsCertificate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsCertificate.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlscertificate.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsCertificate where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsAcmCertificate
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsFileCertificate
+
+-- | Full data type definition for AppMeshVirtualNodeListenerTlsCertificate.
+-- See 'appMeshVirtualNodeListenerTlsCertificate' for a more convenient
+-- constructor.
+data AppMeshVirtualNodeListenerTlsCertificate =
+  AppMeshVirtualNodeListenerTlsCertificate
+  { _appMeshVirtualNodeListenerTlsCertificateACM :: Maybe AppMeshVirtualNodeListenerTlsAcmCertificate
+  , _appMeshVirtualNodeListenerTlsCertificateFile :: Maybe AppMeshVirtualNodeListenerTlsFileCertificate
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeListenerTlsCertificate where
+  toJSON AppMeshVirtualNodeListenerTlsCertificate{..} =
+    object $
+    catMaybes
+    [ fmap (("ACM",) . toJSON) _appMeshVirtualNodeListenerTlsCertificateACM
+    , fmap (("File",) . toJSON) _appMeshVirtualNodeListenerTlsCertificateFile
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeListenerTlsCertificate' containing
+-- required fields as arguments.
+appMeshVirtualNodeListenerTlsCertificate
+  :: AppMeshVirtualNodeListenerTlsCertificate
+appMeshVirtualNodeListenerTlsCertificate  =
+  AppMeshVirtualNodeListenerTlsCertificate
+  { _appMeshVirtualNodeListenerTlsCertificateACM = Nothing
+  , _appMeshVirtualNodeListenerTlsCertificateFile = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlscertificate.html#cfn-appmesh-virtualnode-listenertlscertificate-acm
+amvnltcACM :: Lens' AppMeshVirtualNodeListenerTlsCertificate (Maybe AppMeshVirtualNodeListenerTlsAcmCertificate)
+amvnltcACM = lens _appMeshVirtualNodeListenerTlsCertificateACM (\s a -> s { _appMeshVirtualNodeListenerTlsCertificateACM = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlscertificate.html#cfn-appmesh-virtualnode-listenertlscertificate-file
+amvnltcFile :: Lens' AppMeshVirtualNodeListenerTlsCertificate (Maybe AppMeshVirtualNodeListenerTlsFileCertificate)
+amvnltcFile = lens _appMeshVirtualNodeListenerTlsCertificateFile (\s a -> s { _appMeshVirtualNodeListenerTlsCertificateFile = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsFileCertificate.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsFileCertificate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeListenerTlsFileCertificate.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsfilecertificate.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsFileCertificate where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AppMeshVirtualNodeListenerTlsFileCertificate. See
+-- 'appMeshVirtualNodeListenerTlsFileCertificate' for a more convenient
+-- constructor.
+data AppMeshVirtualNodeListenerTlsFileCertificate =
+  AppMeshVirtualNodeListenerTlsFileCertificate
+  { _appMeshVirtualNodeListenerTlsFileCertificateCertificateChain :: Val Text
+  , _appMeshVirtualNodeListenerTlsFileCertificatePrivateKey :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeListenerTlsFileCertificate where
+  toJSON AppMeshVirtualNodeListenerTlsFileCertificate{..} =
+    object $
+    catMaybes
+    [ (Just . ("CertificateChain",) . toJSON) _appMeshVirtualNodeListenerTlsFileCertificateCertificateChain
+    , (Just . ("PrivateKey",) . toJSON) _appMeshVirtualNodeListenerTlsFileCertificatePrivateKey
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeListenerTlsFileCertificate' containing
+-- required fields as arguments.
+appMeshVirtualNodeListenerTlsFileCertificate
+  :: Val Text -- ^ 'amvnltfcCertificateChain'
+  -> Val Text -- ^ 'amvnltfcPrivateKey'
+  -> AppMeshVirtualNodeListenerTlsFileCertificate
+appMeshVirtualNodeListenerTlsFileCertificate certificateChainarg privateKeyarg =
+  AppMeshVirtualNodeListenerTlsFileCertificate
+  { _appMeshVirtualNodeListenerTlsFileCertificateCertificateChain = certificateChainarg
+  , _appMeshVirtualNodeListenerTlsFileCertificatePrivateKey = privateKeyarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsfilecertificate.html#cfn-appmesh-virtualnode-listenertlsfilecertificate-certificatechain
+amvnltfcCertificateChain :: Lens' AppMeshVirtualNodeListenerTlsFileCertificate (Val Text)
+amvnltfcCertificateChain = lens _appMeshVirtualNodeListenerTlsFileCertificateCertificateChain (\s a -> s { _appMeshVirtualNodeListenerTlsFileCertificateCertificateChain = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listenertlsfilecertificate.html#cfn-appmesh-virtualnode-listenertlsfilecertificate-privatekey
+amvnltfcPrivateKey :: Lens' AppMeshVirtualNodeListenerTlsFileCertificate (Val Text)
+amvnltfcPrivateKey = lens _appMeshVirtualNodeListenerTlsFileCertificatePrivateKey (\s a -> s { _appMeshVirtualNodeListenerTlsFileCertificatePrivateKey = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContext.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContext.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContext.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontext.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContext where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextTrust
+
+-- | Full data type definition for AppMeshVirtualNodeTlsValidationContext. See
+-- 'appMeshVirtualNodeTlsValidationContext' for a more convenient
+-- constructor.
+data AppMeshVirtualNodeTlsValidationContext =
+  AppMeshVirtualNodeTlsValidationContext
+  { _appMeshVirtualNodeTlsValidationContextTrust :: AppMeshVirtualNodeTlsValidationContextTrust
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeTlsValidationContext where
+  toJSON AppMeshVirtualNodeTlsValidationContext{..} =
+    object $
+    catMaybes
+    [ (Just . ("Trust",) . toJSON) _appMeshVirtualNodeTlsValidationContextTrust
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeTlsValidationContext' containing
+-- required fields as arguments.
+appMeshVirtualNodeTlsValidationContext
+  :: AppMeshVirtualNodeTlsValidationContextTrust -- ^ 'amvntvcTrust'
+  -> AppMeshVirtualNodeTlsValidationContext
+appMeshVirtualNodeTlsValidationContext trustarg =
+  AppMeshVirtualNodeTlsValidationContext
+  { _appMeshVirtualNodeTlsValidationContextTrust = trustarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontext.html#cfn-appmesh-virtualnode-tlsvalidationcontext-trust
+amvntvcTrust :: Lens' AppMeshVirtualNodeTlsValidationContext AppMeshVirtualNodeTlsValidationContextTrust
+amvntvcTrust = lens _appMeshVirtualNodeTlsValidationContextTrust (\s a -> s { _appMeshVirtualNodeTlsValidationContextTrust = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextAcmTrust.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextAcmTrust.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextAcmTrust.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextAcmTrust where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AppMeshVirtualNodeTlsValidationContextAcmTrust. See
+-- 'appMeshVirtualNodeTlsValidationContextAcmTrust' for a more convenient
+-- constructor.
+data AppMeshVirtualNodeTlsValidationContextAcmTrust =
+  AppMeshVirtualNodeTlsValidationContextAcmTrust
+  { _appMeshVirtualNodeTlsValidationContextAcmTrustCertificateAuthorityArns :: ValList Text
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeTlsValidationContextAcmTrust where
+  toJSON AppMeshVirtualNodeTlsValidationContextAcmTrust{..} =
+    object $
+    catMaybes
+    [ (Just . ("CertificateAuthorityArns",) . toJSON) _appMeshVirtualNodeTlsValidationContextAcmTrustCertificateAuthorityArns
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeTlsValidationContextAcmTrust'
+-- containing required fields as arguments.
+appMeshVirtualNodeTlsValidationContextAcmTrust
+  :: ValList Text -- ^ 'amvntvcatCertificateAuthorityArns'
+  -> AppMeshVirtualNodeTlsValidationContextAcmTrust
+appMeshVirtualNodeTlsValidationContextAcmTrust certificateAuthorityArnsarg =
+  AppMeshVirtualNodeTlsValidationContextAcmTrust
+  { _appMeshVirtualNodeTlsValidationContextAcmTrustCertificateAuthorityArns = certificateAuthorityArnsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontextacmtrust.html#cfn-appmesh-virtualnode-tlsvalidationcontextacmtrust-certificateauthorityarns
+amvntvcatCertificateAuthorityArns :: Lens' AppMeshVirtualNodeTlsValidationContextAcmTrust (ValList Text)
+amvntvcatCertificateAuthorityArns = lens _appMeshVirtualNodeTlsValidationContextAcmTrustCertificateAuthorityArns (\s a -> s { _appMeshVirtualNodeTlsValidationContextAcmTrustCertificateAuthorityArns = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextFileTrust.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextFileTrust.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextFileTrust.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextFileTrust where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AppMeshVirtualNodeTlsValidationContextFileTrust. See
+-- 'appMeshVirtualNodeTlsValidationContextFileTrust' for a more convenient
+-- constructor.
+data AppMeshVirtualNodeTlsValidationContextFileTrust =
+  AppMeshVirtualNodeTlsValidationContextFileTrust
+  { _appMeshVirtualNodeTlsValidationContextFileTrustCertificateChain :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeTlsValidationContextFileTrust where
+  toJSON AppMeshVirtualNodeTlsValidationContextFileTrust{..} =
+    object $
+    catMaybes
+    [ (Just . ("CertificateChain",) . toJSON) _appMeshVirtualNodeTlsValidationContextFileTrustCertificateChain
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeTlsValidationContextFileTrust'
+-- containing required fields as arguments.
+appMeshVirtualNodeTlsValidationContextFileTrust
+  :: Val Text -- ^ 'amvntvcftCertificateChain'
+  -> AppMeshVirtualNodeTlsValidationContextFileTrust
+appMeshVirtualNodeTlsValidationContextFileTrust certificateChainarg =
+  AppMeshVirtualNodeTlsValidationContextFileTrust
+  { _appMeshVirtualNodeTlsValidationContextFileTrustCertificateChain = certificateChainarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontextfiletrust.html#cfn-appmesh-virtualnode-tlsvalidationcontextfiletrust-certificatechain
+amvntvcftCertificateChain :: Lens' AppMeshVirtualNodeTlsValidationContextFileTrust (Val Text)
+amvntvcftCertificateChain = lens _appMeshVirtualNodeTlsValidationContextFileTrustCertificateChain (\s a -> s { _appMeshVirtualNodeTlsValidationContextFileTrustCertificateChain = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextTrust.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextTrust.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeTlsValidationContextTrust.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust.html
+
+module Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextTrust where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextAcmTrust
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextFileTrust
+
+-- | Full data type definition for
+-- AppMeshVirtualNodeTlsValidationContextTrust. See
+-- 'appMeshVirtualNodeTlsValidationContextTrust' for a more convenient
+-- constructor.
+data AppMeshVirtualNodeTlsValidationContextTrust =
+  AppMeshVirtualNodeTlsValidationContextTrust
+  { _appMeshVirtualNodeTlsValidationContextTrustACM :: Maybe AppMeshVirtualNodeTlsValidationContextAcmTrust
+  , _appMeshVirtualNodeTlsValidationContextTrustFile :: Maybe AppMeshVirtualNodeTlsValidationContextFileTrust
+  } deriving (Show, Eq)
+
+instance ToJSON AppMeshVirtualNodeTlsValidationContextTrust where
+  toJSON AppMeshVirtualNodeTlsValidationContextTrust{..} =
+    object $
+    catMaybes
+    [ fmap (("ACM",) . toJSON) _appMeshVirtualNodeTlsValidationContextTrustACM
+    , fmap (("File",) . toJSON) _appMeshVirtualNodeTlsValidationContextTrustFile
+    ]
+
+-- | Constructor for 'AppMeshVirtualNodeTlsValidationContextTrust' containing
+-- required fields as arguments.
+appMeshVirtualNodeTlsValidationContextTrust
+  :: AppMeshVirtualNodeTlsValidationContextTrust
+appMeshVirtualNodeTlsValidationContextTrust  =
+  AppMeshVirtualNodeTlsValidationContextTrust
+  { _appMeshVirtualNodeTlsValidationContextTrustACM = Nothing
+  , _appMeshVirtualNodeTlsValidationContextTrustFile = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust.html#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-acm
+amvntvctACM :: Lens' AppMeshVirtualNodeTlsValidationContextTrust (Maybe AppMeshVirtualNodeTlsValidationContextAcmTrust)
+amvntvctACM = lens _appMeshVirtualNodeTlsValidationContextTrustACM (\s a -> s { _appMeshVirtualNodeTlsValidationContextTrustACM = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-tlsvalidationcontexttrust.html#cfn-appmesh-virtualnode-tlsvalidationcontexttrust-file
+amvntvctFile :: Lens' AppMeshVirtualNodeTlsValidationContextTrust (Maybe AppMeshVirtualNodeTlsValidationContextFileTrust)
+amvntvctFile = lens _appMeshVirtualNodeTlsValidationContextTrustFile (\s a -> s { _appMeshVirtualNodeTlsValidationContextTrustFile = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualNodeSpec.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualNodeSpec.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualNodeSpec.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualNodeSpec.hs
@@ -8,6 +8,7 @@
 module Stratosphere.ResourceProperties.AppMeshVirtualNodeVirtualNodeSpec where
 
 import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeBackendDefaults
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeBackend
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeListener
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeLogging
@@ -17,7 +18,8 @@
 -- 'appMeshVirtualNodeVirtualNodeSpec' for a more convenient constructor.
 data AppMeshVirtualNodeVirtualNodeSpec =
   AppMeshVirtualNodeVirtualNodeSpec
-  { _appMeshVirtualNodeVirtualNodeSpecBackends :: Maybe [AppMeshVirtualNodeBackend]
+  { _appMeshVirtualNodeVirtualNodeSpecBackendDefaults :: Maybe AppMeshVirtualNodeBackendDefaults
+  , _appMeshVirtualNodeVirtualNodeSpecBackends :: Maybe [AppMeshVirtualNodeBackend]
   , _appMeshVirtualNodeVirtualNodeSpecListeners :: Maybe [AppMeshVirtualNodeListener]
   , _appMeshVirtualNodeVirtualNodeSpecLogging :: Maybe AppMeshVirtualNodeLogging
   , _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery :: Maybe AppMeshVirtualNodeServiceDiscovery
@@ -27,7 +29,8 @@
   toJSON AppMeshVirtualNodeVirtualNodeSpec{..} =
     object $
     catMaybes
-    [ fmap (("Backends",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecBackends
+    [ fmap (("BackendDefaults",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecBackendDefaults
+    , fmap (("Backends",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecBackends
     , fmap (("Listeners",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecListeners
     , fmap (("Logging",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecLogging
     , fmap (("ServiceDiscovery",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery
@@ -39,11 +42,16 @@
   :: AppMeshVirtualNodeVirtualNodeSpec
 appMeshVirtualNodeVirtualNodeSpec  =
   AppMeshVirtualNodeVirtualNodeSpec
-  { _appMeshVirtualNodeVirtualNodeSpecBackends = Nothing
+  { _appMeshVirtualNodeVirtualNodeSpecBackendDefaults = Nothing
+  , _appMeshVirtualNodeVirtualNodeSpecBackends = Nothing
   , _appMeshVirtualNodeVirtualNodeSpecListeners = Nothing
   , _appMeshVirtualNodeVirtualNodeSpecLogging = Nothing
   , _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html#cfn-appmesh-virtualnode-virtualnodespec-backenddefaults
+amvnvnsBackendDefaults :: Lens' AppMeshVirtualNodeVirtualNodeSpec (Maybe AppMeshVirtualNodeBackendDefaults)
+amvnvnsBackendDefaults = lens _appMeshVirtualNodeVirtualNodeSpecBackendDefaults (\s a -> s { _appMeshVirtualNodeVirtualNodeSpecBackendDefaults = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html#cfn-appmesh-virtualnode-virtualnodespec-backends
 amvnvnsBackends :: Lens' AppMeshVirtualNodeVirtualNodeSpec (Maybe [AppMeshVirtualNodeBackend])
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualServiceBackend.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualServiceBackend.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualServiceBackend.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualServiceBackend.hs
@@ -8,21 +8,23 @@
 module Stratosphere.ResourceProperties.AppMeshVirtualNodeVirtualServiceBackend where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicy
 
 -- | Full data type definition for AppMeshVirtualNodeVirtualServiceBackend.
 -- See 'appMeshVirtualNodeVirtualServiceBackend' for a more convenient
 -- constructor.
 data AppMeshVirtualNodeVirtualServiceBackend =
   AppMeshVirtualNodeVirtualServiceBackend
-  { _appMeshVirtualNodeVirtualServiceBackendVirtualServiceName :: Val Text
+  { _appMeshVirtualNodeVirtualServiceBackendClientPolicy :: Maybe AppMeshVirtualNodeClientPolicy
+  , _appMeshVirtualNodeVirtualServiceBackendVirtualServiceName :: Val Text
   } deriving (Show, Eq)
 
 instance ToJSON AppMeshVirtualNodeVirtualServiceBackend where
   toJSON AppMeshVirtualNodeVirtualServiceBackend{..} =
     object $
     catMaybes
-    [ (Just . ("VirtualServiceName",) . toJSON) _appMeshVirtualNodeVirtualServiceBackendVirtualServiceName
+    [ fmap (("ClientPolicy",) . toJSON) _appMeshVirtualNodeVirtualServiceBackendClientPolicy
+    , (Just . ("VirtualServiceName",) . toJSON) _appMeshVirtualNodeVirtualServiceBackendVirtualServiceName
     ]
 
 -- | Constructor for 'AppMeshVirtualNodeVirtualServiceBackend' containing
@@ -32,8 +34,13 @@
   -> AppMeshVirtualNodeVirtualServiceBackend
 appMeshVirtualNodeVirtualServiceBackend virtualServiceNamearg =
   AppMeshVirtualNodeVirtualServiceBackend
-  { _appMeshVirtualNodeVirtualServiceBackendVirtualServiceName = virtualServiceNamearg
+  { _appMeshVirtualNodeVirtualServiceBackendClientPolicy = Nothing
+  , _appMeshVirtualNodeVirtualServiceBackendVirtualServiceName = virtualServiceNamearg
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualservicebackend.html#cfn-appmesh-virtualnode-virtualservicebackend-clientpolicy
+amvnvsbClientPolicy :: Lens' AppMeshVirtualNodeVirtualServiceBackend (Maybe AppMeshVirtualNodeClientPolicy)
+amvnvsbClientPolicy = lens _appMeshVirtualNodeVirtualServiceBackendClientPolicy (\s a -> s { _appMeshVirtualNodeVirtualServiceBackendClientPolicy = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualservicebackend.html#cfn-appmesh-virtualnode-virtualservicebackend-virtualservicename
 amvnvsbVirtualServiceName :: Lens' AppMeshVirtualNodeVirtualServiceBackend (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupEncryptionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupEncryptionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupEncryptionConfiguration.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-encryptionconfiguration.html
+
+module Stratosphere.ResourceProperties.AthenaWorkGroupEncryptionConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AthenaWorkGroupEncryptionConfiguration. See
+-- 'athenaWorkGroupEncryptionConfiguration' for a more convenient
+-- constructor.
+data AthenaWorkGroupEncryptionConfiguration =
+  AthenaWorkGroupEncryptionConfiguration
+  { _athenaWorkGroupEncryptionConfigurationEncryptionOption :: Val Text
+  , _athenaWorkGroupEncryptionConfigurationKmsKey :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AthenaWorkGroupEncryptionConfiguration where
+  toJSON AthenaWorkGroupEncryptionConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("EncryptionOption",) . toJSON) _athenaWorkGroupEncryptionConfigurationEncryptionOption
+    , fmap (("KmsKey",) . toJSON) _athenaWorkGroupEncryptionConfigurationKmsKey
+    ]
+
+-- | Constructor for 'AthenaWorkGroupEncryptionConfiguration' containing
+-- required fields as arguments.
+athenaWorkGroupEncryptionConfiguration
+  :: Val Text -- ^ 'awgecEncryptionOption'
+  -> AthenaWorkGroupEncryptionConfiguration
+athenaWorkGroupEncryptionConfiguration encryptionOptionarg =
+  AthenaWorkGroupEncryptionConfiguration
+  { _athenaWorkGroupEncryptionConfigurationEncryptionOption = encryptionOptionarg
+  , _athenaWorkGroupEncryptionConfigurationKmsKey = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-encryptionconfiguration.html#cfn-athena-workgroup-encryptionconfiguration-encryptionoption
+awgecEncryptionOption :: Lens' AthenaWorkGroupEncryptionConfiguration (Val Text)
+awgecEncryptionOption = lens _athenaWorkGroupEncryptionConfigurationEncryptionOption (\s a -> s { _athenaWorkGroupEncryptionConfigurationEncryptionOption = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-encryptionconfiguration.html#cfn-athena-workgroup-encryptionconfiguration-kmskey
+awgecKmsKey :: Lens' AthenaWorkGroupEncryptionConfiguration (Maybe (Val Text))
+awgecKmsKey = lens _athenaWorkGroupEncryptionConfigurationKmsKey (\s a -> s { _athenaWorkGroupEncryptionConfigurationKmsKey = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupResultConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupResultConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupResultConfiguration.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfiguration.html
+
+module Stratosphere.ResourceProperties.AthenaWorkGroupResultConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AthenaWorkGroupEncryptionConfiguration
+
+-- | Full data type definition for AthenaWorkGroupResultConfiguration. See
+-- 'athenaWorkGroupResultConfiguration' for a more convenient constructor.
+data AthenaWorkGroupResultConfiguration =
+  AthenaWorkGroupResultConfiguration
+  { _athenaWorkGroupResultConfigurationEncryptionConfiguration :: Maybe AthenaWorkGroupEncryptionConfiguration
+  , _athenaWorkGroupResultConfigurationOutputLocation :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AthenaWorkGroupResultConfiguration where
+  toJSON AthenaWorkGroupResultConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("EncryptionConfiguration",) . toJSON) _athenaWorkGroupResultConfigurationEncryptionConfiguration
+    , fmap (("OutputLocation",) . toJSON) _athenaWorkGroupResultConfigurationOutputLocation
+    ]
+
+-- | Constructor for 'AthenaWorkGroupResultConfiguration' containing required
+-- fields as arguments.
+athenaWorkGroupResultConfiguration
+  :: AthenaWorkGroupResultConfiguration
+athenaWorkGroupResultConfiguration  =
+  AthenaWorkGroupResultConfiguration
+  { _athenaWorkGroupResultConfigurationEncryptionConfiguration = Nothing
+  , _athenaWorkGroupResultConfigurationOutputLocation = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfiguration.html#cfn-athena-workgroup-resultconfiguration-encryptionconfiguration
+awgrcEncryptionConfiguration :: Lens' AthenaWorkGroupResultConfiguration (Maybe AthenaWorkGroupEncryptionConfiguration)
+awgrcEncryptionConfiguration = lens _athenaWorkGroupResultConfigurationEncryptionConfiguration (\s a -> s { _athenaWorkGroupResultConfigurationEncryptionConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfiguration.html#cfn-athena-workgroup-resultconfiguration-outputlocation
+awgrcOutputLocation :: Lens' AthenaWorkGroupResultConfiguration (Maybe (Val Text))
+awgrcOutputLocation = lens _athenaWorkGroupResultConfigurationOutputLocation (\s a -> s { _athenaWorkGroupResultConfigurationOutputLocation = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupResultConfigurationUpdates.hs b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupResultConfigurationUpdates.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupResultConfigurationUpdates.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfigurationupdates.html
+
+module Stratosphere.ResourceProperties.AthenaWorkGroupResultConfigurationUpdates where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AthenaWorkGroupEncryptionConfiguration
+
+-- | Full data type definition for AthenaWorkGroupResultConfigurationUpdates.
+-- See 'athenaWorkGroupResultConfigurationUpdates' for a more convenient
+-- constructor.
+data AthenaWorkGroupResultConfigurationUpdates =
+  AthenaWorkGroupResultConfigurationUpdates
+  { _athenaWorkGroupResultConfigurationUpdatesEncryptionConfiguration :: Maybe AthenaWorkGroupEncryptionConfiguration
+  , _athenaWorkGroupResultConfigurationUpdatesOutputLocation :: Maybe (Val Text)
+  , _athenaWorkGroupResultConfigurationUpdatesRemoveEncryptionConfiguration :: Maybe (Val Bool)
+  , _athenaWorkGroupResultConfigurationUpdatesRemoveOutputLocation :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON AthenaWorkGroupResultConfigurationUpdates where
+  toJSON AthenaWorkGroupResultConfigurationUpdates{..} =
+    object $
+    catMaybes
+    [ fmap (("EncryptionConfiguration",) . toJSON) _athenaWorkGroupResultConfigurationUpdatesEncryptionConfiguration
+    , fmap (("OutputLocation",) . toJSON) _athenaWorkGroupResultConfigurationUpdatesOutputLocation
+    , fmap (("RemoveEncryptionConfiguration",) . toJSON) _athenaWorkGroupResultConfigurationUpdatesRemoveEncryptionConfiguration
+    , fmap (("RemoveOutputLocation",) . toJSON) _athenaWorkGroupResultConfigurationUpdatesRemoveOutputLocation
+    ]
+
+-- | Constructor for 'AthenaWorkGroupResultConfigurationUpdates' containing
+-- required fields as arguments.
+athenaWorkGroupResultConfigurationUpdates
+  :: AthenaWorkGroupResultConfigurationUpdates
+athenaWorkGroupResultConfigurationUpdates  =
+  AthenaWorkGroupResultConfigurationUpdates
+  { _athenaWorkGroupResultConfigurationUpdatesEncryptionConfiguration = Nothing
+  , _athenaWorkGroupResultConfigurationUpdatesOutputLocation = Nothing
+  , _athenaWorkGroupResultConfigurationUpdatesRemoveEncryptionConfiguration = Nothing
+  , _athenaWorkGroupResultConfigurationUpdatesRemoveOutputLocation = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfigurationupdates.html#cfn-athena-workgroup-resultconfigurationupdates-encryptionconfiguration
+awgrcuEncryptionConfiguration :: Lens' AthenaWorkGroupResultConfigurationUpdates (Maybe AthenaWorkGroupEncryptionConfiguration)
+awgrcuEncryptionConfiguration = lens _athenaWorkGroupResultConfigurationUpdatesEncryptionConfiguration (\s a -> s { _athenaWorkGroupResultConfigurationUpdatesEncryptionConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfigurationupdates.html#cfn-athena-workgroup-resultconfigurationupdates-outputlocation
+awgrcuOutputLocation :: Lens' AthenaWorkGroupResultConfigurationUpdates (Maybe (Val Text))
+awgrcuOutputLocation = lens _athenaWorkGroupResultConfigurationUpdatesOutputLocation (\s a -> s { _athenaWorkGroupResultConfigurationUpdatesOutputLocation = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfigurationupdates.html#cfn-athena-workgroup-resultconfigurationupdates-removeencryptionconfiguration
+awgrcuRemoveEncryptionConfiguration :: Lens' AthenaWorkGroupResultConfigurationUpdates (Maybe (Val Bool))
+awgrcuRemoveEncryptionConfiguration = lens _athenaWorkGroupResultConfigurationUpdatesRemoveEncryptionConfiguration (\s a -> s { _athenaWorkGroupResultConfigurationUpdatesRemoveEncryptionConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfigurationupdates.html#cfn-athena-workgroup-resultconfigurationupdates-removeoutputlocation
+awgrcuRemoveOutputLocation :: Lens' AthenaWorkGroupResultConfigurationUpdates (Maybe (Val Bool))
+awgrcuRemoveOutputLocation = lens _athenaWorkGroupResultConfigurationUpdatesRemoveOutputLocation (\s a -> s { _athenaWorkGroupResultConfigurationUpdatesRemoveOutputLocation = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupTags.hs b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupTags.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupTags.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-tags.html
+
+module Stratosphere.ResourceProperties.AthenaWorkGroupTags where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for AthenaWorkGroupTags. See
+-- 'athenaWorkGroupTags' for a more convenient constructor.
+data AthenaWorkGroupTags =
+  AthenaWorkGroupTags
+  { _athenaWorkGroupTagsTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON AthenaWorkGroupTags where
+  toJSON AthenaWorkGroupTags{..} =
+    object $
+    catMaybes
+    [ fmap (("Tags",) . toJSON) _athenaWorkGroupTagsTags
+    ]
+
+-- | Constructor for 'AthenaWorkGroupTags' containing required fields as
+-- arguments.
+athenaWorkGroupTags
+  :: AthenaWorkGroupTags
+athenaWorkGroupTags  =
+  AthenaWorkGroupTags
+  { _athenaWorkGroupTagsTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-tags.html#cfn-athena-workgroup-tags-tags
+awgtTags :: Lens' AthenaWorkGroupTags (Maybe [Tag])
+awgtTags = lens _athenaWorkGroupTagsTags (\s a -> s { _athenaWorkGroupTagsTags = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupWorkGroupConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupWorkGroupConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupWorkGroupConfiguration.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html
+
+module Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AthenaWorkGroupResultConfiguration
+
+-- | Full data type definition for AthenaWorkGroupWorkGroupConfiguration. See
+-- 'athenaWorkGroupWorkGroupConfiguration' for a more convenient
+-- constructor.
+data AthenaWorkGroupWorkGroupConfiguration =
+  AthenaWorkGroupWorkGroupConfiguration
+  { _athenaWorkGroupWorkGroupConfigurationBytesScannedCutoffPerQuery :: Maybe (Val Integer)
+  , _athenaWorkGroupWorkGroupConfigurationEnforceWorkGroupConfiguration :: Maybe (Val Bool)
+  , _athenaWorkGroupWorkGroupConfigurationPublishCloudWatchMetricsEnabled :: Maybe (Val Bool)
+  , _athenaWorkGroupWorkGroupConfigurationRequesterPaysEnabled :: Maybe (Val Bool)
+  , _athenaWorkGroupWorkGroupConfigurationResultConfiguration :: Maybe AthenaWorkGroupResultConfiguration
+  } deriving (Show, Eq)
+
+instance ToJSON AthenaWorkGroupWorkGroupConfiguration where
+  toJSON AthenaWorkGroupWorkGroupConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("BytesScannedCutoffPerQuery",) . toJSON) _athenaWorkGroupWorkGroupConfigurationBytesScannedCutoffPerQuery
+    , fmap (("EnforceWorkGroupConfiguration",) . toJSON) _athenaWorkGroupWorkGroupConfigurationEnforceWorkGroupConfiguration
+    , fmap (("PublishCloudWatchMetricsEnabled",) . toJSON) _athenaWorkGroupWorkGroupConfigurationPublishCloudWatchMetricsEnabled
+    , fmap (("RequesterPaysEnabled",) . toJSON) _athenaWorkGroupWorkGroupConfigurationRequesterPaysEnabled
+    , fmap (("ResultConfiguration",) . toJSON) _athenaWorkGroupWorkGroupConfigurationResultConfiguration
+    ]
+
+-- | Constructor for 'AthenaWorkGroupWorkGroupConfiguration' containing
+-- required fields as arguments.
+athenaWorkGroupWorkGroupConfiguration
+  :: AthenaWorkGroupWorkGroupConfiguration
+athenaWorkGroupWorkGroupConfiguration  =
+  AthenaWorkGroupWorkGroupConfiguration
+  { _athenaWorkGroupWorkGroupConfigurationBytesScannedCutoffPerQuery = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationEnforceWorkGroupConfiguration = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationPublishCloudWatchMetricsEnabled = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationRequesterPaysEnabled = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationResultConfiguration = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html#cfn-athena-workgroup-workgroupconfiguration-bytesscannedcutoffperquery
+awgwgcBytesScannedCutoffPerQuery :: Lens' AthenaWorkGroupWorkGroupConfiguration (Maybe (Val Integer))
+awgwgcBytesScannedCutoffPerQuery = lens _athenaWorkGroupWorkGroupConfigurationBytesScannedCutoffPerQuery (\s a -> s { _athenaWorkGroupWorkGroupConfigurationBytesScannedCutoffPerQuery = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html#cfn-athena-workgroup-workgroupconfiguration-enforceworkgroupconfiguration
+awgwgcEnforceWorkGroupConfiguration :: Lens' AthenaWorkGroupWorkGroupConfiguration (Maybe (Val Bool))
+awgwgcEnforceWorkGroupConfiguration = lens _athenaWorkGroupWorkGroupConfigurationEnforceWorkGroupConfiguration (\s a -> s { _athenaWorkGroupWorkGroupConfigurationEnforceWorkGroupConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html#cfn-athena-workgroup-workgroupconfiguration-publishcloudwatchmetricsenabled
+awgwgcPublishCloudWatchMetricsEnabled :: Lens' AthenaWorkGroupWorkGroupConfiguration (Maybe (Val Bool))
+awgwgcPublishCloudWatchMetricsEnabled = lens _athenaWorkGroupWorkGroupConfigurationPublishCloudWatchMetricsEnabled (\s a -> s { _athenaWorkGroupWorkGroupConfigurationPublishCloudWatchMetricsEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html#cfn-athena-workgroup-workgroupconfiguration-requesterpaysenabled
+awgwgcRequesterPaysEnabled :: Lens' AthenaWorkGroupWorkGroupConfiguration (Maybe (Val Bool))
+awgwgcRequesterPaysEnabled = lens _athenaWorkGroupWorkGroupConfigurationRequesterPaysEnabled (\s a -> s { _athenaWorkGroupWorkGroupConfigurationRequesterPaysEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html#cfn-athena-workgroup-workgroupconfiguration-resultconfiguration
+awgwgcResultConfiguration :: Lens' AthenaWorkGroupWorkGroupConfiguration (Maybe AthenaWorkGroupResultConfiguration)
+awgwgcResultConfiguration = lens _athenaWorkGroupWorkGroupConfigurationResultConfiguration (\s a -> s { _athenaWorkGroupWorkGroupConfigurationResultConfiguration = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupWorkGroupConfigurationUpdates.hs b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupWorkGroupConfigurationUpdates.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AthenaWorkGroupWorkGroupConfigurationUpdates.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html
+
+module Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfigurationUpdates where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AthenaWorkGroupResultConfigurationUpdates
+
+-- | Full data type definition for
+-- AthenaWorkGroupWorkGroupConfigurationUpdates. See
+-- 'athenaWorkGroupWorkGroupConfigurationUpdates' for a more convenient
+-- constructor.
+data AthenaWorkGroupWorkGroupConfigurationUpdates =
+  AthenaWorkGroupWorkGroupConfigurationUpdates
+  { _athenaWorkGroupWorkGroupConfigurationUpdatesBytesScannedCutoffPerQuery :: Maybe (Val Integer)
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesEnforceWorkGroupConfiguration :: Maybe (Val Bool)
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesPublishCloudWatchMetricsEnabled :: Maybe (Val Bool)
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesRemoveBytesScannedCutoffPerQuery :: Maybe (Val Bool)
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesRequesterPaysEnabled :: Maybe (Val Bool)
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesResultConfigurationUpdates :: Maybe AthenaWorkGroupResultConfigurationUpdates
+  } deriving (Show, Eq)
+
+instance ToJSON AthenaWorkGroupWorkGroupConfigurationUpdates where
+  toJSON AthenaWorkGroupWorkGroupConfigurationUpdates{..} =
+    object $
+    catMaybes
+    [ fmap (("BytesScannedCutoffPerQuery",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdatesBytesScannedCutoffPerQuery
+    , fmap (("EnforceWorkGroupConfiguration",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdatesEnforceWorkGroupConfiguration
+    , fmap (("PublishCloudWatchMetricsEnabled",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdatesPublishCloudWatchMetricsEnabled
+    , fmap (("RemoveBytesScannedCutoffPerQuery",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdatesRemoveBytesScannedCutoffPerQuery
+    , fmap (("RequesterPaysEnabled",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdatesRequesterPaysEnabled
+    , fmap (("ResultConfigurationUpdates",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdatesResultConfigurationUpdates
+    ]
+
+-- | Constructor for 'AthenaWorkGroupWorkGroupConfigurationUpdates' containing
+-- required fields as arguments.
+athenaWorkGroupWorkGroupConfigurationUpdates
+  :: AthenaWorkGroupWorkGroupConfigurationUpdates
+athenaWorkGroupWorkGroupConfigurationUpdates  =
+  AthenaWorkGroupWorkGroupConfigurationUpdates
+  { _athenaWorkGroupWorkGroupConfigurationUpdatesBytesScannedCutoffPerQuery = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesEnforceWorkGroupConfiguration = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesPublishCloudWatchMetricsEnabled = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesRemoveBytesScannedCutoffPerQuery = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesRequesterPaysEnabled = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationUpdatesResultConfigurationUpdates = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html#cfn-athena-workgroup-workgroupconfigurationupdates-bytesscannedcutoffperquery
+awgwgcuBytesScannedCutoffPerQuery :: Lens' AthenaWorkGroupWorkGroupConfigurationUpdates (Maybe (Val Integer))
+awgwgcuBytesScannedCutoffPerQuery = lens _athenaWorkGroupWorkGroupConfigurationUpdatesBytesScannedCutoffPerQuery (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdatesBytesScannedCutoffPerQuery = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html#cfn-athena-workgroup-workgroupconfigurationupdates-enforceworkgroupconfiguration
+awgwgcuEnforceWorkGroupConfiguration :: Lens' AthenaWorkGroupWorkGroupConfigurationUpdates (Maybe (Val Bool))
+awgwgcuEnforceWorkGroupConfiguration = lens _athenaWorkGroupWorkGroupConfigurationUpdatesEnforceWorkGroupConfiguration (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdatesEnforceWorkGroupConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html#cfn-athena-workgroup-workgroupconfigurationupdates-publishcloudwatchmetricsenabled
+awgwgcuPublishCloudWatchMetricsEnabled :: Lens' AthenaWorkGroupWorkGroupConfigurationUpdates (Maybe (Val Bool))
+awgwgcuPublishCloudWatchMetricsEnabled = lens _athenaWorkGroupWorkGroupConfigurationUpdatesPublishCloudWatchMetricsEnabled (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdatesPublishCloudWatchMetricsEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html#cfn-athena-workgroup-workgroupconfigurationupdates-removebytesscannedcutoffperquery
+awgwgcuRemoveBytesScannedCutoffPerQuery :: Lens' AthenaWorkGroupWorkGroupConfigurationUpdates (Maybe (Val Bool))
+awgwgcuRemoveBytesScannedCutoffPerQuery = lens _athenaWorkGroupWorkGroupConfigurationUpdatesRemoveBytesScannedCutoffPerQuery (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdatesRemoveBytesScannedCutoffPerQuery = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html#cfn-athena-workgroup-workgroupconfigurationupdates-requesterpaysenabled
+awgwgcuRequesterPaysEnabled :: Lens' AthenaWorkGroupWorkGroupConfigurationUpdates (Maybe (Val Bool))
+awgwgcuRequesterPaysEnabled = lens _athenaWorkGroupWorkGroupConfigurationUpdatesRequesterPaysEnabled (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdatesRequesterPaysEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html#cfn-athena-workgroup-workgroupconfigurationupdates-resultconfigurationupdates
+awgwgcuResultConfigurationUpdates :: Lens' AthenaWorkGroupWorkGroupConfigurationUpdates (Maybe AthenaWorkGroupResultConfigurationUpdates)
+awgwgcuResultConfigurationUpdates = lens _athenaWorkGroupWorkGroupConfigurationUpdatesResultConfigurationUpdates (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdatesResultConfigurationUpdates = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BackupBackupPlanBackupRuleResourceType.hs b/library-gen/Stratosphere/ResourceProperties/BackupBackupPlanBackupRuleResourceType.hs
--- a/library-gen/Stratosphere/ResourceProperties/BackupBackupPlanBackupRuleResourceType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BackupBackupPlanBackupRuleResourceType.hs
@@ -8,6 +8,7 @@
 module Stratosphere.ResourceProperties.BackupBackupPlanBackupRuleResourceType where
 
 import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.BackupBackupPlanCopyActionResourceType
 import Stratosphere.ResourceProperties.BackupBackupPlanLifecycleResourceType
 
 -- | Full data type definition for BackupBackupPlanBackupRuleResourceType. See
@@ -16,6 +17,7 @@
 data BackupBackupPlanBackupRuleResourceType =
   BackupBackupPlanBackupRuleResourceType
   { _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes :: Maybe (Val Double)
+  , _backupBackupPlanBackupRuleResourceTypeCopyActions :: Maybe [BackupBackupPlanCopyActionResourceType]
   , _backupBackupPlanBackupRuleResourceTypeLifecycle :: Maybe BackupBackupPlanLifecycleResourceType
   , _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags :: Maybe Object
   , _backupBackupPlanBackupRuleResourceTypeRuleName :: Val Text
@@ -29,6 +31,7 @@
     object $
     catMaybes
     [ fmap (("CompletionWindowMinutes",) . toJSON) _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes
+    , fmap (("CopyActions",) . toJSON) _backupBackupPlanBackupRuleResourceTypeCopyActions
     , fmap (("Lifecycle",) . toJSON) _backupBackupPlanBackupRuleResourceTypeLifecycle
     , fmap (("RecoveryPointTags",) . toJSON) _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags
     , (Just . ("RuleName",) . toJSON) _backupBackupPlanBackupRuleResourceTypeRuleName
@@ -46,6 +49,7 @@
 backupBackupPlanBackupRuleResourceType ruleNamearg targetBackupVaultarg =
   BackupBackupPlanBackupRuleResourceType
   { _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes = Nothing
+  , _backupBackupPlanBackupRuleResourceTypeCopyActions = Nothing
   , _backupBackupPlanBackupRuleResourceTypeLifecycle = Nothing
   , _backupBackupPlanBackupRuleResourceTypeRecoveryPointTags = Nothing
   , _backupBackupPlanBackupRuleResourceTypeRuleName = ruleNamearg
@@ -57,6 +61,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-completionwindowminutes
 bbpbrrtCompletionWindowMinutes :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe (Val Double))
 bbpbrrtCompletionWindowMinutes = lens _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes (\s a -> s { _backupBackupPlanBackupRuleResourceTypeCompletionWindowMinutes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-copyactions
+bbpbrrtCopyActions :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe [BackupBackupPlanCopyActionResourceType])
+bbpbrrtCopyActions = lens _backupBackupPlanBackupRuleResourceTypeCopyActions (\s a -> s { _backupBackupPlanBackupRuleResourceTypeCopyActions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-backupruleresourcetype.html#cfn-backup-backupplan-backupruleresourcetype-lifecycle
 bbpbrrtLifecycle :: Lens' BackupBackupPlanBackupRuleResourceType (Maybe BackupBackupPlanLifecycleResourceType)
diff --git a/library-gen/Stratosphere/ResourceProperties/BackupBackupPlanCopyActionResourceType.hs b/library-gen/Stratosphere/ResourceProperties/BackupBackupPlanCopyActionResourceType.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BackupBackupPlanCopyActionResourceType.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-copyactionresourcetype.html
+
+module Stratosphere.ResourceProperties.BackupBackupPlanCopyActionResourceType where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.BackupBackupPlanLifecycleResourceType
+
+-- | Full data type definition for BackupBackupPlanCopyActionResourceType. See
+-- 'backupBackupPlanCopyActionResourceType' for a more convenient
+-- constructor.
+data BackupBackupPlanCopyActionResourceType =
+  BackupBackupPlanCopyActionResourceType
+  { _backupBackupPlanCopyActionResourceTypeDestinationBackupVaultArn :: Val Text
+  , _backupBackupPlanCopyActionResourceTypeLifecycle :: Maybe BackupBackupPlanLifecycleResourceType
+  } deriving (Show, Eq)
+
+instance ToJSON BackupBackupPlanCopyActionResourceType where
+  toJSON BackupBackupPlanCopyActionResourceType{..} =
+    object $
+    catMaybes
+    [ (Just . ("DestinationBackupVaultArn",) . toJSON) _backupBackupPlanCopyActionResourceTypeDestinationBackupVaultArn
+    , fmap (("Lifecycle",) . toJSON) _backupBackupPlanCopyActionResourceTypeLifecycle
+    ]
+
+-- | Constructor for 'BackupBackupPlanCopyActionResourceType' containing
+-- required fields as arguments.
+backupBackupPlanCopyActionResourceType
+  :: Val Text -- ^ 'bbpcartDestinationBackupVaultArn'
+  -> BackupBackupPlanCopyActionResourceType
+backupBackupPlanCopyActionResourceType destinationBackupVaultArnarg =
+  BackupBackupPlanCopyActionResourceType
+  { _backupBackupPlanCopyActionResourceTypeDestinationBackupVaultArn = destinationBackupVaultArnarg
+  , _backupBackupPlanCopyActionResourceTypeLifecycle = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-copyactionresourcetype.html#cfn-backup-backupplan-copyactionresourcetype-destinationbackupvaultarn
+bbpcartDestinationBackupVaultArn :: Lens' BackupBackupPlanCopyActionResourceType (Val Text)
+bbpcartDestinationBackupVaultArn = lens _backupBackupPlanCopyActionResourceTypeDestinationBackupVaultArn (\s a -> s { _backupBackupPlanCopyActionResourceTypeDestinationBackupVaultArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-backup-backupplan-copyactionresourcetype.html#cfn-backup-backupplan-copyactionresourcetype-lifecycle
+bbpcartLifecycle :: Lens' BackupBackupPlanCopyActionResourceType (Maybe BackupBackupPlanLifecycleResourceType)
+bbpcartLifecycle = lens _backupBackupPlanCopyActionResourceTypeLifecycle (\s a -> s { _backupBackupPlanCopyActionResourceTypeLifecycle = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectFileSystemLocation.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectFileSystemLocation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectProjectFileSystemLocation.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html
+
+module Stratosphere.ResourceProperties.CodeBuildProjectProjectFileSystemLocation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CodeBuildProjectProjectFileSystemLocation.
+-- See 'codeBuildProjectProjectFileSystemLocation' for a more convenient
+-- constructor.
+data CodeBuildProjectProjectFileSystemLocation =
+  CodeBuildProjectProjectFileSystemLocation
+  { _codeBuildProjectProjectFileSystemLocationIdentifier :: Val Text
+  , _codeBuildProjectProjectFileSystemLocationLocation :: Val Text
+  , _codeBuildProjectProjectFileSystemLocationMountOptions :: Maybe (Val Text)
+  , _codeBuildProjectProjectFileSystemLocationMountPoint :: Val Text
+  , _codeBuildProjectProjectFileSystemLocationType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON CodeBuildProjectProjectFileSystemLocation where
+  toJSON CodeBuildProjectProjectFileSystemLocation{..} =
+    object $
+    catMaybes
+    [ (Just . ("Identifier",) . toJSON) _codeBuildProjectProjectFileSystemLocationIdentifier
+    , (Just . ("Location",) . toJSON) _codeBuildProjectProjectFileSystemLocationLocation
+    , fmap (("MountOptions",) . toJSON) _codeBuildProjectProjectFileSystemLocationMountOptions
+    , (Just . ("MountPoint",) . toJSON) _codeBuildProjectProjectFileSystemLocationMountPoint
+    , (Just . ("Type",) . toJSON) _codeBuildProjectProjectFileSystemLocationType
+    ]
+
+-- | Constructor for 'CodeBuildProjectProjectFileSystemLocation' containing
+-- required fields as arguments.
+codeBuildProjectProjectFileSystemLocation
+  :: Val Text -- ^ 'cbppfslIdentifier'
+  -> Val Text -- ^ 'cbppfslLocation'
+  -> Val Text -- ^ 'cbppfslMountPoint'
+  -> Val Text -- ^ 'cbppfslType'
+  -> CodeBuildProjectProjectFileSystemLocation
+codeBuildProjectProjectFileSystemLocation identifierarg locationarg mountPointarg typearg =
+  CodeBuildProjectProjectFileSystemLocation
+  { _codeBuildProjectProjectFileSystemLocationIdentifier = identifierarg
+  , _codeBuildProjectProjectFileSystemLocationLocation = locationarg
+  , _codeBuildProjectProjectFileSystemLocationMountOptions = Nothing
+  , _codeBuildProjectProjectFileSystemLocationMountPoint = mountPointarg
+  , _codeBuildProjectProjectFileSystemLocationType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-identifier
+cbppfslIdentifier :: Lens' CodeBuildProjectProjectFileSystemLocation (Val Text)
+cbppfslIdentifier = lens _codeBuildProjectProjectFileSystemLocationIdentifier (\s a -> s { _codeBuildProjectProjectFileSystemLocationIdentifier = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-location
+cbppfslLocation :: Lens' CodeBuildProjectProjectFileSystemLocation (Val Text)
+cbppfslLocation = lens _codeBuildProjectProjectFileSystemLocationLocation (\s a -> s { _codeBuildProjectProjectFileSystemLocationLocation = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-mountoptions
+cbppfslMountOptions :: Lens' CodeBuildProjectProjectFileSystemLocation (Maybe (Val Text))
+cbppfslMountOptions = lens _codeBuildProjectProjectFileSystemLocationMountOptions (\s a -> s { _codeBuildProjectProjectFileSystemLocationMountOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-mountpoint
+cbppfslMountPoint :: Lens' CodeBuildProjectProjectFileSystemLocation (Val Text)
+cbppfslMountPoint = lens _codeBuildProjectProjectFileSystemLocationMountPoint (\s a -> s { _codeBuildProjectProjectFileSystemLocationMountPoint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projectfilesystemlocation.html#cfn-codebuild-project-projectfilesystemlocation-type
+cbppfslType :: Lens' CodeBuildProjectProjectFileSystemLocation (Val Text)
+cbppfslType = lens _codeBuildProjectProjectFileSystemLocationType (\s a -> s { _codeBuildProjectProjectFileSystemLocationType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUsernameConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUsernameConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoUserPoolUsernameConfiguration.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-usernameconfiguration.html
+
+module Stratosphere.ResourceProperties.CognitoUserPoolUsernameConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CognitoUserPoolUsernameConfiguration. See
+-- 'cognitoUserPoolUsernameConfiguration' for a more convenient constructor.
+data CognitoUserPoolUsernameConfiguration =
+  CognitoUserPoolUsernameConfiguration
+  { _cognitoUserPoolUsernameConfigurationCaseSensitive :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON CognitoUserPoolUsernameConfiguration where
+  toJSON CognitoUserPoolUsernameConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("CaseSensitive",) . toJSON) _cognitoUserPoolUsernameConfigurationCaseSensitive
+    ]
+
+-- | Constructor for 'CognitoUserPoolUsernameConfiguration' containing
+-- required fields as arguments.
+cognitoUserPoolUsernameConfiguration
+  :: CognitoUserPoolUsernameConfiguration
+cognitoUserPoolUsernameConfiguration  =
+  CognitoUserPoolUsernameConfiguration
+  { _cognitoUserPoolUsernameConfigurationCaseSensitive = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-usernameconfiguration.html#cfn-cognito-userpool-usernameconfiguration-casesensitive
+cupucCaseSensitive :: Lens' CognitoUserPoolUsernameConfiguration (Maybe (Val Bool))
+cupucCaseSensitive = lens _cognitoUserPoolUsernameConfigurationCaseSensitive (\s a -> s { _cognitoUserPoolUsernameConfigurationCaseSensitive = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigConformancePackConformancePackInputParameter.hs b/library-gen/Stratosphere/ResourceProperties/ConfigConformancePackConformancePackInputParameter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigConformancePackConformancePackInputParameter.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-conformancepackinputparameter.html
+
+module Stratosphere.ResourceProperties.ConfigConformancePackConformancePackInputParameter where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ConfigConformancePackConformancePackInputParameter. See
+-- 'configConformancePackConformancePackInputParameter' for a more
+-- convenient constructor.
+data ConfigConformancePackConformancePackInputParameter =
+  ConfigConformancePackConformancePackInputParameter
+  { _configConformancePackConformancePackInputParameterParameterName :: Val Text
+  , _configConformancePackConformancePackInputParameterParameterValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ConfigConformancePackConformancePackInputParameter where
+  toJSON ConfigConformancePackConformancePackInputParameter{..} =
+    object $
+    catMaybes
+    [ (Just . ("ParameterName",) . toJSON) _configConformancePackConformancePackInputParameterParameterName
+    , (Just . ("ParameterValue",) . toJSON) _configConformancePackConformancePackInputParameterParameterValue
+    ]
+
+-- | Constructor for 'ConfigConformancePackConformancePackInputParameter'
+-- containing required fields as arguments.
+configConformancePackConformancePackInputParameter
+  :: Val Text -- ^ 'ccpcpipParameterName'
+  -> Val Text -- ^ 'ccpcpipParameterValue'
+  -> ConfigConformancePackConformancePackInputParameter
+configConformancePackConformancePackInputParameter parameterNamearg parameterValuearg =
+  ConfigConformancePackConformancePackInputParameter
+  { _configConformancePackConformancePackInputParameterParameterName = parameterNamearg
+  , _configConformancePackConformancePackInputParameterParameterValue = parameterValuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-conformancepackinputparameter.html#cfn-config-conformancepack-conformancepackinputparameter-parametername
+ccpcpipParameterName :: Lens' ConfigConformancePackConformancePackInputParameter (Val Text)
+ccpcpipParameterName = lens _configConformancePackConformancePackInputParameterParameterName (\s a -> s { _configConformancePackConformancePackInputParameterParameterName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-conformancepackinputparameter.html#cfn-config-conformancepack-conformancepackinputparameter-parametervalue
+ccpcpipParameterValue :: Lens' ConfigConformancePackConformancePackInputParameter (Val Text)
+ccpcpipParameterValue = lens _configConformancePackConformancePackInputParameterParameterValue (\s a -> s { _configConformancePackConformancePackInputParameterParameterValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ConfigOrganizationConformancePackConformancePackInputParameter.hs b/library-gen/Stratosphere/ResourceProperties/ConfigOrganizationConformancePackConformancePackInputParameter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ConfigOrganizationConformancePackConformancePackInputParameter.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconformancepack-conformancepackinputparameter.html
+
+module Stratosphere.ResourceProperties.ConfigOrganizationConformancePackConformancePackInputParameter where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ConfigOrganizationConformancePackConformancePackInputParameter. See
+-- 'configOrganizationConformancePackConformancePackInputParameter' for a
+-- more convenient constructor.
+data ConfigOrganizationConformancePackConformancePackInputParameter =
+  ConfigOrganizationConformancePackConformancePackInputParameter
+  { _configOrganizationConformancePackConformancePackInputParameterParameterName :: Val Text
+  , _configOrganizationConformancePackConformancePackInputParameterParameterValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ConfigOrganizationConformancePackConformancePackInputParameter where
+  toJSON ConfigOrganizationConformancePackConformancePackInputParameter{..} =
+    object $
+    catMaybes
+    [ (Just . ("ParameterName",) . toJSON) _configOrganizationConformancePackConformancePackInputParameterParameterName
+    , (Just . ("ParameterValue",) . toJSON) _configOrganizationConformancePackConformancePackInputParameterParameterValue
+    ]
+
+-- | Constructor for
+-- 'ConfigOrganizationConformancePackConformancePackInputParameter'
+-- containing required fields as arguments.
+configOrganizationConformancePackConformancePackInputParameter
+  :: Val Text -- ^ 'cocpcpipParameterName'
+  -> Val Text -- ^ 'cocpcpipParameterValue'
+  -> ConfigOrganizationConformancePackConformancePackInputParameter
+configOrganizationConformancePackConformancePackInputParameter parameterNamearg parameterValuearg =
+  ConfigOrganizationConformancePackConformancePackInputParameter
+  { _configOrganizationConformancePackConformancePackInputParameterParameterName = parameterNamearg
+  , _configOrganizationConformancePackConformancePackInputParameterParameterValue = parameterValuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconformancepack-conformancepackinputparameter.html#cfn-config-organizationconformancepack-conformancepackinputparameter-parametername
+cocpcpipParameterName :: Lens' ConfigOrganizationConformancePackConformancePackInputParameter (Val Text)
+cocpcpipParameterName = lens _configOrganizationConformancePackConformancePackInputParameterParameterName (\s a -> s { _configOrganizationConformancePackConformancePackInputParameterParameterName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-organizationconformancepack-conformancepackinputparameter.html#cfn-config-organizationconformancepack-conformancepackinputparameter-parametervalue
+cocpcpipParameterValue :: Lens' ConfigOrganizationConformancePackConformancePackInputParameter (Val Text)
+cocpcpipParameterValue = lens _configOrganizationConformancePackConformancePackInputParameterParameterValue (\s a -> s { _configOrganizationConformancePackConformancePackInputParameterParameterValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateData.hs
@@ -18,6 +18,7 @@
 import Stratosphere.ResourceProperties.EC2LaunchTemplateIamInstanceProfile
 import Stratosphere.ResourceProperties.EC2LaunchTemplateInstanceMarketOptions
 import Stratosphere.ResourceProperties.EC2LaunchTemplateLicenseSpecification
+import Stratosphere.ResourceProperties.EC2LaunchTemplateMetadataOptions
 import Stratosphere.ResourceProperties.EC2LaunchTemplateMonitoring
 import Stratosphere.ResourceProperties.EC2LaunchTemplateNetworkInterface
 import Stratosphere.ResourceProperties.EC2LaunchTemplatePlacement
@@ -44,6 +45,7 @@
   , _eC2LaunchTemplateLaunchTemplateDataKernelId :: Maybe (Val Text)
   , _eC2LaunchTemplateLaunchTemplateDataKeyName :: Maybe (Val Text)
   , _eC2LaunchTemplateLaunchTemplateDataLicenseSpecifications :: Maybe [EC2LaunchTemplateLicenseSpecification]
+  , _eC2LaunchTemplateLaunchTemplateDataMetadataOptions :: Maybe EC2LaunchTemplateMetadataOptions
   , _eC2LaunchTemplateLaunchTemplateDataMonitoring :: Maybe EC2LaunchTemplateMonitoring
   , _eC2LaunchTemplateLaunchTemplateDataNetworkInterfaces :: Maybe [EC2LaunchTemplateNetworkInterface]
   , _eC2LaunchTemplateLaunchTemplateDataPlacement :: Maybe EC2LaunchTemplatePlacement
@@ -75,6 +77,7 @@
     , fmap (("KernelId",) . toJSON) _eC2LaunchTemplateLaunchTemplateDataKernelId
     , fmap (("KeyName",) . toJSON) _eC2LaunchTemplateLaunchTemplateDataKeyName
     , fmap (("LicenseSpecifications",) . toJSON) _eC2LaunchTemplateLaunchTemplateDataLicenseSpecifications
+    , fmap (("MetadataOptions",) . toJSON) _eC2LaunchTemplateLaunchTemplateDataMetadataOptions
     , fmap (("Monitoring",) . toJSON) _eC2LaunchTemplateLaunchTemplateDataMonitoring
     , fmap (("NetworkInterfaces",) . toJSON) _eC2LaunchTemplateLaunchTemplateDataNetworkInterfaces
     , fmap (("Placement",) . toJSON) _eC2LaunchTemplateLaunchTemplateDataPlacement
@@ -108,6 +111,7 @@
   , _eC2LaunchTemplateLaunchTemplateDataKernelId = Nothing
   , _eC2LaunchTemplateLaunchTemplateDataKeyName = Nothing
   , _eC2LaunchTemplateLaunchTemplateDataLicenseSpecifications = Nothing
+  , _eC2LaunchTemplateLaunchTemplateDataMetadataOptions = Nothing
   , _eC2LaunchTemplateLaunchTemplateDataMonitoring = Nothing
   , _eC2LaunchTemplateLaunchTemplateDataNetworkInterfaces = Nothing
   , _eC2LaunchTemplateLaunchTemplateDataPlacement = Nothing
@@ -185,6 +189,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-licensespecifications
 ecltltdLicenseSpecifications :: Lens' EC2LaunchTemplateLaunchTemplateData (Maybe [EC2LaunchTemplateLicenseSpecification])
 ecltltdLicenseSpecifications = lens _eC2LaunchTemplateLaunchTemplateDataLicenseSpecifications (\s a -> s { _eC2LaunchTemplateLaunchTemplateDataLicenseSpecifications = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions
+ecltltdMetadataOptions :: Lens' EC2LaunchTemplateLaunchTemplateData (Maybe EC2LaunchTemplateMetadataOptions)
+ecltltdMetadataOptions = lens _eC2LaunchTemplateLaunchTemplateDataMetadataOptions (\s a -> s { _eC2LaunchTemplateLaunchTemplateDataMetadataOptions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-monitoring
 ecltltdMonitoring :: Lens' EC2LaunchTemplateLaunchTemplateData (Maybe EC2LaunchTemplateMonitoring)
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator.hs
@@ -16,14 +16,16 @@
 -- convenient constructor.
 data EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator =
   EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator
-  { _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorType :: Maybe (Val Text)
+  { _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorCount :: Maybe (Val Integer)
+  , _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorType :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator where
   toJSON EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator{..} =
     object $
     catMaybes
-    [ fmap (("Type",) . toJSON) _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorType
+    [ fmap (("Count",) . toJSON) _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorCount
+    , fmap (("Type",) . toJSON) _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorType
     ]
 
 -- | Constructor for
@@ -33,8 +35,13 @@
   :: EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator
 ec2LaunchTemplateLaunchTemplateElasticInferenceAccelerator  =
   EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator
-  { _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorType = Nothing
+  { _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorCount = Nothing
+  , _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorType = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator.html#cfn-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator-count
+ecltlteiaCount :: Lens' EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator (Maybe (Val Integer))
+ecltlteiaCount = lens _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorCount (\s a -> s { _eC2LaunchTemplateLaunchTemplateElasticInferenceAcceleratorCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator.html#cfn-ec2-launchtemplate-launchtemplateelasticinferenceaccelerator-type
 ecltlteiaType :: Lens' EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateMetadataOptions.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateMetadataOptions.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplateMetadataOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html
+
+module Stratosphere.ResourceProperties.EC2LaunchTemplateMetadataOptions where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2LaunchTemplateMetadataOptions. See
+-- 'ec2LaunchTemplateMetadataOptions' for a more convenient constructor.
+data EC2LaunchTemplateMetadataOptions =
+  EC2LaunchTemplateMetadataOptions
+  { _eC2LaunchTemplateMetadataOptionsHttpEndpoint :: Maybe (Val Text)
+  , _eC2LaunchTemplateMetadataOptionsHttpPutResponseHopLimit :: Maybe (Val Integer)
+  , _eC2LaunchTemplateMetadataOptionsHttpTokens :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2LaunchTemplateMetadataOptions where
+  toJSON EC2LaunchTemplateMetadataOptions{..} =
+    object $
+    catMaybes
+    [ fmap (("HttpEndpoint",) . toJSON) _eC2LaunchTemplateMetadataOptionsHttpEndpoint
+    , fmap (("HttpPutResponseHopLimit",) . toJSON) _eC2LaunchTemplateMetadataOptionsHttpPutResponseHopLimit
+    , fmap (("HttpTokens",) . toJSON) _eC2LaunchTemplateMetadataOptionsHttpTokens
+    ]
+
+-- | Constructor for 'EC2LaunchTemplateMetadataOptions' containing required
+-- fields as arguments.
+ec2LaunchTemplateMetadataOptions
+  :: EC2LaunchTemplateMetadataOptions
+ec2LaunchTemplateMetadataOptions  =
+  EC2LaunchTemplateMetadataOptions
+  { _eC2LaunchTemplateMetadataOptionsHttpEndpoint = Nothing
+  , _eC2LaunchTemplateMetadataOptionsHttpPutResponseHopLimit = Nothing
+  , _eC2LaunchTemplateMetadataOptionsHttpTokens = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions-httpendpoint
+ecltmoHttpEndpoint :: Lens' EC2LaunchTemplateMetadataOptions (Maybe (Val Text))
+ecltmoHttpEndpoint = lens _eC2LaunchTemplateMetadataOptionsHttpEndpoint (\s a -> s { _eC2LaunchTemplateMetadataOptionsHttpEndpoint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions-httpputresponsehoplimit
+ecltmoHttpPutResponseHopLimit :: Lens' EC2LaunchTemplateMetadataOptions (Maybe (Val Integer))
+ecltmoHttpPutResponseHopLimit = lens _eC2LaunchTemplateMetadataOptionsHttpPutResponseHopLimit (\s a -> s { _eC2LaunchTemplateMetadataOptionsHttpPutResponseHopLimit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-metadataoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-metadataoptions-httptokens
+ecltmoHttpTokens :: Lens' EC2LaunchTemplateMetadataOptions (Maybe (Val Text))
+ecltmoHttpTokens = lens _eC2LaunchTemplateMetadataOptionsHttpTokens (\s a -> s { _eC2LaunchTemplateMetadataOptionsHttpTokens = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs
@@ -18,6 +18,9 @@
   , _eC2LaunchTemplatePlacementAvailabilityZone :: Maybe (Val Text)
   , _eC2LaunchTemplatePlacementGroupName :: Maybe (Val Text)
   , _eC2LaunchTemplatePlacementHostId :: Maybe (Val Text)
+  , _eC2LaunchTemplatePlacementHostResourceGroupArn :: Maybe (Val Text)
+  , _eC2LaunchTemplatePlacementPartitionNumber :: Maybe (Val Integer)
+  , _eC2LaunchTemplatePlacementSpreadDomain :: Maybe (Val Text)
   , _eC2LaunchTemplatePlacementTenancy :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -29,6 +32,9 @@
     , fmap (("AvailabilityZone",) . toJSON) _eC2LaunchTemplatePlacementAvailabilityZone
     , fmap (("GroupName",) . toJSON) _eC2LaunchTemplatePlacementGroupName
     , fmap (("HostId",) . toJSON) _eC2LaunchTemplatePlacementHostId
+    , fmap (("HostResourceGroupArn",) . toJSON) _eC2LaunchTemplatePlacementHostResourceGroupArn
+    , fmap (("PartitionNumber",) . toJSON) _eC2LaunchTemplatePlacementPartitionNumber
+    , fmap (("SpreadDomain",) . toJSON) _eC2LaunchTemplatePlacementSpreadDomain
     , fmap (("Tenancy",) . toJSON) _eC2LaunchTemplatePlacementTenancy
     ]
 
@@ -42,6 +48,9 @@
   , _eC2LaunchTemplatePlacementAvailabilityZone = Nothing
   , _eC2LaunchTemplatePlacementGroupName = Nothing
   , _eC2LaunchTemplatePlacementHostId = Nothing
+  , _eC2LaunchTemplatePlacementHostResourceGroupArn = Nothing
+  , _eC2LaunchTemplatePlacementPartitionNumber = Nothing
+  , _eC2LaunchTemplatePlacementSpreadDomain = Nothing
   , _eC2LaunchTemplatePlacementTenancy = Nothing
   }
 
@@ -60,6 +69,18 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-hostid
 ecltpHostId :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
 ecltpHostId = lens _eC2LaunchTemplatePlacementHostId (\s a -> s { _eC2LaunchTemplatePlacementHostId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-hostresourcegrouparn
+ecltpHostResourceGroupArn :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
+ecltpHostResourceGroupArn = lens _eC2LaunchTemplatePlacementHostResourceGroupArn (\s a -> s { _eC2LaunchTemplatePlacementHostResourceGroupArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-partitionnumber
+ecltpPartitionNumber :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Integer))
+ecltpPartitionNumber = lens _eC2LaunchTemplatePlacementPartitionNumber (\s a -> s { _eC2LaunchTemplatePlacementPartitionNumber = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-spreaddomain
+ecltpSpreadDomain :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
+ecltpSpreadDomain = lens _eC2LaunchTemplatePlacementSpreadDomain (\s a -> s { _eC2LaunchTemplatePlacementSpreadDomain = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-tenancy
 ecltpTenancy :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2LocalGatewayRouteTableVPCAssociationTags.hs b/library-gen/Stratosphere/ResourceProperties/EC2LocalGatewayRouteTableVPCAssociationTags.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2LocalGatewayRouteTableVPCAssociationTags.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-localgatewayroutetablevpcassociation-tags.html
+
+module Stratosphere.ResourceProperties.EC2LocalGatewayRouteTableVPCAssociationTags where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for
+-- EC2LocalGatewayRouteTableVPCAssociationTags. See
+-- 'ec2LocalGatewayRouteTableVPCAssociationTags' for a more convenient
+-- constructor.
+data EC2LocalGatewayRouteTableVPCAssociationTags =
+  EC2LocalGatewayRouteTableVPCAssociationTags
+  { _eC2LocalGatewayRouteTableVPCAssociationTagsTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON EC2LocalGatewayRouteTableVPCAssociationTags where
+  toJSON EC2LocalGatewayRouteTableVPCAssociationTags{..} =
+    object $
+    catMaybes
+    [ fmap (("Tags",) . toJSON) _eC2LocalGatewayRouteTableVPCAssociationTagsTags
+    ]
+
+-- | Constructor for 'EC2LocalGatewayRouteTableVPCAssociationTags' containing
+-- required fields as arguments.
+ec2LocalGatewayRouteTableVPCAssociationTags
+  :: EC2LocalGatewayRouteTableVPCAssociationTags
+ec2LocalGatewayRouteTableVPCAssociationTags  =
+  EC2LocalGatewayRouteTableVPCAssociationTags
+  { _eC2LocalGatewayRouteTableVPCAssociationTagsTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-localgatewayroutetablevpcassociation-tags.html#cfn-ec2-localgatewayroutetablevpcassociation-tags-tags
+eclgrtvpcatTags :: Lens' EC2LocalGatewayRouteTableVPCAssociationTags (Maybe [Tag])
+eclgrtvpcatTags = lens _eC2LocalGatewayRouteTableVPCAssociationTagsTags (\s a -> s { _eC2LocalGatewayRouteTableVPCAssociationTagsTags = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EKSClusterEncryptionConfig.hs b/library-gen/Stratosphere/ResourceProperties/EKSClusterEncryptionConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EKSClusterEncryptionConfig.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-encryptionconfig.html
+
+module Stratosphere.ResourceProperties.EKSClusterEncryptionConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EKSClusterProvider
+
+-- | Full data type definition for EKSClusterEncryptionConfig. See
+-- 'eksClusterEncryptionConfig' for a more convenient constructor.
+data EKSClusterEncryptionConfig =
+  EKSClusterEncryptionConfig
+  { _eKSClusterEncryptionConfigProvider :: Maybe EKSClusterProvider
+  , _eKSClusterEncryptionConfigResources :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EKSClusterEncryptionConfig where
+  toJSON EKSClusterEncryptionConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Provider",) . toJSON) _eKSClusterEncryptionConfigProvider
+    , fmap (("Resources",) . toJSON) _eKSClusterEncryptionConfigResources
+    ]
+
+-- | Constructor for 'EKSClusterEncryptionConfig' containing required fields
+-- as arguments.
+eksClusterEncryptionConfig
+  :: EKSClusterEncryptionConfig
+eksClusterEncryptionConfig  =
+  EKSClusterEncryptionConfig
+  { _eKSClusterEncryptionConfigProvider = Nothing
+  , _eKSClusterEncryptionConfigResources = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-encryptionconfig.html#cfn-eks-cluster-encryptionconfig-provider
+ekscecProvider :: Lens' EKSClusterEncryptionConfig (Maybe EKSClusterProvider)
+ekscecProvider = lens _eKSClusterEncryptionConfigProvider (\s a -> s { _eKSClusterEncryptionConfigProvider = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-encryptionconfig.html#cfn-eks-cluster-encryptionconfig-resources
+ekscecResources :: Lens' EKSClusterEncryptionConfig (Maybe (ValList Text))
+ekscecResources = lens _eKSClusterEncryptionConfigResources (\s a -> s { _eKSClusterEncryptionConfigResources = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EKSClusterProvider.hs b/library-gen/Stratosphere/ResourceProperties/EKSClusterProvider.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EKSClusterProvider.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-provider.html
+
+module Stratosphere.ResourceProperties.EKSClusterProvider where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EKSClusterProvider. See
+-- 'eksClusterProvider' for a more convenient constructor.
+data EKSClusterProvider =
+  EKSClusterProvider
+  { _eKSClusterProviderKeyArn :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EKSClusterProvider where
+  toJSON EKSClusterProvider{..} =
+    object $
+    catMaybes
+    [ fmap (("KeyArn",) . toJSON) _eKSClusterProviderKeyArn
+    ]
+
+-- | Constructor for 'EKSClusterProvider' containing required fields as
+-- arguments.
+eksClusterProvider
+  :: EKSClusterProvider
+eksClusterProvider  =
+  EKSClusterProvider
+  { _eKSClusterProviderKeyArn = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-cluster-provider.html#cfn-eks-cluster-provider-keyarn
+ekscpKeyArn :: Lens' EKSClusterProvider (Maybe (Val Text))
+ekscpKeyArn = lens _eKSClusterProviderKeyArn (\s a -> s { _eKSClusterProviderKeyArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerForwardConfig
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig
 
 -- | Full data type definition for ElasticLoadBalancingV2ListenerAction. See
@@ -20,6 +21,7 @@
   { _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig :: Maybe ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
   , _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig :: Maybe ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
   , _elasticLoadBalancingV2ListenerActionFixedResponseConfig :: Maybe ElasticLoadBalancingV2ListenerFixedResponseConfig
+  , _elasticLoadBalancingV2ListenerActionForwardConfig :: Maybe ElasticLoadBalancingV2ListenerForwardConfig
   , _elasticLoadBalancingV2ListenerActionOrder :: Maybe (Val Integer)
   , _elasticLoadBalancingV2ListenerActionRedirectConfig :: Maybe ElasticLoadBalancingV2ListenerRedirectConfig
   , _elasticLoadBalancingV2ListenerActionTargetGroupArn :: Maybe (Val Text)
@@ -33,6 +35,7 @@
     [ fmap (("AuthenticateCognitoConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig
     , fmap (("AuthenticateOidcConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig
     , fmap (("FixedResponseConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionFixedResponseConfig
+    , fmap (("ForwardConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionForwardConfig
     , fmap (("Order",) . toJSON) _elasticLoadBalancingV2ListenerActionOrder
     , fmap (("RedirectConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionRedirectConfig
     , fmap (("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerActionTargetGroupArn
@@ -49,6 +52,7 @@
   { _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig = Nothing
   , _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig = Nothing
   , _elasticLoadBalancingV2ListenerActionFixedResponseConfig = Nothing
+  , _elasticLoadBalancingV2ListenerActionForwardConfig = Nothing
   , _elasticLoadBalancingV2ListenerActionOrder = Nothing
   , _elasticLoadBalancingV2ListenerActionRedirectConfig = Nothing
   , _elasticLoadBalancingV2ListenerActionTargetGroupArn = Nothing
@@ -66,6 +70,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig
 elbvlaFixedResponseConfig :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe ElasticLoadBalancingV2ListenerFixedResponseConfig)
 elbvlaFixedResponseConfig = lens _elasticLoadBalancingV2ListenerActionFixedResponseConfig (\s a -> s { _elasticLoadBalancingV2ListenerActionFixedResponseConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig
+elbvlaForwardConfig :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe ElasticLoadBalancingV2ListenerForwardConfig)
+elbvlaForwardConfig = lens _elasticLoadBalancingV2ListenerActionForwardConfig (\s a -> s { _elasticLoadBalancingV2ListenerActionForwardConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-order
 elbvlaOrder :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe (Val Integer))
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerForwardConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerForwardConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerForwardConfig.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-forwardconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerForwardConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupTuple
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerForwardConfig. See
+-- 'elasticLoadBalancingV2ListenerForwardConfig' for a more convenient
+-- constructor.
+data ElasticLoadBalancingV2ListenerForwardConfig =
+  ElasticLoadBalancingV2ListenerForwardConfig
+  { _elasticLoadBalancingV2ListenerForwardConfigTargetGroupStickinessConfig :: Maybe ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig
+  , _elasticLoadBalancingV2ListenerForwardConfigTargetGroups :: Maybe [ElasticLoadBalancingV2ListenerTargetGroupTuple]
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerForwardConfig where
+  toJSON ElasticLoadBalancingV2ListenerForwardConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("TargetGroupStickinessConfig",) . toJSON) _elasticLoadBalancingV2ListenerForwardConfigTargetGroupStickinessConfig
+    , fmap (("TargetGroups",) . toJSON) _elasticLoadBalancingV2ListenerForwardConfigTargetGroups
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerForwardConfig' containing
+-- required fields as arguments.
+elasticLoadBalancingV2ListenerForwardConfig
+  :: ElasticLoadBalancingV2ListenerForwardConfig
+elasticLoadBalancingV2ListenerForwardConfig  =
+  ElasticLoadBalancingV2ListenerForwardConfig
+  { _elasticLoadBalancingV2ListenerForwardConfigTargetGroupStickinessConfig = Nothing
+  , _elasticLoadBalancingV2ListenerForwardConfigTargetGroups = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-forwardconfig.html#cfn-elasticloadbalancingv2-listener-forwardconfig-targetgroupstickinessconfig
+elbvlfcTargetGroupStickinessConfig :: Lens' ElasticLoadBalancingV2ListenerForwardConfig (Maybe ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig)
+elbvlfcTargetGroupStickinessConfig = lens _elasticLoadBalancingV2ListenerForwardConfigTargetGroupStickinessConfig (\s a -> s { _elasticLoadBalancingV2ListenerForwardConfigTargetGroupStickinessConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-forwardconfig.html#cfn-elasticloadbalancingv2-listener-forwardconfig-targetgroups
+elbvlfcTargetGroups :: Lens' ElasticLoadBalancingV2ListenerForwardConfig (Maybe [ElasticLoadBalancingV2ListenerTargetGroupTuple])
+elbvlfcTargetGroups = lens _elasticLoadBalancingV2ListenerForwardConfigTargetGroups (\s a -> s { _elasticLoadBalancingV2ListenerForwardConfigTargetGroups = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleForwardConfig
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig
 
 -- | Full data type definition for ElasticLoadBalancingV2ListenerRuleAction.
@@ -21,6 +22,7 @@
   { _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig :: Maybe ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
   , _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig :: Maybe ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
   , _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig :: Maybe ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+  , _elasticLoadBalancingV2ListenerRuleActionForwardConfig :: Maybe ElasticLoadBalancingV2ListenerRuleForwardConfig
   , _elasticLoadBalancingV2ListenerRuleActionOrder :: Maybe (Val Integer)
   , _elasticLoadBalancingV2ListenerRuleActionRedirectConfig :: Maybe ElasticLoadBalancingV2ListenerRuleRedirectConfig
   , _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn :: Maybe (Val Text)
@@ -34,6 +36,7 @@
     [ fmap (("AuthenticateCognitoConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig
     , fmap (("AuthenticateOidcConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig
     , fmap (("FixedResponseConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig
+    , fmap (("ForwardConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionForwardConfig
     , fmap (("Order",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionOrder
     , fmap (("RedirectConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionRedirectConfig
     , fmap (("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn
@@ -50,6 +53,7 @@
   { _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig = Nothing
   , _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig = Nothing
   , _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleActionForwardConfig = Nothing
   , _elasticLoadBalancingV2ListenerRuleActionOrder = Nothing
   , _elasticLoadBalancingV2ListenerRuleActionRedirectConfig = Nothing
   , _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn = Nothing
@@ -67,6 +71,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig
 elbvlraFixedResponseConfig :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe ElasticLoadBalancingV2ListenerRuleFixedResponseConfig)
 elbvlraFixedResponseConfig = lens _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig
+elbvlraForwardConfig :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe ElasticLoadBalancingV2ListenerRuleForwardConfig)
+elbvlraForwardConfig = lens _elasticLoadBalancingV2ListenerRuleActionForwardConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionForwardConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-order
 elbvlraOrder :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe (Val Integer))
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleForwardConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleForwardConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleForwardConfig.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-forwardconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleForwardConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupTuple
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleForwardConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleForwardConfig' for a more convenient
+-- constructor.
+data ElasticLoadBalancingV2ListenerRuleForwardConfig =
+  ElasticLoadBalancingV2ListenerRuleForwardConfig
+  { _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroupStickinessConfig :: Maybe ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig
+  , _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroups :: Maybe [ElasticLoadBalancingV2ListenerRuleTargetGroupTuple]
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleForwardConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleForwardConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("TargetGroupStickinessConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroupStickinessConfig
+    , fmap (("TargetGroups",) . toJSON) _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroups
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleForwardConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleForwardConfig
+  :: ElasticLoadBalancingV2ListenerRuleForwardConfig
+elasticLoadBalancingV2ListenerRuleForwardConfig  =
+  ElasticLoadBalancingV2ListenerRuleForwardConfig
+  { _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroupStickinessConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroups = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-forwardconfig.html#cfn-elasticloadbalancingv2-listenerrule-forwardconfig-targetgroupstickinessconfig
+elbvlrfcTargetGroupStickinessConfig :: Lens' ElasticLoadBalancingV2ListenerRuleForwardConfig (Maybe ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig)
+elbvlrfcTargetGroupStickinessConfig = lens _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroupStickinessConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroupStickinessConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-forwardconfig.html#cfn-elasticloadbalancingv2-listenerrule-forwardconfig-targetgroups
+elbvlrfcTargetGroups :: Lens' ElasticLoadBalancingV2ListenerRuleForwardConfig (Maybe [ElasticLoadBalancingV2ListenerRuleTargetGroupTuple])
+elbvlrfcTargetGroups = lens _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroups (\s a -> s { _elasticLoadBalancingV2ListenerRuleForwardConfigTargetGroups = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgroupstickinessconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig' for a
+-- more convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig =
+  ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig
+  { _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigDurationSeconds :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigEnabled :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("DurationSeconds",) . toJSON) _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigDurationSeconds
+    , fmap (("Enabled",) . toJSON) _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigEnabled
+    ]
+
+-- | Constructor for
+-- 'ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig
+  :: ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig
+elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig  =
+  ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig
+  { _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigDurationSeconds = Nothing
+  , _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigEnabled = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgroupstickinessconfig.html#cfn-elasticloadbalancingv2-listenerrule-targetgroupstickinessconfig-durationseconds
+elbvlrtgscDurationSeconds :: Lens' ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig (Maybe (Val Integer))
+elbvlrtgscDurationSeconds = lens _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigDurationSeconds (\s a -> s { _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigDurationSeconds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgroupstickinessconfig.html#cfn-elasticloadbalancingv2-listenerrule-targetgroupstickinessconfig-enabled
+elbvlrtgscEnabled :: Lens' ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig (Maybe (Val Bool))
+elbvlrtgscEnabled = lens _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigEnabled (\s a -> s { _elasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfigEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleTargetGroupTuple.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleTargetGroupTuple.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleTargetGroupTuple.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgrouptuple.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupTuple where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleTargetGroupTuple. See
+-- 'elasticLoadBalancingV2ListenerRuleTargetGroupTuple' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleTargetGroupTuple =
+  ElasticLoadBalancingV2ListenerRuleTargetGroupTuple
+  { _elasticLoadBalancingV2ListenerRuleTargetGroupTupleTargetGroupArn :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleTargetGroupTupleWeight :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleTargetGroupTuple where
+  toJSON ElasticLoadBalancingV2ListenerRuleTargetGroupTuple{..} =
+    object $
+    catMaybes
+    [ fmap (("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleTargetGroupTupleTargetGroupArn
+    , fmap (("Weight",) . toJSON) _elasticLoadBalancingV2ListenerRuleTargetGroupTupleWeight
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleTargetGroupTuple'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleTargetGroupTuple
+  :: ElasticLoadBalancingV2ListenerRuleTargetGroupTuple
+elasticLoadBalancingV2ListenerRuleTargetGroupTuple  =
+  ElasticLoadBalancingV2ListenerRuleTargetGroupTuple
+  { _elasticLoadBalancingV2ListenerRuleTargetGroupTupleTargetGroupArn = Nothing
+  , _elasticLoadBalancingV2ListenerRuleTargetGroupTupleWeight = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgrouptuple.html#cfn-elasticloadbalancingv2-listenerrule-targetgrouptuple-targetgrouparn
+elbvlrtgtTargetGroupArn :: Lens' ElasticLoadBalancingV2ListenerRuleTargetGroupTuple (Maybe (Val Text))
+elbvlrtgtTargetGroupArn = lens _elasticLoadBalancingV2ListenerRuleTargetGroupTupleTargetGroupArn (\s a -> s { _elasticLoadBalancingV2ListenerRuleTargetGroupTupleTargetGroupArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-targetgrouptuple.html#cfn-elasticloadbalancingv2-listenerrule-targetgrouptuple-weight
+elbvlrtgtWeight :: Lens' ElasticLoadBalancingV2ListenerRuleTargetGroupTuple (Maybe (Val Integer))
+elbvlrtgtWeight = lens _elasticLoadBalancingV2ListenerRuleTargetGroupTupleWeight (\s a -> s { _elasticLoadBalancingV2ListenerRuleTargetGroupTupleWeight = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgroupstickinessconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig. See
+-- 'elasticLoadBalancingV2ListenerTargetGroupStickinessConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig =
+  ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig
+  { _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigDurationSeconds :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigEnabled :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig where
+  toJSON ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("DurationSeconds",) . toJSON) _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigDurationSeconds
+    , fmap (("Enabled",) . toJSON) _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigEnabled
+    ]
+
+-- | Constructor for
+-- 'ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig' containing
+-- required fields as arguments.
+elasticLoadBalancingV2ListenerTargetGroupStickinessConfig
+  :: ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig
+elasticLoadBalancingV2ListenerTargetGroupStickinessConfig  =
+  ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig
+  { _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigDurationSeconds = Nothing
+  , _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigEnabled = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgroupstickinessconfig.html#cfn-elasticloadbalancingv2-listener-targetgroupstickinessconfig-durationseconds
+elbvltgscDurationSeconds :: Lens' ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig (Maybe (Val Integer))
+elbvltgscDurationSeconds = lens _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigDurationSeconds (\s a -> s { _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigDurationSeconds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgroupstickinessconfig.html#cfn-elasticloadbalancingv2-listener-targetgroupstickinessconfig-enabled
+elbvltgscEnabled :: Lens' ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig (Maybe (Val Bool))
+elbvltgscEnabled = lens _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigEnabled (\s a -> s { _elasticLoadBalancingV2ListenerTargetGroupStickinessConfigEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerTargetGroupTuple.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerTargetGroupTuple.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerTargetGroupTuple.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgrouptuple.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupTuple where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerTargetGroupTuple. See
+-- 'elasticLoadBalancingV2ListenerTargetGroupTuple' for a more convenient
+-- constructor.
+data ElasticLoadBalancingV2ListenerTargetGroupTuple =
+  ElasticLoadBalancingV2ListenerTargetGroupTuple
+  { _elasticLoadBalancingV2ListenerTargetGroupTupleTargetGroupArn :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerTargetGroupTupleWeight :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerTargetGroupTuple where
+  toJSON ElasticLoadBalancingV2ListenerTargetGroupTuple{..} =
+    object $
+    catMaybes
+    [ fmap (("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerTargetGroupTupleTargetGroupArn
+    , fmap (("Weight",) . toJSON) _elasticLoadBalancingV2ListenerTargetGroupTupleWeight
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerTargetGroupTuple'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerTargetGroupTuple
+  :: ElasticLoadBalancingV2ListenerTargetGroupTuple
+elasticLoadBalancingV2ListenerTargetGroupTuple  =
+  ElasticLoadBalancingV2ListenerTargetGroupTuple
+  { _elasticLoadBalancingV2ListenerTargetGroupTupleTargetGroupArn = Nothing
+  , _elasticLoadBalancingV2ListenerTargetGroupTupleWeight = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgrouptuple.html#cfn-elasticloadbalancingv2-listener-targetgrouptuple-targetgrouparn
+elbvltgtTargetGroupArn :: Lens' ElasticLoadBalancingV2ListenerTargetGroupTuple (Maybe (Val Text))
+elbvltgtTargetGroupArn = lens _elasticLoadBalancingV2ListenerTargetGroupTupleTargetGroupArn (\s a -> s { _elasticLoadBalancingV2ListenerTargetGroupTupleTargetGroupArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-targetgrouptuple.html#cfn-elasticloadbalancingv2-listener-targetgrouptuple-weight
+elbvltgtWeight :: Lens' ElasticLoadBalancingV2ListenerTargetGroupTuple (Maybe (Val Integer))
+elbvltgtWeight = lens _elasticLoadBalancingV2ListenerTargetGroupTupleWeight (\s a -> s { _elasticLoadBalancingV2ListenerTargetGroupTupleWeight = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/FMSPolicyIEMap.hs b/library-gen/Stratosphere/ResourceProperties/FMSPolicyIEMap.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/FMSPolicyIEMap.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-iemap.html
+
+module Stratosphere.ResourceProperties.FMSPolicyIEMap where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for FMSPolicyIEMap. See 'fmsPolicyIEMap' for a
+-- more convenient constructor.
+data FMSPolicyIEMap =
+  FMSPolicyIEMap
+  { _fMSPolicyIEMapACCOUNT :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON FMSPolicyIEMap where
+  toJSON FMSPolicyIEMap{..} =
+    object $
+    catMaybes
+    [ fmap (("ACCOUNT",) . toJSON) _fMSPolicyIEMapACCOUNT
+    ]
+
+-- | Constructor for 'FMSPolicyIEMap' containing required fields as arguments.
+fmsPolicyIEMap
+  :: FMSPolicyIEMap
+fmsPolicyIEMap  =
+  FMSPolicyIEMap
+  { _fMSPolicyIEMapACCOUNT = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-iemap.html#cfn-fms-policy-iemap-account
+fmspiemACCOUNT :: Lens' FMSPolicyIEMap (Maybe (ValList Text))
+fmspiemACCOUNT = lens _fMSPolicyIEMapACCOUNT (\s a -> s { _fMSPolicyIEMapACCOUNT = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/FMSPolicyPolicyTag.hs b/library-gen/Stratosphere/ResourceProperties/FMSPolicyPolicyTag.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/FMSPolicyPolicyTag.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-policytag.html
+
+module Stratosphere.ResourceProperties.FMSPolicyPolicyTag where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for FMSPolicyPolicyTag. See
+-- 'fmsPolicyPolicyTag' for a more convenient constructor.
+data FMSPolicyPolicyTag =
+  FMSPolicyPolicyTag
+  { _fMSPolicyPolicyTagKey :: Val Text
+  , _fMSPolicyPolicyTagValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON FMSPolicyPolicyTag where
+  toJSON FMSPolicyPolicyTag{..} =
+    object $
+    catMaybes
+    [ (Just . ("Key",) . toJSON) _fMSPolicyPolicyTagKey
+    , (Just . ("Value",) . toJSON) _fMSPolicyPolicyTagValue
+    ]
+
+-- | Constructor for 'FMSPolicyPolicyTag' containing required fields as
+-- arguments.
+fmsPolicyPolicyTag
+  :: Val Text -- ^ 'fmspptKey'
+  -> Val Text -- ^ 'fmspptValue'
+  -> FMSPolicyPolicyTag
+fmsPolicyPolicyTag keyarg valuearg =
+  FMSPolicyPolicyTag
+  { _fMSPolicyPolicyTagKey = keyarg
+  , _fMSPolicyPolicyTagValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-policytag.html#cfn-fms-policy-policytag-key
+fmspptKey :: Lens' FMSPolicyPolicyTag (Val Text)
+fmspptKey = lens _fMSPolicyPolicyTagKey (\s a -> s { _fMSPolicyPolicyTagKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-policytag.html#cfn-fms-policy-policytag-value
+fmspptValue :: Lens' FMSPolicyPolicyTag (Val Text)
+fmspptValue = lens _fMSPolicyPolicyTagValue (\s a -> s { _fMSPolicyPolicyTagValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/FMSPolicyResourceTag.hs b/library-gen/Stratosphere/ResourceProperties/FMSPolicyResourceTag.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/FMSPolicyResourceTag.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-resourcetag.html
+
+module Stratosphere.ResourceProperties.FMSPolicyResourceTag where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for FMSPolicyResourceTag. See
+-- 'fmsPolicyResourceTag' for a more convenient constructor.
+data FMSPolicyResourceTag =
+  FMSPolicyResourceTag
+  { _fMSPolicyResourceTagKey :: Val Text
+  , _fMSPolicyResourceTagValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON FMSPolicyResourceTag where
+  toJSON FMSPolicyResourceTag{..} =
+    object $
+    catMaybes
+    [ (Just . ("Key",) . toJSON) _fMSPolicyResourceTagKey
+    , fmap (("Value",) . toJSON) _fMSPolicyResourceTagValue
+    ]
+
+-- | Constructor for 'FMSPolicyResourceTag' containing required fields as
+-- arguments.
+fmsPolicyResourceTag
+  :: Val Text -- ^ 'fmsprtKey'
+  -> FMSPolicyResourceTag
+fmsPolicyResourceTag keyarg =
+  FMSPolicyResourceTag
+  { _fMSPolicyResourceTagKey = keyarg
+  , _fMSPolicyResourceTagValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-resourcetag.html#cfn-fms-policy-resourcetag-key
+fmsprtKey :: Lens' FMSPolicyResourceTag (Val Text)
+fmsprtKey = lens _fMSPolicyResourceTagKey (\s a -> s { _fMSPolicyResourceTagKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fms-policy-resourcetag.html#cfn-fms-policy-resourcetag-value
+fmsprtValue :: Lens' FMSPolicyResourceTag (Maybe (Val Text))
+fmsprtValue = lens _fMSPolicyResourceTagValue (\s a -> s { _fMSPolicyResourceTagValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/FSxFileSystemLustreConfiguration.hs
@@ -14,9 +14,11 @@
 -- 'fSxFileSystemLustreConfiguration' for a more convenient constructor.
 data FSxFileSystemLustreConfiguration =
   FSxFileSystemLustreConfiguration
-  { _fSxFileSystemLustreConfigurationExportPath :: Maybe (Val Text)
+  { _fSxFileSystemLustreConfigurationDeploymentType :: Maybe (Val Text)
+  , _fSxFileSystemLustreConfigurationExportPath :: Maybe (Val Text)
   , _fSxFileSystemLustreConfigurationImportPath :: Maybe (Val Text)
   , _fSxFileSystemLustreConfigurationImportedFileChunkSize :: Maybe (Val Integer)
+  , _fSxFileSystemLustreConfigurationPerUnitStorageThroughput :: Maybe (Val Integer)
   , _fSxFileSystemLustreConfigurationWeeklyMaintenanceStartTime :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -24,9 +26,11 @@
   toJSON FSxFileSystemLustreConfiguration{..} =
     object $
     catMaybes
-    [ fmap (("ExportPath",) . toJSON) _fSxFileSystemLustreConfigurationExportPath
+    [ fmap (("DeploymentType",) . toJSON) _fSxFileSystemLustreConfigurationDeploymentType
+    , fmap (("ExportPath",) . toJSON) _fSxFileSystemLustreConfigurationExportPath
     , fmap (("ImportPath",) . toJSON) _fSxFileSystemLustreConfigurationImportPath
     , fmap (("ImportedFileChunkSize",) . toJSON) _fSxFileSystemLustreConfigurationImportedFileChunkSize
+    , fmap (("PerUnitStorageThroughput",) . toJSON) _fSxFileSystemLustreConfigurationPerUnitStorageThroughput
     , fmap (("WeeklyMaintenanceStartTime",) . toJSON) _fSxFileSystemLustreConfigurationWeeklyMaintenanceStartTime
     ]
 
@@ -36,12 +40,18 @@
   :: FSxFileSystemLustreConfiguration
 fSxFileSystemLustreConfiguration  =
   FSxFileSystemLustreConfiguration
-  { _fSxFileSystemLustreConfigurationExportPath = Nothing
+  { _fSxFileSystemLustreConfigurationDeploymentType = Nothing
+  , _fSxFileSystemLustreConfigurationExportPath = Nothing
   , _fSxFileSystemLustreConfigurationImportPath = Nothing
   , _fSxFileSystemLustreConfigurationImportedFileChunkSize = Nothing
+  , _fSxFileSystemLustreConfigurationPerUnitStorageThroughput = Nothing
   , _fSxFileSystemLustreConfigurationWeeklyMaintenanceStartTime = Nothing
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-deploymenttype
+fsfslcDeploymentType :: Lens' FSxFileSystemLustreConfiguration (Maybe (Val Text))
+fsfslcDeploymentType = lens _fSxFileSystemLustreConfigurationDeploymentType (\s a -> s { _fSxFileSystemLustreConfigurationDeploymentType = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-exportpath
 fsfslcExportPath :: Lens' FSxFileSystemLustreConfiguration (Maybe (Val Text))
 fsfslcExportPath = lens _fSxFileSystemLustreConfigurationExportPath (\s a -> s { _fSxFileSystemLustreConfigurationExportPath = a })
@@ -53,6 +63,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-importedfilechunksize
 fsfslcImportedFileChunkSize :: Lens' FSxFileSystemLustreConfiguration (Maybe (Val Integer))
 fsfslcImportedFileChunkSize = lens _fSxFileSystemLustreConfigurationImportedFileChunkSize (\s a -> s { _fSxFileSystemLustreConfigurationImportedFileChunkSize = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-perunitstoragethroughput
+fsfslcPerUnitStorageThroughput :: Lens' FSxFileSystemLustreConfiguration (Maybe (Val Integer))
+fsfslcPerUnitStorageThroughput = lens _fSxFileSystemLustreConfigurationPerUnitStorageThroughput (\s a -> s { _fSxFileSystemLustreConfigurationPerUnitStorageThroughput = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-weeklymaintenancestarttime
 fsfslcWeeklyMaintenanceStartTime :: Lens' FSxFileSystemLustreConfiguration (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionResourceDownloadOwnerSetting.hs b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionResourceDownloadOwnerSetting.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionResourceDownloadOwnerSetting.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-resourcedownloadownersetting.html
+
+module Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDownloadOwnerSetting where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- GreengrassResourceDefinitionResourceDownloadOwnerSetting. See
+-- 'greengrassResourceDefinitionResourceDownloadOwnerSetting' for a more
+-- convenient constructor.
+data GreengrassResourceDefinitionResourceDownloadOwnerSetting =
+  GreengrassResourceDefinitionResourceDownloadOwnerSetting
+  { _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupOwner :: Val Text
+  , _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupPermission :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON GreengrassResourceDefinitionResourceDownloadOwnerSetting where
+  toJSON GreengrassResourceDefinitionResourceDownloadOwnerSetting{..} =
+    object $
+    catMaybes
+    [ (Just . ("GroupOwner",) . toJSON) _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupOwner
+    , (Just . ("GroupPermission",) . toJSON) _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupPermission
+    ]
+
+-- | Constructor for
+-- 'GreengrassResourceDefinitionResourceDownloadOwnerSetting' containing
+-- required fields as arguments.
+greengrassResourceDefinitionResourceDownloadOwnerSetting
+  :: Val Text -- ^ 'grdrdosGroupOwner'
+  -> Val Text -- ^ 'grdrdosGroupPermission'
+  -> GreengrassResourceDefinitionResourceDownloadOwnerSetting
+greengrassResourceDefinitionResourceDownloadOwnerSetting groupOwnerarg groupPermissionarg =
+  GreengrassResourceDefinitionResourceDownloadOwnerSetting
+  { _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupOwner = groupOwnerarg
+  , _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupPermission = groupPermissionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-resourcedownloadownersetting.html#cfn-greengrass-resourcedefinition-resourcedownloadownersetting-groupowner
+grdrdosGroupOwner :: Lens' GreengrassResourceDefinitionResourceDownloadOwnerSetting (Val Text)
+grdrdosGroupOwner = lens _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupOwner (\s a -> s { _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupOwner = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-resourcedownloadownersetting.html#cfn-greengrass-resourcedefinition-resourcedownloadownersetting-grouppermission
+grdrdosGroupPermission :: Lens' GreengrassResourceDefinitionResourceDownloadOwnerSetting (Val Text)
+grdrdosGroupPermission = lens _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupPermission (\s a -> s { _greengrassResourceDefinitionResourceDownloadOwnerSettingGroupPermission = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionS3MachineLearningModelResourceData.hs b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionS3MachineLearningModelResourceData.hs
--- a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionS3MachineLearningModelResourceData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionS3MachineLearningModelResourceData.hs
@@ -8,7 +8,7 @@
 module Stratosphere.ResourceProperties.GreengrassResourceDefinitionS3MachineLearningModelResourceData where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDownloadOwnerSetting
 
 -- | Full data type definition for
 -- GreengrassResourceDefinitionS3MachineLearningModelResourceData. See
@@ -17,6 +17,7 @@
 data GreengrassResourceDefinitionS3MachineLearningModelResourceData =
   GreengrassResourceDefinitionS3MachineLearningModelResourceData
   { _greengrassResourceDefinitionS3MachineLearningModelResourceDataDestinationPath :: Val Text
+  , _greengrassResourceDefinitionS3MachineLearningModelResourceDataOwnerSetting :: Maybe GreengrassResourceDefinitionResourceDownloadOwnerSetting
   , _greengrassResourceDefinitionS3MachineLearningModelResourceDataS3Uri :: Val Text
   } deriving (Show, Eq)
 
@@ -25,6 +26,7 @@
     object $
     catMaybes
     [ (Just . ("DestinationPath",) . toJSON) _greengrassResourceDefinitionS3MachineLearningModelResourceDataDestinationPath
+    , fmap (("OwnerSetting",) . toJSON) _greengrassResourceDefinitionS3MachineLearningModelResourceDataOwnerSetting
     , (Just . ("S3Uri",) . toJSON) _greengrassResourceDefinitionS3MachineLearningModelResourceDataS3Uri
     ]
 
@@ -38,12 +40,17 @@
 greengrassResourceDefinitionS3MachineLearningModelResourceData destinationPatharg s3Uriarg =
   GreengrassResourceDefinitionS3MachineLearningModelResourceData
   { _greengrassResourceDefinitionS3MachineLearningModelResourceDataDestinationPath = destinationPatharg
+  , _greengrassResourceDefinitionS3MachineLearningModelResourceDataOwnerSetting = Nothing
   , _greengrassResourceDefinitionS3MachineLearningModelResourceDataS3Uri = s3Uriarg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-s3machinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinition-s3machinelearningmodelresourcedata-destinationpath
 grdsmlmrdDestinationPath :: Lens' GreengrassResourceDefinitionS3MachineLearningModelResourceData (Val Text)
 grdsmlmrdDestinationPath = lens _greengrassResourceDefinitionS3MachineLearningModelResourceDataDestinationPath (\s a -> s { _greengrassResourceDefinitionS3MachineLearningModelResourceDataDestinationPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-s3machinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinition-s3machinelearningmodelresourcedata-ownersetting
+grdsmlmrdOwnerSetting :: Lens' GreengrassResourceDefinitionS3MachineLearningModelResourceData (Maybe GreengrassResourceDefinitionResourceDownloadOwnerSetting)
+grdsmlmrdOwnerSetting = lens _greengrassResourceDefinitionS3MachineLearningModelResourceDataOwnerSetting (\s a -> s { _greengrassResourceDefinitionS3MachineLearningModelResourceDataOwnerSetting = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-s3machinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinition-s3machinelearningmodelresourcedata-s3uri
 grdsmlmrdS3Uri :: Lens' GreengrassResourceDefinitionS3MachineLearningModelResourceData (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData.hs b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData.hs
--- a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData.hs
@@ -8,7 +8,7 @@
 module Stratosphere.ResourceProperties.GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDownloadOwnerSetting
 
 -- | Full data type definition for
 -- GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData.
@@ -18,6 +18,7 @@
 data GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData =
   GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData
   { _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataDestinationPath :: Val Text
+  , _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataOwnerSetting :: Maybe GreengrassResourceDefinitionResourceDownloadOwnerSetting
   , _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataSageMakerJobArn :: Val Text
   } deriving (Show, Eq)
 
@@ -26,6 +27,7 @@
     object $
     catMaybes
     [ (Just . ("DestinationPath",) . toJSON) _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataDestinationPath
+    , fmap (("OwnerSetting",) . toJSON) _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataOwnerSetting
     , (Just . ("SageMakerJobArn",) . toJSON) _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataSageMakerJobArn
     ]
 
@@ -39,12 +41,17 @@
 greengrassResourceDefinitionSageMakerMachineLearningModelResourceData destinationPatharg sageMakerJobArnarg =
   GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData
   { _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataDestinationPath = destinationPatharg
+  , _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataOwnerSetting = Nothing
   , _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataSageMakerJobArn = sageMakerJobArnarg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-sagemakermachinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinition-sagemakermachinelearningmodelresourcedata-destinationpath
 grdsmmlmrdDestinationPath :: Lens' GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData (Val Text)
 grdsmmlmrdDestinationPath = lens _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataDestinationPath (\s a -> s { _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataDestinationPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-sagemakermachinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinition-sagemakermachinelearningmodelresourcedata-ownersetting
+grdsmmlmrdOwnerSetting :: Lens' GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData (Maybe GreengrassResourceDefinitionResourceDownloadOwnerSetting)
+grdsmmlmrdOwnerSetting = lens _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataOwnerSetting (\s a -> s { _greengrassResourceDefinitionSageMakerMachineLearningModelResourceDataOwnerSetting = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinition-sagemakermachinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinition-sagemakermachinelearningmodelresourcedata-sagemakerjobarn
 grdsmmlmrdSageMakerJobArn :: Lens' GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting.hs b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-resourcedownloadownersetting.html
+
+module Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting. See
+-- 'greengrassResourceDefinitionVersionResourceDownloadOwnerSetting' for a
+-- more convenient constructor.
+data GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting =
+  GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
+  { _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupOwner :: Val Text
+  , _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupPermission :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting where
+  toJSON GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting{..} =
+    object $
+    catMaybes
+    [ (Just . ("GroupOwner",) . toJSON) _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupOwner
+    , (Just . ("GroupPermission",) . toJSON) _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupPermission
+    ]
+
+-- | Constructor for
+-- 'GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting'
+-- containing required fields as arguments.
+greengrassResourceDefinitionVersionResourceDownloadOwnerSetting
+  :: Val Text -- ^ 'grdvrdosGroupOwner'
+  -> Val Text -- ^ 'grdvrdosGroupPermission'
+  -> GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
+greengrassResourceDefinitionVersionResourceDownloadOwnerSetting groupOwnerarg groupPermissionarg =
+  GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
+  { _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupOwner = groupOwnerarg
+  , _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupPermission = groupPermissionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-resourcedownloadownersetting.html#cfn-greengrass-resourcedefinitionversion-resourcedownloadownersetting-groupowner
+grdvrdosGroupOwner :: Lens' GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting (Val Text)
+grdvrdosGroupOwner = lens _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupOwner (\s a -> s { _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupOwner = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-resourcedownloadownersetting.html#cfn-greengrass-resourcedefinitionversion-resourcedownloadownersetting-grouppermission
+grdvrdosGroupPermission :: Lens' GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting (Val Text)
+grdvrdosGroupPermission = lens _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupPermission (\s a -> s { _greengrassResourceDefinitionVersionResourceDownloadOwnerSettingGroupPermission = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData.hs b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData.hs
--- a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData.hs
@@ -8,7 +8,7 @@
 module Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
 
 -- | Full data type definition for
 -- GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData.
@@ -18,6 +18,7 @@
 data GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData =
   GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData
   { _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataDestinationPath :: Val Text
+  , _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataOwnerSetting :: Maybe GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
   , _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataS3Uri :: Val Text
   } deriving (Show, Eq)
 
@@ -26,6 +27,7 @@
     object $
     catMaybes
     [ (Just . ("DestinationPath",) . toJSON) _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataDestinationPath
+    , fmap (("OwnerSetting",) . toJSON) _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataOwnerSetting
     , (Just . ("S3Uri",) . toJSON) _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataS3Uri
     ]
 
@@ -39,12 +41,17 @@
 greengrassResourceDefinitionVersionS3MachineLearningModelResourceData destinationPatharg s3Uriarg =
   GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData
   { _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataDestinationPath = destinationPatharg
+  , _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataOwnerSetting = Nothing
   , _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataS3Uri = s3Uriarg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-s3machinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinitionversion-s3machinelearningmodelresourcedata-destinationpath
 grdvsmlmrdDestinationPath :: Lens' GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData (Val Text)
 grdvsmlmrdDestinationPath = lens _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataDestinationPath (\s a -> s { _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataDestinationPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-s3machinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinitionversion-s3machinelearningmodelresourcedata-ownersetting
+grdvsmlmrdOwnerSetting :: Lens' GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData (Maybe GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting)
+grdvsmlmrdOwnerSetting = lens _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataOwnerSetting (\s a -> s { _greengrassResourceDefinitionVersionS3MachineLearningModelResourceDataOwnerSetting = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-s3machinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinitionversion-s3machinelearningmodelresourcedata-s3uri
 grdvsmlmrdS3Uri :: Lens' GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData.hs b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData.hs
--- a/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData.hs
@@ -8,7 +8,7 @@
 module Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
 
 -- | Full data type definition for
 -- GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData.
@@ -18,6 +18,7 @@
 data GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData =
   GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData
   { _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataDestinationPath :: Val Text
+  , _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataOwnerSetting :: Maybe GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
   , _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataSageMakerJobArn :: Val Text
   } deriving (Show, Eq)
 
@@ -26,6 +27,7 @@
     object $
     catMaybes
     [ (Just . ("DestinationPath",) . toJSON) _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataDestinationPath
+    , fmap (("OwnerSetting",) . toJSON) _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataOwnerSetting
     , (Just . ("SageMakerJobArn",) . toJSON) _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataSageMakerJobArn
     ]
 
@@ -39,12 +41,17 @@
 greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData destinationPatharg sageMakerJobArnarg =
   GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData
   { _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataDestinationPath = destinationPatharg
+  , _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataOwnerSetting = Nothing
   , _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataSageMakerJobArn = sageMakerJobArnarg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-sagemakermachinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinitionversion-sagemakermachinelearningmodelresourcedata-destinationpath
 grdvsmmlmrdDestinationPath :: Lens' GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData (Val Text)
 grdvsmmlmrdDestinationPath = lens _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataDestinationPath (\s a -> s { _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataDestinationPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-sagemakermachinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinitionversion-sagemakermachinelearningmodelresourcedata-ownersetting
+grdvsmmlmrdOwnerSetting :: Lens' GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData (Maybe GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting)
+grdvsmmlmrdOwnerSetting = lens _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataOwnerSetting (\s a -> s { _greengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceDataOwnerSetting = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-resourcedefinitionversion-sagemakermachinelearningmodelresourcedata.html#cfn-greengrass-resourcedefinitionversion-sagemakermachinelearningmodelresourcedata-sagemakerjobarn
 grdvsmmlmrdSageMakerJobArn :: Lens' GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/MediaLiveChannelMultiplexProgramChannelDestinationSettings.hs b/library-gen/Stratosphere/ResourceProperties/MediaLiveChannelMultiplexProgramChannelDestinationSettings.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MediaLiveChannelMultiplexProgramChannelDestinationSettings.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html
+
+module Stratosphere.ResourceProperties.MediaLiveChannelMultiplexProgramChannelDestinationSettings where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- MediaLiveChannelMultiplexProgramChannelDestinationSettings. See
+-- 'mediaLiveChannelMultiplexProgramChannelDestinationSettings' for a more
+-- convenient constructor.
+data MediaLiveChannelMultiplexProgramChannelDestinationSettings =
+  MediaLiveChannelMultiplexProgramChannelDestinationSettings
+  { _mediaLiveChannelMultiplexProgramChannelDestinationSettingsMultiplexId :: Maybe (Val Text)
+  , _mediaLiveChannelMultiplexProgramChannelDestinationSettingsProgramName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON MediaLiveChannelMultiplexProgramChannelDestinationSettings where
+  toJSON MediaLiveChannelMultiplexProgramChannelDestinationSettings{..} =
+    object $
+    catMaybes
+    [ fmap (("MultiplexId",) . toJSON) _mediaLiveChannelMultiplexProgramChannelDestinationSettingsMultiplexId
+    , fmap (("ProgramName",) . toJSON) _mediaLiveChannelMultiplexProgramChannelDestinationSettingsProgramName
+    ]
+
+-- | Constructor for
+-- 'MediaLiveChannelMultiplexProgramChannelDestinationSettings' containing
+-- required fields as arguments.
+mediaLiveChannelMultiplexProgramChannelDestinationSettings
+  :: MediaLiveChannelMultiplexProgramChannelDestinationSettings
+mediaLiveChannelMultiplexProgramChannelDestinationSettings  =
+  MediaLiveChannelMultiplexProgramChannelDestinationSettings
+  { _mediaLiveChannelMultiplexProgramChannelDestinationSettingsMultiplexId = Nothing
+  , _mediaLiveChannelMultiplexProgramChannelDestinationSettingsProgramName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-multiplexid
+mlcmpcdsMultiplexId :: Lens' MediaLiveChannelMultiplexProgramChannelDestinationSettings (Maybe (Val Text))
+mlcmpcdsMultiplexId = lens _mediaLiveChannelMultiplexProgramChannelDestinationSettingsMultiplexId (\s a -> s { _mediaLiveChannelMultiplexProgramChannelDestinationSettingsMultiplexId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-programname
+mlcmpcdsProgramName :: Lens' MediaLiveChannelMultiplexProgramChannelDestinationSettings (Maybe (Val Text))
+mlcmpcdsProgramName = lens _mediaLiveChannelMultiplexProgramChannelDestinationSettingsProgramName (\s a -> s { _mediaLiveChannelMultiplexProgramChannelDestinationSettingsProgramName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MediaLiveChannelOutputDestination.hs b/library-gen/Stratosphere/ResourceProperties/MediaLiveChannelOutputDestination.hs
--- a/library-gen/Stratosphere/ResourceProperties/MediaLiveChannelOutputDestination.hs
+++ b/library-gen/Stratosphere/ResourceProperties/MediaLiveChannelOutputDestination.hs
@@ -9,6 +9,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.MediaLiveChannelMediaPackageOutputDestinationSettings
+import Stratosphere.ResourceProperties.MediaLiveChannelMultiplexProgramChannelDestinationSettings
 import Stratosphere.ResourceProperties.MediaLiveChannelOutputDestinationSettings
 
 -- | Full data type definition for MediaLiveChannelOutputDestination. See
@@ -17,6 +18,7 @@
   MediaLiveChannelOutputDestination
   { _mediaLiveChannelOutputDestinationId :: Maybe (Val Text)
   , _mediaLiveChannelOutputDestinationMediaPackageSettings :: Maybe [MediaLiveChannelMediaPackageOutputDestinationSettings]
+  , _mediaLiveChannelOutputDestinationMultiplexSettings :: Maybe MediaLiveChannelMultiplexProgramChannelDestinationSettings
   , _mediaLiveChannelOutputDestinationSettings :: Maybe [MediaLiveChannelOutputDestinationSettings]
   } deriving (Show, Eq)
 
@@ -26,6 +28,7 @@
     catMaybes
     [ fmap (("Id",) . toJSON) _mediaLiveChannelOutputDestinationId
     , fmap (("MediaPackageSettings",) . toJSON) _mediaLiveChannelOutputDestinationMediaPackageSettings
+    , fmap (("MultiplexSettings",) . toJSON) _mediaLiveChannelOutputDestinationMultiplexSettings
     , fmap (("Settings",) . toJSON) _mediaLiveChannelOutputDestinationSettings
     ]
 
@@ -37,6 +40,7 @@
   MediaLiveChannelOutputDestination
   { _mediaLiveChannelOutputDestinationId = Nothing
   , _mediaLiveChannelOutputDestinationMediaPackageSettings = Nothing
+  , _mediaLiveChannelOutputDestinationMultiplexSettings = Nothing
   , _mediaLiveChannelOutputDestinationSettings = Nothing
   }
 
@@ -47,6 +51,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-mediapackagesettings
 mlcodMediaPackageSettings :: Lens' MediaLiveChannelOutputDestination (Maybe [MediaLiveChannelMediaPackageOutputDestinationSettings])
 mlcodMediaPackageSettings = lens _mediaLiveChannelOutputDestinationMediaPackageSettings (\s a -> s { _mediaLiveChannelOutputDestinationMediaPackageSettings = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-multiplexsettings
+mlcodMultiplexSettings :: Lens' MediaLiveChannelOutputDestination (Maybe MediaLiveChannelMultiplexProgramChannelDestinationSettings)
+mlcodMultiplexSettings = lens _mediaLiveChannelOutputDestinationMultiplexSettings (\s a -> s { _mediaLiveChannelOutputDestinationMultiplexSettings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-settings
 mlcodSettings :: Lens' MediaLiveChannelOutputDestination (Maybe [MediaLiveChannelOutputDestinationSettings])
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupAndStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupAndStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupAndStatementOne.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-andstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementTwo
+
+-- | Full data type definition for WAFv2RuleGroupAndStatementOne. See
+-- 'waFv2RuleGroupAndStatementOne' for a more convenient constructor.
+data WAFv2RuleGroupAndStatementOne =
+  WAFv2RuleGroupAndStatementOne
+  { _wAFv2RuleGroupAndStatementOneStatements :: [WAFv2RuleGroupStatementTwo]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupAndStatementOne where
+  toJSON WAFv2RuleGroupAndStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2RuleGroupAndStatementOneStatements
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupAndStatementOne' containing required
+-- fields as arguments.
+waFv2RuleGroupAndStatementOne
+  :: [WAFv2RuleGroupStatementTwo] -- ^ 'wafrgasoStatements'
+  -> WAFv2RuleGroupAndStatementOne
+waFv2RuleGroupAndStatementOne statementsarg =
+  WAFv2RuleGroupAndStatementOne
+  { _wAFv2RuleGroupAndStatementOneStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-andstatementone.html#cfn-wafv2-rulegroup-andstatementone-statements
+wafrgasoStatements :: Lens' WAFv2RuleGroupAndStatementOne [WAFv2RuleGroupStatementTwo]
+wafrgasoStatements = lens _wAFv2RuleGroupAndStatementOneStatements (\s a -> s { _wAFv2RuleGroupAndStatementOneStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupAndStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupAndStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupAndStatementTwo.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-andstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementThree
+
+-- | Full data type definition for WAFv2RuleGroupAndStatementTwo. See
+-- 'waFv2RuleGroupAndStatementTwo' for a more convenient constructor.
+data WAFv2RuleGroupAndStatementTwo =
+  WAFv2RuleGroupAndStatementTwo
+  { _wAFv2RuleGroupAndStatementTwoStatements :: [WAFv2RuleGroupStatementThree]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupAndStatementTwo where
+  toJSON WAFv2RuleGroupAndStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2RuleGroupAndStatementTwoStatements
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupAndStatementTwo' containing required
+-- fields as arguments.
+waFv2RuleGroupAndStatementTwo
+  :: [WAFv2RuleGroupStatementThree] -- ^ 'wafrgastStatements'
+  -> WAFv2RuleGroupAndStatementTwo
+waFv2RuleGroupAndStatementTwo statementsarg =
+  WAFv2RuleGroupAndStatementTwo
+  { _wAFv2RuleGroupAndStatementTwoStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-andstatementtwo.html#cfn-wafv2-rulegroup-andstatementtwo-statements
+wafrgastStatements :: Lens' WAFv2RuleGroupAndStatementTwo [WAFv2RuleGroupStatementThree]
+wafrgastStatements = lens _wAFv2RuleGroupAndStatementTwoStatements (\s a -> s { _wAFv2RuleGroupAndStatementTwoStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupByteMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupByteMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupByteMatchStatement.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupByteMatchStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation
+
+-- | Full data type definition for WAFv2RuleGroupByteMatchStatement. See
+-- 'waFv2RuleGroupByteMatchStatement' for a more convenient constructor.
+data WAFv2RuleGroupByteMatchStatement =
+  WAFv2RuleGroupByteMatchStatement
+  { _wAFv2RuleGroupByteMatchStatementFieldToMatch :: WAFv2RuleGroupFieldToMatch
+  , _wAFv2RuleGroupByteMatchStatementPositionalConstraint :: Val Text
+  , _wAFv2RuleGroupByteMatchStatementSearchString :: Val Text
+  , _wAFv2RuleGroupByteMatchStatementSearchStringBase64 :: Maybe (Val Text)
+  , _wAFv2RuleGroupByteMatchStatementTextTransformations :: [WAFv2RuleGroupTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupByteMatchStatement where
+  toJSON WAFv2RuleGroupByteMatchStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFv2RuleGroupByteMatchStatementFieldToMatch
+    , (Just . ("PositionalConstraint",) . toJSON) _wAFv2RuleGroupByteMatchStatementPositionalConstraint
+    , (Just . ("SearchString",) . toJSON) _wAFv2RuleGroupByteMatchStatementSearchString
+    , fmap (("SearchStringBase64",) . toJSON) _wAFv2RuleGroupByteMatchStatementSearchStringBase64
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2RuleGroupByteMatchStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupByteMatchStatement' containing required
+-- fields as arguments.
+waFv2RuleGroupByteMatchStatement
+  :: WAFv2RuleGroupFieldToMatch -- ^ 'wafrgbmsFieldToMatch'
+  -> Val Text -- ^ 'wafrgbmsPositionalConstraint'
+  -> Val Text -- ^ 'wafrgbmsSearchString'
+  -> [WAFv2RuleGroupTextTransformation] -- ^ 'wafrgbmsTextTransformations'
+  -> WAFv2RuleGroupByteMatchStatement
+waFv2RuleGroupByteMatchStatement fieldToMatcharg positionalConstraintarg searchStringarg textTransformationsarg =
+  WAFv2RuleGroupByteMatchStatement
+  { _wAFv2RuleGroupByteMatchStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2RuleGroupByteMatchStatementPositionalConstraint = positionalConstraintarg
+  , _wAFv2RuleGroupByteMatchStatementSearchString = searchStringarg
+  , _wAFv2RuleGroupByteMatchStatementSearchStringBase64 = Nothing
+  , _wAFv2RuleGroupByteMatchStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-fieldtomatch
+wafrgbmsFieldToMatch :: Lens' WAFv2RuleGroupByteMatchStatement WAFv2RuleGroupFieldToMatch
+wafrgbmsFieldToMatch = lens _wAFv2RuleGroupByteMatchStatementFieldToMatch (\s a -> s { _wAFv2RuleGroupByteMatchStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-positionalconstraint
+wafrgbmsPositionalConstraint :: Lens' WAFv2RuleGroupByteMatchStatement (Val Text)
+wafrgbmsPositionalConstraint = lens _wAFv2RuleGroupByteMatchStatementPositionalConstraint (\s a -> s { _wAFv2RuleGroupByteMatchStatementPositionalConstraint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-searchstring
+wafrgbmsSearchString :: Lens' WAFv2RuleGroupByteMatchStatement (Val Text)
+wafrgbmsSearchString = lens _wAFv2RuleGroupByteMatchStatementSearchString (\s a -> s { _wAFv2RuleGroupByteMatchStatementSearchString = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-searchstringbase64
+wafrgbmsSearchStringBase64 :: Lens' WAFv2RuleGroupByteMatchStatement (Maybe (Val Text))
+wafrgbmsSearchStringBase64 = lens _wAFv2RuleGroupByteMatchStatementSearchStringBase64 (\s a -> s { _wAFv2RuleGroupByteMatchStatementSearchStringBase64 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-texttransformations
+wafrgbmsTextTransformations :: Lens' WAFv2RuleGroupByteMatchStatement [WAFv2RuleGroupTextTransformation]
+wafrgbmsTextTransformations = lens _wAFv2RuleGroupByteMatchStatementTextTransformations (\s a -> s { _wAFv2RuleGroupByteMatchStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupFieldToMatch.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupFieldToMatch.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2RuleGroupFieldToMatch. See
+-- 'waFv2RuleGroupFieldToMatch' for a more convenient constructor.
+data WAFv2RuleGroupFieldToMatch =
+  WAFv2RuleGroupFieldToMatch
+  { _wAFv2RuleGroupFieldToMatchAllQueryArguments :: Maybe Object
+  , _wAFv2RuleGroupFieldToMatchBody :: Maybe Object
+  , _wAFv2RuleGroupFieldToMatchMethod :: Maybe Object
+  , _wAFv2RuleGroupFieldToMatchQueryString :: Maybe Object
+  , _wAFv2RuleGroupFieldToMatchSingleHeader :: Maybe Object
+  , _wAFv2RuleGroupFieldToMatchSingleQueryArgument :: Maybe Object
+  , _wAFv2RuleGroupFieldToMatchUriPath :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupFieldToMatch where
+  toJSON WAFv2RuleGroupFieldToMatch{..} =
+    object $
+    catMaybes
+    [ fmap (("AllQueryArguments",) . toJSON) _wAFv2RuleGroupFieldToMatchAllQueryArguments
+    , fmap (("Body",) . toJSON) _wAFv2RuleGroupFieldToMatchBody
+    , fmap (("Method",) . toJSON) _wAFv2RuleGroupFieldToMatchMethod
+    , fmap (("QueryString",) . toJSON) _wAFv2RuleGroupFieldToMatchQueryString
+    , fmap (("SingleHeader",) . toJSON) _wAFv2RuleGroupFieldToMatchSingleHeader
+    , fmap (("SingleQueryArgument",) . toJSON) _wAFv2RuleGroupFieldToMatchSingleQueryArgument
+    , fmap (("UriPath",) . toJSON) _wAFv2RuleGroupFieldToMatchUriPath
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupFieldToMatch' containing required fields
+-- as arguments.
+waFv2RuleGroupFieldToMatch
+  :: WAFv2RuleGroupFieldToMatch
+waFv2RuleGroupFieldToMatch  =
+  WAFv2RuleGroupFieldToMatch
+  { _wAFv2RuleGroupFieldToMatchAllQueryArguments = Nothing
+  , _wAFv2RuleGroupFieldToMatchBody = Nothing
+  , _wAFv2RuleGroupFieldToMatchMethod = Nothing
+  , _wAFv2RuleGroupFieldToMatchQueryString = Nothing
+  , _wAFv2RuleGroupFieldToMatchSingleHeader = Nothing
+  , _wAFv2RuleGroupFieldToMatchSingleQueryArgument = Nothing
+  , _wAFv2RuleGroupFieldToMatchUriPath = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-allqueryarguments
+wafrgftmAllQueryArguments :: Lens' WAFv2RuleGroupFieldToMatch (Maybe Object)
+wafrgftmAllQueryArguments = lens _wAFv2RuleGroupFieldToMatchAllQueryArguments (\s a -> s { _wAFv2RuleGroupFieldToMatchAllQueryArguments = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-body
+wafrgftmBody :: Lens' WAFv2RuleGroupFieldToMatch (Maybe Object)
+wafrgftmBody = lens _wAFv2RuleGroupFieldToMatchBody (\s a -> s { _wAFv2RuleGroupFieldToMatchBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-method
+wafrgftmMethod :: Lens' WAFv2RuleGroupFieldToMatch (Maybe Object)
+wafrgftmMethod = lens _wAFv2RuleGroupFieldToMatchMethod (\s a -> s { _wAFv2RuleGroupFieldToMatchMethod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-querystring
+wafrgftmQueryString :: Lens' WAFv2RuleGroupFieldToMatch (Maybe Object)
+wafrgftmQueryString = lens _wAFv2RuleGroupFieldToMatchQueryString (\s a -> s { _wAFv2RuleGroupFieldToMatchQueryString = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-singleheader
+wafrgftmSingleHeader :: Lens' WAFv2RuleGroupFieldToMatch (Maybe Object)
+wafrgftmSingleHeader = lens _wAFv2RuleGroupFieldToMatchSingleHeader (\s a -> s { _wAFv2RuleGroupFieldToMatchSingleHeader = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-singlequeryargument
+wafrgftmSingleQueryArgument :: Lens' WAFv2RuleGroupFieldToMatch (Maybe Object)
+wafrgftmSingleQueryArgument = lens _wAFv2RuleGroupFieldToMatchSingleQueryArgument (\s a -> s { _wAFv2RuleGroupFieldToMatchSingleQueryArgument = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-uripath
+wafrgftmUriPath :: Lens' WAFv2RuleGroupFieldToMatch (Maybe Object)
+wafrgftmUriPath = lens _wAFv2RuleGroupFieldToMatchUriPath (\s a -> s { _wAFv2RuleGroupFieldToMatchUriPath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupGeoMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupGeoMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupGeoMatchStatement.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupGeoMatchStatement where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2RuleGroupGeoMatchStatement. See
+-- 'waFv2RuleGroupGeoMatchStatement' for a more convenient constructor.
+data WAFv2RuleGroupGeoMatchStatement =
+  WAFv2RuleGroupGeoMatchStatement
+  { _wAFv2RuleGroupGeoMatchStatementCountryCodes :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupGeoMatchStatement where
+  toJSON WAFv2RuleGroupGeoMatchStatement{..} =
+    object $
+    catMaybes
+    [ fmap (("CountryCodes",) . toJSON) _wAFv2RuleGroupGeoMatchStatementCountryCodes
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupGeoMatchStatement' containing required
+-- fields as arguments.
+waFv2RuleGroupGeoMatchStatement
+  :: WAFv2RuleGroupGeoMatchStatement
+waFv2RuleGroupGeoMatchStatement  =
+  WAFv2RuleGroupGeoMatchStatement
+  { _wAFv2RuleGroupGeoMatchStatementCountryCodes = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html#cfn-wafv2-rulegroup-geomatchstatement-countrycodes
+wafrggmsCountryCodes :: Lens' WAFv2RuleGroupGeoMatchStatement (Maybe (ValList Text))
+wafrggmsCountryCodes = lens _wAFv2RuleGroupGeoMatchStatementCountryCodes (\s a -> s { _wAFv2RuleGroupGeoMatchStatementCountryCodes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupIPSetReferenceStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupIPSetReferenceStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupIPSetReferenceStatement.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetreferencestatement.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupIPSetReferenceStatement where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2RuleGroupIPSetReferenceStatement. See
+-- 'waFv2RuleGroupIPSetReferenceStatement' for a more convenient
+-- constructor.
+data WAFv2RuleGroupIPSetReferenceStatement =
+  WAFv2RuleGroupIPSetReferenceStatement
+  { _wAFv2RuleGroupIPSetReferenceStatementArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupIPSetReferenceStatement where
+  toJSON WAFv2RuleGroupIPSetReferenceStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("Arn",) . toJSON) _wAFv2RuleGroupIPSetReferenceStatementArn
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupIPSetReferenceStatement' containing
+-- required fields as arguments.
+waFv2RuleGroupIPSetReferenceStatement
+  :: Val Text -- ^ 'wafrgipsrsArn'
+  -> WAFv2RuleGroupIPSetReferenceStatement
+waFv2RuleGroupIPSetReferenceStatement arnarg =
+  WAFv2RuleGroupIPSetReferenceStatement
+  { _wAFv2RuleGroupIPSetReferenceStatementArn = arnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetreferencestatement.html#cfn-wafv2-rulegroup-ipsetreferencestatement-arn
+wafrgipsrsArn :: Lens' WAFv2RuleGroupIPSetReferenceStatement (Val Text)
+wafrgipsrsArn = lens _wAFv2RuleGroupIPSetReferenceStatementArn (\s a -> s { _wAFv2RuleGroupIPSetReferenceStatementArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupNotStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupNotStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupNotStatementOne.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-notstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementTwo
+
+-- | Full data type definition for WAFv2RuleGroupNotStatementOne. See
+-- 'waFv2RuleGroupNotStatementOne' for a more convenient constructor.
+data WAFv2RuleGroupNotStatementOne =
+  WAFv2RuleGroupNotStatementOne
+  { _wAFv2RuleGroupNotStatementOneStatement :: WAFv2RuleGroupStatementTwo
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupNotStatementOne where
+  toJSON WAFv2RuleGroupNotStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statement",) . toJSON) _wAFv2RuleGroupNotStatementOneStatement
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupNotStatementOne' containing required
+-- fields as arguments.
+waFv2RuleGroupNotStatementOne
+  :: WAFv2RuleGroupStatementTwo -- ^ 'wafrgnsoStatement'
+  -> WAFv2RuleGroupNotStatementOne
+waFv2RuleGroupNotStatementOne statementarg =
+  WAFv2RuleGroupNotStatementOne
+  { _wAFv2RuleGroupNotStatementOneStatement = statementarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-notstatementone.html#cfn-wafv2-rulegroup-notstatementone-statement
+wafrgnsoStatement :: Lens' WAFv2RuleGroupNotStatementOne WAFv2RuleGroupStatementTwo
+wafrgnsoStatement = lens _wAFv2RuleGroupNotStatementOneStatement (\s a -> s { _wAFv2RuleGroupNotStatementOneStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupNotStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupNotStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupNotStatementTwo.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-notstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementThree
+
+-- | Full data type definition for WAFv2RuleGroupNotStatementTwo. See
+-- 'waFv2RuleGroupNotStatementTwo' for a more convenient constructor.
+data WAFv2RuleGroupNotStatementTwo =
+  WAFv2RuleGroupNotStatementTwo
+  { _wAFv2RuleGroupNotStatementTwoStatement :: WAFv2RuleGroupStatementThree
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupNotStatementTwo where
+  toJSON WAFv2RuleGroupNotStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statement",) . toJSON) _wAFv2RuleGroupNotStatementTwoStatement
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupNotStatementTwo' containing required
+-- fields as arguments.
+waFv2RuleGroupNotStatementTwo
+  :: WAFv2RuleGroupStatementThree -- ^ 'wafrgnstStatement'
+  -> WAFv2RuleGroupNotStatementTwo
+waFv2RuleGroupNotStatementTwo statementarg =
+  WAFv2RuleGroupNotStatementTwo
+  { _wAFv2RuleGroupNotStatementTwoStatement = statementarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-notstatementtwo.html#cfn-wafv2-rulegroup-notstatementtwo-statement
+wafrgnstStatement :: Lens' WAFv2RuleGroupNotStatementTwo WAFv2RuleGroupStatementThree
+wafrgnstStatement = lens _wAFv2RuleGroupNotStatementTwoStatement (\s a -> s { _wAFv2RuleGroupNotStatementTwoStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupOrStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupOrStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupOrStatementOne.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-orstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementTwo
+
+-- | Full data type definition for WAFv2RuleGroupOrStatementOne. See
+-- 'waFv2RuleGroupOrStatementOne' for a more convenient constructor.
+data WAFv2RuleGroupOrStatementOne =
+  WAFv2RuleGroupOrStatementOne
+  { _wAFv2RuleGroupOrStatementOneStatements :: [WAFv2RuleGroupStatementTwo]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupOrStatementOne where
+  toJSON WAFv2RuleGroupOrStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2RuleGroupOrStatementOneStatements
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupOrStatementOne' containing required fields
+-- as arguments.
+waFv2RuleGroupOrStatementOne
+  :: [WAFv2RuleGroupStatementTwo] -- ^ 'wafrgosoStatements'
+  -> WAFv2RuleGroupOrStatementOne
+waFv2RuleGroupOrStatementOne statementsarg =
+  WAFv2RuleGroupOrStatementOne
+  { _wAFv2RuleGroupOrStatementOneStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-orstatementone.html#cfn-wafv2-rulegroup-orstatementone-statements
+wafrgosoStatements :: Lens' WAFv2RuleGroupOrStatementOne [WAFv2RuleGroupStatementTwo]
+wafrgosoStatements = lens _wAFv2RuleGroupOrStatementOneStatements (\s a -> s { _wAFv2RuleGroupOrStatementOneStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupOrStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupOrStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupOrStatementTwo.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-orstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementThree
+
+-- | Full data type definition for WAFv2RuleGroupOrStatementTwo. See
+-- 'waFv2RuleGroupOrStatementTwo' for a more convenient constructor.
+data WAFv2RuleGroupOrStatementTwo =
+  WAFv2RuleGroupOrStatementTwo
+  { _wAFv2RuleGroupOrStatementTwoStatements :: [WAFv2RuleGroupStatementThree]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupOrStatementTwo where
+  toJSON WAFv2RuleGroupOrStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2RuleGroupOrStatementTwoStatements
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupOrStatementTwo' containing required fields
+-- as arguments.
+waFv2RuleGroupOrStatementTwo
+  :: [WAFv2RuleGroupStatementThree] -- ^ 'wafrgostStatements'
+  -> WAFv2RuleGroupOrStatementTwo
+waFv2RuleGroupOrStatementTwo statementsarg =
+  WAFv2RuleGroupOrStatementTwo
+  { _wAFv2RuleGroupOrStatementTwoStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-orstatementtwo.html#cfn-wafv2-rulegroup-orstatementtwo-statements
+wafrgostStatements :: Lens' WAFv2RuleGroupOrStatementTwo [WAFv2RuleGroupStatementThree]
+wafrgostStatements = lens _wAFv2RuleGroupOrStatementTwoStatements (\s a -> s { _wAFv2RuleGroupOrStatementTwoStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRateBasedStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRateBasedStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRateBasedStatementOne.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementTwo
+
+-- | Full data type definition for WAFv2RuleGroupRateBasedStatementOne. See
+-- 'waFv2RuleGroupRateBasedStatementOne' for a more convenient constructor.
+data WAFv2RuleGroupRateBasedStatementOne =
+  WAFv2RuleGroupRateBasedStatementOne
+  { _wAFv2RuleGroupRateBasedStatementOneAggregateKeyType :: Val Text
+  , _wAFv2RuleGroupRateBasedStatementOneLimit :: Val Integer
+  , _wAFv2RuleGroupRateBasedStatementOneScopeDownStatement :: Maybe WAFv2RuleGroupStatementTwo
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupRateBasedStatementOne where
+  toJSON WAFv2RuleGroupRateBasedStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("AggregateKeyType",) . toJSON) _wAFv2RuleGroupRateBasedStatementOneAggregateKeyType
+    , (Just . ("Limit",) . toJSON) _wAFv2RuleGroupRateBasedStatementOneLimit
+    , fmap (("ScopeDownStatement",) . toJSON) _wAFv2RuleGroupRateBasedStatementOneScopeDownStatement
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupRateBasedStatementOne' containing required
+-- fields as arguments.
+waFv2RuleGroupRateBasedStatementOne
+  :: Val Text -- ^ 'wafrgrbsoAggregateKeyType'
+  -> Val Integer -- ^ 'wafrgrbsoLimit'
+  -> WAFv2RuleGroupRateBasedStatementOne
+waFv2RuleGroupRateBasedStatementOne aggregateKeyTypearg limitarg =
+  WAFv2RuleGroupRateBasedStatementOne
+  { _wAFv2RuleGroupRateBasedStatementOneAggregateKeyType = aggregateKeyTypearg
+  , _wAFv2RuleGroupRateBasedStatementOneLimit = limitarg
+  , _wAFv2RuleGroupRateBasedStatementOneScopeDownStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementone.html#cfn-wafv2-rulegroup-ratebasedstatementone-aggregatekeytype
+wafrgrbsoAggregateKeyType :: Lens' WAFv2RuleGroupRateBasedStatementOne (Val Text)
+wafrgrbsoAggregateKeyType = lens _wAFv2RuleGroupRateBasedStatementOneAggregateKeyType (\s a -> s { _wAFv2RuleGroupRateBasedStatementOneAggregateKeyType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementone.html#cfn-wafv2-rulegroup-ratebasedstatementone-limit
+wafrgrbsoLimit :: Lens' WAFv2RuleGroupRateBasedStatementOne (Val Integer)
+wafrgrbsoLimit = lens _wAFv2RuleGroupRateBasedStatementOneLimit (\s a -> s { _wAFv2RuleGroupRateBasedStatementOneLimit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementone.html#cfn-wafv2-rulegroup-ratebasedstatementone-scopedownstatement
+wafrgrbsoScopeDownStatement :: Lens' WAFv2RuleGroupRateBasedStatementOne (Maybe WAFv2RuleGroupStatementTwo)
+wafrgrbsoScopeDownStatement = lens _wAFv2RuleGroupRateBasedStatementOneScopeDownStatement (\s a -> s { _wAFv2RuleGroupRateBasedStatementOneScopeDownStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRateBasedStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRateBasedStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRateBasedStatementTwo.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementThree
+
+-- | Full data type definition for WAFv2RuleGroupRateBasedStatementTwo. See
+-- 'waFv2RuleGroupRateBasedStatementTwo' for a more convenient constructor.
+data WAFv2RuleGroupRateBasedStatementTwo =
+  WAFv2RuleGroupRateBasedStatementTwo
+  { _wAFv2RuleGroupRateBasedStatementTwoAggregateKeyType :: Val Text
+  , _wAFv2RuleGroupRateBasedStatementTwoLimit :: Val Integer
+  , _wAFv2RuleGroupRateBasedStatementTwoScopeDownStatement :: Maybe WAFv2RuleGroupStatementThree
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupRateBasedStatementTwo where
+  toJSON WAFv2RuleGroupRateBasedStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("AggregateKeyType",) . toJSON) _wAFv2RuleGroupRateBasedStatementTwoAggregateKeyType
+    , (Just . ("Limit",) . toJSON) _wAFv2RuleGroupRateBasedStatementTwoLimit
+    , fmap (("ScopeDownStatement",) . toJSON) _wAFv2RuleGroupRateBasedStatementTwoScopeDownStatement
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupRateBasedStatementTwo' containing required
+-- fields as arguments.
+waFv2RuleGroupRateBasedStatementTwo
+  :: Val Text -- ^ 'wafrgrbstAggregateKeyType'
+  -> Val Integer -- ^ 'wafrgrbstLimit'
+  -> WAFv2RuleGroupRateBasedStatementTwo
+waFv2RuleGroupRateBasedStatementTwo aggregateKeyTypearg limitarg =
+  WAFv2RuleGroupRateBasedStatementTwo
+  { _wAFv2RuleGroupRateBasedStatementTwoAggregateKeyType = aggregateKeyTypearg
+  , _wAFv2RuleGroupRateBasedStatementTwoLimit = limitarg
+  , _wAFv2RuleGroupRateBasedStatementTwoScopeDownStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementtwo.html#cfn-wafv2-rulegroup-ratebasedstatementtwo-aggregatekeytype
+wafrgrbstAggregateKeyType :: Lens' WAFv2RuleGroupRateBasedStatementTwo (Val Text)
+wafrgrbstAggregateKeyType = lens _wAFv2RuleGroupRateBasedStatementTwoAggregateKeyType (\s a -> s { _wAFv2RuleGroupRateBasedStatementTwoAggregateKeyType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementtwo.html#cfn-wafv2-rulegroup-ratebasedstatementtwo-limit
+wafrgrbstLimit :: Lens' WAFv2RuleGroupRateBasedStatementTwo (Val Integer)
+wafrgrbstLimit = lens _wAFv2RuleGroupRateBasedStatementTwoLimit (\s a -> s { _wAFv2RuleGroupRateBasedStatementTwoLimit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementtwo.html#cfn-wafv2-rulegroup-ratebasedstatementtwo-scopedownstatement
+wafrgrbstScopeDownStatement :: Lens' WAFv2RuleGroupRateBasedStatementTwo (Maybe WAFv2RuleGroupStatementThree)
+wafrgrbstScopeDownStatement = lens _wAFv2RuleGroupRateBasedStatementTwoScopeDownStatement (\s a -> s { _wAFv2RuleGroupRateBasedStatementTwoScopeDownStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRegexPatternSetReferenceStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRegexPatternSetReferenceStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRegexPatternSetReferenceStatement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupRegexPatternSetReferenceStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation
+
+-- | Full data type definition for
+-- WAFv2RuleGroupRegexPatternSetReferenceStatement. See
+-- 'waFv2RuleGroupRegexPatternSetReferenceStatement' for a more convenient
+-- constructor.
+data WAFv2RuleGroupRegexPatternSetReferenceStatement =
+  WAFv2RuleGroupRegexPatternSetReferenceStatement
+  { _wAFv2RuleGroupRegexPatternSetReferenceStatementArn :: Val Text
+  , _wAFv2RuleGroupRegexPatternSetReferenceStatementFieldToMatch :: WAFv2RuleGroupFieldToMatch
+  , _wAFv2RuleGroupRegexPatternSetReferenceStatementTextTransformations :: [WAFv2RuleGroupTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupRegexPatternSetReferenceStatement where
+  toJSON WAFv2RuleGroupRegexPatternSetReferenceStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("Arn",) . toJSON) _wAFv2RuleGroupRegexPatternSetReferenceStatementArn
+    , (Just . ("FieldToMatch",) . toJSON) _wAFv2RuleGroupRegexPatternSetReferenceStatementFieldToMatch
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2RuleGroupRegexPatternSetReferenceStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupRegexPatternSetReferenceStatement'
+-- containing required fields as arguments.
+waFv2RuleGroupRegexPatternSetReferenceStatement
+  :: Val Text -- ^ 'wafrgrpsrsArn'
+  -> WAFv2RuleGroupFieldToMatch -- ^ 'wafrgrpsrsFieldToMatch'
+  -> [WAFv2RuleGroupTextTransformation] -- ^ 'wafrgrpsrsTextTransformations'
+  -> WAFv2RuleGroupRegexPatternSetReferenceStatement
+waFv2RuleGroupRegexPatternSetReferenceStatement arnarg fieldToMatcharg textTransformationsarg =
+  WAFv2RuleGroupRegexPatternSetReferenceStatement
+  { _wAFv2RuleGroupRegexPatternSetReferenceStatementArn = arnarg
+  , _wAFv2RuleGroupRegexPatternSetReferenceStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2RuleGroupRegexPatternSetReferenceStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html#cfn-wafv2-rulegroup-regexpatternsetreferencestatement-arn
+wafrgrpsrsArn :: Lens' WAFv2RuleGroupRegexPatternSetReferenceStatement (Val Text)
+wafrgrpsrsArn = lens _wAFv2RuleGroupRegexPatternSetReferenceStatementArn (\s a -> s { _wAFv2RuleGroupRegexPatternSetReferenceStatementArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html#cfn-wafv2-rulegroup-regexpatternsetreferencestatement-fieldtomatch
+wafrgrpsrsFieldToMatch :: Lens' WAFv2RuleGroupRegexPatternSetReferenceStatement WAFv2RuleGroupFieldToMatch
+wafrgrpsrsFieldToMatch = lens _wAFv2RuleGroupRegexPatternSetReferenceStatementFieldToMatch (\s a -> s { _wAFv2RuleGroupRegexPatternSetReferenceStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html#cfn-wafv2-rulegroup-regexpatternsetreferencestatement-texttransformations
+wafrgrpsrsTextTransformations :: Lens' WAFv2RuleGroupRegexPatternSetReferenceStatement [WAFv2RuleGroupTextTransformation]
+wafrgrpsrsTextTransformations = lens _wAFv2RuleGroupRegexPatternSetReferenceStatementTextTransformations (\s a -> s { _wAFv2RuleGroupRegexPatternSetReferenceStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRule.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRule.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupRule where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRuleAction
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementOne
+import Stratosphere.ResourceProperties.WAFv2RuleGroupVisibilityConfig
+
+-- | Full data type definition for WAFv2RuleGroupRule. See
+-- 'waFv2RuleGroupRule' for a more convenient constructor.
+data WAFv2RuleGroupRule =
+  WAFv2RuleGroupRule
+  { _wAFv2RuleGroupRuleAction :: Maybe WAFv2RuleGroupRuleAction
+  , _wAFv2RuleGroupRuleName :: Val Text
+  , _wAFv2RuleGroupRulePriority :: Val Integer
+  , _wAFv2RuleGroupRuleStatement :: WAFv2RuleGroupStatementOne
+  , _wAFv2RuleGroupRuleVisibilityConfig :: WAFv2RuleGroupVisibilityConfig
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupRule where
+  toJSON WAFv2RuleGroupRule{..} =
+    object $
+    catMaybes
+    [ fmap (("Action",) . toJSON) _wAFv2RuleGroupRuleAction
+    , (Just . ("Name",) . toJSON) _wAFv2RuleGroupRuleName
+    , (Just . ("Priority",) . toJSON) _wAFv2RuleGroupRulePriority
+    , (Just . ("Statement",) . toJSON) _wAFv2RuleGroupRuleStatement
+    , (Just . ("VisibilityConfig",) . toJSON) _wAFv2RuleGroupRuleVisibilityConfig
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupRule' containing required fields as
+-- arguments.
+waFv2RuleGroupRule
+  :: Val Text -- ^ 'wafrgrName'
+  -> Val Integer -- ^ 'wafrgrPriority'
+  -> WAFv2RuleGroupStatementOne -- ^ 'wafrgrStatement'
+  -> WAFv2RuleGroupVisibilityConfig -- ^ 'wafrgrVisibilityConfig'
+  -> WAFv2RuleGroupRule
+waFv2RuleGroupRule namearg priorityarg statementarg visibilityConfigarg =
+  WAFv2RuleGroupRule
+  { _wAFv2RuleGroupRuleAction = Nothing
+  , _wAFv2RuleGroupRuleName = namearg
+  , _wAFv2RuleGroupRulePriority = priorityarg
+  , _wAFv2RuleGroupRuleStatement = statementarg
+  , _wAFv2RuleGroupRuleVisibilityConfig = visibilityConfigarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-action
+wafrgrAction :: Lens' WAFv2RuleGroupRule (Maybe WAFv2RuleGroupRuleAction)
+wafrgrAction = lens _wAFv2RuleGroupRuleAction (\s a -> s { _wAFv2RuleGroupRuleAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-name
+wafrgrName :: Lens' WAFv2RuleGroupRule (Val Text)
+wafrgrName = lens _wAFv2RuleGroupRuleName (\s a -> s { _wAFv2RuleGroupRuleName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-priority
+wafrgrPriority :: Lens' WAFv2RuleGroupRule (Val Integer)
+wafrgrPriority = lens _wAFv2RuleGroupRulePriority (\s a -> s { _wAFv2RuleGroupRulePriority = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-statement
+wafrgrStatement :: Lens' WAFv2RuleGroupRule WAFv2RuleGroupStatementOne
+wafrgrStatement = lens _wAFv2RuleGroupRuleStatement (\s a -> s { _wAFv2RuleGroupRuleStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-visibilityconfig
+wafrgrVisibilityConfig :: Lens' WAFv2RuleGroupRule WAFv2RuleGroupVisibilityConfig
+wafrgrVisibilityConfig = lens _wAFv2RuleGroupRuleVisibilityConfig (\s a -> s { _wAFv2RuleGroupRuleVisibilityConfig = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRuleAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupRuleAction.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupRuleAction where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2RuleGroupRuleAction. See
+-- 'waFv2RuleGroupRuleAction' for a more convenient constructor.
+data WAFv2RuleGroupRuleAction =
+  WAFv2RuleGroupRuleAction
+  { _wAFv2RuleGroupRuleActionAllow :: Maybe Object
+  , _wAFv2RuleGroupRuleActionBlock :: Maybe Object
+  , _wAFv2RuleGroupRuleActionCount :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupRuleAction where
+  toJSON WAFv2RuleGroupRuleAction{..} =
+    object $
+    catMaybes
+    [ fmap (("Allow",) . toJSON) _wAFv2RuleGroupRuleActionAllow
+    , fmap (("Block",) . toJSON) _wAFv2RuleGroupRuleActionBlock
+    , fmap (("Count",) . toJSON) _wAFv2RuleGroupRuleActionCount
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupRuleAction' containing required fields as
+-- arguments.
+waFv2RuleGroupRuleAction
+  :: WAFv2RuleGroupRuleAction
+waFv2RuleGroupRuleAction  =
+  WAFv2RuleGroupRuleAction
+  { _wAFv2RuleGroupRuleActionAllow = Nothing
+  , _wAFv2RuleGroupRuleActionBlock = Nothing
+  , _wAFv2RuleGroupRuleActionCount = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-allow
+wafrgraAllow :: Lens' WAFv2RuleGroupRuleAction (Maybe Object)
+wafrgraAllow = lens _wAFv2RuleGroupRuleActionAllow (\s a -> s { _wAFv2RuleGroupRuleActionAllow = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-block
+wafrgraBlock :: Lens' WAFv2RuleGroupRuleAction (Maybe Object)
+wafrgraBlock = lens _wAFv2RuleGroupRuleActionBlock (\s a -> s { _wAFv2RuleGroupRuleActionBlock = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-count
+wafrgraCount :: Lens' WAFv2RuleGroupRuleAction (Maybe Object)
+wafrgraCount = lens _wAFv2RuleGroupRuleActionCount (\s a -> s { _wAFv2RuleGroupRuleActionCount = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupSizeConstraintStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupSizeConstraintStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupSizeConstraintStatement.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupSizeConstraintStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation
+
+-- | Full data type definition for WAFv2RuleGroupSizeConstraintStatement. See
+-- 'waFv2RuleGroupSizeConstraintStatement' for a more convenient
+-- constructor.
+data WAFv2RuleGroupSizeConstraintStatement =
+  WAFv2RuleGroupSizeConstraintStatement
+  { _wAFv2RuleGroupSizeConstraintStatementComparisonOperator :: Val Text
+  , _wAFv2RuleGroupSizeConstraintStatementFieldToMatch :: WAFv2RuleGroupFieldToMatch
+  , _wAFv2RuleGroupSizeConstraintStatementSize :: Val Integer
+  , _wAFv2RuleGroupSizeConstraintStatementTextTransformations :: [WAFv2RuleGroupTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupSizeConstraintStatement where
+  toJSON WAFv2RuleGroupSizeConstraintStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("ComparisonOperator",) . toJSON) _wAFv2RuleGroupSizeConstraintStatementComparisonOperator
+    , (Just . ("FieldToMatch",) . toJSON) _wAFv2RuleGroupSizeConstraintStatementFieldToMatch
+    , (Just . ("Size",) . toJSON) _wAFv2RuleGroupSizeConstraintStatementSize
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2RuleGroupSizeConstraintStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupSizeConstraintStatement' containing
+-- required fields as arguments.
+waFv2RuleGroupSizeConstraintStatement
+  :: Val Text -- ^ 'wafrgscsComparisonOperator'
+  -> WAFv2RuleGroupFieldToMatch -- ^ 'wafrgscsFieldToMatch'
+  -> Val Integer -- ^ 'wafrgscsSize'
+  -> [WAFv2RuleGroupTextTransformation] -- ^ 'wafrgscsTextTransformations'
+  -> WAFv2RuleGroupSizeConstraintStatement
+waFv2RuleGroupSizeConstraintStatement comparisonOperatorarg fieldToMatcharg sizearg textTransformationsarg =
+  WAFv2RuleGroupSizeConstraintStatement
+  { _wAFv2RuleGroupSizeConstraintStatementComparisonOperator = comparisonOperatorarg
+  , _wAFv2RuleGroupSizeConstraintStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2RuleGroupSizeConstraintStatementSize = sizearg
+  , _wAFv2RuleGroupSizeConstraintStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-comparisonoperator
+wafrgscsComparisonOperator :: Lens' WAFv2RuleGroupSizeConstraintStatement (Val Text)
+wafrgscsComparisonOperator = lens _wAFv2RuleGroupSizeConstraintStatementComparisonOperator (\s a -> s { _wAFv2RuleGroupSizeConstraintStatementComparisonOperator = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-fieldtomatch
+wafrgscsFieldToMatch :: Lens' WAFv2RuleGroupSizeConstraintStatement WAFv2RuleGroupFieldToMatch
+wafrgscsFieldToMatch = lens _wAFv2RuleGroupSizeConstraintStatementFieldToMatch (\s a -> s { _wAFv2RuleGroupSizeConstraintStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-size
+wafrgscsSize :: Lens' WAFv2RuleGroupSizeConstraintStatement (Val Integer)
+wafrgscsSize = lens _wAFv2RuleGroupSizeConstraintStatementSize (\s a -> s { _wAFv2RuleGroupSizeConstraintStatementSize = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-texttransformations
+wafrgscsTextTransformations :: Lens' WAFv2RuleGroupSizeConstraintStatement [WAFv2RuleGroupTextTransformation]
+wafrgscsTextTransformations = lens _wAFv2RuleGroupSizeConstraintStatementTextTransformations (\s a -> s { _wAFv2RuleGroupSizeConstraintStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupSqliMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupSqliMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupSqliMatchStatement.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sqlimatchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupSqliMatchStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation
+
+-- | Full data type definition for WAFv2RuleGroupSqliMatchStatement. See
+-- 'waFv2RuleGroupSqliMatchStatement' for a more convenient constructor.
+data WAFv2RuleGroupSqliMatchStatement =
+  WAFv2RuleGroupSqliMatchStatement
+  { _wAFv2RuleGroupSqliMatchStatementFieldToMatch :: WAFv2RuleGroupFieldToMatch
+  , _wAFv2RuleGroupSqliMatchStatementTextTransformations :: [WAFv2RuleGroupTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupSqliMatchStatement where
+  toJSON WAFv2RuleGroupSqliMatchStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFv2RuleGroupSqliMatchStatementFieldToMatch
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2RuleGroupSqliMatchStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupSqliMatchStatement' containing required
+-- fields as arguments.
+waFv2RuleGroupSqliMatchStatement
+  :: WAFv2RuleGroupFieldToMatch -- ^ 'wafrgsmsFieldToMatch'
+  -> [WAFv2RuleGroupTextTransformation] -- ^ 'wafrgsmsTextTransformations'
+  -> WAFv2RuleGroupSqliMatchStatement
+waFv2RuleGroupSqliMatchStatement fieldToMatcharg textTransformationsarg =
+  WAFv2RuleGroupSqliMatchStatement
+  { _wAFv2RuleGroupSqliMatchStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2RuleGroupSqliMatchStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sqlimatchstatement.html#cfn-wafv2-rulegroup-sqlimatchstatement-fieldtomatch
+wafrgsmsFieldToMatch :: Lens' WAFv2RuleGroupSqliMatchStatement WAFv2RuleGroupFieldToMatch
+wafrgsmsFieldToMatch = lens _wAFv2RuleGroupSqliMatchStatementFieldToMatch (\s a -> s { _wAFv2RuleGroupSqliMatchStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sqlimatchstatement.html#cfn-wafv2-rulegroup-sqlimatchstatement-texttransformations
+wafrgsmsTextTransformations :: Lens' WAFv2RuleGroupSqliMatchStatement [WAFv2RuleGroupTextTransformation]
+wafrgsmsTextTransformations = lens _wAFv2RuleGroupSqliMatchStatementTextTransformations (\s a -> s { _wAFv2RuleGroupSqliMatchStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementOne.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementOne
+import Stratosphere.ResourceProperties.WAFv2RuleGroupByteMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupGeoMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupIPSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementOne
+import Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementOne
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementOne
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRegexPatternSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSizeConstraintStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSqliMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupXssMatchStatement
+
+-- | Full data type definition for WAFv2RuleGroupStatementOne. See
+-- 'waFv2RuleGroupStatementOne' for a more convenient constructor.
+data WAFv2RuleGroupStatementOne =
+  WAFv2RuleGroupStatementOne
+  { _wAFv2RuleGroupStatementOneAndStatement :: Maybe WAFv2RuleGroupAndStatementOne
+  , _wAFv2RuleGroupStatementOneByteMatchStatement :: Maybe WAFv2RuleGroupByteMatchStatement
+  , _wAFv2RuleGroupStatementOneGeoMatchStatement :: Maybe WAFv2RuleGroupGeoMatchStatement
+  , _wAFv2RuleGroupStatementOneIPSetReferenceStatement :: Maybe WAFv2RuleGroupIPSetReferenceStatement
+  , _wAFv2RuleGroupStatementOneNotStatement :: Maybe WAFv2RuleGroupNotStatementOne
+  , _wAFv2RuleGroupStatementOneOrStatement :: Maybe WAFv2RuleGroupOrStatementOne
+  , _wAFv2RuleGroupStatementOneRateBasedStatement :: Maybe WAFv2RuleGroupRateBasedStatementOne
+  , _wAFv2RuleGroupStatementOneRegexPatternSetReferenceStatement :: Maybe WAFv2RuleGroupRegexPatternSetReferenceStatement
+  , _wAFv2RuleGroupStatementOneSizeConstraintStatement :: Maybe WAFv2RuleGroupSizeConstraintStatement
+  , _wAFv2RuleGroupStatementOneSqliMatchStatement :: Maybe WAFv2RuleGroupSqliMatchStatement
+  , _wAFv2RuleGroupStatementOneXssMatchStatement :: Maybe WAFv2RuleGroupXssMatchStatement
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupStatementOne where
+  toJSON WAFv2RuleGroupStatementOne{..} =
+    object $
+    catMaybes
+    [ fmap (("AndStatement",) . toJSON) _wAFv2RuleGroupStatementOneAndStatement
+    , fmap (("ByteMatchStatement",) . toJSON) _wAFv2RuleGroupStatementOneByteMatchStatement
+    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2RuleGroupStatementOneGeoMatchStatement
+    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2RuleGroupStatementOneIPSetReferenceStatement
+    , fmap (("NotStatement",) . toJSON) _wAFv2RuleGroupStatementOneNotStatement
+    , fmap (("OrStatement",) . toJSON) _wAFv2RuleGroupStatementOneOrStatement
+    , fmap (("RateBasedStatement",) . toJSON) _wAFv2RuleGroupStatementOneRateBasedStatement
+    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2RuleGroupStatementOneRegexPatternSetReferenceStatement
+    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2RuleGroupStatementOneSizeConstraintStatement
+    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2RuleGroupStatementOneSqliMatchStatement
+    , fmap (("XssMatchStatement",) . toJSON) _wAFv2RuleGroupStatementOneXssMatchStatement
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupStatementOne' containing required fields
+-- as arguments.
+waFv2RuleGroupStatementOne
+  :: WAFv2RuleGroupStatementOne
+waFv2RuleGroupStatementOne  =
+  WAFv2RuleGroupStatementOne
+  { _wAFv2RuleGroupStatementOneAndStatement = Nothing
+  , _wAFv2RuleGroupStatementOneByteMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementOneGeoMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementOneIPSetReferenceStatement = Nothing
+  , _wAFv2RuleGroupStatementOneNotStatement = Nothing
+  , _wAFv2RuleGroupStatementOneOrStatement = Nothing
+  , _wAFv2RuleGroupStatementOneRateBasedStatement = Nothing
+  , _wAFv2RuleGroupStatementOneRegexPatternSetReferenceStatement = Nothing
+  , _wAFv2RuleGroupStatementOneSizeConstraintStatement = Nothing
+  , _wAFv2RuleGroupStatementOneSqliMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementOneXssMatchStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-andstatement
+wafrgsoAndStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupAndStatementOne)
+wafrgsoAndStatement = lens _wAFv2RuleGroupStatementOneAndStatement (\s a -> s { _wAFv2RuleGroupStatementOneAndStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-bytematchstatement
+wafrgsoByteMatchStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupByteMatchStatement)
+wafrgsoByteMatchStatement = lens _wAFv2RuleGroupStatementOneByteMatchStatement (\s a -> s { _wAFv2RuleGroupStatementOneByteMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-geomatchstatement
+wafrgsoGeoMatchStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupGeoMatchStatement)
+wafrgsoGeoMatchStatement = lens _wAFv2RuleGroupStatementOneGeoMatchStatement (\s a -> s { _wAFv2RuleGroupStatementOneGeoMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-ipsetreferencestatement
+wafrgsoIPSetReferenceStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupIPSetReferenceStatement)
+wafrgsoIPSetReferenceStatement = lens _wAFv2RuleGroupStatementOneIPSetReferenceStatement (\s a -> s { _wAFv2RuleGroupStatementOneIPSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-notstatement
+wafrgsoNotStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupNotStatementOne)
+wafrgsoNotStatement = lens _wAFv2RuleGroupStatementOneNotStatement (\s a -> s { _wAFv2RuleGroupStatementOneNotStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-orstatement
+wafrgsoOrStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupOrStatementOne)
+wafrgsoOrStatement = lens _wAFv2RuleGroupStatementOneOrStatement (\s a -> s { _wAFv2RuleGroupStatementOneOrStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-ratebasedstatement
+wafrgsoRateBasedStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupRateBasedStatementOne)
+wafrgsoRateBasedStatement = lens _wAFv2RuleGroupStatementOneRateBasedStatement (\s a -> s { _wAFv2RuleGroupStatementOneRateBasedStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-regexpatternsetreferencestatement
+wafrgsoRegexPatternSetReferenceStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupRegexPatternSetReferenceStatement)
+wafrgsoRegexPatternSetReferenceStatement = lens _wAFv2RuleGroupStatementOneRegexPatternSetReferenceStatement (\s a -> s { _wAFv2RuleGroupStatementOneRegexPatternSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-sizeconstraintstatement
+wafrgsoSizeConstraintStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupSizeConstraintStatement)
+wafrgsoSizeConstraintStatement = lens _wAFv2RuleGroupStatementOneSizeConstraintStatement (\s a -> s { _wAFv2RuleGroupStatementOneSizeConstraintStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-sqlimatchstatement
+wafrgsoSqliMatchStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupSqliMatchStatement)
+wafrgsoSqliMatchStatement = lens _wAFv2RuleGroupStatementOneSqliMatchStatement (\s a -> s { _wAFv2RuleGroupStatementOneSqliMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementone.html#cfn-wafv2-rulegroup-statementone-xssmatchstatement
+wafrgsoXssMatchStatement :: Lens' WAFv2RuleGroupStatementOne (Maybe WAFv2RuleGroupXssMatchStatement)
+wafrgsoXssMatchStatement = lens _wAFv2RuleGroupStatementOneXssMatchStatement (\s a -> s { _wAFv2RuleGroupStatementOneXssMatchStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementThree.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementThree.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementThree.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupStatementThree where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupByteMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupGeoMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupIPSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRegexPatternSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSizeConstraintStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSqliMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupXssMatchStatement
+
+-- | Full data type definition for WAFv2RuleGroupStatementThree. See
+-- 'waFv2RuleGroupStatementThree' for a more convenient constructor.
+data WAFv2RuleGroupStatementThree =
+  WAFv2RuleGroupStatementThree
+  { _wAFv2RuleGroupStatementThreeByteMatchStatement :: Maybe WAFv2RuleGroupByteMatchStatement
+  , _wAFv2RuleGroupStatementThreeGeoMatchStatement :: Maybe WAFv2RuleGroupGeoMatchStatement
+  , _wAFv2RuleGroupStatementThreeIPSetReferenceStatement :: Maybe WAFv2RuleGroupIPSetReferenceStatement
+  , _wAFv2RuleGroupStatementThreeRegexPatternSetReferenceStatement :: Maybe WAFv2RuleGroupRegexPatternSetReferenceStatement
+  , _wAFv2RuleGroupStatementThreeSizeConstraintStatement :: Maybe WAFv2RuleGroupSizeConstraintStatement
+  , _wAFv2RuleGroupStatementThreeSqliMatchStatement :: Maybe WAFv2RuleGroupSqliMatchStatement
+  , _wAFv2RuleGroupStatementThreeXssMatchStatement :: Maybe WAFv2RuleGroupXssMatchStatement
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupStatementThree where
+  toJSON WAFv2RuleGroupStatementThree{..} =
+    object $
+    catMaybes
+    [ fmap (("ByteMatchStatement",) . toJSON) _wAFv2RuleGroupStatementThreeByteMatchStatement
+    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2RuleGroupStatementThreeGeoMatchStatement
+    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2RuleGroupStatementThreeIPSetReferenceStatement
+    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2RuleGroupStatementThreeRegexPatternSetReferenceStatement
+    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2RuleGroupStatementThreeSizeConstraintStatement
+    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2RuleGroupStatementThreeSqliMatchStatement
+    , fmap (("XssMatchStatement",) . toJSON) _wAFv2RuleGroupStatementThreeXssMatchStatement
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupStatementThree' containing required fields
+-- as arguments.
+waFv2RuleGroupStatementThree
+  :: WAFv2RuleGroupStatementThree
+waFv2RuleGroupStatementThree  =
+  WAFv2RuleGroupStatementThree
+  { _wAFv2RuleGroupStatementThreeByteMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementThreeGeoMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementThreeIPSetReferenceStatement = Nothing
+  , _wAFv2RuleGroupStatementThreeRegexPatternSetReferenceStatement = Nothing
+  , _wAFv2RuleGroupStatementThreeSizeConstraintStatement = Nothing
+  , _wAFv2RuleGroupStatementThreeSqliMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementThreeXssMatchStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html#cfn-wafv2-rulegroup-statementthree-bytematchstatement
+wafrgsthByteMatchStatement :: Lens' WAFv2RuleGroupStatementThree (Maybe WAFv2RuleGroupByteMatchStatement)
+wafrgsthByteMatchStatement = lens _wAFv2RuleGroupStatementThreeByteMatchStatement (\s a -> s { _wAFv2RuleGroupStatementThreeByteMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html#cfn-wafv2-rulegroup-statementthree-geomatchstatement
+wafrgsthGeoMatchStatement :: Lens' WAFv2RuleGroupStatementThree (Maybe WAFv2RuleGroupGeoMatchStatement)
+wafrgsthGeoMatchStatement = lens _wAFv2RuleGroupStatementThreeGeoMatchStatement (\s a -> s { _wAFv2RuleGroupStatementThreeGeoMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html#cfn-wafv2-rulegroup-statementthree-ipsetreferencestatement
+wafrgsthIPSetReferenceStatement :: Lens' WAFv2RuleGroupStatementThree (Maybe WAFv2RuleGroupIPSetReferenceStatement)
+wafrgsthIPSetReferenceStatement = lens _wAFv2RuleGroupStatementThreeIPSetReferenceStatement (\s a -> s { _wAFv2RuleGroupStatementThreeIPSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html#cfn-wafv2-rulegroup-statementthree-regexpatternsetreferencestatement
+wafrgsthRegexPatternSetReferenceStatement :: Lens' WAFv2RuleGroupStatementThree (Maybe WAFv2RuleGroupRegexPatternSetReferenceStatement)
+wafrgsthRegexPatternSetReferenceStatement = lens _wAFv2RuleGroupStatementThreeRegexPatternSetReferenceStatement (\s a -> s { _wAFv2RuleGroupStatementThreeRegexPatternSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html#cfn-wafv2-rulegroup-statementthree-sizeconstraintstatement
+wafrgsthSizeConstraintStatement :: Lens' WAFv2RuleGroupStatementThree (Maybe WAFv2RuleGroupSizeConstraintStatement)
+wafrgsthSizeConstraintStatement = lens _wAFv2RuleGroupStatementThreeSizeConstraintStatement (\s a -> s { _wAFv2RuleGroupStatementThreeSizeConstraintStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html#cfn-wafv2-rulegroup-statementthree-sqlimatchstatement
+wafrgsthSqliMatchStatement :: Lens' WAFv2RuleGroupStatementThree (Maybe WAFv2RuleGroupSqliMatchStatement)
+wafrgsthSqliMatchStatement = lens _wAFv2RuleGroupStatementThreeSqliMatchStatement (\s a -> s { _wAFv2RuleGroupStatementThreeSqliMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementthree.html#cfn-wafv2-rulegroup-statementthree-xssmatchstatement
+wafrgsthXssMatchStatement :: Lens' WAFv2RuleGroupStatementThree (Maybe WAFv2RuleGroupXssMatchStatement)
+wafrgsthXssMatchStatement = lens _wAFv2RuleGroupStatementThreeXssMatchStatement (\s a -> s { _wAFv2RuleGroupStatementThreeXssMatchStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupStatementTwo.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementTwo
+import Stratosphere.ResourceProperties.WAFv2RuleGroupByteMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupGeoMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupIPSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementTwo
+import Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementTwo
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementTwo
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRegexPatternSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSizeConstraintStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSqliMatchStatement
+import Stratosphere.ResourceProperties.WAFv2RuleGroupXssMatchStatement
+
+-- | Full data type definition for WAFv2RuleGroupStatementTwo. See
+-- 'waFv2RuleGroupStatementTwo' for a more convenient constructor.
+data WAFv2RuleGroupStatementTwo =
+  WAFv2RuleGroupStatementTwo
+  { _wAFv2RuleGroupStatementTwoAndStatement :: Maybe WAFv2RuleGroupAndStatementTwo
+  , _wAFv2RuleGroupStatementTwoByteMatchStatement :: Maybe WAFv2RuleGroupByteMatchStatement
+  , _wAFv2RuleGroupStatementTwoGeoMatchStatement :: Maybe WAFv2RuleGroupGeoMatchStatement
+  , _wAFv2RuleGroupStatementTwoIPSetReferenceStatement :: Maybe WAFv2RuleGroupIPSetReferenceStatement
+  , _wAFv2RuleGroupStatementTwoNotStatement :: Maybe WAFv2RuleGroupNotStatementTwo
+  , _wAFv2RuleGroupStatementTwoOrStatement :: Maybe WAFv2RuleGroupOrStatementTwo
+  , _wAFv2RuleGroupStatementTwoRateBasedStatement :: Maybe WAFv2RuleGroupRateBasedStatementTwo
+  , _wAFv2RuleGroupStatementTwoRegexPatternSetReferenceStatement :: Maybe WAFv2RuleGroupRegexPatternSetReferenceStatement
+  , _wAFv2RuleGroupStatementTwoSizeConstraintStatement :: Maybe WAFv2RuleGroupSizeConstraintStatement
+  , _wAFv2RuleGroupStatementTwoSqliMatchStatement :: Maybe WAFv2RuleGroupSqliMatchStatement
+  , _wAFv2RuleGroupStatementTwoXssMatchStatement :: Maybe WAFv2RuleGroupXssMatchStatement
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupStatementTwo where
+  toJSON WAFv2RuleGroupStatementTwo{..} =
+    object $
+    catMaybes
+    [ fmap (("AndStatement",) . toJSON) _wAFv2RuleGroupStatementTwoAndStatement
+    , fmap (("ByteMatchStatement",) . toJSON) _wAFv2RuleGroupStatementTwoByteMatchStatement
+    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2RuleGroupStatementTwoGeoMatchStatement
+    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2RuleGroupStatementTwoIPSetReferenceStatement
+    , fmap (("NotStatement",) . toJSON) _wAFv2RuleGroupStatementTwoNotStatement
+    , fmap (("OrStatement",) . toJSON) _wAFv2RuleGroupStatementTwoOrStatement
+    , fmap (("RateBasedStatement",) . toJSON) _wAFv2RuleGroupStatementTwoRateBasedStatement
+    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2RuleGroupStatementTwoRegexPatternSetReferenceStatement
+    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2RuleGroupStatementTwoSizeConstraintStatement
+    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2RuleGroupStatementTwoSqliMatchStatement
+    , fmap (("XssMatchStatement",) . toJSON) _wAFv2RuleGroupStatementTwoXssMatchStatement
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupStatementTwo' containing required fields
+-- as arguments.
+waFv2RuleGroupStatementTwo
+  :: WAFv2RuleGroupStatementTwo
+waFv2RuleGroupStatementTwo  =
+  WAFv2RuleGroupStatementTwo
+  { _wAFv2RuleGroupStatementTwoAndStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoByteMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoGeoMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoIPSetReferenceStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoNotStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoOrStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoRateBasedStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoRegexPatternSetReferenceStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoSizeConstraintStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoSqliMatchStatement = Nothing
+  , _wAFv2RuleGroupStatementTwoXssMatchStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-andstatement
+wafrgstwAndStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupAndStatementTwo)
+wafrgstwAndStatement = lens _wAFv2RuleGroupStatementTwoAndStatement (\s a -> s { _wAFv2RuleGroupStatementTwoAndStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-bytematchstatement
+wafrgstwByteMatchStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupByteMatchStatement)
+wafrgstwByteMatchStatement = lens _wAFv2RuleGroupStatementTwoByteMatchStatement (\s a -> s { _wAFv2RuleGroupStatementTwoByteMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-geomatchstatement
+wafrgstwGeoMatchStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupGeoMatchStatement)
+wafrgstwGeoMatchStatement = lens _wAFv2RuleGroupStatementTwoGeoMatchStatement (\s a -> s { _wAFv2RuleGroupStatementTwoGeoMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-ipsetreferencestatement
+wafrgstwIPSetReferenceStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupIPSetReferenceStatement)
+wafrgstwIPSetReferenceStatement = lens _wAFv2RuleGroupStatementTwoIPSetReferenceStatement (\s a -> s { _wAFv2RuleGroupStatementTwoIPSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-notstatement
+wafrgstwNotStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupNotStatementTwo)
+wafrgstwNotStatement = lens _wAFv2RuleGroupStatementTwoNotStatement (\s a -> s { _wAFv2RuleGroupStatementTwoNotStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-orstatement
+wafrgstwOrStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupOrStatementTwo)
+wafrgstwOrStatement = lens _wAFv2RuleGroupStatementTwoOrStatement (\s a -> s { _wAFv2RuleGroupStatementTwoOrStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-ratebasedstatement
+wafrgstwRateBasedStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupRateBasedStatementTwo)
+wafrgstwRateBasedStatement = lens _wAFv2RuleGroupStatementTwoRateBasedStatement (\s a -> s { _wAFv2RuleGroupStatementTwoRateBasedStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-regexpatternsetreferencestatement
+wafrgstwRegexPatternSetReferenceStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupRegexPatternSetReferenceStatement)
+wafrgstwRegexPatternSetReferenceStatement = lens _wAFv2RuleGroupStatementTwoRegexPatternSetReferenceStatement (\s a -> s { _wAFv2RuleGroupStatementTwoRegexPatternSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-sizeconstraintstatement
+wafrgstwSizeConstraintStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupSizeConstraintStatement)
+wafrgstwSizeConstraintStatement = lens _wAFv2RuleGroupStatementTwoSizeConstraintStatement (\s a -> s { _wAFv2RuleGroupStatementTwoSizeConstraintStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-sqlimatchstatement
+wafrgstwSqliMatchStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupSqliMatchStatement)
+wafrgstwSqliMatchStatement = lens _wAFv2RuleGroupStatementTwoSqliMatchStatement (\s a -> s { _wAFv2RuleGroupStatementTwoSqliMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statementtwo.html#cfn-wafv2-rulegroup-statementtwo-xssmatchstatement
+wafrgstwXssMatchStatement :: Lens' WAFv2RuleGroupStatementTwo (Maybe WAFv2RuleGroupXssMatchStatement)
+wafrgstwXssMatchStatement = lens _wAFv2RuleGroupStatementTwoXssMatchStatement (\s a -> s { _wAFv2RuleGroupStatementTwoXssMatchStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupTextTransformation.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupTextTransformation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupTextTransformation.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-texttransformation.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2RuleGroupTextTransformation. See
+-- 'waFv2RuleGroupTextTransformation' for a more convenient constructor.
+data WAFv2RuleGroupTextTransformation =
+  WAFv2RuleGroupTextTransformation
+  { _wAFv2RuleGroupTextTransformationPriority :: Val Integer
+  , _wAFv2RuleGroupTextTransformationType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupTextTransformation where
+  toJSON WAFv2RuleGroupTextTransformation{..} =
+    object $
+    catMaybes
+    [ (Just . ("Priority",) . toJSON) _wAFv2RuleGroupTextTransformationPriority
+    , (Just . ("Type",) . toJSON) _wAFv2RuleGroupTextTransformationType
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupTextTransformation' containing required
+-- fields as arguments.
+waFv2RuleGroupTextTransformation
+  :: Val Integer -- ^ 'wafrgttPriority'
+  -> Val Text -- ^ 'wafrgttType'
+  -> WAFv2RuleGroupTextTransformation
+waFv2RuleGroupTextTransformation priorityarg typearg =
+  WAFv2RuleGroupTextTransformation
+  { _wAFv2RuleGroupTextTransformationPriority = priorityarg
+  , _wAFv2RuleGroupTextTransformationType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-texttransformation.html#cfn-wafv2-rulegroup-texttransformation-priority
+wafrgttPriority :: Lens' WAFv2RuleGroupTextTransformation (Val Integer)
+wafrgttPriority = lens _wAFv2RuleGroupTextTransformationPriority (\s a -> s { _wAFv2RuleGroupTextTransformationPriority = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-texttransformation.html#cfn-wafv2-rulegroup-texttransformation-type
+wafrgttType :: Lens' WAFv2RuleGroupTextTransformation (Val Text)
+wafrgttType = lens _wAFv2RuleGroupTextTransformationType (\s a -> s { _wAFv2RuleGroupTextTransformationType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupVisibilityConfig.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupVisibilityConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupVisibilityConfig.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupVisibilityConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2RuleGroupVisibilityConfig. See
+-- 'waFv2RuleGroupVisibilityConfig' for a more convenient constructor.
+data WAFv2RuleGroupVisibilityConfig =
+  WAFv2RuleGroupVisibilityConfig
+  { _wAFv2RuleGroupVisibilityConfigCloudWatchMetricsEnabled :: Val Bool
+  , _wAFv2RuleGroupVisibilityConfigMetricName :: Val Text
+  , _wAFv2RuleGroupVisibilityConfigSampledRequestsEnabled :: Val Bool
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupVisibilityConfig where
+  toJSON WAFv2RuleGroupVisibilityConfig{..} =
+    object $
+    catMaybes
+    [ (Just . ("CloudWatchMetricsEnabled",) . toJSON) _wAFv2RuleGroupVisibilityConfigCloudWatchMetricsEnabled
+    , (Just . ("MetricName",) . toJSON) _wAFv2RuleGroupVisibilityConfigMetricName
+    , (Just . ("SampledRequestsEnabled",) . toJSON) _wAFv2RuleGroupVisibilityConfigSampledRequestsEnabled
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupVisibilityConfig' containing required
+-- fields as arguments.
+waFv2RuleGroupVisibilityConfig
+  :: Val Bool -- ^ 'wafrgvcCloudWatchMetricsEnabled'
+  -> Val Text -- ^ 'wafrgvcMetricName'
+  -> Val Bool -- ^ 'wafrgvcSampledRequestsEnabled'
+  -> WAFv2RuleGroupVisibilityConfig
+waFv2RuleGroupVisibilityConfig cloudWatchMetricsEnabledarg metricNamearg sampledRequestsEnabledarg =
+  WAFv2RuleGroupVisibilityConfig
+  { _wAFv2RuleGroupVisibilityConfigCloudWatchMetricsEnabled = cloudWatchMetricsEnabledarg
+  , _wAFv2RuleGroupVisibilityConfigMetricName = metricNamearg
+  , _wAFv2RuleGroupVisibilityConfigSampledRequestsEnabled = sampledRequestsEnabledarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html#cfn-wafv2-rulegroup-visibilityconfig-cloudwatchmetricsenabled
+wafrgvcCloudWatchMetricsEnabled :: Lens' WAFv2RuleGroupVisibilityConfig (Val Bool)
+wafrgvcCloudWatchMetricsEnabled = lens _wAFv2RuleGroupVisibilityConfigCloudWatchMetricsEnabled (\s a -> s { _wAFv2RuleGroupVisibilityConfigCloudWatchMetricsEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html#cfn-wafv2-rulegroup-visibilityconfig-metricname
+wafrgvcMetricName :: Lens' WAFv2RuleGroupVisibilityConfig (Val Text)
+wafrgvcMetricName = lens _wAFv2RuleGroupVisibilityConfigMetricName (\s a -> s { _wAFv2RuleGroupVisibilityConfigMetricName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html#cfn-wafv2-rulegroup-visibilityconfig-sampledrequestsenabled
+wafrgvcSampledRequestsEnabled :: Lens' WAFv2RuleGroupVisibilityConfig (Val Bool)
+wafrgvcSampledRequestsEnabled = lens _wAFv2RuleGroupVisibilityConfigSampledRequestsEnabled (\s a -> s { _wAFv2RuleGroupVisibilityConfigSampledRequestsEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupXssMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupXssMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2RuleGroupXssMatchStatement.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-xssmatchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2RuleGroupXssMatchStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation
+
+-- | Full data type definition for WAFv2RuleGroupXssMatchStatement. See
+-- 'waFv2RuleGroupXssMatchStatement' for a more convenient constructor.
+data WAFv2RuleGroupXssMatchStatement =
+  WAFv2RuleGroupXssMatchStatement
+  { _wAFv2RuleGroupXssMatchStatementFieldToMatch :: WAFv2RuleGroupFieldToMatch
+  , _wAFv2RuleGroupXssMatchStatementTextTransformations :: [WAFv2RuleGroupTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2RuleGroupXssMatchStatement where
+  toJSON WAFv2RuleGroupXssMatchStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFv2RuleGroupXssMatchStatementFieldToMatch
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2RuleGroupXssMatchStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2RuleGroupXssMatchStatement' containing required
+-- fields as arguments.
+waFv2RuleGroupXssMatchStatement
+  :: WAFv2RuleGroupFieldToMatch -- ^ 'wafrgxmsFieldToMatch'
+  -> [WAFv2RuleGroupTextTransformation] -- ^ 'wafrgxmsTextTransformations'
+  -> WAFv2RuleGroupXssMatchStatement
+waFv2RuleGroupXssMatchStatement fieldToMatcharg textTransformationsarg =
+  WAFv2RuleGroupXssMatchStatement
+  { _wAFv2RuleGroupXssMatchStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2RuleGroupXssMatchStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-xssmatchstatement.html#cfn-wafv2-rulegroup-xssmatchstatement-fieldtomatch
+wafrgxmsFieldToMatch :: Lens' WAFv2RuleGroupXssMatchStatement WAFv2RuleGroupFieldToMatch
+wafrgxmsFieldToMatch = lens _wAFv2RuleGroupXssMatchStatementFieldToMatch (\s a -> s { _wAFv2RuleGroupXssMatchStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-xssmatchstatement.html#cfn-wafv2-rulegroup-xssmatchstatement-texttransformations
+wafrgxmsTextTransformations :: Lens' WAFv2RuleGroupXssMatchStatement [WAFv2RuleGroupTextTransformation]
+wafrgxmsTextTransformations = lens _wAFv2RuleGroupXssMatchStatementTextTransformations (\s a -> s { _wAFv2RuleGroupXssMatchStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLAndStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLAndStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLAndStatementOne.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-andstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLAndStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementTwo
+
+-- | Full data type definition for WAFv2WebACLAndStatementOne. See
+-- 'waFv2WebACLAndStatementOne' for a more convenient constructor.
+data WAFv2WebACLAndStatementOne =
+  WAFv2WebACLAndStatementOne
+  { _wAFv2WebACLAndStatementOneStatements :: [WAFv2WebACLStatementTwo]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLAndStatementOne where
+  toJSON WAFv2WebACLAndStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2WebACLAndStatementOneStatements
+    ]
+
+-- | Constructor for 'WAFv2WebACLAndStatementOne' containing required fields
+-- as arguments.
+waFv2WebACLAndStatementOne
+  :: [WAFv2WebACLStatementTwo] -- ^ 'wafwaclasoStatements'
+  -> WAFv2WebACLAndStatementOne
+waFv2WebACLAndStatementOne statementsarg =
+  WAFv2WebACLAndStatementOne
+  { _wAFv2WebACLAndStatementOneStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-andstatementone.html#cfn-wafv2-webacl-andstatementone-statements
+wafwaclasoStatements :: Lens' WAFv2WebACLAndStatementOne [WAFv2WebACLStatementTwo]
+wafwaclasoStatements = lens _wAFv2WebACLAndStatementOneStatements (\s a -> s { _wAFv2WebACLAndStatementOneStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLAndStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLAndStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLAndStatementTwo.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-andstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLAndStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementThree
+
+-- | Full data type definition for WAFv2WebACLAndStatementTwo. See
+-- 'waFv2WebACLAndStatementTwo' for a more convenient constructor.
+data WAFv2WebACLAndStatementTwo =
+  WAFv2WebACLAndStatementTwo
+  { _wAFv2WebACLAndStatementTwoStatements :: [WAFv2WebACLStatementThree]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLAndStatementTwo where
+  toJSON WAFv2WebACLAndStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2WebACLAndStatementTwoStatements
+    ]
+
+-- | Constructor for 'WAFv2WebACLAndStatementTwo' containing required fields
+-- as arguments.
+waFv2WebACLAndStatementTwo
+  :: [WAFv2WebACLStatementThree] -- ^ 'wafwaclastStatements'
+  -> WAFv2WebACLAndStatementTwo
+waFv2WebACLAndStatementTwo statementsarg =
+  WAFv2WebACLAndStatementTwo
+  { _wAFv2WebACLAndStatementTwoStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-andstatementtwo.html#cfn-wafv2-webacl-andstatementtwo-statements
+wafwaclastStatements :: Lens' WAFv2WebACLAndStatementTwo [WAFv2WebACLStatementThree]
+wafwaclastStatements = lens _wAFv2WebACLAndStatementTwoStatements (\s a -> s { _wAFv2WebACLAndStatementTwoStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLByteMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLByteMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLByteMatchStatement.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation
+
+-- | Full data type definition for WAFv2WebACLByteMatchStatement. See
+-- 'waFv2WebACLByteMatchStatement' for a more convenient constructor.
+data WAFv2WebACLByteMatchStatement =
+  WAFv2WebACLByteMatchStatement
+  { _wAFv2WebACLByteMatchStatementFieldToMatch :: WAFv2WebACLFieldToMatch
+  , _wAFv2WebACLByteMatchStatementPositionalConstraint :: Val Text
+  , _wAFv2WebACLByteMatchStatementSearchString :: Val Text
+  , _wAFv2WebACLByteMatchStatementSearchStringBase64 :: Maybe (Val Text)
+  , _wAFv2WebACLByteMatchStatementTextTransformations :: [WAFv2WebACLTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLByteMatchStatement where
+  toJSON WAFv2WebACLByteMatchStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFv2WebACLByteMatchStatementFieldToMatch
+    , (Just . ("PositionalConstraint",) . toJSON) _wAFv2WebACLByteMatchStatementPositionalConstraint
+    , (Just . ("SearchString",) . toJSON) _wAFv2WebACLByteMatchStatementSearchString
+    , fmap (("SearchStringBase64",) . toJSON) _wAFv2WebACLByteMatchStatementSearchStringBase64
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2WebACLByteMatchStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2WebACLByteMatchStatement' containing required
+-- fields as arguments.
+waFv2WebACLByteMatchStatement
+  :: WAFv2WebACLFieldToMatch -- ^ 'wafwaclbmsFieldToMatch'
+  -> Val Text -- ^ 'wafwaclbmsPositionalConstraint'
+  -> Val Text -- ^ 'wafwaclbmsSearchString'
+  -> [WAFv2WebACLTextTransformation] -- ^ 'wafwaclbmsTextTransformations'
+  -> WAFv2WebACLByteMatchStatement
+waFv2WebACLByteMatchStatement fieldToMatcharg positionalConstraintarg searchStringarg textTransformationsarg =
+  WAFv2WebACLByteMatchStatement
+  { _wAFv2WebACLByteMatchStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2WebACLByteMatchStatementPositionalConstraint = positionalConstraintarg
+  , _wAFv2WebACLByteMatchStatementSearchString = searchStringarg
+  , _wAFv2WebACLByteMatchStatementSearchStringBase64 = Nothing
+  , _wAFv2WebACLByteMatchStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-fieldtomatch
+wafwaclbmsFieldToMatch :: Lens' WAFv2WebACLByteMatchStatement WAFv2WebACLFieldToMatch
+wafwaclbmsFieldToMatch = lens _wAFv2WebACLByteMatchStatementFieldToMatch (\s a -> s { _wAFv2WebACLByteMatchStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-positionalconstraint
+wafwaclbmsPositionalConstraint :: Lens' WAFv2WebACLByteMatchStatement (Val Text)
+wafwaclbmsPositionalConstraint = lens _wAFv2WebACLByteMatchStatementPositionalConstraint (\s a -> s { _wAFv2WebACLByteMatchStatementPositionalConstraint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-searchstring
+wafwaclbmsSearchString :: Lens' WAFv2WebACLByteMatchStatement (Val Text)
+wafwaclbmsSearchString = lens _wAFv2WebACLByteMatchStatementSearchString (\s a -> s { _wAFv2WebACLByteMatchStatementSearchString = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-searchstringbase64
+wafwaclbmsSearchStringBase64 :: Lens' WAFv2WebACLByteMatchStatement (Maybe (Val Text))
+wafwaclbmsSearchStringBase64 = lens _wAFv2WebACLByteMatchStatementSearchStringBase64 (\s a -> s { _wAFv2WebACLByteMatchStatementSearchStringBase64 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-bytematchstatement.html#cfn-wafv2-webacl-bytematchstatement-texttransformations
+wafwaclbmsTextTransformations :: Lens' WAFv2WebACLByteMatchStatement [WAFv2WebACLTextTransformation]
+wafwaclbmsTextTransformations = lens _wAFv2WebACLByteMatchStatementTextTransformations (\s a -> s { _wAFv2WebACLByteMatchStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLDefaultAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLDefaultAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLDefaultAction.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-defaultaction.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLDefaultAction where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLDefaultAction. See
+-- 'waFv2WebACLDefaultAction' for a more convenient constructor.
+data WAFv2WebACLDefaultAction =
+  WAFv2WebACLDefaultAction
+  { _wAFv2WebACLDefaultActionAllow :: Maybe Object
+  , _wAFv2WebACLDefaultActionBlock :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLDefaultAction where
+  toJSON WAFv2WebACLDefaultAction{..} =
+    object $
+    catMaybes
+    [ fmap (("Allow",) . toJSON) _wAFv2WebACLDefaultActionAllow
+    , fmap (("Block",) . toJSON) _wAFv2WebACLDefaultActionBlock
+    ]
+
+-- | Constructor for 'WAFv2WebACLDefaultAction' containing required fields as
+-- arguments.
+waFv2WebACLDefaultAction
+  :: WAFv2WebACLDefaultAction
+waFv2WebACLDefaultAction  =
+  WAFv2WebACLDefaultAction
+  { _wAFv2WebACLDefaultActionAllow = Nothing
+  , _wAFv2WebACLDefaultActionBlock = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-defaultaction.html#cfn-wafv2-webacl-defaultaction-allow
+wafwacldaAllow :: Lens' WAFv2WebACLDefaultAction (Maybe Object)
+wafwacldaAllow = lens _wAFv2WebACLDefaultActionAllow (\s a -> s { _wAFv2WebACLDefaultActionAllow = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-defaultaction.html#cfn-wafv2-webacl-defaultaction-block
+wafwacldaBlock :: Lens' WAFv2WebACLDefaultAction (Maybe Object)
+wafwacldaBlock = lens _wAFv2WebACLDefaultActionBlock (\s a -> s { _wAFv2WebACLDefaultActionBlock = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLExcludedRule.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLExcludedRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLExcludedRule.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-excludedrule.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLExcludedRule where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLExcludedRule. See
+-- 'waFv2WebACLExcludedRule' for a more convenient constructor.
+data WAFv2WebACLExcludedRule =
+  WAFv2WebACLExcludedRule
+  { _wAFv2WebACLExcludedRuleName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLExcludedRule where
+  toJSON WAFv2WebACLExcludedRule{..} =
+    object $
+    catMaybes
+    [ (Just . ("Name",) . toJSON) _wAFv2WebACLExcludedRuleName
+    ]
+
+-- | Constructor for 'WAFv2WebACLExcludedRule' containing required fields as
+-- arguments.
+waFv2WebACLExcludedRule
+  :: Val Text -- ^ 'wafwaclerName'
+  -> WAFv2WebACLExcludedRule
+waFv2WebACLExcludedRule namearg =
+  WAFv2WebACLExcludedRule
+  { _wAFv2WebACLExcludedRuleName = namearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-excludedrule.html#cfn-wafv2-webacl-excludedrule-name
+wafwaclerName :: Lens' WAFv2WebACLExcludedRule (Val Text)
+wafwaclerName = lens _wAFv2WebACLExcludedRuleName (\s a -> s { _wAFv2WebACLExcludedRuleName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLFieldToMatch.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLFieldToMatch.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLFieldToMatch.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLFieldToMatch. See
+-- 'waFv2WebACLFieldToMatch' for a more convenient constructor.
+data WAFv2WebACLFieldToMatch =
+  WAFv2WebACLFieldToMatch
+  { _wAFv2WebACLFieldToMatchAllQueryArguments :: Maybe Object
+  , _wAFv2WebACLFieldToMatchBody :: Maybe Object
+  , _wAFv2WebACLFieldToMatchMethod :: Maybe Object
+  , _wAFv2WebACLFieldToMatchQueryString :: Maybe Object
+  , _wAFv2WebACLFieldToMatchSingleHeader :: Maybe Object
+  , _wAFv2WebACLFieldToMatchSingleQueryArgument :: Maybe Object
+  , _wAFv2WebACLFieldToMatchUriPath :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLFieldToMatch where
+  toJSON WAFv2WebACLFieldToMatch{..} =
+    object $
+    catMaybes
+    [ fmap (("AllQueryArguments",) . toJSON) _wAFv2WebACLFieldToMatchAllQueryArguments
+    , fmap (("Body",) . toJSON) _wAFv2WebACLFieldToMatchBody
+    , fmap (("Method",) . toJSON) _wAFv2WebACLFieldToMatchMethod
+    , fmap (("QueryString",) . toJSON) _wAFv2WebACLFieldToMatchQueryString
+    , fmap (("SingleHeader",) . toJSON) _wAFv2WebACLFieldToMatchSingleHeader
+    , fmap (("SingleQueryArgument",) . toJSON) _wAFv2WebACLFieldToMatchSingleQueryArgument
+    , fmap (("UriPath",) . toJSON) _wAFv2WebACLFieldToMatchUriPath
+    ]
+
+-- | Constructor for 'WAFv2WebACLFieldToMatch' containing required fields as
+-- arguments.
+waFv2WebACLFieldToMatch
+  :: WAFv2WebACLFieldToMatch
+waFv2WebACLFieldToMatch  =
+  WAFv2WebACLFieldToMatch
+  { _wAFv2WebACLFieldToMatchAllQueryArguments = Nothing
+  , _wAFv2WebACLFieldToMatchBody = Nothing
+  , _wAFv2WebACLFieldToMatchMethod = Nothing
+  , _wAFv2WebACLFieldToMatchQueryString = Nothing
+  , _wAFv2WebACLFieldToMatchSingleHeader = Nothing
+  , _wAFv2WebACLFieldToMatchSingleQueryArgument = Nothing
+  , _wAFv2WebACLFieldToMatchUriPath = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-allqueryarguments
+wafwaclftmAllQueryArguments :: Lens' WAFv2WebACLFieldToMatch (Maybe Object)
+wafwaclftmAllQueryArguments = lens _wAFv2WebACLFieldToMatchAllQueryArguments (\s a -> s { _wAFv2WebACLFieldToMatchAllQueryArguments = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-body
+wafwaclftmBody :: Lens' WAFv2WebACLFieldToMatch (Maybe Object)
+wafwaclftmBody = lens _wAFv2WebACLFieldToMatchBody (\s a -> s { _wAFv2WebACLFieldToMatchBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-method
+wafwaclftmMethod :: Lens' WAFv2WebACLFieldToMatch (Maybe Object)
+wafwaclftmMethod = lens _wAFv2WebACLFieldToMatchMethod (\s a -> s { _wAFv2WebACLFieldToMatchMethod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-querystring
+wafwaclftmQueryString :: Lens' WAFv2WebACLFieldToMatch (Maybe Object)
+wafwaclftmQueryString = lens _wAFv2WebACLFieldToMatchQueryString (\s a -> s { _wAFv2WebACLFieldToMatchQueryString = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-singleheader
+wafwaclftmSingleHeader :: Lens' WAFv2WebACLFieldToMatch (Maybe Object)
+wafwaclftmSingleHeader = lens _wAFv2WebACLFieldToMatchSingleHeader (\s a -> s { _wAFv2WebACLFieldToMatchSingleHeader = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-singlequeryargument
+wafwaclftmSingleQueryArgument :: Lens' WAFv2WebACLFieldToMatch (Maybe Object)
+wafwaclftmSingleQueryArgument = lens _wAFv2WebACLFieldToMatchSingleQueryArgument (\s a -> s { _wAFv2WebACLFieldToMatchSingleQueryArgument = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-fieldtomatch.html#cfn-wafv2-webacl-fieldtomatch-uripath
+wafwaclftmUriPath :: Lens' WAFv2WebACLFieldToMatch (Maybe Object)
+wafwaclftmUriPath = lens _wAFv2WebACLFieldToMatchUriPath (\s a -> s { _wAFv2WebACLFieldToMatchUriPath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLGeoMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLGeoMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLGeoMatchStatement.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLGeoMatchStatement. See
+-- 'waFv2WebACLGeoMatchStatement' for a more convenient constructor.
+data WAFv2WebACLGeoMatchStatement =
+  WAFv2WebACLGeoMatchStatement
+  { _wAFv2WebACLGeoMatchStatementCountryCodes :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLGeoMatchStatement where
+  toJSON WAFv2WebACLGeoMatchStatement{..} =
+    object $
+    catMaybes
+    [ fmap (("CountryCodes",) . toJSON) _wAFv2WebACLGeoMatchStatementCountryCodes
+    ]
+
+-- | Constructor for 'WAFv2WebACLGeoMatchStatement' containing required fields
+-- as arguments.
+waFv2WebACLGeoMatchStatement
+  :: WAFv2WebACLGeoMatchStatement
+waFv2WebACLGeoMatchStatement  =
+  WAFv2WebACLGeoMatchStatement
+  { _wAFv2WebACLGeoMatchStatementCountryCodes = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html#cfn-wafv2-webacl-geomatchstatement-countrycodes
+wafwaclgmsCountryCodes :: Lens' WAFv2WebACLGeoMatchStatement (Maybe (ValList Text))
+wafwaclgmsCountryCodes = lens _wAFv2WebACLGeoMatchStatementCountryCodes (\s a -> s { _wAFv2WebACLGeoMatchStatementCountryCodes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLIPSetReferenceStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLIPSetReferenceStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLIPSetReferenceStatement.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetreferencestatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLIPSetReferenceStatement. See
+-- 'waFv2WebACLIPSetReferenceStatement' for a more convenient constructor.
+data WAFv2WebACLIPSetReferenceStatement =
+  WAFv2WebACLIPSetReferenceStatement
+  { _wAFv2WebACLIPSetReferenceStatementArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLIPSetReferenceStatement where
+  toJSON WAFv2WebACLIPSetReferenceStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("Arn",) . toJSON) _wAFv2WebACLIPSetReferenceStatementArn
+    ]
+
+-- | Constructor for 'WAFv2WebACLIPSetReferenceStatement' containing required
+-- fields as arguments.
+waFv2WebACLIPSetReferenceStatement
+  :: Val Text -- ^ 'wafwaclipsrsArn'
+  -> WAFv2WebACLIPSetReferenceStatement
+waFv2WebACLIPSetReferenceStatement arnarg =
+  WAFv2WebACLIPSetReferenceStatement
+  { _wAFv2WebACLIPSetReferenceStatementArn = arnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetreferencestatement.html#cfn-wafv2-webacl-ipsetreferencestatement-arn
+wafwaclipsrsArn :: Lens' WAFv2WebACLIPSetReferenceStatement (Val Text)
+wafwaclipsrsArn = lens _wAFv2WebACLIPSetReferenceStatementArn (\s a -> s { _wAFv2WebACLIPSetReferenceStatementArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLManagedRuleGroupStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLManagedRuleGroupStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLManagedRuleGroupStatement.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLExcludedRule
+
+-- | Full data type definition for WAFv2WebACLManagedRuleGroupStatement. See
+-- 'waFv2WebACLManagedRuleGroupStatement' for a more convenient constructor.
+data WAFv2WebACLManagedRuleGroupStatement =
+  WAFv2WebACLManagedRuleGroupStatement
+  { _wAFv2WebACLManagedRuleGroupStatementExcludedRules :: Maybe [WAFv2WebACLExcludedRule]
+  , _wAFv2WebACLManagedRuleGroupStatementName :: Val Text
+  , _wAFv2WebACLManagedRuleGroupStatementVendorName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLManagedRuleGroupStatement where
+  toJSON WAFv2WebACLManagedRuleGroupStatement{..} =
+    object $
+    catMaybes
+    [ fmap (("ExcludedRules",) . toJSON) _wAFv2WebACLManagedRuleGroupStatementExcludedRules
+    , (Just . ("Name",) . toJSON) _wAFv2WebACLManagedRuleGroupStatementName
+    , (Just . ("VendorName",) . toJSON) _wAFv2WebACLManagedRuleGroupStatementVendorName
+    ]
+
+-- | Constructor for 'WAFv2WebACLManagedRuleGroupStatement' containing
+-- required fields as arguments.
+waFv2WebACLManagedRuleGroupStatement
+  :: Val Text -- ^ 'wafwaclmrgsName'
+  -> Val Text -- ^ 'wafwaclmrgsVendorName'
+  -> WAFv2WebACLManagedRuleGroupStatement
+waFv2WebACLManagedRuleGroupStatement namearg vendorNamearg =
+  WAFv2WebACLManagedRuleGroupStatement
+  { _wAFv2WebACLManagedRuleGroupStatementExcludedRules = Nothing
+  , _wAFv2WebACLManagedRuleGroupStatementName = namearg
+  , _wAFv2WebACLManagedRuleGroupStatementVendorName = vendorNamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-excludedrules
+wafwaclmrgsExcludedRules :: Lens' WAFv2WebACLManagedRuleGroupStatement (Maybe [WAFv2WebACLExcludedRule])
+wafwaclmrgsExcludedRules = lens _wAFv2WebACLManagedRuleGroupStatementExcludedRules (\s a -> s { _wAFv2WebACLManagedRuleGroupStatementExcludedRules = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-name
+wafwaclmrgsName :: Lens' WAFv2WebACLManagedRuleGroupStatement (Val Text)
+wafwaclmrgsName = lens _wAFv2WebACLManagedRuleGroupStatementName (\s a -> s { _wAFv2WebACLManagedRuleGroupStatementName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-managedrulegroupstatement.html#cfn-wafv2-webacl-managedrulegroupstatement-vendorname
+wafwaclmrgsVendorName :: Lens' WAFv2WebACLManagedRuleGroupStatement (Val Text)
+wafwaclmrgsVendorName = lens _wAFv2WebACLManagedRuleGroupStatementVendorName (\s a -> s { _wAFv2WebACLManagedRuleGroupStatementVendorName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLNotStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLNotStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLNotStatementOne.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLNotStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementTwo
+
+-- | Full data type definition for WAFv2WebACLNotStatementOne. See
+-- 'waFv2WebACLNotStatementOne' for a more convenient constructor.
+data WAFv2WebACLNotStatementOne =
+  WAFv2WebACLNotStatementOne
+  { _wAFv2WebACLNotStatementOneStatement :: WAFv2WebACLStatementTwo
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLNotStatementOne where
+  toJSON WAFv2WebACLNotStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statement",) . toJSON) _wAFv2WebACLNotStatementOneStatement
+    ]
+
+-- | Constructor for 'WAFv2WebACLNotStatementOne' containing required fields
+-- as arguments.
+waFv2WebACLNotStatementOne
+  :: WAFv2WebACLStatementTwo -- ^ 'wafwaclnsoStatement'
+  -> WAFv2WebACLNotStatementOne
+waFv2WebACLNotStatementOne statementarg =
+  WAFv2WebACLNotStatementOne
+  { _wAFv2WebACLNotStatementOneStatement = statementarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatementone.html#cfn-wafv2-webacl-notstatementone-statement
+wafwaclnsoStatement :: Lens' WAFv2WebACLNotStatementOne WAFv2WebACLStatementTwo
+wafwaclnsoStatement = lens _wAFv2WebACLNotStatementOneStatement (\s a -> s { _wAFv2WebACLNotStatementOneStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLNotStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLNotStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLNotStatementTwo.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLNotStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementThree
+
+-- | Full data type definition for WAFv2WebACLNotStatementTwo. See
+-- 'waFv2WebACLNotStatementTwo' for a more convenient constructor.
+data WAFv2WebACLNotStatementTwo =
+  WAFv2WebACLNotStatementTwo
+  { _wAFv2WebACLNotStatementTwoStatement :: WAFv2WebACLStatementThree
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLNotStatementTwo where
+  toJSON WAFv2WebACLNotStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statement",) . toJSON) _wAFv2WebACLNotStatementTwoStatement
+    ]
+
+-- | Constructor for 'WAFv2WebACLNotStatementTwo' containing required fields
+-- as arguments.
+waFv2WebACLNotStatementTwo
+  :: WAFv2WebACLStatementThree -- ^ 'wafwaclnstStatement'
+  -> WAFv2WebACLNotStatementTwo
+waFv2WebACLNotStatementTwo statementarg =
+  WAFv2WebACLNotStatementTwo
+  { _wAFv2WebACLNotStatementTwoStatement = statementarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatementtwo.html#cfn-wafv2-webacl-notstatementtwo-statement
+wafwaclnstStatement :: Lens' WAFv2WebACLNotStatementTwo WAFv2WebACLStatementThree
+wafwaclnstStatement = lens _wAFv2WebACLNotStatementTwoStatement (\s a -> s { _wAFv2WebACLNotStatementTwoStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOrStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOrStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOrStatementOne.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-orstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLOrStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementTwo
+
+-- | Full data type definition for WAFv2WebACLOrStatementOne. See
+-- 'waFv2WebACLOrStatementOne' for a more convenient constructor.
+data WAFv2WebACLOrStatementOne =
+  WAFv2WebACLOrStatementOne
+  { _wAFv2WebACLOrStatementOneStatements :: [WAFv2WebACLStatementTwo]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLOrStatementOne where
+  toJSON WAFv2WebACLOrStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2WebACLOrStatementOneStatements
+    ]
+
+-- | Constructor for 'WAFv2WebACLOrStatementOne' containing required fields as
+-- arguments.
+waFv2WebACLOrStatementOne
+  :: [WAFv2WebACLStatementTwo] -- ^ 'wafwaclosoStatements'
+  -> WAFv2WebACLOrStatementOne
+waFv2WebACLOrStatementOne statementsarg =
+  WAFv2WebACLOrStatementOne
+  { _wAFv2WebACLOrStatementOneStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-orstatementone.html#cfn-wafv2-webacl-orstatementone-statements
+wafwaclosoStatements :: Lens' WAFv2WebACLOrStatementOne [WAFv2WebACLStatementTwo]
+wafwaclosoStatements = lens _wAFv2WebACLOrStatementOneStatements (\s a -> s { _wAFv2WebACLOrStatementOneStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOrStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOrStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOrStatementTwo.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-orstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLOrStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementThree
+
+-- | Full data type definition for WAFv2WebACLOrStatementTwo. See
+-- 'waFv2WebACLOrStatementTwo' for a more convenient constructor.
+data WAFv2WebACLOrStatementTwo =
+  WAFv2WebACLOrStatementTwo
+  { _wAFv2WebACLOrStatementTwoStatements :: [WAFv2WebACLStatementThree]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLOrStatementTwo where
+  toJSON WAFv2WebACLOrStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Statements",) . toJSON) _wAFv2WebACLOrStatementTwoStatements
+    ]
+
+-- | Constructor for 'WAFv2WebACLOrStatementTwo' containing required fields as
+-- arguments.
+waFv2WebACLOrStatementTwo
+  :: [WAFv2WebACLStatementThree] -- ^ 'wafwaclostStatements'
+  -> WAFv2WebACLOrStatementTwo
+waFv2WebACLOrStatementTwo statementsarg =
+  WAFv2WebACLOrStatementTwo
+  { _wAFv2WebACLOrStatementTwoStatements = statementsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-orstatementtwo.html#cfn-wafv2-webacl-orstatementtwo-statements
+wafwaclostStatements :: Lens' WAFv2WebACLOrStatementTwo [WAFv2WebACLStatementThree]
+wafwaclostStatements = lens _wAFv2WebACLOrStatementTwoStatements (\s a -> s { _wAFv2WebACLOrStatementTwoStatements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOverrideAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOverrideAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLOverrideAction.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-overrideaction.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLOverrideAction where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLOverrideAction. See
+-- 'waFv2WebACLOverrideAction' for a more convenient constructor.
+data WAFv2WebACLOverrideAction =
+  WAFv2WebACLOverrideAction
+  { _wAFv2WebACLOverrideActionCount :: Maybe Object
+  , _wAFv2WebACLOverrideActionNone :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLOverrideAction where
+  toJSON WAFv2WebACLOverrideAction{..} =
+    object $
+    catMaybes
+    [ fmap (("Count",) . toJSON) _wAFv2WebACLOverrideActionCount
+    , fmap (("None",) . toJSON) _wAFv2WebACLOverrideActionNone
+    ]
+
+-- | Constructor for 'WAFv2WebACLOverrideAction' containing required fields as
+-- arguments.
+waFv2WebACLOverrideAction
+  :: WAFv2WebACLOverrideAction
+waFv2WebACLOverrideAction  =
+  WAFv2WebACLOverrideAction
+  { _wAFv2WebACLOverrideActionCount = Nothing
+  , _wAFv2WebACLOverrideActionNone = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-overrideaction.html#cfn-wafv2-webacl-overrideaction-count
+wafwacloaCount :: Lens' WAFv2WebACLOverrideAction (Maybe Object)
+wafwacloaCount = lens _wAFv2WebACLOverrideActionCount (\s a -> s { _wAFv2WebACLOverrideActionCount = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-overrideaction.html#cfn-wafv2-webacl-overrideaction-none
+wafwacloaNone :: Lens' WAFv2WebACLOverrideAction (Maybe Object)
+wafwacloaNone = lens _wAFv2WebACLOverrideActionNone (\s a -> s { _wAFv2WebACLOverrideActionNone = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRateBasedStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRateBasedStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRateBasedStatementOne.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementone.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementTwo
+
+-- | Full data type definition for WAFv2WebACLRateBasedStatementOne. See
+-- 'waFv2WebACLRateBasedStatementOne' for a more convenient constructor.
+data WAFv2WebACLRateBasedStatementOne =
+  WAFv2WebACLRateBasedStatementOne
+  { _wAFv2WebACLRateBasedStatementOneAggregateKeyType :: Val Text
+  , _wAFv2WebACLRateBasedStatementOneLimit :: Val Integer
+  , _wAFv2WebACLRateBasedStatementOneScopeDownStatement :: Maybe WAFv2WebACLStatementTwo
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLRateBasedStatementOne where
+  toJSON WAFv2WebACLRateBasedStatementOne{..} =
+    object $
+    catMaybes
+    [ (Just . ("AggregateKeyType",) . toJSON) _wAFv2WebACLRateBasedStatementOneAggregateKeyType
+    , (Just . ("Limit",) . toJSON) _wAFv2WebACLRateBasedStatementOneLimit
+    , fmap (("ScopeDownStatement",) . toJSON) _wAFv2WebACLRateBasedStatementOneScopeDownStatement
+    ]
+
+-- | Constructor for 'WAFv2WebACLRateBasedStatementOne' containing required
+-- fields as arguments.
+waFv2WebACLRateBasedStatementOne
+  :: Val Text -- ^ 'wafwaclrbsoAggregateKeyType'
+  -> Val Integer -- ^ 'wafwaclrbsoLimit'
+  -> WAFv2WebACLRateBasedStatementOne
+waFv2WebACLRateBasedStatementOne aggregateKeyTypearg limitarg =
+  WAFv2WebACLRateBasedStatementOne
+  { _wAFv2WebACLRateBasedStatementOneAggregateKeyType = aggregateKeyTypearg
+  , _wAFv2WebACLRateBasedStatementOneLimit = limitarg
+  , _wAFv2WebACLRateBasedStatementOneScopeDownStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementone.html#cfn-wafv2-webacl-ratebasedstatementone-aggregatekeytype
+wafwaclrbsoAggregateKeyType :: Lens' WAFv2WebACLRateBasedStatementOne (Val Text)
+wafwaclrbsoAggregateKeyType = lens _wAFv2WebACLRateBasedStatementOneAggregateKeyType (\s a -> s { _wAFv2WebACLRateBasedStatementOneAggregateKeyType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementone.html#cfn-wafv2-webacl-ratebasedstatementone-limit
+wafwaclrbsoLimit :: Lens' WAFv2WebACLRateBasedStatementOne (Val Integer)
+wafwaclrbsoLimit = lens _wAFv2WebACLRateBasedStatementOneLimit (\s a -> s { _wAFv2WebACLRateBasedStatementOneLimit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementone.html#cfn-wafv2-webacl-ratebasedstatementone-scopedownstatement
+wafwaclrbsoScopeDownStatement :: Lens' WAFv2WebACLRateBasedStatementOne (Maybe WAFv2WebACLStatementTwo)
+wafwaclrbsoScopeDownStatement = lens _wAFv2WebACLRateBasedStatementOneScopeDownStatement (\s a -> s { _wAFv2WebACLRateBasedStatementOneScopeDownStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRateBasedStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRateBasedStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRateBasedStatementTwo.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementThree
+
+-- | Full data type definition for WAFv2WebACLRateBasedStatementTwo. See
+-- 'waFv2WebACLRateBasedStatementTwo' for a more convenient constructor.
+data WAFv2WebACLRateBasedStatementTwo =
+  WAFv2WebACLRateBasedStatementTwo
+  { _wAFv2WebACLRateBasedStatementTwoAggregateKeyType :: Val Text
+  , _wAFv2WebACLRateBasedStatementTwoLimit :: Val Integer
+  , _wAFv2WebACLRateBasedStatementTwoScopeDownStatement :: Maybe WAFv2WebACLStatementThree
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLRateBasedStatementTwo where
+  toJSON WAFv2WebACLRateBasedStatementTwo{..} =
+    object $
+    catMaybes
+    [ (Just . ("AggregateKeyType",) . toJSON) _wAFv2WebACLRateBasedStatementTwoAggregateKeyType
+    , (Just . ("Limit",) . toJSON) _wAFv2WebACLRateBasedStatementTwoLimit
+    , fmap (("ScopeDownStatement",) . toJSON) _wAFv2WebACLRateBasedStatementTwoScopeDownStatement
+    ]
+
+-- | Constructor for 'WAFv2WebACLRateBasedStatementTwo' containing required
+-- fields as arguments.
+waFv2WebACLRateBasedStatementTwo
+  :: Val Text -- ^ 'wafwaclrbstAggregateKeyType'
+  -> Val Integer -- ^ 'wafwaclrbstLimit'
+  -> WAFv2WebACLRateBasedStatementTwo
+waFv2WebACLRateBasedStatementTwo aggregateKeyTypearg limitarg =
+  WAFv2WebACLRateBasedStatementTwo
+  { _wAFv2WebACLRateBasedStatementTwoAggregateKeyType = aggregateKeyTypearg
+  , _wAFv2WebACLRateBasedStatementTwoLimit = limitarg
+  , _wAFv2WebACLRateBasedStatementTwoScopeDownStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementtwo.html#cfn-wafv2-webacl-ratebasedstatementtwo-aggregatekeytype
+wafwaclrbstAggregateKeyType :: Lens' WAFv2WebACLRateBasedStatementTwo (Val Text)
+wafwaclrbstAggregateKeyType = lens _wAFv2WebACLRateBasedStatementTwoAggregateKeyType (\s a -> s { _wAFv2WebACLRateBasedStatementTwoAggregateKeyType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementtwo.html#cfn-wafv2-webacl-ratebasedstatementtwo-limit
+wafwaclrbstLimit :: Lens' WAFv2WebACLRateBasedStatementTwo (Val Integer)
+wafwaclrbstLimit = lens _wAFv2WebACLRateBasedStatementTwoLimit (\s a -> s { _wAFv2WebACLRateBasedStatementTwoLimit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementtwo.html#cfn-wafv2-webacl-ratebasedstatementtwo-scopedownstatement
+wafwaclrbstScopeDownStatement :: Lens' WAFv2WebACLRateBasedStatementTwo (Maybe WAFv2WebACLStatementThree)
+wafwaclrbstScopeDownStatement = lens _wAFv2WebACLRateBasedStatementTwoScopeDownStatement (\s a -> s { _wAFv2WebACLRateBasedStatementTwoScopeDownStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRegexPatternSetReferenceStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRegexPatternSetReferenceStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRegexPatternSetReferenceStatement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLRegexPatternSetReferenceStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation
+
+-- | Full data type definition for
+-- WAFv2WebACLRegexPatternSetReferenceStatement. See
+-- 'waFv2WebACLRegexPatternSetReferenceStatement' for a more convenient
+-- constructor.
+data WAFv2WebACLRegexPatternSetReferenceStatement =
+  WAFv2WebACLRegexPatternSetReferenceStatement
+  { _wAFv2WebACLRegexPatternSetReferenceStatementArn :: Val Text
+  , _wAFv2WebACLRegexPatternSetReferenceStatementFieldToMatch :: WAFv2WebACLFieldToMatch
+  , _wAFv2WebACLRegexPatternSetReferenceStatementTextTransformations :: [WAFv2WebACLTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLRegexPatternSetReferenceStatement where
+  toJSON WAFv2WebACLRegexPatternSetReferenceStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("Arn",) . toJSON) _wAFv2WebACLRegexPatternSetReferenceStatementArn
+    , (Just . ("FieldToMatch",) . toJSON) _wAFv2WebACLRegexPatternSetReferenceStatementFieldToMatch
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2WebACLRegexPatternSetReferenceStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2WebACLRegexPatternSetReferenceStatement' containing
+-- required fields as arguments.
+waFv2WebACLRegexPatternSetReferenceStatement
+  :: Val Text -- ^ 'wafwaclrpsrsArn'
+  -> WAFv2WebACLFieldToMatch -- ^ 'wafwaclrpsrsFieldToMatch'
+  -> [WAFv2WebACLTextTransformation] -- ^ 'wafwaclrpsrsTextTransformations'
+  -> WAFv2WebACLRegexPatternSetReferenceStatement
+waFv2WebACLRegexPatternSetReferenceStatement arnarg fieldToMatcharg textTransformationsarg =
+  WAFv2WebACLRegexPatternSetReferenceStatement
+  { _wAFv2WebACLRegexPatternSetReferenceStatementArn = arnarg
+  , _wAFv2WebACLRegexPatternSetReferenceStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2WebACLRegexPatternSetReferenceStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html#cfn-wafv2-webacl-regexpatternsetreferencestatement-arn
+wafwaclrpsrsArn :: Lens' WAFv2WebACLRegexPatternSetReferenceStatement (Val Text)
+wafwaclrpsrsArn = lens _wAFv2WebACLRegexPatternSetReferenceStatementArn (\s a -> s { _wAFv2WebACLRegexPatternSetReferenceStatementArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html#cfn-wafv2-webacl-regexpatternsetreferencestatement-fieldtomatch
+wafwaclrpsrsFieldToMatch :: Lens' WAFv2WebACLRegexPatternSetReferenceStatement WAFv2WebACLFieldToMatch
+wafwaclrpsrsFieldToMatch = lens _wAFv2WebACLRegexPatternSetReferenceStatementFieldToMatch (\s a -> s { _wAFv2WebACLRegexPatternSetReferenceStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-regexpatternsetreferencestatement.html#cfn-wafv2-webacl-regexpatternsetreferencestatement-texttransformations
+wafwaclrpsrsTextTransformations :: Lens' WAFv2WebACLRegexPatternSetReferenceStatement [WAFv2WebACLTextTransformation]
+wafwaclrpsrsTextTransformations = lens _wAFv2WebACLRegexPatternSetReferenceStatementTextTransformations (\s a -> s { _wAFv2WebACLRegexPatternSetReferenceStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRule.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRule.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLRule where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLRuleAction
+import Stratosphere.ResourceProperties.WAFv2WebACLOverrideAction
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementOne
+import Stratosphere.ResourceProperties.WAFv2WebACLVisibilityConfig
+
+-- | Full data type definition for WAFv2WebACLRule. See 'waFv2WebACLRule' for
+-- a more convenient constructor.
+data WAFv2WebACLRule =
+  WAFv2WebACLRule
+  { _wAFv2WebACLRuleAction :: Maybe WAFv2WebACLRuleAction
+  , _wAFv2WebACLRuleName :: Val Text
+  , _wAFv2WebACLRuleOverrideAction :: Maybe WAFv2WebACLOverrideAction
+  , _wAFv2WebACLRulePriority :: Val Integer
+  , _wAFv2WebACLRuleStatement :: WAFv2WebACLStatementOne
+  , _wAFv2WebACLRuleVisibilityConfig :: WAFv2WebACLVisibilityConfig
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLRule where
+  toJSON WAFv2WebACLRule{..} =
+    object $
+    catMaybes
+    [ fmap (("Action",) . toJSON) _wAFv2WebACLRuleAction
+    , (Just . ("Name",) . toJSON) _wAFv2WebACLRuleName
+    , fmap (("OverrideAction",) . toJSON) _wAFv2WebACLRuleOverrideAction
+    , (Just . ("Priority",) . toJSON) _wAFv2WebACLRulePriority
+    , (Just . ("Statement",) . toJSON) _wAFv2WebACLRuleStatement
+    , (Just . ("VisibilityConfig",) . toJSON) _wAFv2WebACLRuleVisibilityConfig
+    ]
+
+-- | Constructor for 'WAFv2WebACLRule' containing required fields as
+-- arguments.
+waFv2WebACLRule
+  :: Val Text -- ^ 'wafwaclrName'
+  -> Val Integer -- ^ 'wafwaclrPriority'
+  -> WAFv2WebACLStatementOne -- ^ 'wafwaclrStatement'
+  -> WAFv2WebACLVisibilityConfig -- ^ 'wafwaclrVisibilityConfig'
+  -> WAFv2WebACLRule
+waFv2WebACLRule namearg priorityarg statementarg visibilityConfigarg =
+  WAFv2WebACLRule
+  { _wAFv2WebACLRuleAction = Nothing
+  , _wAFv2WebACLRuleName = namearg
+  , _wAFv2WebACLRuleOverrideAction = Nothing
+  , _wAFv2WebACLRulePriority = priorityarg
+  , _wAFv2WebACLRuleStatement = statementarg
+  , _wAFv2WebACLRuleVisibilityConfig = visibilityConfigarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-action
+wafwaclrAction :: Lens' WAFv2WebACLRule (Maybe WAFv2WebACLRuleAction)
+wafwaclrAction = lens _wAFv2WebACLRuleAction (\s a -> s { _wAFv2WebACLRuleAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-name
+wafwaclrName :: Lens' WAFv2WebACLRule (Val Text)
+wafwaclrName = lens _wAFv2WebACLRuleName (\s a -> s { _wAFv2WebACLRuleName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-overrideaction
+wafwaclrOverrideAction :: Lens' WAFv2WebACLRule (Maybe WAFv2WebACLOverrideAction)
+wafwaclrOverrideAction = lens _wAFv2WebACLRuleOverrideAction (\s a -> s { _wAFv2WebACLRuleOverrideAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-priority
+wafwaclrPriority :: Lens' WAFv2WebACLRule (Val Integer)
+wafwaclrPriority = lens _wAFv2WebACLRulePriority (\s a -> s { _wAFv2WebACLRulePriority = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-statement
+wafwaclrStatement :: Lens' WAFv2WebACLRule WAFv2WebACLStatementOne
+wafwaclrStatement = lens _wAFv2WebACLRuleStatement (\s a -> s { _wAFv2WebACLRuleStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rule.html#cfn-wafv2-webacl-rule-visibilityconfig
+wafwaclrVisibilityConfig :: Lens' WAFv2WebACLRule WAFv2WebACLVisibilityConfig
+wafwaclrVisibilityConfig = lens _wAFv2WebACLRuleVisibilityConfig (\s a -> s { _wAFv2WebACLRuleVisibilityConfig = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRuleAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRuleAction.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLRuleAction where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLRuleAction. See
+-- 'waFv2WebACLRuleAction' for a more convenient constructor.
+data WAFv2WebACLRuleAction =
+  WAFv2WebACLRuleAction
+  { _wAFv2WebACLRuleActionAllow :: Maybe Object
+  , _wAFv2WebACLRuleActionBlock :: Maybe Object
+  , _wAFv2WebACLRuleActionCount :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLRuleAction where
+  toJSON WAFv2WebACLRuleAction{..} =
+    object $
+    catMaybes
+    [ fmap (("Allow",) . toJSON) _wAFv2WebACLRuleActionAllow
+    , fmap (("Block",) . toJSON) _wAFv2WebACLRuleActionBlock
+    , fmap (("Count",) . toJSON) _wAFv2WebACLRuleActionCount
+    ]
+
+-- | Constructor for 'WAFv2WebACLRuleAction' containing required fields as
+-- arguments.
+waFv2WebACLRuleAction
+  :: WAFv2WebACLRuleAction
+waFv2WebACLRuleAction  =
+  WAFv2WebACLRuleAction
+  { _wAFv2WebACLRuleActionAllow = Nothing
+  , _wAFv2WebACLRuleActionBlock = Nothing
+  , _wAFv2WebACLRuleActionCount = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html#cfn-wafv2-webacl-ruleaction-allow
+wafwaclraAllow :: Lens' WAFv2WebACLRuleAction (Maybe Object)
+wafwaclraAllow = lens _wAFv2WebACLRuleActionAllow (\s a -> s { _wAFv2WebACLRuleActionAllow = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html#cfn-wafv2-webacl-ruleaction-block
+wafwaclraBlock :: Lens' WAFv2WebACLRuleAction (Maybe Object)
+wafwaclraBlock = lens _wAFv2WebACLRuleActionBlock (\s a -> s { _wAFv2WebACLRuleActionBlock = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ruleaction.html#cfn-wafv2-webacl-ruleaction-count
+wafwaclraCount :: Lens' WAFv2WebACLRuleAction (Maybe Object)
+wafwaclraCount = lens _wAFv2WebACLRuleActionCount (\s a -> s { _wAFv2WebACLRuleActionCount = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRuleGroupReferenceStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRuleGroupReferenceStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLRuleGroupReferenceStatement.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLRuleGroupReferenceStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLExcludedRule
+
+-- | Full data type definition for WAFv2WebACLRuleGroupReferenceStatement. See
+-- 'waFv2WebACLRuleGroupReferenceStatement' for a more convenient
+-- constructor.
+data WAFv2WebACLRuleGroupReferenceStatement =
+  WAFv2WebACLRuleGroupReferenceStatement
+  { _wAFv2WebACLRuleGroupReferenceStatementArn :: Val Text
+  , _wAFv2WebACLRuleGroupReferenceStatementExcludedRules :: Maybe [WAFv2WebACLExcludedRule]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLRuleGroupReferenceStatement where
+  toJSON WAFv2WebACLRuleGroupReferenceStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("Arn",) . toJSON) _wAFv2WebACLRuleGroupReferenceStatementArn
+    , fmap (("ExcludedRules",) . toJSON) _wAFv2WebACLRuleGroupReferenceStatementExcludedRules
+    ]
+
+-- | Constructor for 'WAFv2WebACLRuleGroupReferenceStatement' containing
+-- required fields as arguments.
+waFv2WebACLRuleGroupReferenceStatement
+  :: Val Text -- ^ 'wafwaclrgrsArn'
+  -> WAFv2WebACLRuleGroupReferenceStatement
+waFv2WebACLRuleGroupReferenceStatement arnarg =
+  WAFv2WebACLRuleGroupReferenceStatement
+  { _wAFv2WebACLRuleGroupReferenceStatementArn = arnarg
+  , _wAFv2WebACLRuleGroupReferenceStatementExcludedRules = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html#cfn-wafv2-webacl-rulegroupreferencestatement-arn
+wafwaclrgrsArn :: Lens' WAFv2WebACLRuleGroupReferenceStatement (Val Text)
+wafwaclrgrsArn = lens _wAFv2WebACLRuleGroupReferenceStatementArn (\s a -> s { _wAFv2WebACLRuleGroupReferenceStatementArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-rulegroupreferencestatement.html#cfn-wafv2-webacl-rulegroupreferencestatement-excludedrules
+wafwaclrgrsExcludedRules :: Lens' WAFv2WebACLRuleGroupReferenceStatement (Maybe [WAFv2WebACLExcludedRule])
+wafwaclrgrsExcludedRules = lens _wAFv2WebACLRuleGroupReferenceStatementExcludedRules (\s a -> s { _wAFv2WebACLRuleGroupReferenceStatementExcludedRules = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLSizeConstraintStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLSizeConstraintStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLSizeConstraintStatement.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLSizeConstraintStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation
+
+-- | Full data type definition for WAFv2WebACLSizeConstraintStatement. See
+-- 'waFv2WebACLSizeConstraintStatement' for a more convenient constructor.
+data WAFv2WebACLSizeConstraintStatement =
+  WAFv2WebACLSizeConstraintStatement
+  { _wAFv2WebACLSizeConstraintStatementComparisonOperator :: Val Text
+  , _wAFv2WebACLSizeConstraintStatementFieldToMatch :: WAFv2WebACLFieldToMatch
+  , _wAFv2WebACLSizeConstraintStatementSize :: Val Integer
+  , _wAFv2WebACLSizeConstraintStatementTextTransformations :: [WAFv2WebACLTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLSizeConstraintStatement where
+  toJSON WAFv2WebACLSizeConstraintStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("ComparisonOperator",) . toJSON) _wAFv2WebACLSizeConstraintStatementComparisonOperator
+    , (Just . ("FieldToMatch",) . toJSON) _wAFv2WebACLSizeConstraintStatementFieldToMatch
+    , (Just . ("Size",) . toJSON) _wAFv2WebACLSizeConstraintStatementSize
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2WebACLSizeConstraintStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2WebACLSizeConstraintStatement' containing required
+-- fields as arguments.
+waFv2WebACLSizeConstraintStatement
+  :: Val Text -- ^ 'wafwaclscsComparisonOperator'
+  -> WAFv2WebACLFieldToMatch -- ^ 'wafwaclscsFieldToMatch'
+  -> Val Integer -- ^ 'wafwaclscsSize'
+  -> [WAFv2WebACLTextTransformation] -- ^ 'wafwaclscsTextTransformations'
+  -> WAFv2WebACLSizeConstraintStatement
+waFv2WebACLSizeConstraintStatement comparisonOperatorarg fieldToMatcharg sizearg textTransformationsarg =
+  WAFv2WebACLSizeConstraintStatement
+  { _wAFv2WebACLSizeConstraintStatementComparisonOperator = comparisonOperatorarg
+  , _wAFv2WebACLSizeConstraintStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2WebACLSizeConstraintStatementSize = sizearg
+  , _wAFv2WebACLSizeConstraintStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-comparisonoperator
+wafwaclscsComparisonOperator :: Lens' WAFv2WebACLSizeConstraintStatement (Val Text)
+wafwaclscsComparisonOperator = lens _wAFv2WebACLSizeConstraintStatementComparisonOperator (\s a -> s { _wAFv2WebACLSizeConstraintStatementComparisonOperator = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-fieldtomatch
+wafwaclscsFieldToMatch :: Lens' WAFv2WebACLSizeConstraintStatement WAFv2WebACLFieldToMatch
+wafwaclscsFieldToMatch = lens _wAFv2WebACLSizeConstraintStatementFieldToMatch (\s a -> s { _wAFv2WebACLSizeConstraintStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-size
+wafwaclscsSize :: Lens' WAFv2WebACLSizeConstraintStatement (Val Integer)
+wafwaclscsSize = lens _wAFv2WebACLSizeConstraintStatementSize (\s a -> s { _wAFv2WebACLSizeConstraintStatementSize = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sizeconstraintstatement.html#cfn-wafv2-webacl-sizeconstraintstatement-texttransformations
+wafwaclscsTextTransformations :: Lens' WAFv2WebACLSizeConstraintStatement [WAFv2WebACLTextTransformation]
+wafwaclscsTextTransformations = lens _wAFv2WebACLSizeConstraintStatementTextTransformations (\s a -> s { _wAFv2WebACLSizeConstraintStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLSqliMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLSqliMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLSqliMatchStatement.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sqlimatchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLSqliMatchStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation
+
+-- | Full data type definition for WAFv2WebACLSqliMatchStatement. See
+-- 'waFv2WebACLSqliMatchStatement' for a more convenient constructor.
+data WAFv2WebACLSqliMatchStatement =
+  WAFv2WebACLSqliMatchStatement
+  { _wAFv2WebACLSqliMatchStatementFieldToMatch :: WAFv2WebACLFieldToMatch
+  , _wAFv2WebACLSqliMatchStatementTextTransformations :: [WAFv2WebACLTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLSqliMatchStatement where
+  toJSON WAFv2WebACLSqliMatchStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFv2WebACLSqliMatchStatementFieldToMatch
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2WebACLSqliMatchStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2WebACLSqliMatchStatement' containing required
+-- fields as arguments.
+waFv2WebACLSqliMatchStatement
+  :: WAFv2WebACLFieldToMatch -- ^ 'wafwaclsmsFieldToMatch'
+  -> [WAFv2WebACLTextTransformation] -- ^ 'wafwaclsmsTextTransformations'
+  -> WAFv2WebACLSqliMatchStatement
+waFv2WebACLSqliMatchStatement fieldToMatcharg textTransformationsarg =
+  WAFv2WebACLSqliMatchStatement
+  { _wAFv2WebACLSqliMatchStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2WebACLSqliMatchStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sqlimatchstatement.html#cfn-wafv2-webacl-sqlimatchstatement-fieldtomatch
+wafwaclsmsFieldToMatch :: Lens' WAFv2WebACLSqliMatchStatement WAFv2WebACLFieldToMatch
+wafwaclsmsFieldToMatch = lens _wAFv2WebACLSqliMatchStatementFieldToMatch (\s a -> s { _wAFv2WebACLSqliMatchStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-sqlimatchstatement.html#cfn-wafv2-webacl-sqlimatchstatement-texttransformations
+wafwaclsmsTextTransformations :: Lens' WAFv2WebACLSqliMatchStatement [WAFv2WebACLTextTransformation]
+wafwaclsmsTextTransformations = lens _wAFv2WebACLSqliMatchStatementTextTransformations (\s a -> s { _wAFv2WebACLSqliMatchStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementOne.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementOne.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementOne.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLStatementOne where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLAndStatementOne
+import Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLNotStatementOne
+import Stratosphere.ResourceProperties.WAFv2WebACLOrStatementOne
+import Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementOne
+import Stratosphere.ResourceProperties.WAFv2WebACLRegexPatternSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLRuleGroupReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLSizeConstraintStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLSqliMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLXssMatchStatement
+
+-- | Full data type definition for WAFv2WebACLStatementOne. See
+-- 'waFv2WebACLStatementOne' for a more convenient constructor.
+data WAFv2WebACLStatementOne =
+  WAFv2WebACLStatementOne
+  { _wAFv2WebACLStatementOneAndStatement :: Maybe WAFv2WebACLAndStatementOne
+  , _wAFv2WebACLStatementOneByteMatchStatement :: Maybe WAFv2WebACLByteMatchStatement
+  , _wAFv2WebACLStatementOneGeoMatchStatement :: Maybe WAFv2WebACLGeoMatchStatement
+  , _wAFv2WebACLStatementOneIPSetReferenceStatement :: Maybe WAFv2WebACLIPSetReferenceStatement
+  , _wAFv2WebACLStatementOneManagedRuleGroupStatement :: Maybe WAFv2WebACLManagedRuleGroupStatement
+  , _wAFv2WebACLStatementOneNotStatement :: Maybe WAFv2WebACLNotStatementOne
+  , _wAFv2WebACLStatementOneOrStatement :: Maybe WAFv2WebACLOrStatementOne
+  , _wAFv2WebACLStatementOneRateBasedStatement :: Maybe WAFv2WebACLRateBasedStatementOne
+  , _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement :: Maybe WAFv2WebACLRegexPatternSetReferenceStatement
+  , _wAFv2WebACLStatementOneRuleGroupReferenceStatement :: Maybe WAFv2WebACLRuleGroupReferenceStatement
+  , _wAFv2WebACLStatementOneSizeConstraintStatement :: Maybe WAFv2WebACLSizeConstraintStatement
+  , _wAFv2WebACLStatementOneSqliMatchStatement :: Maybe WAFv2WebACLSqliMatchStatement
+  , _wAFv2WebACLStatementOneXssMatchStatement :: Maybe WAFv2WebACLXssMatchStatement
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLStatementOne where
+  toJSON WAFv2WebACLStatementOne{..} =
+    object $
+    catMaybes
+    [ fmap (("AndStatement",) . toJSON) _wAFv2WebACLStatementOneAndStatement
+    , fmap (("ByteMatchStatement",) . toJSON) _wAFv2WebACLStatementOneByteMatchStatement
+    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2WebACLStatementOneGeoMatchStatement
+    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementOneIPSetReferenceStatement
+    , fmap (("ManagedRuleGroupStatement",) . toJSON) _wAFv2WebACLStatementOneManagedRuleGroupStatement
+    , fmap (("NotStatement",) . toJSON) _wAFv2WebACLStatementOneNotStatement
+    , fmap (("OrStatement",) . toJSON) _wAFv2WebACLStatementOneOrStatement
+    , fmap (("RateBasedStatement",) . toJSON) _wAFv2WebACLStatementOneRateBasedStatement
+    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement
+    , fmap (("RuleGroupReferenceStatement",) . toJSON) _wAFv2WebACLStatementOneRuleGroupReferenceStatement
+    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2WebACLStatementOneSizeConstraintStatement
+    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2WebACLStatementOneSqliMatchStatement
+    , fmap (("XssMatchStatement",) . toJSON) _wAFv2WebACLStatementOneXssMatchStatement
+    ]
+
+-- | Constructor for 'WAFv2WebACLStatementOne' containing required fields as
+-- arguments.
+waFv2WebACLStatementOne
+  :: WAFv2WebACLStatementOne
+waFv2WebACLStatementOne  =
+  WAFv2WebACLStatementOne
+  { _wAFv2WebACLStatementOneAndStatement = Nothing
+  , _wAFv2WebACLStatementOneByteMatchStatement = Nothing
+  , _wAFv2WebACLStatementOneGeoMatchStatement = Nothing
+  , _wAFv2WebACLStatementOneIPSetReferenceStatement = Nothing
+  , _wAFv2WebACLStatementOneManagedRuleGroupStatement = Nothing
+  , _wAFv2WebACLStatementOneNotStatement = Nothing
+  , _wAFv2WebACLStatementOneOrStatement = Nothing
+  , _wAFv2WebACLStatementOneRateBasedStatement = Nothing
+  , _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement = Nothing
+  , _wAFv2WebACLStatementOneRuleGroupReferenceStatement = Nothing
+  , _wAFv2WebACLStatementOneSizeConstraintStatement = Nothing
+  , _wAFv2WebACLStatementOneSqliMatchStatement = Nothing
+  , _wAFv2WebACLStatementOneXssMatchStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-andstatement
+wafwaclsoAndStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLAndStatementOne)
+wafwaclsoAndStatement = lens _wAFv2WebACLStatementOneAndStatement (\s a -> s { _wAFv2WebACLStatementOneAndStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-bytematchstatement
+wafwaclsoByteMatchStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLByteMatchStatement)
+wafwaclsoByteMatchStatement = lens _wAFv2WebACLStatementOneByteMatchStatement (\s a -> s { _wAFv2WebACLStatementOneByteMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-geomatchstatement
+wafwaclsoGeoMatchStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLGeoMatchStatement)
+wafwaclsoGeoMatchStatement = lens _wAFv2WebACLStatementOneGeoMatchStatement (\s a -> s { _wAFv2WebACLStatementOneGeoMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-ipsetreferencestatement
+wafwaclsoIPSetReferenceStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLIPSetReferenceStatement)
+wafwaclsoIPSetReferenceStatement = lens _wAFv2WebACLStatementOneIPSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementOneIPSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-managedrulegroupstatement
+wafwaclsoManagedRuleGroupStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLManagedRuleGroupStatement)
+wafwaclsoManagedRuleGroupStatement = lens _wAFv2WebACLStatementOneManagedRuleGroupStatement (\s a -> s { _wAFv2WebACLStatementOneManagedRuleGroupStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-notstatement
+wafwaclsoNotStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLNotStatementOne)
+wafwaclsoNotStatement = lens _wAFv2WebACLStatementOneNotStatement (\s a -> s { _wAFv2WebACLStatementOneNotStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-orstatement
+wafwaclsoOrStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLOrStatementOne)
+wafwaclsoOrStatement = lens _wAFv2WebACLStatementOneOrStatement (\s a -> s { _wAFv2WebACLStatementOneOrStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-ratebasedstatement
+wafwaclsoRateBasedStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLRateBasedStatementOne)
+wafwaclsoRateBasedStatement = lens _wAFv2WebACLStatementOneRateBasedStatement (\s a -> s { _wAFv2WebACLStatementOneRateBasedStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-regexpatternsetreferencestatement
+wafwaclsoRegexPatternSetReferenceStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLRegexPatternSetReferenceStatement)
+wafwaclsoRegexPatternSetReferenceStatement = lens _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementOneRegexPatternSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-rulegroupreferencestatement
+wafwaclsoRuleGroupReferenceStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLRuleGroupReferenceStatement)
+wafwaclsoRuleGroupReferenceStatement = lens _wAFv2WebACLStatementOneRuleGroupReferenceStatement (\s a -> s { _wAFv2WebACLStatementOneRuleGroupReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-sizeconstraintstatement
+wafwaclsoSizeConstraintStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLSizeConstraintStatement)
+wafwaclsoSizeConstraintStatement = lens _wAFv2WebACLStatementOneSizeConstraintStatement (\s a -> s { _wAFv2WebACLStatementOneSizeConstraintStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-sqlimatchstatement
+wafwaclsoSqliMatchStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLSqliMatchStatement)
+wafwaclsoSqliMatchStatement = lens _wAFv2WebACLStatementOneSqliMatchStatement (\s a -> s { _wAFv2WebACLStatementOneSqliMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementone.html#cfn-wafv2-webacl-statementone-xssmatchstatement
+wafwaclsoXssMatchStatement :: Lens' WAFv2WebACLStatementOne (Maybe WAFv2WebACLXssMatchStatement)
+wafwaclsoXssMatchStatement = lens _wAFv2WebACLStatementOneXssMatchStatement (\s a -> s { _wAFv2WebACLStatementOneXssMatchStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementThree.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementThree.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementThree.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLStatementThree where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLRegexPatternSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLRuleGroupReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLSizeConstraintStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLSqliMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLXssMatchStatement
+
+-- | Full data type definition for WAFv2WebACLStatementThree. See
+-- 'waFv2WebACLStatementThree' for a more convenient constructor.
+data WAFv2WebACLStatementThree =
+  WAFv2WebACLStatementThree
+  { _wAFv2WebACLStatementThreeByteMatchStatement :: Maybe WAFv2WebACLByteMatchStatement
+  , _wAFv2WebACLStatementThreeGeoMatchStatement :: Maybe WAFv2WebACLGeoMatchStatement
+  , _wAFv2WebACLStatementThreeIPSetReferenceStatement :: Maybe WAFv2WebACLIPSetReferenceStatement
+  , _wAFv2WebACLStatementThreeManagedRuleGroupStatement :: Maybe WAFv2WebACLManagedRuleGroupStatement
+  , _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement :: Maybe WAFv2WebACLRegexPatternSetReferenceStatement
+  , _wAFv2WebACLStatementThreeRuleGroupReferenceStatement :: Maybe WAFv2WebACLRuleGroupReferenceStatement
+  , _wAFv2WebACLStatementThreeSizeConstraintStatement :: Maybe WAFv2WebACLSizeConstraintStatement
+  , _wAFv2WebACLStatementThreeSqliMatchStatement :: Maybe WAFv2WebACLSqliMatchStatement
+  , _wAFv2WebACLStatementThreeXssMatchStatement :: Maybe WAFv2WebACLXssMatchStatement
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLStatementThree where
+  toJSON WAFv2WebACLStatementThree{..} =
+    object $
+    catMaybes
+    [ fmap (("ByteMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeByteMatchStatement
+    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeGeoMatchStatement
+    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementThreeIPSetReferenceStatement
+    , fmap (("ManagedRuleGroupStatement",) . toJSON) _wAFv2WebACLStatementThreeManagedRuleGroupStatement
+    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement
+    , fmap (("RuleGroupReferenceStatement",) . toJSON) _wAFv2WebACLStatementThreeRuleGroupReferenceStatement
+    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2WebACLStatementThreeSizeConstraintStatement
+    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeSqliMatchStatement
+    , fmap (("XssMatchStatement",) . toJSON) _wAFv2WebACLStatementThreeXssMatchStatement
+    ]
+
+-- | Constructor for 'WAFv2WebACLStatementThree' containing required fields as
+-- arguments.
+waFv2WebACLStatementThree
+  :: WAFv2WebACLStatementThree
+waFv2WebACLStatementThree  =
+  WAFv2WebACLStatementThree
+  { _wAFv2WebACLStatementThreeByteMatchStatement = Nothing
+  , _wAFv2WebACLStatementThreeGeoMatchStatement = Nothing
+  , _wAFv2WebACLStatementThreeIPSetReferenceStatement = Nothing
+  , _wAFv2WebACLStatementThreeManagedRuleGroupStatement = Nothing
+  , _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement = Nothing
+  , _wAFv2WebACLStatementThreeRuleGroupReferenceStatement = Nothing
+  , _wAFv2WebACLStatementThreeSizeConstraintStatement = Nothing
+  , _wAFv2WebACLStatementThreeSqliMatchStatement = Nothing
+  , _wAFv2WebACLStatementThreeXssMatchStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-bytematchstatement
+wafwaclsthByteMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLByteMatchStatement)
+wafwaclsthByteMatchStatement = lens _wAFv2WebACLStatementThreeByteMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeByteMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-geomatchstatement
+wafwaclsthGeoMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLGeoMatchStatement)
+wafwaclsthGeoMatchStatement = lens _wAFv2WebACLStatementThreeGeoMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeGeoMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-ipsetreferencestatement
+wafwaclsthIPSetReferenceStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLIPSetReferenceStatement)
+wafwaclsthIPSetReferenceStatement = lens _wAFv2WebACLStatementThreeIPSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementThreeIPSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-managedrulegroupstatement
+wafwaclsthManagedRuleGroupStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLManagedRuleGroupStatement)
+wafwaclsthManagedRuleGroupStatement = lens _wAFv2WebACLStatementThreeManagedRuleGroupStatement (\s a -> s { _wAFv2WebACLStatementThreeManagedRuleGroupStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-regexpatternsetreferencestatement
+wafwaclsthRegexPatternSetReferenceStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLRegexPatternSetReferenceStatement)
+wafwaclsthRegexPatternSetReferenceStatement = lens _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementThreeRegexPatternSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-rulegroupreferencestatement
+wafwaclsthRuleGroupReferenceStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLRuleGroupReferenceStatement)
+wafwaclsthRuleGroupReferenceStatement = lens _wAFv2WebACLStatementThreeRuleGroupReferenceStatement (\s a -> s { _wAFv2WebACLStatementThreeRuleGroupReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-sizeconstraintstatement
+wafwaclsthSizeConstraintStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLSizeConstraintStatement)
+wafwaclsthSizeConstraintStatement = lens _wAFv2WebACLStatementThreeSizeConstraintStatement (\s a -> s { _wAFv2WebACLStatementThreeSizeConstraintStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-sqlimatchstatement
+wafwaclsthSqliMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLSqliMatchStatement)
+wafwaclsthSqliMatchStatement = lens _wAFv2WebACLStatementThreeSqliMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeSqliMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementthree.html#cfn-wafv2-webacl-statementthree-xssmatchstatement
+wafwaclsthXssMatchStatement :: Lens' WAFv2WebACLStatementThree (Maybe WAFv2WebACLXssMatchStatement)
+wafwaclsthXssMatchStatement = lens _wAFv2WebACLStatementThreeXssMatchStatement (\s a -> s { _wAFv2WebACLStatementThreeXssMatchStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementTwo.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementTwo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLStatementTwo.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLStatementTwo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLAndStatementTwo
+import Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLNotStatementTwo
+import Stratosphere.ResourceProperties.WAFv2WebACLOrStatementTwo
+import Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementTwo
+import Stratosphere.ResourceProperties.WAFv2WebACLRegexPatternSetReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLRuleGroupReferenceStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLSizeConstraintStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLSqliMatchStatement
+import Stratosphere.ResourceProperties.WAFv2WebACLXssMatchStatement
+
+-- | Full data type definition for WAFv2WebACLStatementTwo. See
+-- 'waFv2WebACLStatementTwo' for a more convenient constructor.
+data WAFv2WebACLStatementTwo =
+  WAFv2WebACLStatementTwo
+  { _wAFv2WebACLStatementTwoAndStatement :: Maybe WAFv2WebACLAndStatementTwo
+  , _wAFv2WebACLStatementTwoByteMatchStatement :: Maybe WAFv2WebACLByteMatchStatement
+  , _wAFv2WebACLStatementTwoGeoMatchStatement :: Maybe WAFv2WebACLGeoMatchStatement
+  , _wAFv2WebACLStatementTwoIPSetReferenceStatement :: Maybe WAFv2WebACLIPSetReferenceStatement
+  , _wAFv2WebACLStatementTwoManagedRuleGroupStatement :: Maybe WAFv2WebACLManagedRuleGroupStatement
+  , _wAFv2WebACLStatementTwoNotStatement :: Maybe WAFv2WebACLNotStatementTwo
+  , _wAFv2WebACLStatementTwoOrStatement :: Maybe WAFv2WebACLOrStatementTwo
+  , _wAFv2WebACLStatementTwoRateBasedStatement :: Maybe WAFv2WebACLRateBasedStatementTwo
+  , _wAFv2WebACLStatementTwoRegexPatternSetReferenceStatement :: Maybe WAFv2WebACLRegexPatternSetReferenceStatement
+  , _wAFv2WebACLStatementTwoRuleGroupReferenceStatement :: Maybe WAFv2WebACLRuleGroupReferenceStatement
+  , _wAFv2WebACLStatementTwoSizeConstraintStatement :: Maybe WAFv2WebACLSizeConstraintStatement
+  , _wAFv2WebACLStatementTwoSqliMatchStatement :: Maybe WAFv2WebACLSqliMatchStatement
+  , _wAFv2WebACLStatementTwoXssMatchStatement :: Maybe WAFv2WebACLXssMatchStatement
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLStatementTwo where
+  toJSON WAFv2WebACLStatementTwo{..} =
+    object $
+    catMaybes
+    [ fmap (("AndStatement",) . toJSON) _wAFv2WebACLStatementTwoAndStatement
+    , fmap (("ByteMatchStatement",) . toJSON) _wAFv2WebACLStatementTwoByteMatchStatement
+    , fmap (("GeoMatchStatement",) . toJSON) _wAFv2WebACLStatementTwoGeoMatchStatement
+    , fmap (("IPSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementTwoIPSetReferenceStatement
+    , fmap (("ManagedRuleGroupStatement",) . toJSON) _wAFv2WebACLStatementTwoManagedRuleGroupStatement
+    , fmap (("NotStatement",) . toJSON) _wAFv2WebACLStatementTwoNotStatement
+    , fmap (("OrStatement",) . toJSON) _wAFv2WebACLStatementTwoOrStatement
+    , fmap (("RateBasedStatement",) . toJSON) _wAFv2WebACLStatementTwoRateBasedStatement
+    , fmap (("RegexPatternSetReferenceStatement",) . toJSON) _wAFv2WebACLStatementTwoRegexPatternSetReferenceStatement
+    , fmap (("RuleGroupReferenceStatement",) . toJSON) _wAFv2WebACLStatementTwoRuleGroupReferenceStatement
+    , fmap (("SizeConstraintStatement",) . toJSON) _wAFv2WebACLStatementTwoSizeConstraintStatement
+    , fmap (("SqliMatchStatement",) . toJSON) _wAFv2WebACLStatementTwoSqliMatchStatement
+    , fmap (("XssMatchStatement",) . toJSON) _wAFv2WebACLStatementTwoXssMatchStatement
+    ]
+
+-- | Constructor for 'WAFv2WebACLStatementTwo' containing required fields as
+-- arguments.
+waFv2WebACLStatementTwo
+  :: WAFv2WebACLStatementTwo
+waFv2WebACLStatementTwo  =
+  WAFv2WebACLStatementTwo
+  { _wAFv2WebACLStatementTwoAndStatement = Nothing
+  , _wAFv2WebACLStatementTwoByteMatchStatement = Nothing
+  , _wAFv2WebACLStatementTwoGeoMatchStatement = Nothing
+  , _wAFv2WebACLStatementTwoIPSetReferenceStatement = Nothing
+  , _wAFv2WebACLStatementTwoManagedRuleGroupStatement = Nothing
+  , _wAFv2WebACLStatementTwoNotStatement = Nothing
+  , _wAFv2WebACLStatementTwoOrStatement = Nothing
+  , _wAFv2WebACLStatementTwoRateBasedStatement = Nothing
+  , _wAFv2WebACLStatementTwoRegexPatternSetReferenceStatement = Nothing
+  , _wAFv2WebACLStatementTwoRuleGroupReferenceStatement = Nothing
+  , _wAFv2WebACLStatementTwoSizeConstraintStatement = Nothing
+  , _wAFv2WebACLStatementTwoSqliMatchStatement = Nothing
+  , _wAFv2WebACLStatementTwoXssMatchStatement = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-andstatement
+wafwaclstwAndStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLAndStatementTwo)
+wafwaclstwAndStatement = lens _wAFv2WebACLStatementTwoAndStatement (\s a -> s { _wAFv2WebACLStatementTwoAndStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-bytematchstatement
+wafwaclstwByteMatchStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLByteMatchStatement)
+wafwaclstwByteMatchStatement = lens _wAFv2WebACLStatementTwoByteMatchStatement (\s a -> s { _wAFv2WebACLStatementTwoByteMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-geomatchstatement
+wafwaclstwGeoMatchStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLGeoMatchStatement)
+wafwaclstwGeoMatchStatement = lens _wAFv2WebACLStatementTwoGeoMatchStatement (\s a -> s { _wAFv2WebACLStatementTwoGeoMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-ipsetreferencestatement
+wafwaclstwIPSetReferenceStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLIPSetReferenceStatement)
+wafwaclstwIPSetReferenceStatement = lens _wAFv2WebACLStatementTwoIPSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementTwoIPSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-managedrulegroupstatement
+wafwaclstwManagedRuleGroupStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLManagedRuleGroupStatement)
+wafwaclstwManagedRuleGroupStatement = lens _wAFv2WebACLStatementTwoManagedRuleGroupStatement (\s a -> s { _wAFv2WebACLStatementTwoManagedRuleGroupStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-notstatement
+wafwaclstwNotStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLNotStatementTwo)
+wafwaclstwNotStatement = lens _wAFv2WebACLStatementTwoNotStatement (\s a -> s { _wAFv2WebACLStatementTwoNotStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-orstatement
+wafwaclstwOrStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLOrStatementTwo)
+wafwaclstwOrStatement = lens _wAFv2WebACLStatementTwoOrStatement (\s a -> s { _wAFv2WebACLStatementTwoOrStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-ratebasedstatement
+wafwaclstwRateBasedStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLRateBasedStatementTwo)
+wafwaclstwRateBasedStatement = lens _wAFv2WebACLStatementTwoRateBasedStatement (\s a -> s { _wAFv2WebACLStatementTwoRateBasedStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-regexpatternsetreferencestatement
+wafwaclstwRegexPatternSetReferenceStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLRegexPatternSetReferenceStatement)
+wafwaclstwRegexPatternSetReferenceStatement = lens _wAFv2WebACLStatementTwoRegexPatternSetReferenceStatement (\s a -> s { _wAFv2WebACLStatementTwoRegexPatternSetReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-rulegroupreferencestatement
+wafwaclstwRuleGroupReferenceStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLRuleGroupReferenceStatement)
+wafwaclstwRuleGroupReferenceStatement = lens _wAFv2WebACLStatementTwoRuleGroupReferenceStatement (\s a -> s { _wAFv2WebACLStatementTwoRuleGroupReferenceStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-sizeconstraintstatement
+wafwaclstwSizeConstraintStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLSizeConstraintStatement)
+wafwaclstwSizeConstraintStatement = lens _wAFv2WebACLStatementTwoSizeConstraintStatement (\s a -> s { _wAFv2WebACLStatementTwoSizeConstraintStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-sqlimatchstatement
+wafwaclstwSqliMatchStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLSqliMatchStatement)
+wafwaclstwSqliMatchStatement = lens _wAFv2WebACLStatementTwoSqliMatchStatement (\s a -> s { _wAFv2WebACLStatementTwoSqliMatchStatement = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-statementtwo.html#cfn-wafv2-webacl-statementtwo-xssmatchstatement
+wafwaclstwXssMatchStatement :: Lens' WAFv2WebACLStatementTwo (Maybe WAFv2WebACLXssMatchStatement)
+wafwaclstwXssMatchStatement = lens _wAFv2WebACLStatementTwoXssMatchStatement (\s a -> s { _wAFv2WebACLStatementTwoXssMatchStatement = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLTextTransformation.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLTextTransformation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLTextTransformation.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-texttransformation.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLTextTransformation. See
+-- 'waFv2WebACLTextTransformation' for a more convenient constructor.
+data WAFv2WebACLTextTransformation =
+  WAFv2WebACLTextTransformation
+  { _wAFv2WebACLTextTransformationPriority :: Val Integer
+  , _wAFv2WebACLTextTransformationType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLTextTransformation where
+  toJSON WAFv2WebACLTextTransformation{..} =
+    object $
+    catMaybes
+    [ (Just . ("Priority",) . toJSON) _wAFv2WebACLTextTransformationPriority
+    , (Just . ("Type",) . toJSON) _wAFv2WebACLTextTransformationType
+    ]
+
+-- | Constructor for 'WAFv2WebACLTextTransformation' containing required
+-- fields as arguments.
+waFv2WebACLTextTransformation
+  :: Val Integer -- ^ 'wafwaclttPriority'
+  -> Val Text -- ^ 'wafwaclttType'
+  -> WAFv2WebACLTextTransformation
+waFv2WebACLTextTransformation priorityarg typearg =
+  WAFv2WebACLTextTransformation
+  { _wAFv2WebACLTextTransformationPriority = priorityarg
+  , _wAFv2WebACLTextTransformationType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-texttransformation.html#cfn-wafv2-webacl-texttransformation-priority
+wafwaclttPriority :: Lens' WAFv2WebACLTextTransformation (Val Integer)
+wafwaclttPriority = lens _wAFv2WebACLTextTransformationPriority (\s a -> s { _wAFv2WebACLTextTransformationPriority = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-texttransformation.html#cfn-wafv2-webacl-texttransformation-type
+wafwaclttType :: Lens' WAFv2WebACLTextTransformation (Val Text)
+wafwaclttType = lens _wAFv2WebACLTextTransformationType (\s a -> s { _wAFv2WebACLTextTransformationType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLVisibilityConfig.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLVisibilityConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLVisibilityConfig.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLVisibilityConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLVisibilityConfig. See
+-- 'waFv2WebACLVisibilityConfig' for a more convenient constructor.
+data WAFv2WebACLVisibilityConfig =
+  WAFv2WebACLVisibilityConfig
+  { _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled :: Val Bool
+  , _wAFv2WebACLVisibilityConfigMetricName :: Val Text
+  , _wAFv2WebACLVisibilityConfigSampledRequestsEnabled :: Val Bool
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLVisibilityConfig where
+  toJSON WAFv2WebACLVisibilityConfig{..} =
+    object $
+    catMaybes
+    [ (Just . ("CloudWatchMetricsEnabled",) . toJSON) _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled
+    , (Just . ("MetricName",) . toJSON) _wAFv2WebACLVisibilityConfigMetricName
+    , (Just . ("SampledRequestsEnabled",) . toJSON) _wAFv2WebACLVisibilityConfigSampledRequestsEnabled
+    ]
+
+-- | Constructor for 'WAFv2WebACLVisibilityConfig' containing required fields
+-- as arguments.
+waFv2WebACLVisibilityConfig
+  :: Val Bool -- ^ 'wafwaclvcCloudWatchMetricsEnabled'
+  -> Val Text -- ^ 'wafwaclvcMetricName'
+  -> Val Bool -- ^ 'wafwaclvcSampledRequestsEnabled'
+  -> WAFv2WebACLVisibilityConfig
+waFv2WebACLVisibilityConfig cloudWatchMetricsEnabledarg metricNamearg sampledRequestsEnabledarg =
+  WAFv2WebACLVisibilityConfig
+  { _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled = cloudWatchMetricsEnabledarg
+  , _wAFv2WebACLVisibilityConfigMetricName = metricNamearg
+  , _wAFv2WebACLVisibilityConfigSampledRequestsEnabled = sampledRequestsEnabledarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-cloudwatchmetricsenabled
+wafwaclvcCloudWatchMetricsEnabled :: Lens' WAFv2WebACLVisibilityConfig (Val Bool)
+wafwaclvcCloudWatchMetricsEnabled = lens _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled (\s a -> s { _wAFv2WebACLVisibilityConfigCloudWatchMetricsEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-metricname
+wafwaclvcMetricName :: Lens' WAFv2WebACLVisibilityConfig (Val Text)
+wafwaclvcMetricName = lens _wAFv2WebACLVisibilityConfigMetricName (\s a -> s { _wAFv2WebACLVisibilityConfigMetricName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-visibilityconfig.html#cfn-wafv2-webacl-visibilityconfig-sampledrequestsenabled
+wafwaclvcSampledRequestsEnabled :: Lens' WAFv2WebACLVisibilityConfig (Val Bool)
+wafwaclvcSampledRequestsEnabled = lens _wAFv2WebACLVisibilityConfigSampledRequestsEnabled (\s a -> s { _wAFv2WebACLVisibilityConfigSampledRequestsEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLXssMatchStatement.hs b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLXssMatchStatement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/WAFv2WebACLXssMatchStatement.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-xssmatchstatement.html
+
+module Stratosphere.ResourceProperties.WAFv2WebACLXssMatchStatement where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch
+import Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation
+
+-- | Full data type definition for WAFv2WebACLXssMatchStatement. See
+-- 'waFv2WebACLXssMatchStatement' for a more convenient constructor.
+data WAFv2WebACLXssMatchStatement =
+  WAFv2WebACLXssMatchStatement
+  { _wAFv2WebACLXssMatchStatementFieldToMatch :: WAFv2WebACLFieldToMatch
+  , _wAFv2WebACLXssMatchStatementTextTransformations :: [WAFv2WebACLTextTransformation]
+  } deriving (Show, Eq)
+
+instance ToJSON WAFv2WebACLXssMatchStatement where
+  toJSON WAFv2WebACLXssMatchStatement{..} =
+    object $
+    catMaybes
+    [ (Just . ("FieldToMatch",) . toJSON) _wAFv2WebACLXssMatchStatementFieldToMatch
+    , (Just . ("TextTransformations",) . toJSON) _wAFv2WebACLXssMatchStatementTextTransformations
+    ]
+
+-- | Constructor for 'WAFv2WebACLXssMatchStatement' containing required fields
+-- as arguments.
+waFv2WebACLXssMatchStatement
+  :: WAFv2WebACLFieldToMatch -- ^ 'wafwaclxmsFieldToMatch'
+  -> [WAFv2WebACLTextTransformation] -- ^ 'wafwaclxmsTextTransformations'
+  -> WAFv2WebACLXssMatchStatement
+waFv2WebACLXssMatchStatement fieldToMatcharg textTransformationsarg =
+  WAFv2WebACLXssMatchStatement
+  { _wAFv2WebACLXssMatchStatementFieldToMatch = fieldToMatcharg
+  , _wAFv2WebACLXssMatchStatementTextTransformations = textTransformationsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-xssmatchstatement.html#cfn-wafv2-webacl-xssmatchstatement-fieldtomatch
+wafwaclxmsFieldToMatch :: Lens' WAFv2WebACLXssMatchStatement WAFv2WebACLFieldToMatch
+wafwaclxmsFieldToMatch = lens _wAFv2WebACLXssMatchStatementFieldToMatch (\s a -> s { _wAFv2WebACLXssMatchStatementFieldToMatch = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-xssmatchstatement.html#cfn-wafv2-webacl-xssmatchstatement-texttransformations
+wafwaclxmsTextTransformations :: Lens' WAFv2WebACLXssMatchStatement [WAFv2WebACLTextTransformation]
+wafwaclxmsTextTransformations = lens _wAFv2WebACLXssMatchStatementTextTransformations (\s a -> s { _wAFv2WebACLXssMatchStatementTextTransformations = a })
diff --git a/library-gen/Stratosphere/Resources.hs b/library-gen/Stratosphere/Resources.hs
--- a/library-gen/Stratosphere/Resources.hs
+++ b/library-gen/Stratosphere/Resources.hs
@@ -84,6 +84,11 @@
 import Stratosphere.Resources.ApiGatewayV2Route as X
 import Stratosphere.Resources.ApiGatewayV2RouteResponse as X
 import Stratosphere.Resources.ApiGatewayV2Stage as X
+import Stratosphere.Resources.AppConfigApplication as X
+import Stratosphere.Resources.AppConfigConfigurationProfile as X
+import Stratosphere.Resources.AppConfigDeployment as X
+import Stratosphere.Resources.AppConfigDeploymentStrategy as X
+import Stratosphere.Resources.AppConfigEnvironment as X
 import Stratosphere.Resources.AppMeshMesh as X
 import Stratosphere.Resources.AppMeshRoute as X
 import Stratosphere.Resources.AppMeshVirtualNode as X
@@ -106,6 +111,7 @@
 import Stratosphere.Resources.ApplicationAutoScalingScalableTarget as X
 import Stratosphere.Resources.ApplicationAutoScalingScalingPolicy as X
 import Stratosphere.Resources.AthenaNamedQuery as X
+import Stratosphere.Resources.AthenaWorkGroup as X
 import Stratosphere.Resources.AutoScalingAutoScalingGroup as X
 import Stratosphere.Resources.AutoScalingLaunchConfiguration as X
 import Stratosphere.Resources.AutoScalingLifecycleHook as X
@@ -120,6 +126,7 @@
 import Stratosphere.Resources.BatchJobQueue as X
 import Stratosphere.Resources.BudgetsBudget as X
 import Stratosphere.Resources.CertificateManagerCertificate as X
+import Stratosphere.Resources.ChatbotSlackChannelConfiguration as X
 import Stratosphere.Resources.Cloud9EnvironmentEC2 as X
 import Stratosphere.Resources.CloudFormationCustomResource as X
 import Stratosphere.Resources.CloudFormationMacro as X
@@ -132,6 +139,7 @@
 import Stratosphere.Resources.CloudTrailTrail as X
 import Stratosphere.Resources.CloudWatchAlarm as X
 import Stratosphere.Resources.CloudWatchAnomalyDetector as X
+import Stratosphere.Resources.CloudWatchCompositeAlarm as X
 import Stratosphere.Resources.CloudWatchDashboard as X
 import Stratosphere.Resources.CloudWatchInsightRule as X
 import Stratosphere.Resources.CodeBuildProject as X
@@ -145,6 +153,7 @@
 import Stratosphere.Resources.CodePipelinePipeline as X
 import Stratosphere.Resources.CodePipelineWebhook as X
 import Stratosphere.Resources.CodeStarGitHubRepository as X
+import Stratosphere.Resources.CodeStarConnectionsConnection as X
 import Stratosphere.Resources.CodeStarNotificationsNotificationRule as X
 import Stratosphere.Resources.CognitoIdentityPool as X
 import Stratosphere.Resources.CognitoIdentityPoolRoleAttachment as X
@@ -162,8 +171,10 @@
 import Stratosphere.Resources.ConfigConfigRule as X
 import Stratosphere.Resources.ConfigConfigurationAggregator as X
 import Stratosphere.Resources.ConfigConfigurationRecorder as X
+import Stratosphere.Resources.ConfigConformancePack as X
 import Stratosphere.Resources.ConfigDeliveryChannel as X
 import Stratosphere.Resources.ConfigOrganizationConfigRule as X
+import Stratosphere.Resources.ConfigOrganizationConformancePack as X
 import Stratosphere.Resources.ConfigRemediationConfiguration as X
 import Stratosphere.Resources.DAXCluster as X
 import Stratosphere.Resources.DAXParameterGroup as X
@@ -200,6 +211,8 @@
 import Stratosphere.Resources.EC2Instance as X
 import Stratosphere.Resources.EC2InternetGateway as X
 import Stratosphere.Resources.EC2LaunchTemplate as X
+import Stratosphere.Resources.EC2LocalGatewayRoute as X
+import Stratosphere.Resources.EC2LocalGatewayRouteTableVPCAssociation as X
 import Stratosphere.Resources.EC2NatGateway as X
 import Stratosphere.Resources.EC2NetworkAcl as X
 import Stratosphere.Resources.EC2NetworkAclEntry as X
@@ -280,6 +293,8 @@
 import Stratosphere.Resources.EventsEventBus as X
 import Stratosphere.Resources.EventsEventBusPolicy as X
 import Stratosphere.Resources.EventsRule as X
+import Stratosphere.Resources.FMSNotificationChannel as X
+import Stratosphere.Resources.FMSPolicy as X
 import Stratosphere.Resources.FSxFileSystem as X
 import Stratosphere.Resources.GameLiftAlias as X
 import Stratosphere.Resources.GameLiftBuild as X
@@ -529,8 +544,17 @@
 import Stratosphere.Resources.WAFRegionalWebACL as X
 import Stratosphere.Resources.WAFRegionalWebACLAssociation as X
 import Stratosphere.Resources.WAFRegionalXssMatchSet as X
+import Stratosphere.Resources.WAFv2IPSet as X
+import Stratosphere.Resources.WAFv2RegexPatternSet as X
+import Stratosphere.Resources.WAFv2RuleGroup as X
+import Stratosphere.Resources.WAFv2WebACL as X
+import Stratosphere.Resources.WAFv2WebACLAssociation as X
 import Stratosphere.Resources.WorkSpacesWorkspace as X
 import Stratosphere.Resources.ASKSkill as X
+import Stratosphere.ResourceProperties.ACMPCACertificateValidity as X
+import Stratosphere.ResourceProperties.ACMPCACertificateAuthorityCrlConfiguration as X
+import Stratosphere.ResourceProperties.ACMPCACertificateAuthorityRevocationConfiguration as X
+import Stratosphere.ResourceProperties.ACMPCACertificateAuthoritySubject as X
 import Stratosphere.ResourceProperties.AccessAnalyzerAnalyzerArchiveRule as X
 import Stratosphere.ResourceProperties.AccessAnalyzerAnalyzerFilter as X
 import Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId as X
@@ -575,6 +599,13 @@
 import Stratosphere.ResourceProperties.ApiGatewayV2RouteResponseParameterConstraints as X
 import Stratosphere.ResourceProperties.ApiGatewayV2StageAccessLogSettings as X
 import Stratosphere.ResourceProperties.ApiGatewayV2StageRouteSettings as X
+import Stratosphere.ResourceProperties.AppConfigApplicationTags as X
+import Stratosphere.ResourceProperties.AppConfigConfigurationProfileTags as X
+import Stratosphere.ResourceProperties.AppConfigConfigurationProfileValidators as X
+import Stratosphere.ResourceProperties.AppConfigDeploymentTags as X
+import Stratosphere.ResourceProperties.AppConfigDeploymentStrategyTags as X
+import Stratosphere.ResourceProperties.AppConfigEnvironmentMonitors as X
+import Stratosphere.ResourceProperties.AppConfigEnvironmentTags as X
 import Stratosphere.ResourceProperties.AppMeshMeshEgressFilter as X
 import Stratosphere.ResourceProperties.AppMeshMeshMeshSpec as X
 import Stratosphere.ResourceProperties.AppMeshRouteDuration as X
@@ -599,13 +630,24 @@
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeAwsCloudMapInstanceAttribute as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeAwsCloudMapServiceDiscovery as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeBackend as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeBackendDefaults as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicy as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicyTls as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeDnsServiceDiscovery as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeFileAccessLog as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeHealthCheck as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeListener as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTls as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsAcmCertificate as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsCertificate as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsFileCertificate as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeLogging as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodePortMapping as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeServiceDiscovery as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContext as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextAcmTrust as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextFileTrust as X
+import Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextTrust as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeVirtualNodeSpec as X
 import Stratosphere.ResourceProperties.AppMeshVirtualNodeVirtualServiceBackend as X
 import Stratosphere.ResourceProperties.AppMeshVirtualRouterPortMapping as X
@@ -653,6 +695,12 @@
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepAdjustment as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration as X
+import Stratosphere.ResourceProperties.AthenaWorkGroupEncryptionConfiguration as X
+import Stratosphere.ResourceProperties.AthenaWorkGroupResultConfiguration as X
+import Stratosphere.ResourceProperties.AthenaWorkGroupResultConfigurationUpdates as X
+import Stratosphere.ResourceProperties.AthenaWorkGroupTags as X
+import Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfiguration as X
+import Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfigurationUpdates as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides as X
@@ -680,6 +728,7 @@
 import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration as X
 import Stratosphere.ResourceProperties.BackupBackupPlanBackupPlanResourceType as X
 import Stratosphere.ResourceProperties.BackupBackupPlanBackupRuleResourceType as X
+import Stratosphere.ResourceProperties.BackupBackupPlanCopyActionResourceType as X
 import Stratosphere.ResourceProperties.BackupBackupPlanLifecycleResourceType as X
 import Stratosphere.ResourceProperties.BackupBackupSelectionBackupSelectionResourceType as X
 import Stratosphere.ResourceProperties.BackupBackupSelectionConditionResourceType as X
@@ -745,6 +794,7 @@
 import Stratosphere.ResourceProperties.CodeBuildProjectGitSubmodulesConfig as X
 import Stratosphere.ResourceProperties.CodeBuildProjectLogsConfig as X
 import Stratosphere.ResourceProperties.CodeBuildProjectProjectCache as X
+import Stratosphere.ResourceProperties.CodeBuildProjectProjectFileSystemLocation as X
 import Stratosphere.ResourceProperties.CodeBuildProjectProjectSourceVersion as X
 import Stratosphere.ResourceProperties.CodeBuildProjectProjectTriggers as X
 import Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential as X
@@ -815,6 +865,7 @@
 import Stratosphere.ResourceProperties.CognitoUserPoolSmsConfiguration as X
 import Stratosphere.ResourceProperties.CognitoUserPoolStringAttributeConstraints as X
 import Stratosphere.ResourceProperties.CognitoUserPoolUserPoolAddOns as X
+import Stratosphere.ResourceProperties.CognitoUserPoolUsernameConfiguration as X
 import Stratosphere.ResourceProperties.CognitoUserPoolVerificationMessageTemplate as X
 import Stratosphere.ResourceProperties.CognitoUserPoolClientAnalyticsConfiguration as X
 import Stratosphere.ResourceProperties.CognitoUserPoolDomainCustomDomainConfigType as X
@@ -834,9 +885,11 @@
 import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorAccountAggregationSource as X
 import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorOrganizationAggregationSource as X
 import Stratosphere.ResourceProperties.ConfigConfigurationRecorderRecordingGroup as X
+import Stratosphere.ResourceProperties.ConfigConformancePackConformancePackInputParameter as X
 import Stratosphere.ResourceProperties.ConfigDeliveryChannelConfigSnapshotDeliveryProperties as X
 import Stratosphere.ResourceProperties.ConfigOrganizationConfigRuleOrganizationCustomRuleMetadata as X
 import Stratosphere.ResourceProperties.ConfigOrganizationConfigRuleOrganizationManagedRuleMetadata as X
+import Stratosphere.ResourceProperties.ConfigOrganizationConformancePackConformancePackInputParameter as X
 import Stratosphere.ResourceProperties.ConfigRemediationConfigurationExecutionControls as X
 import Stratosphere.ResourceProperties.ConfigRemediationConfigurationRemediationParameterValue as X
 import Stratosphere.ResourceProperties.ConfigRemediationConfigurationResourceValue as X
@@ -918,12 +971,14 @@
 import Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateData as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplateLicenseSpecification as X
+import Stratosphere.ResourceProperties.EC2LaunchTemplateMetadataOptions as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplateMonitoring as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplateNetworkInterface as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplatePlacement as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplatePrivateIpAdd as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplateSpotOptions as X
 import Stratosphere.ResourceProperties.EC2LaunchTemplateTagSpecification as X
+import Stratosphere.ResourceProperties.EC2LocalGatewayRouteTableVPCAssociationTags as X
 import Stratosphere.ResourceProperties.EC2NetworkAclEntryIcmp as X
 import Stratosphere.ResourceProperties.EC2NetworkAclEntryPortRange as X
 import Stratosphere.ResourceProperties.EC2NetworkInterfaceInstanceIpv6Address as X
@@ -994,6 +1049,8 @@
 import Stratosphere.ResourceProperties.ECSTaskSetServiceRegistry as X
 import Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag as X
 import Stratosphere.ResourceProperties.EFSFileSystemLifecyclePolicy as X
+import Stratosphere.ResourceProperties.EKSClusterEncryptionConfig as X
+import Stratosphere.ResourceProperties.EKSClusterProvider as X
 import Stratosphere.ResourceProperties.EKSClusterResourcesVpcConfig as X
 import Stratosphere.ResourceProperties.EKSNodegroupRemoteAccess as X
 import Stratosphere.ResourceProperties.EKSNodegroupScalingConfig as X
@@ -1067,12 +1124,16 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerForwardConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupTuple as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleForwardConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHostHeaderConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig as X
@@ -1082,6 +1143,8 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleSourceIpConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupTuple as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupMatcher as X
@@ -1112,6 +1175,9 @@
 import Stratosphere.ResourceProperties.EventsRuleRunCommandTarget as X
 import Stratosphere.ResourceProperties.EventsRuleSqsParameters as X
 import Stratosphere.ResourceProperties.EventsRuleTarget as X
+import Stratosphere.ResourceProperties.FMSPolicyIEMap as X
+import Stratosphere.ResourceProperties.FMSPolicyPolicyTag as X
+import Stratosphere.ResourceProperties.FMSPolicyResourceTag as X
 import Stratosphere.ResourceProperties.FSxFileSystemLustreConfiguration as X
 import Stratosphere.ResourceProperties.FSxFileSystemSelfManagedActiveDirectoryConfiguration as X
 import Stratosphere.ResourceProperties.FSxFileSystemWindowsConfiguration as X
@@ -1204,6 +1270,7 @@
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionLocalVolumeResourceData as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDataContainer as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDefinitionVersion as X
+import Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDownloadOwnerSetting as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceInstance as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionS3MachineLearningModelResourceData as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData as X
@@ -1212,6 +1279,7 @@
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionLocalDeviceResourceData as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionLocalVolumeResourceData as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceDataContainer as X
+import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceInstance as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData as X
 import Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData as X
@@ -1453,6 +1521,7 @@
 import Stratosphere.ResourceProperties.MediaLiveChannelInputSettings as X
 import Stratosphere.ResourceProperties.MediaLiveChannelInputSpecification as X
 import Stratosphere.ResourceProperties.MediaLiveChannelMediaPackageOutputDestinationSettings as X
+import Stratosphere.ResourceProperties.MediaLiveChannelMultiplexProgramChannelDestinationSettings as X
 import Stratosphere.ResourceProperties.MediaLiveChannelNetworkInputSettings as X
 import Stratosphere.ResourceProperties.MediaLiveChannelOutputDestination as X
 import Stratosphere.ResourceProperties.MediaLiveChannelOutputDestinationSettings as X
@@ -1698,6 +1767,57 @@
 import Stratosphere.ResourceProperties.WAFRegionalWebACLRule as X
 import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetFieldToMatch as X
 import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetXssMatchTuple as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupByteMatchStatement as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupGeoMatchStatement as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupIPSetReferenceStatement as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRegexPatternSetReferenceStatement as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRule as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRuleAction as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSizeConstraintStatement as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupSqliMatchStatement as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementThree as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupVisibilityConfig as X
+import Stratosphere.ResourceProperties.WAFv2RuleGroupXssMatchStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLAndStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2WebACLAndStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLDefaultAction as X
+import Stratosphere.ResourceProperties.WAFv2WebACLExcludedRule as X
+import Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch as X
+import Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLNotStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2WebACLNotStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2WebACLOrStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2WebACLOrStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2WebACLOverrideAction as X
+import Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2WebACLRegexPatternSetReferenceStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLRule as X
+import Stratosphere.ResourceProperties.WAFv2WebACLRuleAction as X
+import Stratosphere.ResourceProperties.WAFv2WebACLRuleGroupReferenceStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLSizeConstraintStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLSqliMatchStatement as X
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementOne as X
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementThree as X
+import Stratosphere.ResourceProperties.WAFv2WebACLStatementTwo as X
+import Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation as X
+import Stratosphere.ResourceProperties.WAFv2WebACLVisibilityConfig as X
+import Stratosphere.ResourceProperties.WAFv2WebACLXssMatchStatement as X
 import Stratosphere.ResourceProperties.WorkSpacesWorkspaceWorkspaceProperties as X
 import Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration as X
 import Stratosphere.ResourceProperties.ASKSkillOverrides as X
diff --git a/library-gen/Stratosphere/Resources/ACMPCACertificate.hs b/library-gen/Stratosphere/Resources/ACMPCACertificate.hs
--- a/library-gen/Stratosphere/Resources/ACMPCACertificate.hs
+++ b/library-gen/Stratosphere/Resources/ACMPCACertificate.hs
@@ -8,7 +8,7 @@
 module Stratosphere.Resources.ACMPCACertificate where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.ACMPCACertificateValidity
 
 -- | Full data type definition for ACMPCACertificate. See 'acmpcaCertificate'
 -- for a more convenient constructor.
@@ -18,7 +18,7 @@
   , _aCMPCACertificateCertificateSigningRequest :: Val Text
   , _aCMPCACertificateSigningAlgorithm :: Val Text
   , _aCMPCACertificateTemplateArn :: Maybe (Val Text)
-  , _aCMPCACertificateValidity :: Object
+  , _aCMPCACertificateValidity :: ACMPCACertificateValidity
   } deriving (Show, Eq)
 
 instance ToResourceProperties ACMPCACertificate where
@@ -41,7 +41,7 @@
   :: Val Text -- ^ 'acmpcacCertificateAuthorityArn'
   -> Val Text -- ^ 'acmpcacCertificateSigningRequest'
   -> Val Text -- ^ 'acmpcacSigningAlgorithm'
-  -> Object -- ^ 'acmpcacValidity'
+  -> ACMPCACertificateValidity -- ^ 'acmpcacValidity'
   -> ACMPCACertificate
 acmpcaCertificate certificateAuthorityArnarg certificateSigningRequestarg signingAlgorithmarg validityarg =
   ACMPCACertificate
@@ -69,5 +69,5 @@
 acmpcacTemplateArn = lens _aCMPCACertificateTemplateArn (\s a -> s { _aCMPCACertificateTemplateArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-validity
-acmpcacValidity :: Lens' ACMPCACertificate Object
+acmpcacValidity :: Lens' ACMPCACertificate ACMPCACertificateValidity
 acmpcacValidity = lens _aCMPCACertificateValidity (\s a -> s { _aCMPCACertificateValidity = a })
diff --git a/library-gen/Stratosphere/Resources/ACMPCACertificateAuthority.hs b/library-gen/Stratosphere/Resources/ACMPCACertificateAuthority.hs
--- a/library-gen/Stratosphere/Resources/ACMPCACertificateAuthority.hs
+++ b/library-gen/Stratosphere/Resources/ACMPCACertificateAuthority.hs
@@ -8,6 +8,8 @@
 module Stratosphere.Resources.ACMPCACertificateAuthority where
 
 import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ACMPCACertificateAuthorityRevocationConfiguration
+import Stratosphere.ResourceProperties.ACMPCACertificateAuthoritySubject
 import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ACMPCACertificateAuthority. See
@@ -15,9 +17,9 @@
 data ACMPCACertificateAuthority =
   ACMPCACertificateAuthority
   { _aCMPCACertificateAuthorityKeyAlgorithm :: Val Text
-  , _aCMPCACertificateAuthorityRevocationConfiguration :: Maybe Object
+  , _aCMPCACertificateAuthorityRevocationConfiguration :: Maybe ACMPCACertificateAuthorityRevocationConfiguration
   , _aCMPCACertificateAuthoritySigningAlgorithm :: Val Text
-  , _aCMPCACertificateAuthoritySubject :: Object
+  , _aCMPCACertificateAuthoritySubject :: ACMPCACertificateAuthoritySubject
   , _aCMPCACertificateAuthorityTags :: Maybe [Tag]
   , _aCMPCACertificateAuthorityType :: Val Text
   } deriving (Show, Eq)
@@ -42,7 +44,7 @@
 acmpcaCertificateAuthority
   :: Val Text -- ^ 'acmpcacaKeyAlgorithm'
   -> Val Text -- ^ 'acmpcacaSigningAlgorithm'
-  -> Object -- ^ 'acmpcacaSubject'
+  -> ACMPCACertificateAuthoritySubject -- ^ 'acmpcacaSubject'
   -> Val Text -- ^ 'acmpcacaType'
   -> ACMPCACertificateAuthority
 acmpcaCertificateAuthority keyAlgorithmarg signingAlgorithmarg subjectarg typearg =
@@ -60,7 +62,7 @@
 acmpcacaKeyAlgorithm = lens _aCMPCACertificateAuthorityKeyAlgorithm (\s a -> s { _aCMPCACertificateAuthorityKeyAlgorithm = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-revocationconfiguration
-acmpcacaRevocationConfiguration :: Lens' ACMPCACertificateAuthority (Maybe Object)
+acmpcacaRevocationConfiguration :: Lens' ACMPCACertificateAuthority (Maybe ACMPCACertificateAuthorityRevocationConfiguration)
 acmpcacaRevocationConfiguration = lens _aCMPCACertificateAuthorityRevocationConfiguration (\s a -> s { _aCMPCACertificateAuthorityRevocationConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-signingalgorithm
@@ -68,7 +70,7 @@
 acmpcacaSigningAlgorithm = lens _aCMPCACertificateAuthoritySigningAlgorithm (\s a -> s { _aCMPCACertificateAuthoritySigningAlgorithm = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-subject
-acmpcacaSubject :: Lens' ACMPCACertificateAuthority Object
+acmpcacaSubject :: Lens' ACMPCACertificateAuthority ACMPCACertificateAuthoritySubject
 acmpcacaSubject = lens _aCMPCACertificateAuthoritySubject (\s a -> s { _aCMPCACertificateAuthoritySubject = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-tags
diff --git a/library-gen/Stratosphere/Resources/AppConfigApplication.hs b/library-gen/Stratosphere/Resources/AppConfigApplication.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AppConfigApplication.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html
+
+module Stratosphere.Resources.AppConfigApplication where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppConfigApplicationTags
+
+-- | Full data type definition for AppConfigApplication. See
+-- 'appConfigApplication' for a more convenient constructor.
+data AppConfigApplication =
+  AppConfigApplication
+  { _appConfigApplicationDescription :: Maybe (Val Text)
+  , _appConfigApplicationName :: Val Text
+  , _appConfigApplicationTags :: Maybe [AppConfigApplicationTags]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AppConfigApplication where
+  toResourceProperties AppConfigApplication{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppConfig::Application"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _appConfigApplicationDescription
+        , (Just . ("Name",) . toJSON) _appConfigApplicationName
+        , fmap (("Tags",) . toJSON) _appConfigApplicationTags
+        ]
+    }
+
+-- | Constructor for 'AppConfigApplication' containing required fields as
+-- arguments.
+appConfigApplication
+  :: Val Text -- ^ 'acaName'
+  -> AppConfigApplication
+appConfigApplication namearg =
+  AppConfigApplication
+  { _appConfigApplicationDescription = Nothing
+  , _appConfigApplicationName = namearg
+  , _appConfigApplicationTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-description
+acaDescription :: Lens' AppConfigApplication (Maybe (Val Text))
+acaDescription = lens _appConfigApplicationDescription (\s a -> s { _appConfigApplicationDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-name
+acaName :: Lens' AppConfigApplication (Val Text)
+acaName = lens _appConfigApplicationName (\s a -> s { _appConfigApplicationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-application.html#cfn-appconfig-application-tags
+acaTags :: Lens' AppConfigApplication (Maybe [AppConfigApplicationTags])
+acaTags = lens _appConfigApplicationTags (\s a -> s { _appConfigApplicationTags = a })
diff --git a/library-gen/Stratosphere/Resources/AppConfigConfigurationProfile.hs b/library-gen/Stratosphere/Resources/AppConfigConfigurationProfile.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AppConfigConfigurationProfile.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html
+
+module Stratosphere.Resources.AppConfigConfigurationProfile where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppConfigConfigurationProfileTags
+import Stratosphere.ResourceProperties.AppConfigConfigurationProfileValidators
+
+-- | Full data type definition for AppConfigConfigurationProfile. See
+-- 'appConfigConfigurationProfile' for a more convenient constructor.
+data AppConfigConfigurationProfile =
+  AppConfigConfigurationProfile
+  { _appConfigConfigurationProfileApplicationId :: Val Text
+  , _appConfigConfigurationProfileDescription :: Maybe (Val Text)
+  , _appConfigConfigurationProfileLocationUri :: Val Text
+  , _appConfigConfigurationProfileName :: Val Text
+  , _appConfigConfigurationProfileRetrievalRoleArn :: Maybe (Val Text)
+  , _appConfigConfigurationProfileTags :: Maybe [AppConfigConfigurationProfileTags]
+  , _appConfigConfigurationProfileValidators :: Maybe [AppConfigConfigurationProfileValidators]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AppConfigConfigurationProfile where
+  toResourceProperties AppConfigConfigurationProfile{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppConfig::ConfigurationProfile"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _appConfigConfigurationProfileApplicationId
+        , fmap (("Description",) . toJSON) _appConfigConfigurationProfileDescription
+        , (Just . ("LocationUri",) . toJSON) _appConfigConfigurationProfileLocationUri
+        , (Just . ("Name",) . toJSON) _appConfigConfigurationProfileName
+        , fmap (("RetrievalRoleArn",) . toJSON) _appConfigConfigurationProfileRetrievalRoleArn
+        , fmap (("Tags",) . toJSON) _appConfigConfigurationProfileTags
+        , fmap (("Validators",) . toJSON) _appConfigConfigurationProfileValidators
+        ]
+    }
+
+-- | Constructor for 'AppConfigConfigurationProfile' containing required
+-- fields as arguments.
+appConfigConfigurationProfile
+  :: Val Text -- ^ 'accpApplicationId'
+  -> Val Text -- ^ 'accpLocationUri'
+  -> Val Text -- ^ 'accpName'
+  -> AppConfigConfigurationProfile
+appConfigConfigurationProfile applicationIdarg locationUriarg namearg =
+  AppConfigConfigurationProfile
+  { _appConfigConfigurationProfileApplicationId = applicationIdarg
+  , _appConfigConfigurationProfileDescription = Nothing
+  , _appConfigConfigurationProfileLocationUri = locationUriarg
+  , _appConfigConfigurationProfileName = namearg
+  , _appConfigConfigurationProfileRetrievalRoleArn = Nothing
+  , _appConfigConfigurationProfileTags = Nothing
+  , _appConfigConfigurationProfileValidators = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-applicationid
+accpApplicationId :: Lens' AppConfigConfigurationProfile (Val Text)
+accpApplicationId = lens _appConfigConfigurationProfileApplicationId (\s a -> s { _appConfigConfigurationProfileApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-description
+accpDescription :: Lens' AppConfigConfigurationProfile (Maybe (Val Text))
+accpDescription = lens _appConfigConfigurationProfileDescription (\s a -> s { _appConfigConfigurationProfileDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-locationuri
+accpLocationUri :: Lens' AppConfigConfigurationProfile (Val Text)
+accpLocationUri = lens _appConfigConfigurationProfileLocationUri (\s a -> s { _appConfigConfigurationProfileLocationUri = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-name
+accpName :: Lens' AppConfigConfigurationProfile (Val Text)
+accpName = lens _appConfigConfigurationProfileName (\s a -> s { _appConfigConfigurationProfileName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-retrievalrolearn
+accpRetrievalRoleArn :: Lens' AppConfigConfigurationProfile (Maybe (Val Text))
+accpRetrievalRoleArn = lens _appConfigConfigurationProfileRetrievalRoleArn (\s a -> s { _appConfigConfigurationProfileRetrievalRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-tags
+accpTags :: Lens' AppConfigConfigurationProfile (Maybe [AppConfigConfigurationProfileTags])
+accpTags = lens _appConfigConfigurationProfileTags (\s a -> s { _appConfigConfigurationProfileTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-configurationprofile.html#cfn-appconfig-configurationprofile-validators
+accpValidators :: Lens' AppConfigConfigurationProfile (Maybe [AppConfigConfigurationProfileValidators])
+accpValidators = lens _appConfigConfigurationProfileValidators (\s a -> s { _appConfigConfigurationProfileValidators = a })
diff --git a/library-gen/Stratosphere/Resources/AppConfigDeployment.hs b/library-gen/Stratosphere/Resources/AppConfigDeployment.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AppConfigDeployment.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html
+
+module Stratosphere.Resources.AppConfigDeployment where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppConfigDeploymentTags
+
+-- | Full data type definition for AppConfigDeployment. See
+-- 'appConfigDeployment' for a more convenient constructor.
+data AppConfigDeployment =
+  AppConfigDeployment
+  { _appConfigDeploymentApplicationId :: Val Text
+  , _appConfigDeploymentConfigurationProfileId :: Val Text
+  , _appConfigDeploymentConfigurationVersion :: Val Text
+  , _appConfigDeploymentDeploymentStrategyId :: Val Text
+  , _appConfigDeploymentDescription :: Maybe (Val Text)
+  , _appConfigDeploymentEnvironmentId :: Val Text
+  , _appConfigDeploymentTags :: Maybe [AppConfigDeploymentTags]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AppConfigDeployment where
+  toResourceProperties AppConfigDeployment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppConfig::Deployment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _appConfigDeploymentApplicationId
+        , (Just . ("ConfigurationProfileId",) . toJSON) _appConfigDeploymentConfigurationProfileId
+        , (Just . ("ConfigurationVersion",) . toJSON) _appConfigDeploymentConfigurationVersion
+        , (Just . ("DeploymentStrategyId",) . toJSON) _appConfigDeploymentDeploymentStrategyId
+        , fmap (("Description",) . toJSON) _appConfigDeploymentDescription
+        , (Just . ("EnvironmentId",) . toJSON) _appConfigDeploymentEnvironmentId
+        , fmap (("Tags",) . toJSON) _appConfigDeploymentTags
+        ]
+    }
+
+-- | Constructor for 'AppConfigDeployment' containing required fields as
+-- arguments.
+appConfigDeployment
+  :: Val Text -- ^ 'acdApplicationId'
+  -> Val Text -- ^ 'acdConfigurationProfileId'
+  -> Val Text -- ^ 'acdConfigurationVersion'
+  -> Val Text -- ^ 'acdDeploymentStrategyId'
+  -> Val Text -- ^ 'acdEnvironmentId'
+  -> AppConfigDeployment
+appConfigDeployment applicationIdarg configurationProfileIdarg configurationVersionarg deploymentStrategyIdarg environmentIdarg =
+  AppConfigDeployment
+  { _appConfigDeploymentApplicationId = applicationIdarg
+  , _appConfigDeploymentConfigurationProfileId = configurationProfileIdarg
+  , _appConfigDeploymentConfigurationVersion = configurationVersionarg
+  , _appConfigDeploymentDeploymentStrategyId = deploymentStrategyIdarg
+  , _appConfigDeploymentDescription = Nothing
+  , _appConfigDeploymentEnvironmentId = environmentIdarg
+  , _appConfigDeploymentTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-applicationid
+acdApplicationId :: Lens' AppConfigDeployment (Val Text)
+acdApplicationId = lens _appConfigDeploymentApplicationId (\s a -> s { _appConfigDeploymentApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-configurationprofileid
+acdConfigurationProfileId :: Lens' AppConfigDeployment (Val Text)
+acdConfigurationProfileId = lens _appConfigDeploymentConfigurationProfileId (\s a -> s { _appConfigDeploymentConfigurationProfileId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-configurationversion
+acdConfigurationVersion :: Lens' AppConfigDeployment (Val Text)
+acdConfigurationVersion = lens _appConfigDeploymentConfigurationVersion (\s a -> s { _appConfigDeploymentConfigurationVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-deploymentstrategyid
+acdDeploymentStrategyId :: Lens' AppConfigDeployment (Val Text)
+acdDeploymentStrategyId = lens _appConfigDeploymentDeploymentStrategyId (\s a -> s { _appConfigDeploymentDeploymentStrategyId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-description
+acdDescription :: Lens' AppConfigDeployment (Maybe (Val Text))
+acdDescription = lens _appConfigDeploymentDescription (\s a -> s { _appConfigDeploymentDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-environmentid
+acdEnvironmentId :: Lens' AppConfigDeployment (Val Text)
+acdEnvironmentId = lens _appConfigDeploymentEnvironmentId (\s a -> s { _appConfigDeploymentEnvironmentId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deployment.html#cfn-appconfig-deployment-tags
+acdTags :: Lens' AppConfigDeployment (Maybe [AppConfigDeploymentTags])
+acdTags = lens _appConfigDeploymentTags (\s a -> s { _appConfigDeploymentTags = a })
diff --git a/library-gen/Stratosphere/Resources/AppConfigDeploymentStrategy.hs b/library-gen/Stratosphere/Resources/AppConfigDeploymentStrategy.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AppConfigDeploymentStrategy.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html
+
+module Stratosphere.Resources.AppConfigDeploymentStrategy where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppConfigDeploymentStrategyTags
+
+-- | Full data type definition for AppConfigDeploymentStrategy. See
+-- 'appConfigDeploymentStrategy' for a more convenient constructor.
+data AppConfigDeploymentStrategy =
+  AppConfigDeploymentStrategy
+  { _appConfigDeploymentStrategyDeploymentDurationInMinutes :: Val Double
+  , _appConfigDeploymentStrategyDescription :: Maybe (Val Text)
+  , _appConfigDeploymentStrategyFinalBakeTimeInMinutes :: Maybe (Val Double)
+  , _appConfigDeploymentStrategyGrowthFactor :: Val Double
+  , _appConfigDeploymentStrategyGrowthType :: Maybe (Val Text)
+  , _appConfigDeploymentStrategyName :: Val Text
+  , _appConfigDeploymentStrategyReplicateTo :: Val Text
+  , _appConfigDeploymentStrategyTags :: Maybe [AppConfigDeploymentStrategyTags]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AppConfigDeploymentStrategy where
+  toResourceProperties AppConfigDeploymentStrategy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppConfig::DeploymentStrategy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DeploymentDurationInMinutes",) . toJSON) _appConfigDeploymentStrategyDeploymentDurationInMinutes
+        , fmap (("Description",) . toJSON) _appConfigDeploymentStrategyDescription
+        , fmap (("FinalBakeTimeInMinutes",) . toJSON) _appConfigDeploymentStrategyFinalBakeTimeInMinutes
+        , (Just . ("GrowthFactor",) . toJSON) _appConfigDeploymentStrategyGrowthFactor
+        , fmap (("GrowthType",) . toJSON) _appConfigDeploymentStrategyGrowthType
+        , (Just . ("Name",) . toJSON) _appConfigDeploymentStrategyName
+        , (Just . ("ReplicateTo",) . toJSON) _appConfigDeploymentStrategyReplicateTo
+        , fmap (("Tags",) . toJSON) _appConfigDeploymentStrategyTags
+        ]
+    }
+
+-- | Constructor for 'AppConfigDeploymentStrategy' containing required fields
+-- as arguments.
+appConfigDeploymentStrategy
+  :: Val Double -- ^ 'acdsDeploymentDurationInMinutes'
+  -> Val Double -- ^ 'acdsGrowthFactor'
+  -> Val Text -- ^ 'acdsName'
+  -> Val Text -- ^ 'acdsReplicateTo'
+  -> AppConfigDeploymentStrategy
+appConfigDeploymentStrategy deploymentDurationInMinutesarg growthFactorarg namearg replicateToarg =
+  AppConfigDeploymentStrategy
+  { _appConfigDeploymentStrategyDeploymentDurationInMinutes = deploymentDurationInMinutesarg
+  , _appConfigDeploymentStrategyDescription = Nothing
+  , _appConfigDeploymentStrategyFinalBakeTimeInMinutes = Nothing
+  , _appConfigDeploymentStrategyGrowthFactor = growthFactorarg
+  , _appConfigDeploymentStrategyGrowthType = Nothing
+  , _appConfigDeploymentStrategyName = namearg
+  , _appConfigDeploymentStrategyReplicateTo = replicateToarg
+  , _appConfigDeploymentStrategyTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-deploymentdurationinminutes
+acdsDeploymentDurationInMinutes :: Lens' AppConfigDeploymentStrategy (Val Double)
+acdsDeploymentDurationInMinutes = lens _appConfigDeploymentStrategyDeploymentDurationInMinutes (\s a -> s { _appConfigDeploymentStrategyDeploymentDurationInMinutes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-description
+acdsDescription :: Lens' AppConfigDeploymentStrategy (Maybe (Val Text))
+acdsDescription = lens _appConfigDeploymentStrategyDescription (\s a -> s { _appConfigDeploymentStrategyDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-finalbaketimeinminutes
+acdsFinalBakeTimeInMinutes :: Lens' AppConfigDeploymentStrategy (Maybe (Val Double))
+acdsFinalBakeTimeInMinutes = lens _appConfigDeploymentStrategyFinalBakeTimeInMinutes (\s a -> s { _appConfigDeploymentStrategyFinalBakeTimeInMinutes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-growthfactor
+acdsGrowthFactor :: Lens' AppConfigDeploymentStrategy (Val Double)
+acdsGrowthFactor = lens _appConfigDeploymentStrategyGrowthFactor (\s a -> s { _appConfigDeploymentStrategyGrowthFactor = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-growthtype
+acdsGrowthType :: Lens' AppConfigDeploymentStrategy (Maybe (Val Text))
+acdsGrowthType = lens _appConfigDeploymentStrategyGrowthType (\s a -> s { _appConfigDeploymentStrategyGrowthType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-name
+acdsName :: Lens' AppConfigDeploymentStrategy (Val Text)
+acdsName = lens _appConfigDeploymentStrategyName (\s a -> s { _appConfigDeploymentStrategyName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-replicateto
+acdsReplicateTo :: Lens' AppConfigDeploymentStrategy (Val Text)
+acdsReplicateTo = lens _appConfigDeploymentStrategyReplicateTo (\s a -> s { _appConfigDeploymentStrategyReplicateTo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-deploymentstrategy.html#cfn-appconfig-deploymentstrategy-tags
+acdsTags :: Lens' AppConfigDeploymentStrategy (Maybe [AppConfigDeploymentStrategyTags])
+acdsTags = lens _appConfigDeploymentStrategyTags (\s a -> s { _appConfigDeploymentStrategyTags = a })
diff --git a/library-gen/Stratosphere/Resources/AppConfigEnvironment.hs b/library-gen/Stratosphere/Resources/AppConfigEnvironment.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AppConfigEnvironment.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html
+
+module Stratosphere.Resources.AppConfigEnvironment where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppConfigEnvironmentMonitors
+import Stratosphere.ResourceProperties.AppConfigEnvironmentTags
+
+-- | Full data type definition for AppConfigEnvironment. See
+-- 'appConfigEnvironment' for a more convenient constructor.
+data AppConfigEnvironment =
+  AppConfigEnvironment
+  { _appConfigEnvironmentApplicationId :: Val Text
+  , _appConfigEnvironmentDescription :: Maybe (Val Text)
+  , _appConfigEnvironmentMonitors :: Maybe [AppConfigEnvironmentMonitors]
+  , _appConfigEnvironmentName :: Val Text
+  , _appConfigEnvironmentTags :: Maybe [AppConfigEnvironmentTags]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AppConfigEnvironment where
+  toResourceProperties AppConfigEnvironment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::AppConfig::Environment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _appConfigEnvironmentApplicationId
+        , fmap (("Description",) . toJSON) _appConfigEnvironmentDescription
+        , fmap (("Monitors",) . toJSON) _appConfigEnvironmentMonitors
+        , (Just . ("Name",) . toJSON) _appConfigEnvironmentName
+        , fmap (("Tags",) . toJSON) _appConfigEnvironmentTags
+        ]
+    }
+
+-- | Constructor for 'AppConfigEnvironment' containing required fields as
+-- arguments.
+appConfigEnvironment
+  :: Val Text -- ^ 'aceApplicationId'
+  -> Val Text -- ^ 'aceName'
+  -> AppConfigEnvironment
+appConfigEnvironment applicationIdarg namearg =
+  AppConfigEnvironment
+  { _appConfigEnvironmentApplicationId = applicationIdarg
+  , _appConfigEnvironmentDescription = Nothing
+  , _appConfigEnvironmentMonitors = Nothing
+  , _appConfigEnvironmentName = namearg
+  , _appConfigEnvironmentTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-applicationid
+aceApplicationId :: Lens' AppConfigEnvironment (Val Text)
+aceApplicationId = lens _appConfigEnvironmentApplicationId (\s a -> s { _appConfigEnvironmentApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-description
+aceDescription :: Lens' AppConfigEnvironment (Maybe (Val Text))
+aceDescription = lens _appConfigEnvironmentDescription (\s a -> s { _appConfigEnvironmentDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-monitors
+aceMonitors :: Lens' AppConfigEnvironment (Maybe [AppConfigEnvironmentMonitors])
+aceMonitors = lens _appConfigEnvironmentMonitors (\s a -> s { _appConfigEnvironmentMonitors = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-name
+aceName :: Lens' AppConfigEnvironment (Val Text)
+aceName = lens _appConfigEnvironmentName (\s a -> s { _appConfigEnvironmentName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appconfig-environment.html#cfn-appconfig-environment-tags
+aceTags :: Lens' AppConfigEnvironment (Maybe [AppConfigEnvironmentTags])
+aceTags = lens _appConfigEnvironmentTags (\s a -> s { _appConfigEnvironmentTags = a })
diff --git a/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs b/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
--- a/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncGraphQLApi.hs
@@ -25,6 +25,7 @@
   , _appSyncGraphQLApiOpenIDConnectConfig :: Maybe AppSyncGraphQLApiOpenIDConnectConfig
   , _appSyncGraphQLApiTags :: Maybe [Tag]
   , _appSyncGraphQLApiUserPoolConfig :: Maybe AppSyncGraphQLApiUserPoolConfig
+  , _appSyncGraphQLApiXrayEnabled :: Maybe (Val Bool)
   } deriving (Show, Eq)
 
 instance ToResourceProperties AppSyncGraphQLApi where
@@ -40,6 +41,7 @@
         , fmap (("OpenIDConnectConfig",) . toJSON) _appSyncGraphQLApiOpenIDConnectConfig
         , fmap (("Tags",) . toJSON) _appSyncGraphQLApiTags
         , fmap (("UserPoolConfig",) . toJSON) _appSyncGraphQLApiUserPoolConfig
+        , fmap (("XrayEnabled",) . toJSON) _appSyncGraphQLApiXrayEnabled
         ]
     }
 
@@ -58,6 +60,7 @@
   , _appSyncGraphQLApiOpenIDConnectConfig = Nothing
   , _appSyncGraphQLApiTags = Nothing
   , _appSyncGraphQLApiUserPoolConfig = Nothing
+  , _appSyncGraphQLApiXrayEnabled = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-additionalauthenticationproviders
@@ -87,3 +90,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-userpoolconfig
 asgqlaUserPoolConfig :: Lens' AppSyncGraphQLApi (Maybe AppSyncGraphQLApiUserPoolConfig)
 asgqlaUserPoolConfig = lens _appSyncGraphQLApiUserPoolConfig (\s a -> s { _appSyncGraphQLApiUserPoolConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlapi.html#cfn-appsync-graphqlapi-xrayenabled
+asgqlaXrayEnabled :: Lens' AppSyncGraphQLApi (Maybe (Val Bool))
+asgqlaXrayEnabled = lens _appSyncGraphQLApiXrayEnabled (\s a -> s { _appSyncGraphQLApiXrayEnabled = a })
diff --git a/library-gen/Stratosphere/Resources/AthenaWorkGroup.hs b/library-gen/Stratosphere/Resources/AthenaWorkGroup.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AthenaWorkGroup.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html
+
+module Stratosphere.Resources.AthenaWorkGroup where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AthenaWorkGroupTags
+import Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfiguration
+import Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfigurationUpdates
+
+-- | Full data type definition for AthenaWorkGroup. See 'athenaWorkGroup' for
+-- a more convenient constructor.
+data AthenaWorkGroup =
+  AthenaWorkGroup
+  { _athenaWorkGroupDescription :: Maybe (Val Text)
+  , _athenaWorkGroupName :: Val Text
+  , _athenaWorkGroupRecursiveDeleteOption :: Maybe (Val Bool)
+  , _athenaWorkGroupState :: Maybe (Val Text)
+  , _athenaWorkGroupTags :: Maybe AthenaWorkGroupTags
+  , _athenaWorkGroupWorkGroupConfiguration :: Maybe AthenaWorkGroupWorkGroupConfiguration
+  , _athenaWorkGroupWorkGroupConfigurationUpdates :: Maybe AthenaWorkGroupWorkGroupConfigurationUpdates
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AthenaWorkGroup where
+  toResourceProperties AthenaWorkGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Athena::WorkGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _athenaWorkGroupDescription
+        , (Just . ("Name",) . toJSON) _athenaWorkGroupName
+        , fmap (("RecursiveDeleteOption",) . toJSON) _athenaWorkGroupRecursiveDeleteOption
+        , fmap (("State",) . toJSON) _athenaWorkGroupState
+        , fmap (("Tags",) . toJSON) _athenaWorkGroupTags
+        , fmap (("WorkGroupConfiguration",) . toJSON) _athenaWorkGroupWorkGroupConfiguration
+        , fmap (("WorkGroupConfigurationUpdates",) . toJSON) _athenaWorkGroupWorkGroupConfigurationUpdates
+        ]
+    }
+
+-- | Constructor for 'AthenaWorkGroup' containing required fields as
+-- arguments.
+athenaWorkGroup
+  :: Val Text -- ^ 'awgName'
+  -> AthenaWorkGroup
+athenaWorkGroup namearg =
+  AthenaWorkGroup
+  { _athenaWorkGroupDescription = Nothing
+  , _athenaWorkGroupName = namearg
+  , _athenaWorkGroupRecursiveDeleteOption = Nothing
+  , _athenaWorkGroupState = Nothing
+  , _athenaWorkGroupTags = Nothing
+  , _athenaWorkGroupWorkGroupConfiguration = Nothing
+  , _athenaWorkGroupWorkGroupConfigurationUpdates = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-description
+awgDescription :: Lens' AthenaWorkGroup (Maybe (Val Text))
+awgDescription = lens _athenaWorkGroupDescription (\s a -> s { _athenaWorkGroupDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-name
+awgName :: Lens' AthenaWorkGroup (Val Text)
+awgName = lens _athenaWorkGroupName (\s a -> s { _athenaWorkGroupName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-recursivedeleteoption
+awgRecursiveDeleteOption :: Lens' AthenaWorkGroup (Maybe (Val Bool))
+awgRecursiveDeleteOption = lens _athenaWorkGroupRecursiveDeleteOption (\s a -> s { _athenaWorkGroupRecursiveDeleteOption = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-state
+awgState :: Lens' AthenaWorkGroup (Maybe (Val Text))
+awgState = lens _athenaWorkGroupState (\s a -> s { _athenaWorkGroupState = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-tags
+awgTags :: Lens' AthenaWorkGroup (Maybe AthenaWorkGroupTags)
+awgTags = lens _athenaWorkGroupTags (\s a -> s { _athenaWorkGroupTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-workgroupconfiguration
+awgWorkGroupConfiguration :: Lens' AthenaWorkGroup (Maybe AthenaWorkGroupWorkGroupConfiguration)
+awgWorkGroupConfiguration = lens _athenaWorkGroupWorkGroupConfiguration (\s a -> s { _athenaWorkGroupWorkGroupConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-workgroupconfigurationupdates
+awgWorkGroupConfigurationUpdates :: Lens' AthenaWorkGroup (Maybe AthenaWorkGroupWorkGroupConfigurationUpdates)
+awgWorkGroupConfigurationUpdates = lens _athenaWorkGroupWorkGroupConfigurationUpdates (\s a -> s { _athenaWorkGroupWorkGroupConfigurationUpdates = a })
diff --git a/library-gen/Stratosphere/Resources/ChatbotSlackChannelConfiguration.hs b/library-gen/Stratosphere/Resources/ChatbotSlackChannelConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ChatbotSlackChannelConfiguration.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html
+
+module Stratosphere.Resources.ChatbotSlackChannelConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.Types
+
+-- | Full data type definition for ChatbotSlackChannelConfiguration. See
+-- 'chatbotSlackChannelConfiguration' for a more convenient constructor.
+data ChatbotSlackChannelConfiguration =
+  ChatbotSlackChannelConfiguration
+  { _chatbotSlackChannelConfigurationArn :: Maybe (Val Text)
+  , _chatbotSlackChannelConfigurationConfigurationName :: Val Text
+  , _chatbotSlackChannelConfigurationIamRoleArn :: Val Text
+  , _chatbotSlackChannelConfigurationLoggingLevel :: Maybe (Val LoggingLevel)
+  , _chatbotSlackChannelConfigurationSlackChannelId :: Val Text
+  , _chatbotSlackChannelConfigurationSlackWorkspaceId :: Val Text
+  , _chatbotSlackChannelConfigurationSnsTopicArns :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties ChatbotSlackChannelConfiguration where
+  toResourceProperties ChatbotSlackChannelConfiguration{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Chatbot::SlackChannelConfiguration"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Arn",) . toJSON) _chatbotSlackChannelConfigurationArn
+        , (Just . ("ConfigurationName",) . toJSON) _chatbotSlackChannelConfigurationConfigurationName
+        , (Just . ("IamRoleArn",) . toJSON) _chatbotSlackChannelConfigurationIamRoleArn
+        , fmap (("LoggingLevel",) . toJSON) _chatbotSlackChannelConfigurationLoggingLevel
+        , (Just . ("SlackChannelId",) . toJSON) _chatbotSlackChannelConfigurationSlackChannelId
+        , (Just . ("SlackWorkspaceId",) . toJSON) _chatbotSlackChannelConfigurationSlackWorkspaceId
+        , fmap (("SnsTopicArns",) . toJSON) _chatbotSlackChannelConfigurationSnsTopicArns
+        ]
+    }
+
+-- | Constructor for 'ChatbotSlackChannelConfiguration' containing required
+-- fields as arguments.
+chatbotSlackChannelConfiguration
+  :: Val Text -- ^ 'csccConfigurationName'
+  -> Val Text -- ^ 'csccIamRoleArn'
+  -> Val Text -- ^ 'csccSlackChannelId'
+  -> Val Text -- ^ 'csccSlackWorkspaceId'
+  -> ChatbotSlackChannelConfiguration
+chatbotSlackChannelConfiguration configurationNamearg iamRoleArnarg slackChannelIdarg slackWorkspaceIdarg =
+  ChatbotSlackChannelConfiguration
+  { _chatbotSlackChannelConfigurationArn = Nothing
+  , _chatbotSlackChannelConfigurationConfigurationName = configurationNamearg
+  , _chatbotSlackChannelConfigurationIamRoleArn = iamRoleArnarg
+  , _chatbotSlackChannelConfigurationLoggingLevel = Nothing
+  , _chatbotSlackChannelConfigurationSlackChannelId = slackChannelIdarg
+  , _chatbotSlackChannelConfigurationSlackWorkspaceId = slackWorkspaceIdarg
+  , _chatbotSlackChannelConfigurationSnsTopicArns = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html#cfn-chatbot-slackchannelconfiguration-arn
+csccArn :: Lens' ChatbotSlackChannelConfiguration (Maybe (Val Text))
+csccArn = lens _chatbotSlackChannelConfigurationArn (\s a -> s { _chatbotSlackChannelConfigurationArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html#cfn-chatbot-slackchannelconfiguration-configurationname
+csccConfigurationName :: Lens' ChatbotSlackChannelConfiguration (Val Text)
+csccConfigurationName = lens _chatbotSlackChannelConfigurationConfigurationName (\s a -> s { _chatbotSlackChannelConfigurationConfigurationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html#cfn-chatbot-slackchannelconfiguration-iamrolearn
+csccIamRoleArn :: Lens' ChatbotSlackChannelConfiguration (Val Text)
+csccIamRoleArn = lens _chatbotSlackChannelConfigurationIamRoleArn (\s a -> s { _chatbotSlackChannelConfigurationIamRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html#cfn-chatbot-slackchannelconfiguration-logginglevel
+csccLoggingLevel :: Lens' ChatbotSlackChannelConfiguration (Maybe (Val LoggingLevel))
+csccLoggingLevel = lens _chatbotSlackChannelConfigurationLoggingLevel (\s a -> s { _chatbotSlackChannelConfigurationLoggingLevel = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html#cfn-chatbot-slackchannelconfiguration-slackchannelid
+csccSlackChannelId :: Lens' ChatbotSlackChannelConfiguration (Val Text)
+csccSlackChannelId = lens _chatbotSlackChannelConfigurationSlackChannelId (\s a -> s { _chatbotSlackChannelConfigurationSlackChannelId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html#cfn-chatbot-slackchannelconfiguration-slackworkspaceid
+csccSlackWorkspaceId :: Lens' ChatbotSlackChannelConfiguration (Val Text)
+csccSlackWorkspaceId = lens _chatbotSlackChannelConfigurationSlackWorkspaceId (\s a -> s { _chatbotSlackChannelConfigurationSlackWorkspaceId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-chatbot-slackchannelconfiguration.html#cfn-chatbot-slackchannelconfiguration-snstopicarns
+csccSnsTopicArns :: Lens' ChatbotSlackChannelConfiguration (Maybe (ValList Text))
+csccSnsTopicArns = lens _chatbotSlackChannelConfigurationSnsTopicArns (\s a -> s { _chatbotSlackChannelConfigurationSnsTopicArns = a })
diff --git a/library-gen/Stratosphere/Resources/CloudWatchCompositeAlarm.hs b/library-gen/Stratosphere/Resources/CloudWatchCompositeAlarm.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/CloudWatchCompositeAlarm.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html
+
+module Stratosphere.Resources.CloudWatchCompositeAlarm where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CloudWatchCompositeAlarm. See
+-- 'cloudWatchCompositeAlarm' for a more convenient constructor.
+data CloudWatchCompositeAlarm =
+  CloudWatchCompositeAlarm
+  { _cloudWatchCompositeAlarmActionsEnabled :: Maybe (Val Bool)
+  , _cloudWatchCompositeAlarmAlarmActions :: Maybe (ValList Text)
+  , _cloudWatchCompositeAlarmAlarmDescription :: Maybe (Val Text)
+  , _cloudWatchCompositeAlarmAlarmName :: Val Text
+  , _cloudWatchCompositeAlarmAlarmRule :: Val Text
+  , _cloudWatchCompositeAlarmInsufficientDataActions :: Maybe (ValList Text)
+  , _cloudWatchCompositeAlarmOKActions :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties CloudWatchCompositeAlarm where
+  toResourceProperties CloudWatchCompositeAlarm{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CloudWatch::CompositeAlarm"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ActionsEnabled",) . toJSON) _cloudWatchCompositeAlarmActionsEnabled
+        , fmap (("AlarmActions",) . toJSON) _cloudWatchCompositeAlarmAlarmActions
+        , fmap (("AlarmDescription",) . toJSON) _cloudWatchCompositeAlarmAlarmDescription
+        , (Just . ("AlarmName",) . toJSON) _cloudWatchCompositeAlarmAlarmName
+        , (Just . ("AlarmRule",) . toJSON) _cloudWatchCompositeAlarmAlarmRule
+        , fmap (("InsufficientDataActions",) . toJSON) _cloudWatchCompositeAlarmInsufficientDataActions
+        , fmap (("OKActions",) . toJSON) _cloudWatchCompositeAlarmOKActions
+        ]
+    }
+
+-- | Constructor for 'CloudWatchCompositeAlarm' containing required fields as
+-- arguments.
+cloudWatchCompositeAlarm
+  :: Val Text -- ^ 'cwcaAlarmName'
+  -> Val Text -- ^ 'cwcaAlarmRule'
+  -> CloudWatchCompositeAlarm
+cloudWatchCompositeAlarm alarmNamearg alarmRulearg =
+  CloudWatchCompositeAlarm
+  { _cloudWatchCompositeAlarmActionsEnabled = Nothing
+  , _cloudWatchCompositeAlarmAlarmActions = Nothing
+  , _cloudWatchCompositeAlarmAlarmDescription = Nothing
+  , _cloudWatchCompositeAlarmAlarmName = alarmNamearg
+  , _cloudWatchCompositeAlarmAlarmRule = alarmRulearg
+  , _cloudWatchCompositeAlarmInsufficientDataActions = Nothing
+  , _cloudWatchCompositeAlarmOKActions = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html#cfn-cloudwatch-compositealarm-actionsenabled
+cwcaActionsEnabled :: Lens' CloudWatchCompositeAlarm (Maybe (Val Bool))
+cwcaActionsEnabled = lens _cloudWatchCompositeAlarmActionsEnabled (\s a -> s { _cloudWatchCompositeAlarmActionsEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html#cfn-cloudwatch-compositealarm-alarmactions
+cwcaAlarmActions :: Lens' CloudWatchCompositeAlarm (Maybe (ValList Text))
+cwcaAlarmActions = lens _cloudWatchCompositeAlarmAlarmActions (\s a -> s { _cloudWatchCompositeAlarmAlarmActions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html#cfn-cloudwatch-compositealarm-alarmdescription
+cwcaAlarmDescription :: Lens' CloudWatchCompositeAlarm (Maybe (Val Text))
+cwcaAlarmDescription = lens _cloudWatchCompositeAlarmAlarmDescription (\s a -> s { _cloudWatchCompositeAlarmAlarmDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html#cfn-cloudwatch-compositealarm-alarmname
+cwcaAlarmName :: Lens' CloudWatchCompositeAlarm (Val Text)
+cwcaAlarmName = lens _cloudWatchCompositeAlarmAlarmName (\s a -> s { _cloudWatchCompositeAlarmAlarmName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html#cfn-cloudwatch-compositealarm-alarmrule
+cwcaAlarmRule :: Lens' CloudWatchCompositeAlarm (Val Text)
+cwcaAlarmRule = lens _cloudWatchCompositeAlarmAlarmRule (\s a -> s { _cloudWatchCompositeAlarmAlarmRule = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html#cfn-cloudwatch-compositealarm-insufficientdataactions
+cwcaInsufficientDataActions :: Lens' CloudWatchCompositeAlarm (Maybe (ValList Text))
+cwcaInsufficientDataActions = lens _cloudWatchCompositeAlarmInsufficientDataActions (\s a -> s { _cloudWatchCompositeAlarmInsufficientDataActions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-compositealarm.html#cfn-cloudwatch-compositealarm-okactions
+cwcaOKActions :: Lens' CloudWatchCompositeAlarm (Maybe (ValList Text))
+cwcaOKActions = lens _cloudWatchCompositeAlarmOKActions (\s a -> s { _cloudWatchCompositeAlarmOKActions = a })
diff --git a/library-gen/Stratosphere/Resources/CodeBuildProject.hs b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
--- a/library-gen/Stratosphere/Resources/CodeBuildProject.hs
+++ b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.CodeBuildProjectArtifacts
 import Stratosphere.ResourceProperties.CodeBuildProjectProjectCache
 import Stratosphere.ResourceProperties.CodeBuildProjectEnvironment
+import Stratosphere.ResourceProperties.CodeBuildProjectProjectFileSystemLocation
 import Stratosphere.ResourceProperties.CodeBuildProjectLogsConfig
 import Stratosphere.ResourceProperties.CodeBuildProjectProjectSourceVersion
 import Stratosphere.ResourceProperties.CodeBuildProjectSource
@@ -28,6 +29,7 @@
   , _codeBuildProjectDescription :: Maybe (Val Text)
   , _codeBuildProjectEncryptionKey :: Maybe (Val Text)
   , _codeBuildProjectEnvironment :: CodeBuildProjectEnvironment
+  , _codeBuildProjectFileSystemLocations :: Maybe [CodeBuildProjectProjectFileSystemLocation]
   , _codeBuildProjectLogsConfig :: Maybe CodeBuildProjectLogsConfig
   , _codeBuildProjectName :: Maybe (Val Text)
   , _codeBuildProjectQueuedTimeoutInMinutes :: Maybe (Val Integer)
@@ -55,6 +57,7 @@
         , fmap (("Description",) . toJSON) _codeBuildProjectDescription
         , fmap (("EncryptionKey",) . toJSON) _codeBuildProjectEncryptionKey
         , (Just . ("Environment",) . toJSON) _codeBuildProjectEnvironment
+        , fmap (("FileSystemLocations",) . toJSON) _codeBuildProjectFileSystemLocations
         , fmap (("LogsConfig",) . toJSON) _codeBuildProjectLogsConfig
         , fmap (("Name",) . toJSON) _codeBuildProjectName
         , fmap (("QueuedTimeoutInMinutes",) . toJSON) _codeBuildProjectQueuedTimeoutInMinutes
@@ -87,6 +90,7 @@
   , _codeBuildProjectDescription = Nothing
   , _codeBuildProjectEncryptionKey = Nothing
   , _codeBuildProjectEnvironment = environmentarg
+  , _codeBuildProjectFileSystemLocations = Nothing
   , _codeBuildProjectLogsConfig = Nothing
   , _codeBuildProjectName = Nothing
   , _codeBuildProjectQueuedTimeoutInMinutes = Nothing
@@ -125,6 +129,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-environment
 cbpEnvironment :: Lens' CodeBuildProject CodeBuildProjectEnvironment
 cbpEnvironment = lens _codeBuildProjectEnvironment (\s a -> s { _codeBuildProjectEnvironment = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-filesystemlocations
+cbpFileSystemLocations :: Lens' CodeBuildProject (Maybe [CodeBuildProjectProjectFileSystemLocation])
+cbpFileSystemLocations = lens _codeBuildProjectFileSystemLocations (\s a -> s { _codeBuildProjectFileSystemLocations = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-logsconfig
 cbpLogsConfig :: Lens' CodeBuildProject (Maybe CodeBuildProjectLogsConfig)
diff --git a/library-gen/Stratosphere/Resources/CodeStarConnectionsConnection.hs b/library-gen/Stratosphere/Resources/CodeStarConnectionsConnection.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/CodeStarConnectionsConnection.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarconnections-connection.html
+
+module Stratosphere.Resources.CodeStarConnectionsConnection where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CodeStarConnectionsConnection. See
+-- 'codeStarConnectionsConnection' for a more convenient constructor.
+data CodeStarConnectionsConnection =
+  CodeStarConnectionsConnection
+  { _codeStarConnectionsConnectionConnectionName :: Val Text
+  , _codeStarConnectionsConnectionProviderType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties CodeStarConnectionsConnection where
+  toResourceProperties CodeStarConnectionsConnection{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::CodeStarConnections::Connection"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ConnectionName",) . toJSON) _codeStarConnectionsConnectionConnectionName
+        , (Just . ("ProviderType",) . toJSON) _codeStarConnectionsConnectionProviderType
+        ]
+    }
+
+-- | Constructor for 'CodeStarConnectionsConnection' containing required
+-- fields as arguments.
+codeStarConnectionsConnection
+  :: Val Text -- ^ 'csccConnectionName'
+  -> Val Text -- ^ 'csccProviderType'
+  -> CodeStarConnectionsConnection
+codeStarConnectionsConnection connectionNamearg providerTypearg =
+  CodeStarConnectionsConnection
+  { _codeStarConnectionsConnectionConnectionName = connectionNamearg
+  , _codeStarConnectionsConnectionProviderType = providerTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarconnections-connection.html#cfn-codestarconnections-connection-connectionname
+csccConnectionName :: Lens' CodeStarConnectionsConnection (Val Text)
+csccConnectionName = lens _codeStarConnectionsConnectionConnectionName (\s a -> s { _codeStarConnectionsConnectionConnectionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarconnections-connection.html#cfn-codestarconnections-connection-providertype
+csccProviderType :: Lens' CodeStarConnectionsConnection (Val Text)
+csccProviderType = lens _codeStarConnectionsConnectionProviderType (\s a -> s { _codeStarConnectionsConnectionProviderType = a })
diff --git a/library-gen/Stratosphere/Resources/CognitoUserPool.hs b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
--- a/library-gen/Stratosphere/Resources/CognitoUserPool.hs
+++ b/library-gen/Stratosphere/Resources/CognitoUserPool.hs
@@ -17,6 +17,7 @@
 import Stratosphere.ResourceProperties.CognitoUserPoolSchemaAttribute
 import Stratosphere.ResourceProperties.CognitoUserPoolSmsConfiguration
 import Stratosphere.ResourceProperties.CognitoUserPoolUserPoolAddOns
+import Stratosphere.ResourceProperties.CognitoUserPoolUsernameConfiguration
 import Stratosphere.ResourceProperties.CognitoUserPoolVerificationMessageTemplate
 
 -- | Full data type definition for CognitoUserPool. See 'cognitoUserPool' for
@@ -43,6 +44,7 @@
   , _cognitoUserPoolUserPoolName :: Maybe (Val Text)
   , _cognitoUserPoolUserPoolTags :: Maybe Object
   , _cognitoUserPoolUsernameAttributes :: Maybe (ValList Text)
+  , _cognitoUserPoolUsernameConfiguration :: Maybe CognitoUserPoolUsernameConfiguration
   , _cognitoUserPoolVerificationMessageTemplate :: Maybe CognitoUserPoolVerificationMessageTemplate
   } deriving (Show, Eq)
 
@@ -72,6 +74,7 @@
         , fmap (("UserPoolName",) . toJSON) _cognitoUserPoolUserPoolName
         , fmap (("UserPoolTags",) . toJSON) _cognitoUserPoolUserPoolTags
         , fmap (("UsernameAttributes",) . toJSON) _cognitoUserPoolUsernameAttributes
+        , fmap (("UsernameConfiguration",) . toJSON) _cognitoUserPoolUsernameConfiguration
         , fmap (("VerificationMessageTemplate",) . toJSON) _cognitoUserPoolVerificationMessageTemplate
         ]
     }
@@ -102,6 +105,7 @@
   , _cognitoUserPoolUserPoolName = Nothing
   , _cognitoUserPoolUserPoolTags = Nothing
   , _cognitoUserPoolUsernameAttributes = Nothing
+  , _cognitoUserPoolUsernameConfiguration = Nothing
   , _cognitoUserPoolVerificationMessageTemplate = Nothing
   }
 
@@ -184,6 +188,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-usernameattributes
 cupUsernameAttributes :: Lens' CognitoUserPool (Maybe (ValList Text))
 cupUsernameAttributes = lens _cognitoUserPoolUsernameAttributes (\s a -> s { _cognitoUserPoolUsernameAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-usernameconfiguration
+cupUsernameConfiguration :: Lens' CognitoUserPool (Maybe CognitoUserPoolUsernameConfiguration)
+cupUsernameConfiguration = lens _cognitoUserPoolUsernameConfiguration (\s a -> s { _cognitoUserPoolUsernameConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-verificationmessagetemplate
 cupVerificationMessageTemplate :: Lens' CognitoUserPool (Maybe CognitoUserPoolVerificationMessageTemplate)
diff --git a/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs b/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs
--- a/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs
+++ b/library-gen/Stratosphere/Resources/ConfigAggregationAuthorization.hs
@@ -8,7 +8,7 @@
 module Stratosphere.Resources.ConfigAggregationAuthorization where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ConfigAggregationAuthorization. See
 -- 'configAggregationAuthorization' for a more convenient constructor.
@@ -16,6 +16,7 @@
   ConfigAggregationAuthorization
   { _configAggregationAuthorizationAuthorizedAccountId :: Val Text
   , _configAggregationAuthorizationAuthorizedAwsRegion :: Val Text
+  , _configAggregationAuthorizationTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToResourceProperties ConfigAggregationAuthorization where
@@ -26,6 +27,7 @@
         hashMapFromList $ catMaybes
         [ (Just . ("AuthorizedAccountId",) . toJSON) _configAggregationAuthorizationAuthorizedAccountId
         , (Just . ("AuthorizedAwsRegion",) . toJSON) _configAggregationAuthorizationAuthorizedAwsRegion
+        , fmap (("Tags",) . toJSON) _configAggregationAuthorizationTags
         ]
     }
 
@@ -39,6 +41,7 @@
   ConfigAggregationAuthorization
   { _configAggregationAuthorizationAuthorizedAccountId = authorizedAccountIdarg
   , _configAggregationAuthorizationAuthorizedAwsRegion = authorizedAwsRegionarg
+  , _configAggregationAuthorizationTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-authorizedaccountid
@@ -48,3 +51,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-authorizedawsregion
 caaAuthorizedAwsRegion :: Lens' ConfigAggregationAuthorization (Val Text)
 caaAuthorizedAwsRegion = lens _configAggregationAuthorizationAuthorizedAwsRegion (\s a -> s { _configAggregationAuthorizationAuthorizedAwsRegion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-tags
+caaTags :: Lens' ConfigAggregationAuthorization (Maybe [Tag])
+caaTags = lens _configAggregationAuthorizationTags (\s a -> s { _configAggregationAuthorizationTags = a })
diff --git a/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs b/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs
--- a/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs
+++ b/library-gen/Stratosphere/Resources/ConfigConfigurationAggregator.hs
@@ -10,6 +10,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorAccountAggregationSource
 import Stratosphere.ResourceProperties.ConfigConfigurationAggregatorOrganizationAggregationSource
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ConfigConfigurationAggregator. See
 -- 'configConfigurationAggregator' for a more convenient constructor.
@@ -18,6 +19,7 @@
   { _configConfigurationAggregatorAccountAggregationSources :: Maybe [ConfigConfigurationAggregatorAccountAggregationSource]
   , _configConfigurationAggregatorConfigurationAggregatorName :: Val Text
   , _configConfigurationAggregatorOrganizationAggregationSource :: Maybe ConfigConfigurationAggregatorOrganizationAggregationSource
+  , _configConfigurationAggregatorTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToResourceProperties ConfigConfigurationAggregator where
@@ -29,6 +31,7 @@
         [ fmap (("AccountAggregationSources",) . toJSON) _configConfigurationAggregatorAccountAggregationSources
         , (Just . ("ConfigurationAggregatorName",) . toJSON) _configConfigurationAggregatorConfigurationAggregatorName
         , fmap (("OrganizationAggregationSource",) . toJSON) _configConfigurationAggregatorOrganizationAggregationSource
+        , fmap (("Tags",) . toJSON) _configConfigurationAggregatorTags
         ]
     }
 
@@ -42,6 +45,7 @@
   { _configConfigurationAggregatorAccountAggregationSources = Nothing
   , _configConfigurationAggregatorConfigurationAggregatorName = configurationAggregatorNamearg
   , _configConfigurationAggregatorOrganizationAggregationSource = Nothing
+  , _configConfigurationAggregatorTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-accountaggregationsources
@@ -55,3 +59,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-organizationaggregationsource
 ccaOrganizationAggregationSource :: Lens' ConfigConfigurationAggregator (Maybe ConfigConfigurationAggregatorOrganizationAggregationSource)
 ccaOrganizationAggregationSource = lens _configConfigurationAggregatorOrganizationAggregationSource (\s a -> s { _configConfigurationAggregatorOrganizationAggregationSource = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-tags
+ccaTags :: Lens' ConfigConfigurationAggregator (Maybe [Tag])
+ccaTags = lens _configConfigurationAggregatorTags (\s a -> s { _configConfigurationAggregatorTags = a })
diff --git a/library-gen/Stratosphere/Resources/ConfigConformancePack.hs b/library-gen/Stratosphere/Resources/ConfigConformancePack.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ConfigConformancePack.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html
+
+module Stratosphere.Resources.ConfigConformancePack where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ConfigConformancePackConformancePackInputParameter
+
+-- | Full data type definition for ConfigConformancePack. See
+-- 'configConformancePack' for a more convenient constructor.
+data ConfigConformancePack =
+  ConfigConformancePack
+  { _configConformancePackConformancePackInputParameters :: Maybe [ConfigConformancePackConformancePackInputParameter]
+  , _configConformancePackConformancePackName :: Val Text
+  , _configConformancePackDeliveryS3Bucket :: Val Text
+  , _configConformancePackDeliveryS3KeyPrefix :: Maybe (Val Text)
+  , _configConformancePackTemplateBody :: Maybe (Val Text)
+  , _configConformancePackTemplateS3Uri :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties ConfigConformancePack where
+  toResourceProperties ConfigConformancePack{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Config::ConformancePack"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ConformancePackInputParameters",) . toJSON) _configConformancePackConformancePackInputParameters
+        , (Just . ("ConformancePackName",) . toJSON) _configConformancePackConformancePackName
+        , (Just . ("DeliveryS3Bucket",) . toJSON) _configConformancePackDeliveryS3Bucket
+        , fmap (("DeliveryS3KeyPrefix",) . toJSON) _configConformancePackDeliveryS3KeyPrefix
+        , fmap (("TemplateBody",) . toJSON) _configConformancePackTemplateBody
+        , fmap (("TemplateS3Uri",) . toJSON) _configConformancePackTemplateS3Uri
+        ]
+    }
+
+-- | Constructor for 'ConfigConformancePack' containing required fields as
+-- arguments.
+configConformancePack
+  :: Val Text -- ^ 'ccpConformancePackName'
+  -> Val Text -- ^ 'ccpDeliveryS3Bucket'
+  -> ConfigConformancePack
+configConformancePack conformancePackNamearg deliveryS3Bucketarg =
+  ConfigConformancePack
+  { _configConformancePackConformancePackInputParameters = Nothing
+  , _configConformancePackConformancePackName = conformancePackNamearg
+  , _configConformancePackDeliveryS3Bucket = deliveryS3Bucketarg
+  , _configConformancePackDeliveryS3KeyPrefix = Nothing
+  , _configConformancePackTemplateBody = Nothing
+  , _configConformancePackTemplateS3Uri = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-conformancepackinputparameters
+ccpConformancePackInputParameters :: Lens' ConfigConformancePack (Maybe [ConfigConformancePackConformancePackInputParameter])
+ccpConformancePackInputParameters = lens _configConformancePackConformancePackInputParameters (\s a -> s { _configConformancePackConformancePackInputParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-conformancepackname
+ccpConformancePackName :: Lens' ConfigConformancePack (Val Text)
+ccpConformancePackName = lens _configConformancePackConformancePackName (\s a -> s { _configConformancePackConformancePackName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-deliverys3bucket
+ccpDeliveryS3Bucket :: Lens' ConfigConformancePack (Val Text)
+ccpDeliveryS3Bucket = lens _configConformancePackDeliveryS3Bucket (\s a -> s { _configConformancePackDeliveryS3Bucket = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-deliverys3keyprefix
+ccpDeliveryS3KeyPrefix :: Lens' ConfigConformancePack (Maybe (Val Text))
+ccpDeliveryS3KeyPrefix = lens _configConformancePackDeliveryS3KeyPrefix (\s a -> s { _configConformancePackDeliveryS3KeyPrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-templatebody
+ccpTemplateBody :: Lens' ConfigConformancePack (Maybe (Val Text))
+ccpTemplateBody = lens _configConformancePackTemplateBody (\s a -> s { _configConformancePackTemplateBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-conformancepack.html#cfn-config-conformancepack-templates3uri
+ccpTemplateS3Uri :: Lens' ConfigConformancePack (Maybe (Val Text))
+ccpTemplateS3Uri = lens _configConformancePackTemplateS3Uri (\s a -> s { _configConformancePackTemplateS3Uri = a })
diff --git a/library-gen/Stratosphere/Resources/ConfigOrganizationConformancePack.hs b/library-gen/Stratosphere/Resources/ConfigOrganizationConformancePack.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ConfigOrganizationConformancePack.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html
+
+module Stratosphere.Resources.ConfigOrganizationConformancePack where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ConfigOrganizationConformancePackConformancePackInputParameter
+
+-- | Full data type definition for ConfigOrganizationConformancePack. See
+-- 'configOrganizationConformancePack' for a more convenient constructor.
+data ConfigOrganizationConformancePack =
+  ConfigOrganizationConformancePack
+  { _configOrganizationConformancePackConformancePackInputParameters :: Maybe [ConfigOrganizationConformancePackConformancePackInputParameter]
+  , _configOrganizationConformancePackDeliveryS3Bucket :: Val Text
+  , _configOrganizationConformancePackDeliveryS3KeyPrefix :: Maybe (Val Text)
+  , _configOrganizationConformancePackExcludedAccounts :: Maybe (ValList Text)
+  , _configOrganizationConformancePackOrganizationConformancePackName :: Val Text
+  , _configOrganizationConformancePackTemplateBody :: Maybe (Val Text)
+  , _configOrganizationConformancePackTemplateS3Uri :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties ConfigOrganizationConformancePack where
+  toResourceProperties ConfigOrganizationConformancePack{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Config::OrganizationConformancePack"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("ConformancePackInputParameters",) . toJSON) _configOrganizationConformancePackConformancePackInputParameters
+        , (Just . ("DeliveryS3Bucket",) . toJSON) _configOrganizationConformancePackDeliveryS3Bucket
+        , fmap (("DeliveryS3KeyPrefix",) . toJSON) _configOrganizationConformancePackDeliveryS3KeyPrefix
+        , fmap (("ExcludedAccounts",) . toJSON) _configOrganizationConformancePackExcludedAccounts
+        , (Just . ("OrganizationConformancePackName",) . toJSON) _configOrganizationConformancePackOrganizationConformancePackName
+        , fmap (("TemplateBody",) . toJSON) _configOrganizationConformancePackTemplateBody
+        , fmap (("TemplateS3Uri",) . toJSON) _configOrganizationConformancePackTemplateS3Uri
+        ]
+    }
+
+-- | Constructor for 'ConfigOrganizationConformancePack' containing required
+-- fields as arguments.
+configOrganizationConformancePack
+  :: Val Text -- ^ 'cocpDeliveryS3Bucket'
+  -> Val Text -- ^ 'cocpOrganizationConformancePackName'
+  -> ConfigOrganizationConformancePack
+configOrganizationConformancePack deliveryS3Bucketarg organizationConformancePackNamearg =
+  ConfigOrganizationConformancePack
+  { _configOrganizationConformancePackConformancePackInputParameters = Nothing
+  , _configOrganizationConformancePackDeliveryS3Bucket = deliveryS3Bucketarg
+  , _configOrganizationConformancePackDeliveryS3KeyPrefix = Nothing
+  , _configOrganizationConformancePackExcludedAccounts = Nothing
+  , _configOrganizationConformancePackOrganizationConformancePackName = organizationConformancePackNamearg
+  , _configOrganizationConformancePackTemplateBody = Nothing
+  , _configOrganizationConformancePackTemplateS3Uri = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-conformancepackinputparameters
+cocpConformancePackInputParameters :: Lens' ConfigOrganizationConformancePack (Maybe [ConfigOrganizationConformancePackConformancePackInputParameter])
+cocpConformancePackInputParameters = lens _configOrganizationConformancePackConformancePackInputParameters (\s a -> s { _configOrganizationConformancePackConformancePackInputParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-deliverys3bucket
+cocpDeliveryS3Bucket :: Lens' ConfigOrganizationConformancePack (Val Text)
+cocpDeliveryS3Bucket = lens _configOrganizationConformancePackDeliveryS3Bucket (\s a -> s { _configOrganizationConformancePackDeliveryS3Bucket = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-deliverys3keyprefix
+cocpDeliveryS3KeyPrefix :: Lens' ConfigOrganizationConformancePack (Maybe (Val Text))
+cocpDeliveryS3KeyPrefix = lens _configOrganizationConformancePackDeliveryS3KeyPrefix (\s a -> s { _configOrganizationConformancePackDeliveryS3KeyPrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-excludedaccounts
+cocpExcludedAccounts :: Lens' ConfigOrganizationConformancePack (Maybe (ValList Text))
+cocpExcludedAccounts = lens _configOrganizationConformancePackExcludedAccounts (\s a -> s { _configOrganizationConformancePackExcludedAccounts = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-organizationconformancepackname
+cocpOrganizationConformancePackName :: Lens' ConfigOrganizationConformancePack (Val Text)
+cocpOrganizationConformancePackName = lens _configOrganizationConformancePackOrganizationConformancePackName (\s a -> s { _configOrganizationConformancePackOrganizationConformancePackName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-templatebody
+cocpTemplateBody :: Lens' ConfigOrganizationConformancePack (Maybe (Val Text))
+cocpTemplateBody = lens _configOrganizationConformancePackTemplateBody (\s a -> s { _configOrganizationConformancePackTemplateBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconformancepack.html#cfn-config-organizationconformancepack-templates3uri
+cocpTemplateS3Uri :: Lens' ConfigOrganizationConformancePack (Maybe (Val Text))
+cocpTemplateS3Uri = lens _configOrganizationConformancePackTemplateS3Uri (\s a -> s { _configOrganizationConformancePackTemplateS3Uri = a })
diff --git a/library-gen/Stratosphere/Resources/EC2ClientVpnEndpoint.hs b/library-gen/Stratosphere/Resources/EC2ClientVpnEndpoint.hs
--- a/library-gen/Stratosphere/Resources/EC2ClientVpnEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/EC2ClientVpnEndpoint.hs
@@ -25,6 +25,7 @@
   , _eC2ClientVpnEndpointSplitTunnel :: Maybe (Val Bool)
   , _eC2ClientVpnEndpointTagSpecifications :: Maybe [EC2ClientVpnEndpointTagSpecification]
   , _eC2ClientVpnEndpointTransportProtocol :: Maybe (Val Text)
+  , _eC2ClientVpnEndpointVpnPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
 instance ToResourceProperties EC2ClientVpnEndpoint where
@@ -42,6 +43,7 @@
         , fmap (("SplitTunnel",) . toJSON) _eC2ClientVpnEndpointSplitTunnel
         , fmap (("TagSpecifications",) . toJSON) _eC2ClientVpnEndpointTagSpecifications
         , fmap (("TransportProtocol",) . toJSON) _eC2ClientVpnEndpointTransportProtocol
+        , fmap (("VpnPort",) . toJSON) _eC2ClientVpnEndpointVpnPort
         ]
     }
 
@@ -64,6 +66,7 @@
   , _eC2ClientVpnEndpointSplitTunnel = Nothing
   , _eC2ClientVpnEndpointTagSpecifications = Nothing
   , _eC2ClientVpnEndpointTransportProtocol = Nothing
+  , _eC2ClientVpnEndpointVpnPort = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-authenticationoptions
@@ -101,3 +104,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-transportprotocol
 eccveTransportProtocol :: Lens' EC2ClientVpnEndpoint (Maybe (Val Text))
 eccveTransportProtocol = lens _eC2ClientVpnEndpointTransportProtocol (\s a -> s { _eC2ClientVpnEndpointTransportProtocol = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-vpnport
+eccveVpnPort :: Lens' EC2ClientVpnEndpoint (Maybe (Val Integer))
+eccveVpnPort = lens _eC2ClientVpnEndpointVpnPort (\s a -> s { _eC2ClientVpnEndpointVpnPort = a })
diff --git a/library-gen/Stratosphere/Resources/EC2LocalGatewayRoute.hs b/library-gen/Stratosphere/Resources/EC2LocalGatewayRoute.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2LocalGatewayRoute.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html
+
+module Stratosphere.Resources.EC2LocalGatewayRoute where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2LocalGatewayRoute. See
+-- 'ec2LocalGatewayRoute' for a more convenient constructor.
+data EC2LocalGatewayRoute =
+  EC2LocalGatewayRoute
+  { _eC2LocalGatewayRouteDestinationCidrBlock :: Val Text
+  , _eC2LocalGatewayRouteLocalGatewayRouteTableId :: Val Text
+  , _eC2LocalGatewayRouteLocalGatewayVirtualInterfaceGroupId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties EC2LocalGatewayRoute where
+  toResourceProperties EC2LocalGatewayRoute{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::LocalGatewayRoute"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DestinationCidrBlock",) . toJSON) _eC2LocalGatewayRouteDestinationCidrBlock
+        , (Just . ("LocalGatewayRouteTableId",) . toJSON) _eC2LocalGatewayRouteLocalGatewayRouteTableId
+        , (Just . ("LocalGatewayVirtualInterfaceGroupId",) . toJSON) _eC2LocalGatewayRouteLocalGatewayVirtualInterfaceGroupId
+        ]
+    }
+
+-- | Constructor for 'EC2LocalGatewayRoute' containing required fields as
+-- arguments.
+ec2LocalGatewayRoute
+  :: Val Text -- ^ 'eclgrDestinationCidrBlock'
+  -> Val Text -- ^ 'eclgrLocalGatewayRouteTableId'
+  -> Val Text -- ^ 'eclgrLocalGatewayVirtualInterfaceGroupId'
+  -> EC2LocalGatewayRoute
+ec2LocalGatewayRoute destinationCidrBlockarg localGatewayRouteTableIdarg localGatewayVirtualInterfaceGroupIdarg =
+  EC2LocalGatewayRoute
+  { _eC2LocalGatewayRouteDestinationCidrBlock = destinationCidrBlockarg
+  , _eC2LocalGatewayRouteLocalGatewayRouteTableId = localGatewayRouteTableIdarg
+  , _eC2LocalGatewayRouteLocalGatewayVirtualInterfaceGroupId = localGatewayVirtualInterfaceGroupIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html#cfn-ec2-localgatewayroute-destinationcidrblock
+eclgrDestinationCidrBlock :: Lens' EC2LocalGatewayRoute (Val Text)
+eclgrDestinationCidrBlock = lens _eC2LocalGatewayRouteDestinationCidrBlock (\s a -> s { _eC2LocalGatewayRouteDestinationCidrBlock = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html#cfn-ec2-localgatewayroute-localgatewayroutetableid
+eclgrLocalGatewayRouteTableId :: Lens' EC2LocalGatewayRoute (Val Text)
+eclgrLocalGatewayRouteTableId = lens _eC2LocalGatewayRouteLocalGatewayRouteTableId (\s a -> s { _eC2LocalGatewayRouteLocalGatewayRouteTableId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroute.html#cfn-ec2-localgatewayroute-localgatewayvirtualinterfacegroupid
+eclgrLocalGatewayVirtualInterfaceGroupId :: Lens' EC2LocalGatewayRoute (Val Text)
+eclgrLocalGatewayVirtualInterfaceGroupId = lens _eC2LocalGatewayRouteLocalGatewayVirtualInterfaceGroupId (\s a -> s { _eC2LocalGatewayRouteLocalGatewayVirtualInterfaceGroupId = a })
diff --git a/library-gen/Stratosphere/Resources/EC2LocalGatewayRouteTableVPCAssociation.hs b/library-gen/Stratosphere/Resources/EC2LocalGatewayRouteTableVPCAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2LocalGatewayRouteTableVPCAssociation.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html
+
+module Stratosphere.Resources.EC2LocalGatewayRouteTableVPCAssociation where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EC2LocalGatewayRouteTableVPCAssociationTags
+
+-- | Full data type definition for EC2LocalGatewayRouteTableVPCAssociation.
+-- See 'ec2LocalGatewayRouteTableVPCAssociation' for a more convenient
+-- constructor.
+data EC2LocalGatewayRouteTableVPCAssociation =
+  EC2LocalGatewayRouteTableVPCAssociation
+  { _eC2LocalGatewayRouteTableVPCAssociationLocalGatewayRouteTableId :: Val Text
+  , _eC2LocalGatewayRouteTableVPCAssociationTags :: Maybe EC2LocalGatewayRouteTableVPCAssociationTags
+  , _eC2LocalGatewayRouteTableVPCAssociationVpcId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties EC2LocalGatewayRouteTableVPCAssociation where
+  toResourceProperties EC2LocalGatewayRouteTableVPCAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::LocalGatewayRouteTableVPCAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("LocalGatewayRouteTableId",) . toJSON) _eC2LocalGatewayRouteTableVPCAssociationLocalGatewayRouteTableId
+        , fmap (("Tags",) . toJSON) _eC2LocalGatewayRouteTableVPCAssociationTags
+        , (Just . ("VpcId",) . toJSON) _eC2LocalGatewayRouteTableVPCAssociationVpcId
+        ]
+    }
+
+-- | Constructor for 'EC2LocalGatewayRouteTableVPCAssociation' containing
+-- required fields as arguments.
+ec2LocalGatewayRouteTableVPCAssociation
+  :: Val Text -- ^ 'eclgrtvpcaLocalGatewayRouteTableId'
+  -> Val Text -- ^ 'eclgrtvpcaVpcId'
+  -> EC2LocalGatewayRouteTableVPCAssociation
+ec2LocalGatewayRouteTableVPCAssociation localGatewayRouteTableIdarg vpcIdarg =
+  EC2LocalGatewayRouteTableVPCAssociation
+  { _eC2LocalGatewayRouteTableVPCAssociationLocalGatewayRouteTableId = localGatewayRouteTableIdarg
+  , _eC2LocalGatewayRouteTableVPCAssociationTags = Nothing
+  , _eC2LocalGatewayRouteTableVPCAssociationVpcId = vpcIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-localgatewayroutetableid
+eclgrtvpcaLocalGatewayRouteTableId :: Lens' EC2LocalGatewayRouteTableVPCAssociation (Val Text)
+eclgrtvpcaLocalGatewayRouteTableId = lens _eC2LocalGatewayRouteTableVPCAssociationLocalGatewayRouteTableId (\s a -> s { _eC2LocalGatewayRouteTableVPCAssociationLocalGatewayRouteTableId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-tags
+eclgrtvpcaTags :: Lens' EC2LocalGatewayRouteTableVPCAssociation (Maybe EC2LocalGatewayRouteTableVPCAssociationTags)
+eclgrtvpcaTags = lens _eC2LocalGatewayRouteTableVPCAssociationTags (\s a -> s { _eC2LocalGatewayRouteTableVPCAssociationTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-vpcid
+eclgrtvpcaVpcId :: Lens' EC2LocalGatewayRouteTableVPCAssociation (Val Text)
+eclgrtvpcaVpcId = lens _eC2LocalGatewayRouteTableVPCAssociationVpcId (\s a -> s { _eC2LocalGatewayRouteTableVPCAssociationVpcId = a })
diff --git a/library-gen/Stratosphere/Resources/EKSCluster.hs b/library-gen/Stratosphere/Resources/EKSCluster.hs
--- a/library-gen/Stratosphere/Resources/EKSCluster.hs
+++ b/library-gen/Stratosphere/Resources/EKSCluster.hs
@@ -8,13 +8,15 @@
 module Stratosphere.Resources.EKSCluster where
 
 import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EKSClusterEncryptionConfig
 import Stratosphere.ResourceProperties.EKSClusterResourcesVpcConfig
 
 -- | Full data type definition for EKSCluster. See 'eksCluster' for a more
 -- convenient constructor.
 data EKSCluster =
   EKSCluster
-  { _eKSClusterName :: Maybe (Val Text)
+  { _eKSClusterEncryptionConfig :: Maybe [EKSClusterEncryptionConfig]
+  , _eKSClusterName :: Maybe (Val Text)
   , _eKSClusterResourcesVpcConfig :: EKSClusterResourcesVpcConfig
   , _eKSClusterRoleArn :: Val Text
   , _eKSClusterVersion :: Maybe (Val Text)
@@ -26,7 +28,8 @@
     { resourcePropertiesType = "AWS::EKS::Cluster"
     , resourcePropertiesProperties =
         hashMapFromList $ catMaybes
-        [ fmap (("Name",) . toJSON) _eKSClusterName
+        [ fmap (("EncryptionConfig",) . toJSON) _eKSClusterEncryptionConfig
+        , fmap (("Name",) . toJSON) _eKSClusterName
         , (Just . ("ResourcesVpcConfig",) . toJSON) _eKSClusterResourcesVpcConfig
         , (Just . ("RoleArn",) . toJSON) _eKSClusterRoleArn
         , fmap (("Version",) . toJSON) _eKSClusterVersion
@@ -40,11 +43,16 @@
   -> EKSCluster
 eksCluster resourcesVpcConfigarg roleArnarg =
   EKSCluster
-  { _eKSClusterName = Nothing
+  { _eKSClusterEncryptionConfig = Nothing
+  , _eKSClusterName = Nothing
   , _eKSClusterResourcesVpcConfig = resourcesVpcConfigarg
   , _eKSClusterRoleArn = roleArnarg
   , _eKSClusterVersion = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-cluster.html#cfn-eks-cluster-encryptionconfig
+ekscEncryptionConfig :: Lens' EKSCluster (Maybe [EKSClusterEncryptionConfig])
+ekscEncryptionConfig = lens _eKSClusterEncryptionConfig (\s a -> s { _eKSClusterEncryptionConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-cluster.html#cfn-eks-cluster-name
 ekscName :: Lens' EKSCluster (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/FMSNotificationChannel.hs b/library-gen/Stratosphere/Resources/FMSNotificationChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/FMSNotificationChannel.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-notificationchannel.html
+
+module Stratosphere.Resources.FMSNotificationChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for FMSNotificationChannel. See
+-- 'fmsNotificationChannel' for a more convenient constructor.
+data FMSNotificationChannel =
+  FMSNotificationChannel
+  { _fMSNotificationChannelSnsRoleName :: Val Text
+  , _fMSNotificationChannelSnsTopicArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties FMSNotificationChannel where
+  toResourceProperties FMSNotificationChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::FMS::NotificationChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("SnsRoleName",) . toJSON) _fMSNotificationChannelSnsRoleName
+        , (Just . ("SnsTopicArn",) . toJSON) _fMSNotificationChannelSnsTopicArn
+        ]
+    }
+
+-- | Constructor for 'FMSNotificationChannel' containing required fields as
+-- arguments.
+fmsNotificationChannel
+  :: Val Text -- ^ 'fmsncSnsRoleName'
+  -> Val Text -- ^ 'fmsncSnsTopicArn'
+  -> FMSNotificationChannel
+fmsNotificationChannel snsRoleNamearg snsTopicArnarg =
+  FMSNotificationChannel
+  { _fMSNotificationChannelSnsRoleName = snsRoleNamearg
+  , _fMSNotificationChannelSnsTopicArn = snsTopicArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-notificationchannel.html#cfn-fms-notificationchannel-snsrolename
+fmsncSnsRoleName :: Lens' FMSNotificationChannel (Val Text)
+fmsncSnsRoleName = lens _fMSNotificationChannelSnsRoleName (\s a -> s { _fMSNotificationChannelSnsRoleName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-notificationchannel.html#cfn-fms-notificationchannel-snstopicarn
+fmsncSnsTopicArn :: Lens' FMSNotificationChannel (Val Text)
+fmsncSnsTopicArn = lens _fMSNotificationChannelSnsTopicArn (\s a -> s { _fMSNotificationChannelSnsTopicArn = a })
diff --git a/library-gen/Stratosphere/Resources/FMSPolicy.hs b/library-gen/Stratosphere/Resources/FMSPolicy.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/FMSPolicy.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html
+
+module Stratosphere.Resources.FMSPolicy where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.FMSPolicyIEMap
+import Stratosphere.ResourceProperties.FMSPolicyResourceTag
+import Stratosphere.ResourceProperties.FMSPolicyPolicyTag
+
+-- | Full data type definition for FMSPolicy. See 'fmsPolicy' for a more
+-- convenient constructor.
+data FMSPolicy =
+  FMSPolicy
+  { _fMSPolicyDeleteAllPolicyResources :: Maybe (Val Bool)
+  , _fMSPolicyExcludeMap :: Maybe FMSPolicyIEMap
+  , _fMSPolicyExcludeResourceTags :: Val Bool
+  , _fMSPolicyIncludeMap :: Maybe FMSPolicyIEMap
+  , _fMSPolicyPolicyName :: Val Text
+  , _fMSPolicyRemediationEnabled :: Val Bool
+  , _fMSPolicyResourceTags :: Maybe [FMSPolicyResourceTag]
+  , _fMSPolicyResourceType :: Val Text
+  , _fMSPolicyResourceTypeList :: Maybe (ValList Text)
+  , _fMSPolicySecurityServicePolicyData :: Object
+  , _fMSPolicyTags :: Maybe [FMSPolicyPolicyTag]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties FMSPolicy where
+  toResourceProperties FMSPolicy{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::FMS::Policy"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("DeleteAllPolicyResources",) . toJSON) _fMSPolicyDeleteAllPolicyResources
+        , fmap (("ExcludeMap",) . toJSON) _fMSPolicyExcludeMap
+        , (Just . ("ExcludeResourceTags",) . toJSON) _fMSPolicyExcludeResourceTags
+        , fmap (("IncludeMap",) . toJSON) _fMSPolicyIncludeMap
+        , (Just . ("PolicyName",) . toJSON) _fMSPolicyPolicyName
+        , (Just . ("RemediationEnabled",) . toJSON) _fMSPolicyRemediationEnabled
+        , fmap (("ResourceTags",) . toJSON) _fMSPolicyResourceTags
+        , (Just . ("ResourceType",) . toJSON) _fMSPolicyResourceType
+        , fmap (("ResourceTypeList",) . toJSON) _fMSPolicyResourceTypeList
+        , (Just . ("SecurityServicePolicyData",) . toJSON) _fMSPolicySecurityServicePolicyData
+        , fmap (("Tags",) . toJSON) _fMSPolicyTags
+        ]
+    }
+
+-- | Constructor for 'FMSPolicy' containing required fields as arguments.
+fmsPolicy
+  :: Val Bool -- ^ 'fmspExcludeResourceTags'
+  -> Val Text -- ^ 'fmspPolicyName'
+  -> Val Bool -- ^ 'fmspRemediationEnabled'
+  -> Val Text -- ^ 'fmspResourceType'
+  -> Object -- ^ 'fmspSecurityServicePolicyData'
+  -> FMSPolicy
+fmsPolicy excludeResourceTagsarg policyNamearg remediationEnabledarg resourceTypearg securityServicePolicyDataarg =
+  FMSPolicy
+  { _fMSPolicyDeleteAllPolicyResources = Nothing
+  , _fMSPolicyExcludeMap = Nothing
+  , _fMSPolicyExcludeResourceTags = excludeResourceTagsarg
+  , _fMSPolicyIncludeMap = Nothing
+  , _fMSPolicyPolicyName = policyNamearg
+  , _fMSPolicyRemediationEnabled = remediationEnabledarg
+  , _fMSPolicyResourceTags = Nothing
+  , _fMSPolicyResourceType = resourceTypearg
+  , _fMSPolicyResourceTypeList = Nothing
+  , _fMSPolicySecurityServicePolicyData = securityServicePolicyDataarg
+  , _fMSPolicyTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-deleteallpolicyresources
+fmspDeleteAllPolicyResources :: Lens' FMSPolicy (Maybe (Val Bool))
+fmspDeleteAllPolicyResources = lens _fMSPolicyDeleteAllPolicyResources (\s a -> s { _fMSPolicyDeleteAllPolicyResources = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-excludemap
+fmspExcludeMap :: Lens' FMSPolicy (Maybe FMSPolicyIEMap)
+fmspExcludeMap = lens _fMSPolicyExcludeMap (\s a -> s { _fMSPolicyExcludeMap = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-excluderesourcetags
+fmspExcludeResourceTags :: Lens' FMSPolicy (Val Bool)
+fmspExcludeResourceTags = lens _fMSPolicyExcludeResourceTags (\s a -> s { _fMSPolicyExcludeResourceTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-includemap
+fmspIncludeMap :: Lens' FMSPolicy (Maybe FMSPolicyIEMap)
+fmspIncludeMap = lens _fMSPolicyIncludeMap (\s a -> s { _fMSPolicyIncludeMap = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-policyname
+fmspPolicyName :: Lens' FMSPolicy (Val Text)
+fmspPolicyName = lens _fMSPolicyPolicyName (\s a -> s { _fMSPolicyPolicyName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-remediationenabled
+fmspRemediationEnabled :: Lens' FMSPolicy (Val Bool)
+fmspRemediationEnabled = lens _fMSPolicyRemediationEnabled (\s a -> s { _fMSPolicyRemediationEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-resourcetags
+fmspResourceTags :: Lens' FMSPolicy (Maybe [FMSPolicyResourceTag])
+fmspResourceTags = lens _fMSPolicyResourceTags (\s a -> s { _fMSPolicyResourceTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-resourcetype
+fmspResourceType :: Lens' FMSPolicy (Val Text)
+fmspResourceType = lens _fMSPolicyResourceType (\s a -> s { _fMSPolicyResourceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-resourcetypelist
+fmspResourceTypeList :: Lens' FMSPolicy (Maybe (ValList Text))
+fmspResourceTypeList = lens _fMSPolicyResourceTypeList (\s a -> s { _fMSPolicyResourceTypeList = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-securityservicepolicydata
+fmspSecurityServicePolicyData :: Lens' FMSPolicy Object
+fmspSecurityServicePolicyData = lens _fMSPolicySecurityServicePolicyData (\s a -> s { _fMSPolicySecurityServicePolicyData = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html#cfn-fms-policy-tags
+fmspTags :: Lens' FMSPolicy (Maybe [FMSPolicyPolicyTag])
+fmspTags = lens _fMSPolicyTags (\s a -> s { _fMSPolicyTags = a })
diff --git a/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs b/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs
--- a/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs
+++ b/library-gen/Stratosphere/Resources/NeptuneDBCluster.hs
@@ -19,7 +19,9 @@
   , _neptuneDBClusterDBClusterIdentifier :: Maybe (Val Text)
   , _neptuneDBClusterDBClusterParameterGroupName :: Maybe (Val Text)
   , _neptuneDBClusterDBSubnetGroupName :: Maybe (Val Text)
+  , _neptuneDBClusterDeletionProtection :: Maybe (Val Bool)
   , _neptuneDBClusterEnableCloudwatchLogsExports :: Maybe (ValList Text)
+  , _neptuneDBClusterEngineVersion :: Maybe (Val Text)
   , _neptuneDBClusterIamAuthEnabled :: Maybe (Val Bool)
   , _neptuneDBClusterKmsKeyId :: Maybe (Val Text)
   , _neptuneDBClusterPort :: Maybe (Val Integer)
@@ -42,7 +44,9 @@
         , fmap (("DBClusterIdentifier",) . toJSON) _neptuneDBClusterDBClusterIdentifier
         , fmap (("DBClusterParameterGroupName",) . toJSON) _neptuneDBClusterDBClusterParameterGroupName
         , fmap (("DBSubnetGroupName",) . toJSON) _neptuneDBClusterDBSubnetGroupName
+        , fmap (("DeletionProtection",) . toJSON) _neptuneDBClusterDeletionProtection
         , fmap (("EnableCloudwatchLogsExports",) . toJSON) _neptuneDBClusterEnableCloudwatchLogsExports
+        , fmap (("EngineVersion",) . toJSON) _neptuneDBClusterEngineVersion
         , fmap (("IamAuthEnabled",) . toJSON) _neptuneDBClusterIamAuthEnabled
         , fmap (("KmsKeyId",) . toJSON) _neptuneDBClusterKmsKeyId
         , fmap (("Port",) . toJSON) _neptuneDBClusterPort
@@ -66,7 +70,9 @@
   , _neptuneDBClusterDBClusterIdentifier = Nothing
   , _neptuneDBClusterDBClusterParameterGroupName = Nothing
   , _neptuneDBClusterDBSubnetGroupName = Nothing
+  , _neptuneDBClusterDeletionProtection = Nothing
   , _neptuneDBClusterEnableCloudwatchLogsExports = Nothing
+  , _neptuneDBClusterEngineVersion = Nothing
   , _neptuneDBClusterIamAuthEnabled = Nothing
   , _neptuneDBClusterKmsKeyId = Nothing
   , _neptuneDBClusterPort = Nothing
@@ -98,9 +104,17 @@
 ndbcDBSubnetGroupName :: Lens' NeptuneDBCluster (Maybe (Val Text))
 ndbcDBSubnetGroupName = lens _neptuneDBClusterDBSubnetGroupName (\s a -> s { _neptuneDBClusterDBSubnetGroupName = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbcluster.html#cfn-neptune-dbcluster-deletionprotection
+ndbcDeletionProtection :: Lens' NeptuneDBCluster (Maybe (Val Bool))
+ndbcDeletionProtection = lens _neptuneDBClusterDeletionProtection (\s a -> s { _neptuneDBClusterDeletionProtection = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbcluster.html#cfn-neptune-dbcluster-enablecloudwatchlogsexports
 ndbcEnableCloudwatchLogsExports :: Lens' NeptuneDBCluster (Maybe (ValList Text))
 ndbcEnableCloudwatchLogsExports = lens _neptuneDBClusterEnableCloudwatchLogsExports (\s a -> s { _neptuneDBClusterEnableCloudwatchLogsExports = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbcluster.html#cfn-neptune-dbcluster-engineversion
+ndbcEngineVersion :: Lens' NeptuneDBCluster (Maybe (Val Text))
+ndbcEngineVersion = lens _neptuneDBClusterEngineVersion (\s a -> s { _neptuneDBClusterEngineVersion = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbcluster.html#cfn-neptune-dbcluster-iamauthenabled
 ndbcIamAuthEnabled :: Lens' NeptuneDBCluster (Maybe (Val Bool))
diff --git a/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs b/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
@@ -9,6 +9,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for OpsWorksCMServer. See 'opsWorksCMServer'
 -- for a more convenient constructor.
@@ -34,6 +35,7 @@
   , _opsWorksCMServerServerName :: Maybe (Val Text)
   , _opsWorksCMServerServiceRoleArn :: Val Text
   , _opsWorksCMServerSubnetIds :: Maybe (ValList Text)
+  , _opsWorksCMServerTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToResourceProperties OpsWorksCMServer where
@@ -62,6 +64,7 @@
         , fmap (("ServerName",) . toJSON) _opsWorksCMServerServerName
         , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksCMServerServiceRoleArn
         , fmap (("SubnetIds",) . toJSON) _opsWorksCMServerSubnetIds
+        , fmap (("Tags",) . toJSON) _opsWorksCMServerTags
         ]
     }
 
@@ -94,6 +97,7 @@
   , _opsWorksCMServerServerName = Nothing
   , _opsWorksCMServerServiceRoleArn = serviceRoleArnarg
   , _opsWorksCMServerSubnetIds = Nothing
+  , _opsWorksCMServerTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-associatepublicipaddress
@@ -175,3 +179,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-subnetids
 owcmsSubnetIds :: Lens' OpsWorksCMServer (Maybe (ValList Text))
 owcmsSubnetIds = lens _opsWorksCMServerSubnetIds (\s a -> s { _opsWorksCMServerSubnetIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-tags
+owcmsTags :: Lens' OpsWorksCMServer (Maybe [Tag])
+owcmsTags = lens _opsWorksCMServerTags (\s a -> s { _opsWorksCMServerTags = a })
diff --git a/library-gen/Stratosphere/Resources/WAFv2IPSet.hs b/library-gen/Stratosphere/Resources/WAFv2IPSet.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/WAFv2IPSet.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html
+
+module Stratosphere.Resources.WAFv2IPSet where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for WAFv2IPSet. See 'waFv2IPSet' for a more
+-- convenient constructor.
+data WAFv2IPSet =
+  WAFv2IPSet
+  { _wAFv2IPSetAddresses :: ValList Text
+  , _wAFv2IPSetDescription :: Maybe (Val Text)
+  , _wAFv2IPSetIPAddressVersion :: Val Text
+  , _wAFv2IPSetName :: Maybe (Val Text)
+  , _wAFv2IPSetScope :: Val Text
+  , _wAFv2IPSetTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties WAFv2IPSet where
+  toResourceProperties WAFv2IPSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFv2::IPSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Addresses",) . toJSON) _wAFv2IPSetAddresses
+        , fmap (("Description",) . toJSON) _wAFv2IPSetDescription
+        , (Just . ("IPAddressVersion",) . toJSON) _wAFv2IPSetIPAddressVersion
+        , fmap (("Name",) . toJSON) _wAFv2IPSetName
+        , (Just . ("Scope",) . toJSON) _wAFv2IPSetScope
+        , fmap (("Tags",) . toJSON) _wAFv2IPSetTags
+        ]
+    }
+
+-- | Constructor for 'WAFv2IPSet' containing required fields as arguments.
+waFv2IPSet
+  :: ValList Text -- ^ 'wafvipsAddresses'
+  -> Val Text -- ^ 'wafvipsIPAddressVersion'
+  -> Val Text -- ^ 'wafvipsScope'
+  -> WAFv2IPSet
+waFv2IPSet addressesarg iPAddressVersionarg scopearg =
+  WAFv2IPSet
+  { _wAFv2IPSetAddresses = addressesarg
+  , _wAFv2IPSetDescription = Nothing
+  , _wAFv2IPSetIPAddressVersion = iPAddressVersionarg
+  , _wAFv2IPSetName = Nothing
+  , _wAFv2IPSetScope = scopearg
+  , _wAFv2IPSetTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html#cfn-wafv2-ipset-addresses
+wafvipsAddresses :: Lens' WAFv2IPSet (ValList Text)
+wafvipsAddresses = lens _wAFv2IPSetAddresses (\s a -> s { _wAFv2IPSetAddresses = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html#cfn-wafv2-ipset-description
+wafvipsDescription :: Lens' WAFv2IPSet (Maybe (Val Text))
+wafvipsDescription = lens _wAFv2IPSetDescription (\s a -> s { _wAFv2IPSetDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html#cfn-wafv2-ipset-ipaddressversion
+wafvipsIPAddressVersion :: Lens' WAFv2IPSet (Val Text)
+wafvipsIPAddressVersion = lens _wAFv2IPSetIPAddressVersion (\s a -> s { _wAFv2IPSetIPAddressVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html#cfn-wafv2-ipset-name
+wafvipsName :: Lens' WAFv2IPSet (Maybe (Val Text))
+wafvipsName = lens _wAFv2IPSetName (\s a -> s { _wAFv2IPSetName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html#cfn-wafv2-ipset-scope
+wafvipsScope :: Lens' WAFv2IPSet (Val Text)
+wafvipsScope = lens _wAFv2IPSetScope (\s a -> s { _wAFv2IPSetScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-ipset.html#cfn-wafv2-ipset-tags
+wafvipsTags :: Lens' WAFv2IPSet (Maybe [Tag])
+wafvipsTags = lens _wAFv2IPSetTags (\s a -> s { _wAFv2IPSetTags = a })
diff --git a/library-gen/Stratosphere/Resources/WAFv2RegexPatternSet.hs b/library-gen/Stratosphere/Resources/WAFv2RegexPatternSet.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/WAFv2RegexPatternSet.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-regexpatternset.html
+
+module Stratosphere.Resources.WAFv2RegexPatternSet where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for WAFv2RegexPatternSet. See
+-- 'waFv2RegexPatternSet' for a more convenient constructor.
+data WAFv2RegexPatternSet =
+  WAFv2RegexPatternSet
+  { _wAFv2RegexPatternSetDescription :: Maybe (Val Text)
+  , _wAFv2RegexPatternSetName :: Maybe (Val Text)
+  , _wAFv2RegexPatternSetRegularExpressionList :: ValList Text
+  , _wAFv2RegexPatternSetScope :: Val Text
+  , _wAFv2RegexPatternSetTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties WAFv2RegexPatternSet where
+  toResourceProperties WAFv2RegexPatternSet{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFv2::RegexPatternSet"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("Description",) . toJSON) _wAFv2RegexPatternSetDescription
+        , fmap (("Name",) . toJSON) _wAFv2RegexPatternSetName
+        , (Just . ("RegularExpressionList",) . toJSON) _wAFv2RegexPatternSetRegularExpressionList
+        , (Just . ("Scope",) . toJSON) _wAFv2RegexPatternSetScope
+        , fmap (("Tags",) . toJSON) _wAFv2RegexPatternSetTags
+        ]
+    }
+
+-- | Constructor for 'WAFv2RegexPatternSet' containing required fields as
+-- arguments.
+waFv2RegexPatternSet
+  :: ValList Text -- ^ 'wafrpsRegularExpressionList'
+  -> Val Text -- ^ 'wafrpsScope'
+  -> WAFv2RegexPatternSet
+waFv2RegexPatternSet regularExpressionListarg scopearg =
+  WAFv2RegexPatternSet
+  { _wAFv2RegexPatternSetDescription = Nothing
+  , _wAFv2RegexPatternSetName = Nothing
+  , _wAFv2RegexPatternSetRegularExpressionList = regularExpressionListarg
+  , _wAFv2RegexPatternSetScope = scopearg
+  , _wAFv2RegexPatternSetTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-regexpatternset.html#cfn-wafv2-regexpatternset-description
+wafrpsDescription :: Lens' WAFv2RegexPatternSet (Maybe (Val Text))
+wafrpsDescription = lens _wAFv2RegexPatternSetDescription (\s a -> s { _wAFv2RegexPatternSetDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-regexpatternset.html#cfn-wafv2-regexpatternset-name
+wafrpsName :: Lens' WAFv2RegexPatternSet (Maybe (Val Text))
+wafrpsName = lens _wAFv2RegexPatternSetName (\s a -> s { _wAFv2RegexPatternSetName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-regexpatternset.html#cfn-wafv2-regexpatternset-regularexpressionlist
+wafrpsRegularExpressionList :: Lens' WAFv2RegexPatternSet (ValList Text)
+wafrpsRegularExpressionList = lens _wAFv2RegexPatternSetRegularExpressionList (\s a -> s { _wAFv2RegexPatternSetRegularExpressionList = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-regexpatternset.html#cfn-wafv2-regexpatternset-scope
+wafrpsScope :: Lens' WAFv2RegexPatternSet (Val Text)
+wafrpsScope = lens _wAFv2RegexPatternSetScope (\s a -> s { _wAFv2RegexPatternSetScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-regexpatternset.html#cfn-wafv2-regexpatternset-tags
+wafrpsTags :: Lens' WAFv2RegexPatternSet (Maybe [Tag])
+wafrpsTags = lens _wAFv2RegexPatternSetTags (\s a -> s { _wAFv2RegexPatternSetTags = a })
diff --git a/library-gen/Stratosphere/Resources/WAFv2RuleGroup.hs b/library-gen/Stratosphere/Resources/WAFv2RuleGroup.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/WAFv2RuleGroup.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html
+
+module Stratosphere.Resources.WAFv2RuleGroup where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2RuleGroupRule
+import Stratosphere.ResourceProperties.Tag
+import Stratosphere.ResourceProperties.WAFv2RuleGroupVisibilityConfig
+
+-- | Full data type definition for WAFv2RuleGroup. See 'waFv2RuleGroup' for a
+-- more convenient constructor.
+data WAFv2RuleGroup =
+  WAFv2RuleGroup
+  { _wAFv2RuleGroupCapacity :: Val Integer
+  , _wAFv2RuleGroupDescription :: Maybe (Val Text)
+  , _wAFv2RuleGroupName :: Maybe (Val Text)
+  , _wAFv2RuleGroupRules :: Maybe [WAFv2RuleGroupRule]
+  , _wAFv2RuleGroupScope :: Val Text
+  , _wAFv2RuleGroupTags :: Maybe [Tag]
+  , _wAFv2RuleGroupVisibilityConfig :: WAFv2RuleGroupVisibilityConfig
+  } deriving (Show, Eq)
+
+instance ToResourceProperties WAFv2RuleGroup where
+  toResourceProperties WAFv2RuleGroup{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFv2::RuleGroup"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Capacity",) . toJSON) _wAFv2RuleGroupCapacity
+        , fmap (("Description",) . toJSON) _wAFv2RuleGroupDescription
+        , fmap (("Name",) . toJSON) _wAFv2RuleGroupName
+        , fmap (("Rules",) . toJSON) _wAFv2RuleGroupRules
+        , (Just . ("Scope",) . toJSON) _wAFv2RuleGroupScope
+        , fmap (("Tags",) . toJSON) _wAFv2RuleGroupTags
+        , (Just . ("VisibilityConfig",) . toJSON) _wAFv2RuleGroupVisibilityConfig
+        ]
+    }
+
+-- | Constructor for 'WAFv2RuleGroup' containing required fields as arguments.
+waFv2RuleGroup
+  :: Val Integer -- ^ 'wafrgCapacity'
+  -> Val Text -- ^ 'wafrgScope'
+  -> WAFv2RuleGroupVisibilityConfig -- ^ 'wafrgVisibilityConfig'
+  -> WAFv2RuleGroup
+waFv2RuleGroup capacityarg scopearg visibilityConfigarg =
+  WAFv2RuleGroup
+  { _wAFv2RuleGroupCapacity = capacityarg
+  , _wAFv2RuleGroupDescription = Nothing
+  , _wAFv2RuleGroupName = Nothing
+  , _wAFv2RuleGroupRules = Nothing
+  , _wAFv2RuleGroupScope = scopearg
+  , _wAFv2RuleGroupTags = Nothing
+  , _wAFv2RuleGroupVisibilityConfig = visibilityConfigarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-capacity
+wafrgCapacity :: Lens' WAFv2RuleGroup (Val Integer)
+wafrgCapacity = lens _wAFv2RuleGroupCapacity (\s a -> s { _wAFv2RuleGroupCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-description
+wafrgDescription :: Lens' WAFv2RuleGroup (Maybe (Val Text))
+wafrgDescription = lens _wAFv2RuleGroupDescription (\s a -> s { _wAFv2RuleGroupDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-name
+wafrgName :: Lens' WAFv2RuleGroup (Maybe (Val Text))
+wafrgName = lens _wAFv2RuleGroupName (\s a -> s { _wAFv2RuleGroupName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-rules
+wafrgRules :: Lens' WAFv2RuleGroup (Maybe [WAFv2RuleGroupRule])
+wafrgRules = lens _wAFv2RuleGroupRules (\s a -> s { _wAFv2RuleGroupRules = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-scope
+wafrgScope :: Lens' WAFv2RuleGroup (Val Text)
+wafrgScope = lens _wAFv2RuleGroupScope (\s a -> s { _wAFv2RuleGroupScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-tags
+wafrgTags :: Lens' WAFv2RuleGroup (Maybe [Tag])
+wafrgTags = lens _wAFv2RuleGroupTags (\s a -> s { _wAFv2RuleGroupTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-visibilityconfig
+wafrgVisibilityConfig :: Lens' WAFv2RuleGroup WAFv2RuleGroupVisibilityConfig
+wafrgVisibilityConfig = lens _wAFv2RuleGroupVisibilityConfig (\s a -> s { _wAFv2RuleGroupVisibilityConfig = a })
diff --git a/library-gen/Stratosphere/Resources/WAFv2WebACL.hs b/library-gen/Stratosphere/Resources/WAFv2WebACL.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/WAFv2WebACL.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html
+
+module Stratosphere.Resources.WAFv2WebACL where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.WAFv2WebACLDefaultAction
+import Stratosphere.ResourceProperties.WAFv2WebACLRule
+import Stratosphere.ResourceProperties.Tag
+import Stratosphere.ResourceProperties.WAFv2WebACLVisibilityConfig
+
+-- | Full data type definition for WAFv2WebACL. See 'waFv2WebACL' for a more
+-- convenient constructor.
+data WAFv2WebACL =
+  WAFv2WebACL
+  { _wAFv2WebACLDefaultAction :: WAFv2WebACLDefaultAction
+  , _wAFv2WebACLDescription :: Maybe (Val Text)
+  , _wAFv2WebACLName :: Maybe (Val Text)
+  , _wAFv2WebACLRules :: Maybe [WAFv2WebACLRule]
+  , _wAFv2WebACLScope :: Val Text
+  , _wAFv2WebACLTags :: Maybe [Tag]
+  , _wAFv2WebACLVisibilityConfig :: WAFv2WebACLVisibilityConfig
+  } deriving (Show, Eq)
+
+instance ToResourceProperties WAFv2WebACL where
+  toResourceProperties WAFv2WebACL{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFv2::WebACL"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("DefaultAction",) . toJSON) _wAFv2WebACLDefaultAction
+        , fmap (("Description",) . toJSON) _wAFv2WebACLDescription
+        , fmap (("Name",) . toJSON) _wAFv2WebACLName
+        , fmap (("Rules",) . toJSON) _wAFv2WebACLRules
+        , (Just . ("Scope",) . toJSON) _wAFv2WebACLScope
+        , fmap (("Tags",) . toJSON) _wAFv2WebACLTags
+        , (Just . ("VisibilityConfig",) . toJSON) _wAFv2WebACLVisibilityConfig
+        ]
+    }
+
+-- | Constructor for 'WAFv2WebACL' containing required fields as arguments.
+waFv2WebACL
+  :: WAFv2WebACLDefaultAction -- ^ 'wafvwaclDefaultAction'
+  -> Val Text -- ^ 'wafvwaclScope'
+  -> WAFv2WebACLVisibilityConfig -- ^ 'wafvwaclVisibilityConfig'
+  -> WAFv2WebACL
+waFv2WebACL defaultActionarg scopearg visibilityConfigarg =
+  WAFv2WebACL
+  { _wAFv2WebACLDefaultAction = defaultActionarg
+  , _wAFv2WebACLDescription = Nothing
+  , _wAFv2WebACLName = Nothing
+  , _wAFv2WebACLRules = Nothing
+  , _wAFv2WebACLScope = scopearg
+  , _wAFv2WebACLTags = Nothing
+  , _wAFv2WebACLVisibilityConfig = visibilityConfigarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-defaultaction
+wafvwaclDefaultAction :: Lens' WAFv2WebACL WAFv2WebACLDefaultAction
+wafvwaclDefaultAction = lens _wAFv2WebACLDefaultAction (\s a -> s { _wAFv2WebACLDefaultAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-description
+wafvwaclDescription :: Lens' WAFv2WebACL (Maybe (Val Text))
+wafvwaclDescription = lens _wAFv2WebACLDescription (\s a -> s { _wAFv2WebACLDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-name
+wafvwaclName :: Lens' WAFv2WebACL (Maybe (Val Text))
+wafvwaclName = lens _wAFv2WebACLName (\s a -> s { _wAFv2WebACLName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-rules
+wafvwaclRules :: Lens' WAFv2WebACL (Maybe [WAFv2WebACLRule])
+wafvwaclRules = lens _wAFv2WebACLRules (\s a -> s { _wAFv2WebACLRules = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-scope
+wafvwaclScope :: Lens' WAFv2WebACL (Val Text)
+wafvwaclScope = lens _wAFv2WebACLScope (\s a -> s { _wAFv2WebACLScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-tags
+wafvwaclTags :: Lens' WAFv2WebACL (Maybe [Tag])
+wafvwaclTags = lens _wAFv2WebACLTags (\s a -> s { _wAFv2WebACLTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html#cfn-wafv2-webacl-visibilityconfig
+wafvwaclVisibilityConfig :: Lens' WAFv2WebACL WAFv2WebACLVisibilityConfig
+wafvwaclVisibilityConfig = lens _wAFv2WebACLVisibilityConfig (\s a -> s { _wAFv2WebACLVisibilityConfig = a })
diff --git a/library-gen/Stratosphere/Resources/WAFv2WebACLAssociation.hs b/library-gen/Stratosphere/Resources/WAFv2WebACLAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/WAFv2WebACLAssociation.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webaclassociation.html
+
+module Stratosphere.Resources.WAFv2WebACLAssociation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for WAFv2WebACLAssociation. See
+-- 'waFv2WebACLAssociation' for a more convenient constructor.
+data WAFv2WebACLAssociation =
+  WAFv2WebACLAssociation
+  { _wAFv2WebACLAssociationResourceArn :: Val Text
+  , _wAFv2WebACLAssociationWebACLArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties WAFv2WebACLAssociation where
+  toResourceProperties WAFv2WebACLAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::WAFv2::WebACLAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ResourceArn",) . toJSON) _wAFv2WebACLAssociationResourceArn
+        , (Just . ("WebACLArn",) . toJSON) _wAFv2WebACLAssociationWebACLArn
+        ]
+    }
+
+-- | Constructor for 'WAFv2WebACLAssociation' containing required fields as
+-- arguments.
+waFv2WebACLAssociation
+  :: Val Text -- ^ 'wafwaclaResourceArn'
+  -> Val Text -- ^ 'wafwaclaWebACLArn'
+  -> WAFv2WebACLAssociation
+waFv2WebACLAssociation resourceArnarg webACLArnarg =
+  WAFv2WebACLAssociation
+  { _wAFv2WebACLAssociationResourceArn = resourceArnarg
+  , _wAFv2WebACLAssociationWebACLArn = webACLArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webaclassociation.html#cfn-wafv2-webaclassociation-resourcearn
+wafwaclaResourceArn :: Lens' WAFv2WebACLAssociation (Val Text)
+wafwaclaResourceArn = lens _wAFv2WebACLAssociationResourceArn (\s a -> s { _wAFv2WebACLAssociationResourceArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webaclassociation.html#cfn-wafv2-webaclassociation-webaclarn
+wafwaclaWebACLArn :: Lens' WAFv2WebACLAssociation (Val Text)
+wafwaclaWebACLArn = lens _wAFv2WebACLAssociationWebACLArn (\s a -> s { _wAFv2WebACLAssociationWebACLArn = a })
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 86fbe8bab846642c04ef17e1c4f57bf87cc8d612b354efd1c2b90e7202dd23d4
+-- hash: ee57ccca1e9a4f1356e456333df8d21a6fff47a4909fb4e4f029bfbe0316e85e
 
 name:           stratosphere
-version:        0.49.0
+version:        0.50.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -51,6 +51,10 @@
       Stratosphere.Values
       Stratosphere.ResourceProperties.AccessAnalyzerAnalyzerArchiveRule
       Stratosphere.ResourceProperties.AccessAnalyzerAnalyzerFilter
+      Stratosphere.ResourceProperties.ACMPCACertificateAuthorityCrlConfiguration
+      Stratosphere.ResourceProperties.ACMPCACertificateAuthorityRevocationConfiguration
+      Stratosphere.ResourceProperties.ACMPCACertificateAuthoritySubject
+      Stratosphere.ResourceProperties.ACMPCACertificateValidity
       Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId
       Stratosphere.ResourceProperties.AmazonMQBrokerEncryptionOptions
       Stratosphere.ResourceProperties.AmazonMQBrokerLogList
@@ -93,6 +97,13 @@
       Stratosphere.ResourceProperties.ApiGatewayV2RouteResponseParameterConstraints
       Stratosphere.ResourceProperties.ApiGatewayV2StageAccessLogSettings
       Stratosphere.ResourceProperties.ApiGatewayV2StageRouteSettings
+      Stratosphere.ResourceProperties.AppConfigApplicationTags
+      Stratosphere.ResourceProperties.AppConfigConfigurationProfileTags
+      Stratosphere.ResourceProperties.AppConfigConfigurationProfileValidators
+      Stratosphere.ResourceProperties.AppConfigDeploymentStrategyTags
+      Stratosphere.ResourceProperties.AppConfigDeploymentTags
+      Stratosphere.ResourceProperties.AppConfigEnvironmentMonitors
+      Stratosphere.ResourceProperties.AppConfigEnvironmentTags
       Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScalableTargetAction
       Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScheduledAction
       Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetSuspendedState
@@ -126,13 +137,24 @@
       Stratosphere.ResourceProperties.AppMeshVirtualNodeAwsCloudMapInstanceAttribute
       Stratosphere.ResourceProperties.AppMeshVirtualNodeAwsCloudMapServiceDiscovery
       Stratosphere.ResourceProperties.AppMeshVirtualNodeBackend
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeBackendDefaults
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicy
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeClientPolicyTls
       Stratosphere.ResourceProperties.AppMeshVirtualNodeDnsServiceDiscovery
       Stratosphere.ResourceProperties.AppMeshVirtualNodeFileAccessLog
       Stratosphere.ResourceProperties.AppMeshVirtualNodeHealthCheck
       Stratosphere.ResourceProperties.AppMeshVirtualNodeListener
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTls
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsAcmCertificate
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsCertificate
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeListenerTlsFileCertificate
       Stratosphere.ResourceProperties.AppMeshVirtualNodeLogging
       Stratosphere.ResourceProperties.AppMeshVirtualNodePortMapping
       Stratosphere.ResourceProperties.AppMeshVirtualNodeServiceDiscovery
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContext
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextAcmTrust
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextFileTrust
+      Stratosphere.ResourceProperties.AppMeshVirtualNodeTlsValidationContextTrust
       Stratosphere.ResourceProperties.AppMeshVirtualNodeVirtualNodeSpec
       Stratosphere.ResourceProperties.AppMeshVirtualNodeVirtualServiceBackend
       Stratosphere.ResourceProperties.AppMeshVirtualRouterPortMapping
@@ -174,6 +196,12 @@
       Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration
       Stratosphere.ResourceProperties.ASKSkillOverrides
       Stratosphere.ResourceProperties.ASKSkillSkillPackage
+      Stratosphere.ResourceProperties.AthenaWorkGroupEncryptionConfiguration
+      Stratosphere.ResourceProperties.AthenaWorkGroupResultConfiguration
+      Stratosphere.ResourceProperties.AthenaWorkGroupResultConfigurationUpdates
+      Stratosphere.ResourceProperties.AthenaWorkGroupTags
+      Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfiguration
+      Stratosphere.ResourceProperties.AthenaWorkGroupWorkGroupConfigurationUpdates
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides
@@ -201,6 +229,7 @@
       Stratosphere.ResourceProperties.AutoScalingScalingPolicyTargetTrackingConfiguration
       Stratosphere.ResourceProperties.BackupBackupPlanBackupPlanResourceType
       Stratosphere.ResourceProperties.BackupBackupPlanBackupRuleResourceType
+      Stratosphere.ResourceProperties.BackupBackupPlanCopyActionResourceType
       Stratosphere.ResourceProperties.BackupBackupPlanLifecycleResourceType
       Stratosphere.ResourceProperties.BackupBackupSelectionBackupSelectionResourceType
       Stratosphere.ResourceProperties.BackupBackupSelectionConditionResourceType
@@ -266,6 +295,7 @@
       Stratosphere.ResourceProperties.CodeBuildProjectGitSubmodulesConfig
       Stratosphere.ResourceProperties.CodeBuildProjectLogsConfig
       Stratosphere.ResourceProperties.CodeBuildProjectProjectCache
+      Stratosphere.ResourceProperties.CodeBuildProjectProjectFileSystemLocation
       Stratosphere.ResourceProperties.CodeBuildProjectProjectSourceVersion
       Stratosphere.ResourceProperties.CodeBuildProjectProjectTriggers
       Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential
@@ -347,6 +377,7 @@
       Stratosphere.ResourceProperties.CognitoUserPoolSmsConfiguration
       Stratosphere.ResourceProperties.CognitoUserPoolStringAttributeConstraints
       Stratosphere.ResourceProperties.CognitoUserPoolUserAttributeType
+      Stratosphere.ResourceProperties.CognitoUserPoolUsernameConfiguration
       Stratosphere.ResourceProperties.CognitoUserPoolUserPoolAddOns
       Stratosphere.ResourceProperties.CognitoUserPoolVerificationMessageTemplate
       Stratosphere.ResourceProperties.ConfigConfigRuleScope
@@ -355,9 +386,11 @@
       Stratosphere.ResourceProperties.ConfigConfigurationAggregatorAccountAggregationSource
       Stratosphere.ResourceProperties.ConfigConfigurationAggregatorOrganizationAggregationSource
       Stratosphere.ResourceProperties.ConfigConfigurationRecorderRecordingGroup
+      Stratosphere.ResourceProperties.ConfigConformancePackConformancePackInputParameter
       Stratosphere.ResourceProperties.ConfigDeliveryChannelConfigSnapshotDeliveryProperties
       Stratosphere.ResourceProperties.ConfigOrganizationConfigRuleOrganizationCustomRuleMetadata
       Stratosphere.ResourceProperties.ConfigOrganizationConfigRuleOrganizationManagedRuleMetadata
+      Stratosphere.ResourceProperties.ConfigOrganizationConformancePackConformancePackInputParameter
       Stratosphere.ResourceProperties.ConfigRemediationConfigurationExecutionControls
       Stratosphere.ResourceProperties.ConfigRemediationConfigurationRemediationParameterValue
       Stratosphere.ResourceProperties.ConfigRemediationConfigurationResourceValue
@@ -439,12 +472,14 @@
       Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateData
       Stratosphere.ResourceProperties.EC2LaunchTemplateLaunchTemplateElasticInferenceAccelerator
       Stratosphere.ResourceProperties.EC2LaunchTemplateLicenseSpecification
+      Stratosphere.ResourceProperties.EC2LaunchTemplateMetadataOptions
       Stratosphere.ResourceProperties.EC2LaunchTemplateMonitoring
       Stratosphere.ResourceProperties.EC2LaunchTemplateNetworkInterface
       Stratosphere.ResourceProperties.EC2LaunchTemplatePlacement
       Stratosphere.ResourceProperties.EC2LaunchTemplatePrivateIpAdd
       Stratosphere.ResourceProperties.EC2LaunchTemplateSpotOptions
       Stratosphere.ResourceProperties.EC2LaunchTemplateTagSpecification
+      Stratosphere.ResourceProperties.EC2LocalGatewayRouteTableVPCAssociationTags
       Stratosphere.ResourceProperties.EC2NetworkAclEntryIcmp
       Stratosphere.ResourceProperties.EC2NetworkAclEntryPortRange
       Stratosphere.ResourceProperties.EC2NetworkInterfaceInstanceIpv6Address
@@ -515,6 +550,8 @@
       Stratosphere.ResourceProperties.ECSTaskSetServiceRegistry
       Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag
       Stratosphere.ResourceProperties.EFSFileSystemLifecyclePolicy
+      Stratosphere.ResourceProperties.EKSClusterEncryptionConfig
+      Stratosphere.ResourceProperties.EKSClusterProvider
       Stratosphere.ResourceProperties.EKSClusterResourcesVpcConfig
       Stratosphere.ResourceProperties.EKSNodegroupRemoteAccess
       Stratosphere.ResourceProperties.EKSNodegroupScalingConfig
@@ -542,11 +579,13 @@
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerForwardConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleForwardConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHostHeaderConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
@@ -556,6 +595,10 @@
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleSourceIpConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupStickinessConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleTargetGroupTuple
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupStickinessConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerTargetGroupTuple
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupMatcher
@@ -633,6 +676,9 @@
       Stratosphere.ResourceProperties.EventsRuleRunCommandTarget
       Stratosphere.ResourceProperties.EventsRuleSqsParameters
       Stratosphere.ResourceProperties.EventsRuleTarget
+      Stratosphere.ResourceProperties.FMSPolicyIEMap
+      Stratosphere.ResourceProperties.FMSPolicyPolicyTag
+      Stratosphere.ResourceProperties.FMSPolicyResourceTag
       Stratosphere.ResourceProperties.FSxFileSystemLustreConfiguration
       Stratosphere.ResourceProperties.FSxFileSystemSelfManagedActiveDirectoryConfiguration
       Stratosphere.ResourceProperties.FSxFileSystemWindowsConfiguration
@@ -725,6 +771,7 @@
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionLocalVolumeResourceData
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDataContainer
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDefinitionVersion
+      Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceDownloadOwnerSetting
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionResourceInstance
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionS3MachineLearningModelResourceData
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionSageMakerMachineLearningModelResourceData
@@ -733,6 +780,7 @@
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionLocalDeviceResourceData
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionLocalVolumeResourceData
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceDataContainer
+      Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceDownloadOwnerSetting
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionResourceInstance
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionS3MachineLearningModelResourceData
       Stratosphere.ResourceProperties.GreengrassResourceDefinitionVersionSageMakerMachineLearningModelResourceData
@@ -961,6 +1009,7 @@
       Stratosphere.ResourceProperties.MediaLiveChannelInputSettings
       Stratosphere.ResourceProperties.MediaLiveChannelInputSpecification
       Stratosphere.ResourceProperties.MediaLiveChannelMediaPackageOutputDestinationSettings
+      Stratosphere.ResourceProperties.MediaLiveChannelMultiplexProgramChannelDestinationSettings
       Stratosphere.ResourceProperties.MediaLiveChannelNetworkInputSettings
       Stratosphere.ResourceProperties.MediaLiveChannelOutputDestination
       Stratosphere.ResourceProperties.MediaLiveChannelOutputDestinationSettings
@@ -1216,6 +1265,57 @@
       Stratosphere.ResourceProperties.WAFSizeConstraintSetSizeConstraint
       Stratosphere.ResourceProperties.WAFSqlInjectionMatchSetFieldToMatch
       Stratosphere.ResourceProperties.WAFSqlInjectionMatchSetSqlInjectionMatchTuple
+      Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementOne
+      Stratosphere.ResourceProperties.WAFv2RuleGroupAndStatementTwo
+      Stratosphere.ResourceProperties.WAFv2RuleGroupByteMatchStatement
+      Stratosphere.ResourceProperties.WAFv2RuleGroupFieldToMatch
+      Stratosphere.ResourceProperties.WAFv2RuleGroupGeoMatchStatement
+      Stratosphere.ResourceProperties.WAFv2RuleGroupIPSetReferenceStatement
+      Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementOne
+      Stratosphere.ResourceProperties.WAFv2RuleGroupNotStatementTwo
+      Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementOne
+      Stratosphere.ResourceProperties.WAFv2RuleGroupOrStatementTwo
+      Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementOne
+      Stratosphere.ResourceProperties.WAFv2RuleGroupRateBasedStatementTwo
+      Stratosphere.ResourceProperties.WAFv2RuleGroupRegexPatternSetReferenceStatement
+      Stratosphere.ResourceProperties.WAFv2RuleGroupRule
+      Stratosphere.ResourceProperties.WAFv2RuleGroupRuleAction
+      Stratosphere.ResourceProperties.WAFv2RuleGroupSizeConstraintStatement
+      Stratosphere.ResourceProperties.WAFv2RuleGroupSqliMatchStatement
+      Stratosphere.ResourceProperties.WAFv2RuleGroupStatementOne
+      Stratosphere.ResourceProperties.WAFv2RuleGroupStatementThree
+      Stratosphere.ResourceProperties.WAFv2RuleGroupStatementTwo
+      Stratosphere.ResourceProperties.WAFv2RuleGroupTextTransformation
+      Stratosphere.ResourceProperties.WAFv2RuleGroupVisibilityConfig
+      Stratosphere.ResourceProperties.WAFv2RuleGroupXssMatchStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLAndStatementOne
+      Stratosphere.ResourceProperties.WAFv2WebACLAndStatementTwo
+      Stratosphere.ResourceProperties.WAFv2WebACLByteMatchStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLDefaultAction
+      Stratosphere.ResourceProperties.WAFv2WebACLExcludedRule
+      Stratosphere.ResourceProperties.WAFv2WebACLFieldToMatch
+      Stratosphere.ResourceProperties.WAFv2WebACLGeoMatchStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLIPSetReferenceStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLManagedRuleGroupStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLNotStatementOne
+      Stratosphere.ResourceProperties.WAFv2WebACLNotStatementTwo
+      Stratosphere.ResourceProperties.WAFv2WebACLOrStatementOne
+      Stratosphere.ResourceProperties.WAFv2WebACLOrStatementTwo
+      Stratosphere.ResourceProperties.WAFv2WebACLOverrideAction
+      Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementOne
+      Stratosphere.ResourceProperties.WAFv2WebACLRateBasedStatementTwo
+      Stratosphere.ResourceProperties.WAFv2WebACLRegexPatternSetReferenceStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLRule
+      Stratosphere.ResourceProperties.WAFv2WebACLRuleAction
+      Stratosphere.ResourceProperties.WAFv2WebACLRuleGroupReferenceStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLSizeConstraintStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLSqliMatchStatement
+      Stratosphere.ResourceProperties.WAFv2WebACLStatementOne
+      Stratosphere.ResourceProperties.WAFv2WebACLStatementThree
+      Stratosphere.ResourceProperties.WAFv2WebACLStatementTwo
+      Stratosphere.ResourceProperties.WAFv2WebACLTextTransformation
+      Stratosphere.ResourceProperties.WAFv2WebACLVisibilityConfig
+      Stratosphere.ResourceProperties.WAFv2WebACLXssMatchStatement
       Stratosphere.ResourceProperties.WAFWebACLActivatedRule
       Stratosphere.ResourceProperties.WAFWebACLWafAction
       Stratosphere.ResourceProperties.WAFXssMatchSetFieldToMatch
@@ -1262,6 +1362,11 @@
       Stratosphere.Resources.ApiGatewayV2RouteResponse
       Stratosphere.Resources.ApiGatewayV2Stage
       Stratosphere.Resources.ApiGatewayVpcLink
+      Stratosphere.Resources.AppConfigApplication
+      Stratosphere.Resources.AppConfigConfigurationProfile
+      Stratosphere.Resources.AppConfigDeployment
+      Stratosphere.Resources.AppConfigDeploymentStrategy
+      Stratosphere.Resources.AppConfigEnvironment
       Stratosphere.Resources.ApplicationAutoScalingScalableTarget
       Stratosphere.Resources.ApplicationAutoScalingScalingPolicy
       Stratosphere.Resources.AppMeshMesh
@@ -1285,6 +1390,7 @@
       Stratosphere.Resources.AppSyncResolver
       Stratosphere.Resources.ASKSkill
       Stratosphere.Resources.AthenaNamedQuery
+      Stratosphere.Resources.AthenaWorkGroup
       Stratosphere.Resources.AutoScalingAutoScalingGroup
       Stratosphere.Resources.AutoScalingLaunchConfiguration
       Stratosphere.Resources.AutoScalingLifecycleHook
@@ -1299,6 +1405,7 @@
       Stratosphere.Resources.BatchJobQueue
       Stratosphere.Resources.BudgetsBudget
       Stratosphere.Resources.CertificateManagerCertificate
+      Stratosphere.Resources.ChatbotSlackChannelConfiguration
       Stratosphere.Resources.Cloud9EnvironmentEC2
       Stratosphere.Resources.CloudFormationCustomResource
       Stratosphere.Resources.CloudFormationMacro
@@ -1311,6 +1418,7 @@
       Stratosphere.Resources.CloudTrailTrail
       Stratosphere.Resources.CloudWatchAlarm
       Stratosphere.Resources.CloudWatchAnomalyDetector
+      Stratosphere.Resources.CloudWatchCompositeAlarm
       Stratosphere.Resources.CloudWatchDashboard
       Stratosphere.Resources.CloudWatchInsightRule
       Stratosphere.Resources.CodeBuildProject
@@ -1323,6 +1431,7 @@
       Stratosphere.Resources.CodePipelineCustomActionType
       Stratosphere.Resources.CodePipelinePipeline
       Stratosphere.Resources.CodePipelineWebhook
+      Stratosphere.Resources.CodeStarConnectionsConnection
       Stratosphere.Resources.CodeStarGitHubRepository
       Stratosphere.Resources.CodeStarNotificationsNotificationRule
       Stratosphere.Resources.CognitoIdentityPool
@@ -1341,8 +1450,10 @@
       Stratosphere.Resources.ConfigConfigRule
       Stratosphere.Resources.ConfigConfigurationAggregator
       Stratosphere.Resources.ConfigConfigurationRecorder
+      Stratosphere.Resources.ConfigConformancePack
       Stratosphere.Resources.ConfigDeliveryChannel
       Stratosphere.Resources.ConfigOrganizationConfigRule
+      Stratosphere.Resources.ConfigOrganizationConformancePack
       Stratosphere.Resources.ConfigRemediationConfiguration
       Stratosphere.Resources.DataPipelinePipeline
       Stratosphere.Resources.DAXCluster
@@ -1379,6 +1490,8 @@
       Stratosphere.Resources.EC2Instance
       Stratosphere.Resources.EC2InternetGateway
       Stratosphere.Resources.EC2LaunchTemplate
+      Stratosphere.Resources.EC2LocalGatewayRoute
+      Stratosphere.Resources.EC2LocalGatewayRouteTableVPCAssociation
       Stratosphere.Resources.EC2NatGateway
       Stratosphere.Resources.EC2NetworkAcl
       Stratosphere.Resources.EC2NetworkAclEntry
@@ -1459,6 +1572,8 @@
       Stratosphere.Resources.EventsEventBus
       Stratosphere.Resources.EventsEventBusPolicy
       Stratosphere.Resources.EventsRule
+      Stratosphere.Resources.FMSNotificationChannel
+      Stratosphere.Resources.FMSPolicy
       Stratosphere.Resources.FSxFileSystem
       Stratosphere.Resources.GameLiftAlias
       Stratosphere.Resources.GameLiftBuild
@@ -1706,6 +1821,11 @@
       Stratosphere.Resources.WAFRule
       Stratosphere.Resources.WAFSizeConstraintSet
       Stratosphere.Resources.WAFSqlInjectionMatchSet
+      Stratosphere.Resources.WAFv2IPSet
+      Stratosphere.Resources.WAFv2RegexPatternSet
+      Stratosphere.Resources.WAFv2RuleGroup
+      Stratosphere.Resources.WAFv2WebACL
+      Stratosphere.Resources.WAFv2WebACLAssociation
       Stratosphere.Resources.WAFWebACL
       Stratosphere.Resources.WAFXssMatchSet
       Stratosphere.Resources.WorkSpacesWorkspace
