diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.39.0
+
+* Update resource specification document to version 3.4.0
+
 ## 0.38.0
 
 * Update resource specification document to version 3.3.0
diff --git a/examples/rds-master-replica.hs b/examples/rds-master-replica.hs
--- a/examples/rds-master-replica.hs
+++ b/examples/rds-master-replica.hs
@@ -45,10 +45,9 @@
   & rdsdbiMasterUserPassword ?~ Ref "RdsMasterPassword"
   & rdsdbiDBName ?~ "the_database"
   & rdsdbiPreferredMaintenanceWindow ?~ "Sun:01:00-Sun:02:00"
-  & rdsdbiBackupRetentionPeriod ?~ "30"
+  & rdsdbiBackupRetentionPeriod ?~ Literal 30
   & rdsdbiPreferredBackupWindow ?~ "08:00-09:00"
   & rdsdbiPort ?~ "5432"
-  & rdsdbiBackupRetentionPeriod ?~ "2"
   & rdsdbiTags ?~
   [ tag "Role" "rds-master"
   ]
diff --git a/library-gen/Stratosphere/ResourceProperties/AmplifyAppBasicAuthConfig.hs b/library-gen/Stratosphere/ResourceProperties/AmplifyAppBasicAuthConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmplifyAppBasicAuthConfig.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html
+
+module Stratosphere.ResourceProperties.AmplifyAppBasicAuthConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmplifyAppBasicAuthConfig. See
+-- 'amplifyAppBasicAuthConfig' for a more convenient constructor.
+data AmplifyAppBasicAuthConfig =
+  AmplifyAppBasicAuthConfig
+  { _amplifyAppBasicAuthConfigEnableBasicAuth :: Maybe (Val Bool)
+  , _amplifyAppBasicAuthConfigPassword :: Val Text
+  , _amplifyAppBasicAuthConfigUsername :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmplifyAppBasicAuthConfig where
+  toJSON AmplifyAppBasicAuthConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("EnableBasicAuth",) . toJSON) _amplifyAppBasicAuthConfigEnableBasicAuth
+    , (Just . ("Password",) . toJSON) _amplifyAppBasicAuthConfigPassword
+    , (Just . ("Username",) . toJSON) _amplifyAppBasicAuthConfigUsername
+    ]
+
+-- | Constructor for 'AmplifyAppBasicAuthConfig' containing required fields as
+-- arguments.
+amplifyAppBasicAuthConfig
+  :: Val Text -- ^ 'aabacPassword'
+  -> Val Text -- ^ 'aabacUsername'
+  -> AmplifyAppBasicAuthConfig
+amplifyAppBasicAuthConfig passwordarg usernamearg =
+  AmplifyAppBasicAuthConfig
+  { _amplifyAppBasicAuthConfigEnableBasicAuth = Nothing
+  , _amplifyAppBasicAuthConfigPassword = passwordarg
+  , _amplifyAppBasicAuthConfigUsername = usernamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html#cfn-amplify-app-basicauthconfig-enablebasicauth
+aabacEnableBasicAuth :: Lens' AmplifyAppBasicAuthConfig (Maybe (Val Bool))
+aabacEnableBasicAuth = lens _amplifyAppBasicAuthConfigEnableBasicAuth (\s a -> s { _amplifyAppBasicAuthConfigEnableBasicAuth = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html#cfn-amplify-app-basicauthconfig-password
+aabacPassword :: Lens' AmplifyAppBasicAuthConfig (Val Text)
+aabacPassword = lens _amplifyAppBasicAuthConfigPassword (\s a -> s { _amplifyAppBasicAuthConfigPassword = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-basicauthconfig.html#cfn-amplify-app-basicauthconfig-username
+aabacUsername :: Lens' AmplifyAppBasicAuthConfig (Val Text)
+aabacUsername = lens _amplifyAppBasicAuthConfigUsername (\s a -> s { _amplifyAppBasicAuthConfigUsername = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmplifyAppCustomRule.hs b/library-gen/Stratosphere/ResourceProperties/AmplifyAppCustomRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmplifyAppCustomRule.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html
+
+module Stratosphere.ResourceProperties.AmplifyAppCustomRule where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmplifyAppCustomRule. See
+-- 'amplifyAppCustomRule' for a more convenient constructor.
+data AmplifyAppCustomRule =
+  AmplifyAppCustomRule
+  { _amplifyAppCustomRuleCondition :: Maybe (Val Text)
+  , _amplifyAppCustomRuleSource :: Val Text
+  , _amplifyAppCustomRuleStatus :: Maybe (Val Text)
+  , _amplifyAppCustomRuleTarget :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmplifyAppCustomRule where
+  toJSON AmplifyAppCustomRule{..} =
+    object $
+    catMaybes
+    [ fmap (("Condition",) . toJSON) _amplifyAppCustomRuleCondition
+    , (Just . ("Source",) . toJSON) _amplifyAppCustomRuleSource
+    , fmap (("Status",) . toJSON) _amplifyAppCustomRuleStatus
+    , (Just . ("Target",) . toJSON) _amplifyAppCustomRuleTarget
+    ]
+
+-- | Constructor for 'AmplifyAppCustomRule' containing required fields as
+-- arguments.
+amplifyAppCustomRule
+  :: Val Text -- ^ 'aacrSource'
+  -> Val Text -- ^ 'aacrTarget'
+  -> AmplifyAppCustomRule
+amplifyAppCustomRule sourcearg targetarg =
+  AmplifyAppCustomRule
+  { _amplifyAppCustomRuleCondition = Nothing
+  , _amplifyAppCustomRuleSource = sourcearg
+  , _amplifyAppCustomRuleStatus = Nothing
+  , _amplifyAppCustomRuleTarget = targetarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-condition
+aacrCondition :: Lens' AmplifyAppCustomRule (Maybe (Val Text))
+aacrCondition = lens _amplifyAppCustomRuleCondition (\s a -> s { _amplifyAppCustomRuleCondition = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-source
+aacrSource :: Lens' AmplifyAppCustomRule (Val Text)
+aacrSource = lens _amplifyAppCustomRuleSource (\s a -> s { _amplifyAppCustomRuleSource = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-status
+aacrStatus :: Lens' AmplifyAppCustomRule (Maybe (Val Text))
+aacrStatus = lens _amplifyAppCustomRuleStatus (\s a -> s { _amplifyAppCustomRuleStatus = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-customrule.html#cfn-amplify-app-customrule-target
+aacrTarget :: Lens' AmplifyAppCustomRule (Val Text)
+aacrTarget = lens _amplifyAppCustomRuleTarget (\s a -> s { _amplifyAppCustomRuleTarget = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmplifyAppEnvironmentVariable.hs b/library-gen/Stratosphere/ResourceProperties/AmplifyAppEnvironmentVariable.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmplifyAppEnvironmentVariable.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-environmentvariable.html
+
+module Stratosphere.ResourceProperties.AmplifyAppEnvironmentVariable where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmplifyAppEnvironmentVariable. See
+-- 'amplifyAppEnvironmentVariable' for a more convenient constructor.
+data AmplifyAppEnvironmentVariable =
+  AmplifyAppEnvironmentVariable
+  { _amplifyAppEnvironmentVariableName :: Val Text
+  , _amplifyAppEnvironmentVariableValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmplifyAppEnvironmentVariable where
+  toJSON AmplifyAppEnvironmentVariable{..} =
+    object $
+    catMaybes
+    [ (Just . ("Name",) . toJSON) _amplifyAppEnvironmentVariableName
+    , (Just . ("Value",) . toJSON) _amplifyAppEnvironmentVariableValue
+    ]
+
+-- | Constructor for 'AmplifyAppEnvironmentVariable' containing required
+-- fields as arguments.
+amplifyAppEnvironmentVariable
+  :: Val Text -- ^ 'aaevName'
+  -> Val Text -- ^ 'aaevValue'
+  -> AmplifyAppEnvironmentVariable
+amplifyAppEnvironmentVariable namearg valuearg =
+  AmplifyAppEnvironmentVariable
+  { _amplifyAppEnvironmentVariableName = namearg
+  , _amplifyAppEnvironmentVariableValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-environmentvariable.html#cfn-amplify-app-environmentvariable-name
+aaevName :: Lens' AmplifyAppEnvironmentVariable (Val Text)
+aaevName = lens _amplifyAppEnvironmentVariableName (\s a -> s { _amplifyAppEnvironmentVariableName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-environmentvariable.html#cfn-amplify-app-environmentvariable-value
+aaevValue :: Lens' AmplifyAppEnvironmentVariable (Val Text)
+aaevValue = lens _amplifyAppEnvironmentVariableValue (\s a -> s { _amplifyAppEnvironmentVariableValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmplifyAppToken.hs b/library-gen/Stratosphere/ResourceProperties/AmplifyAppToken.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmplifyAppToken.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-token.html
+
+module Stratosphere.ResourceProperties.AmplifyAppToken where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmplifyAppToken. See 'amplifyAppToken' for
+-- a more convenient constructor.
+data AmplifyAppToken =
+  AmplifyAppToken
+  { _amplifyAppTokenKey :: Val Text
+  , _amplifyAppTokenValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmplifyAppToken where
+  toJSON AmplifyAppToken{..} =
+    object $
+    catMaybes
+    [ (Just . ("Key",) . toJSON) _amplifyAppTokenKey
+    , (Just . ("Value",) . toJSON) _amplifyAppTokenValue
+    ]
+
+-- | Constructor for 'AmplifyAppToken' containing required fields as
+-- arguments.
+amplifyAppToken
+  :: Val Text -- ^ 'aatKey'
+  -> Val Text -- ^ 'aatValue'
+  -> AmplifyAppToken
+amplifyAppToken keyarg valuearg =
+  AmplifyAppToken
+  { _amplifyAppTokenKey = keyarg
+  , _amplifyAppTokenValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-token.html#cfn-amplify-app-token-key
+aatKey :: Lens' AmplifyAppToken (Val Text)
+aatKey = lens _amplifyAppTokenKey (\s a -> s { _amplifyAppTokenKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-app-token.html#cfn-amplify-app-token-value
+aatValue :: Lens' AmplifyAppToken (Val Text)
+aatValue = lens _amplifyAppTokenValue (\s a -> s { _amplifyAppTokenValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmplifyBranchBasicAuthConfig.hs b/library-gen/Stratosphere/ResourceProperties/AmplifyBranchBasicAuthConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmplifyBranchBasicAuthConfig.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html
+
+module Stratosphere.ResourceProperties.AmplifyBranchBasicAuthConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmplifyBranchBasicAuthConfig. See
+-- 'amplifyBranchBasicAuthConfig' for a more convenient constructor.
+data AmplifyBranchBasicAuthConfig =
+  AmplifyBranchBasicAuthConfig
+  { _amplifyBranchBasicAuthConfigEnableBasicAuth :: Maybe (Val Bool)
+  , _amplifyBranchBasicAuthConfigPassword :: Val Text
+  , _amplifyBranchBasicAuthConfigUsername :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmplifyBranchBasicAuthConfig where
+  toJSON AmplifyBranchBasicAuthConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("EnableBasicAuth",) . toJSON) _amplifyBranchBasicAuthConfigEnableBasicAuth
+    , (Just . ("Password",) . toJSON) _amplifyBranchBasicAuthConfigPassword
+    , (Just . ("Username",) . toJSON) _amplifyBranchBasicAuthConfigUsername
+    ]
+
+-- | Constructor for 'AmplifyBranchBasicAuthConfig' containing required fields
+-- as arguments.
+amplifyBranchBasicAuthConfig
+  :: Val Text -- ^ 'abbacPassword'
+  -> Val Text -- ^ 'abbacUsername'
+  -> AmplifyBranchBasicAuthConfig
+amplifyBranchBasicAuthConfig passwordarg usernamearg =
+  AmplifyBranchBasicAuthConfig
+  { _amplifyBranchBasicAuthConfigEnableBasicAuth = Nothing
+  , _amplifyBranchBasicAuthConfigPassword = passwordarg
+  , _amplifyBranchBasicAuthConfigUsername = usernamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html#cfn-amplify-branch-basicauthconfig-enablebasicauth
+abbacEnableBasicAuth :: Lens' AmplifyBranchBasicAuthConfig (Maybe (Val Bool))
+abbacEnableBasicAuth = lens _amplifyBranchBasicAuthConfigEnableBasicAuth (\s a -> s { _amplifyBranchBasicAuthConfigEnableBasicAuth = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html#cfn-amplify-branch-basicauthconfig-password
+abbacPassword :: Lens' AmplifyBranchBasicAuthConfig (Val Text)
+abbacPassword = lens _amplifyBranchBasicAuthConfigPassword (\s a -> s { _amplifyBranchBasicAuthConfigPassword = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-basicauthconfig.html#cfn-amplify-branch-basicauthconfig-username
+abbacUsername :: Lens' AmplifyBranchBasicAuthConfig (Val Text)
+abbacUsername = lens _amplifyBranchBasicAuthConfigUsername (\s a -> s { _amplifyBranchBasicAuthConfigUsername = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmplifyBranchEnvironmentVariable.hs b/library-gen/Stratosphere/ResourceProperties/AmplifyBranchEnvironmentVariable.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmplifyBranchEnvironmentVariable.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-environmentvariable.html
+
+module Stratosphere.ResourceProperties.AmplifyBranchEnvironmentVariable where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmplifyBranchEnvironmentVariable. See
+-- 'amplifyBranchEnvironmentVariable' for a more convenient constructor.
+data AmplifyBranchEnvironmentVariable =
+  AmplifyBranchEnvironmentVariable
+  { _amplifyBranchEnvironmentVariableName :: Val Text
+  , _amplifyBranchEnvironmentVariableValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmplifyBranchEnvironmentVariable where
+  toJSON AmplifyBranchEnvironmentVariable{..} =
+    object $
+    catMaybes
+    [ (Just . ("Name",) . toJSON) _amplifyBranchEnvironmentVariableName
+    , (Just . ("Value",) . toJSON) _amplifyBranchEnvironmentVariableValue
+    ]
+
+-- | Constructor for 'AmplifyBranchEnvironmentVariable' containing required
+-- fields as arguments.
+amplifyBranchEnvironmentVariable
+  :: Val Text -- ^ 'abevName'
+  -> Val Text -- ^ 'abevValue'
+  -> AmplifyBranchEnvironmentVariable
+amplifyBranchEnvironmentVariable namearg valuearg =
+  AmplifyBranchEnvironmentVariable
+  { _amplifyBranchEnvironmentVariableName = namearg
+  , _amplifyBranchEnvironmentVariableValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-environmentvariable.html#cfn-amplify-branch-environmentvariable-name
+abevName :: Lens' AmplifyBranchEnvironmentVariable (Val Text)
+abevName = lens _amplifyBranchEnvironmentVariableName (\s a -> s { _amplifyBranchEnvironmentVariableName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-environmentvariable.html#cfn-amplify-branch-environmentvariable-value
+abevValue :: Lens' AmplifyBranchEnvironmentVariable (Val Text)
+abevValue = lens _amplifyBranchEnvironmentVariableValue (\s a -> s { _amplifyBranchEnvironmentVariableValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmplifyDomainSubDomainSetting.hs b/library-gen/Stratosphere/ResourceProperties/AmplifyDomainSubDomainSetting.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmplifyDomainSubDomainSetting.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-subdomainsetting.html
+
+module Stratosphere.ResourceProperties.AmplifyDomainSubDomainSetting where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmplifyDomainSubDomainSetting. See
+-- 'amplifyDomainSubDomainSetting' for a more convenient constructor.
+data AmplifyDomainSubDomainSetting =
+  AmplifyDomainSubDomainSetting
+  { _amplifyDomainSubDomainSettingBranchName :: Val Text
+  , _amplifyDomainSubDomainSettingPrefix :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmplifyDomainSubDomainSetting where
+  toJSON AmplifyDomainSubDomainSetting{..} =
+    object $
+    catMaybes
+    [ (Just . ("BranchName",) . toJSON) _amplifyDomainSubDomainSettingBranchName
+    , (Just . ("Prefix",) . toJSON) _amplifyDomainSubDomainSettingPrefix
+    ]
+
+-- | Constructor for 'AmplifyDomainSubDomainSetting' containing required
+-- fields as arguments.
+amplifyDomainSubDomainSetting
+  :: Val Text -- ^ 'adsdsBranchName'
+  -> Val Text -- ^ 'adsdsPrefix'
+  -> AmplifyDomainSubDomainSetting
+amplifyDomainSubDomainSetting branchNamearg prefixarg =
+  AmplifyDomainSubDomainSetting
+  { _amplifyDomainSubDomainSettingBranchName = branchNamearg
+  , _amplifyDomainSubDomainSettingPrefix = prefixarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-subdomainsetting.html#cfn-amplify-domain-subdomainsetting-branchname
+adsdsBranchName :: Lens' AmplifyDomainSubDomainSetting (Val Text)
+adsdsBranchName = lens _amplifyDomainSubDomainSettingBranchName (\s a -> s { _amplifyDomainSubDomainSettingBranchName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-domain-subdomainsetting.html#cfn-amplify-domain-subdomainsetting-prefix
+adsdsPrefix :: Lens' AmplifyDomainSubDomainSetting (Val Text)
+adsdsPrefix = lens _amplifyDomainSubDomainSettingPrefix (\s a -> s { _amplifyDomainSubDomainSettingPrefix = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeServiceDiscovery.hs b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeServiceDiscovery.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeServiceDiscovery.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeServiceDiscovery.hs
@@ -14,26 +14,25 @@
 -- 'appMeshVirtualNodeServiceDiscovery' for a more convenient constructor.
 data AppMeshVirtualNodeServiceDiscovery =
   AppMeshVirtualNodeServiceDiscovery
-  { _appMeshVirtualNodeServiceDiscoveryDNS :: AppMeshVirtualNodeDnsServiceDiscovery
+  { _appMeshVirtualNodeServiceDiscoveryDNS :: Maybe AppMeshVirtualNodeDnsServiceDiscovery
   } deriving (Show, Eq)
 
 instance ToJSON AppMeshVirtualNodeServiceDiscovery where
   toJSON AppMeshVirtualNodeServiceDiscovery{..} =
     object $
     catMaybes
-    [ (Just . ("DNS",) . toJSON) _appMeshVirtualNodeServiceDiscoveryDNS
+    [ fmap (("DNS",) . toJSON) _appMeshVirtualNodeServiceDiscoveryDNS
     ]
 
 -- | Constructor for 'AppMeshVirtualNodeServiceDiscovery' containing required
 -- fields as arguments.
 appMeshVirtualNodeServiceDiscovery
-  :: AppMeshVirtualNodeDnsServiceDiscovery -- ^ 'amvnsdDNS'
-  -> AppMeshVirtualNodeServiceDiscovery
-appMeshVirtualNodeServiceDiscovery dNSarg =
+  :: AppMeshVirtualNodeServiceDiscovery
+appMeshVirtualNodeServiceDiscovery  =
   AppMeshVirtualNodeServiceDiscovery
-  { _appMeshVirtualNodeServiceDiscoveryDNS = dNSarg
+  { _appMeshVirtualNodeServiceDiscoveryDNS = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-servicediscovery.html#cfn-appmesh-virtualnode-servicediscovery-dns
-amvnsdDNS :: Lens' AppMeshVirtualNodeServiceDiscovery AppMeshVirtualNodeDnsServiceDiscovery
+amvnsdDNS :: Lens' AppMeshVirtualNodeServiceDiscovery (Maybe AppMeshVirtualNodeDnsServiceDiscovery)
 amvnsdDNS = lens _appMeshVirtualNodeServiceDiscoveryDNS (\s a -> s { _appMeshVirtualNodeServiceDiscoveryDNS = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyParameters.hs b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyParameters.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-parameters.html
+
+module Stratosphere.ResourceProperties.DLMLifecyclePolicyParameters where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for DLMLifecyclePolicyParameters. See
+-- 'dlmLifecyclePolicyParameters' for a more convenient constructor.
+data DLMLifecyclePolicyParameters =
+  DLMLifecyclePolicyParameters
+  { _dLMLifecyclePolicyParametersExcludeBootVolume :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON DLMLifecyclePolicyParameters where
+  toJSON DLMLifecyclePolicyParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("ExcludeBootVolume",) . toJSON) _dLMLifecyclePolicyParametersExcludeBootVolume
+    ]
+
+-- | Constructor for 'DLMLifecyclePolicyParameters' containing required fields
+-- as arguments.
+dlmLifecyclePolicyParameters
+  :: DLMLifecyclePolicyParameters
+dlmLifecyclePolicyParameters  =
+  DLMLifecyclePolicyParameters
+  { _dLMLifecyclePolicyParametersExcludeBootVolume = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-parameters.html#cfn-dlm-lifecyclepolicy-parameters-excludebootvolume
+dlmlppExcludeBootVolume :: Lens' DLMLifecyclePolicyParameters (Maybe (Val Bool))
+dlmlppExcludeBootVolume = lens _dLMLifecyclePolicyParametersExcludeBootVolume (\s a -> s { _dLMLifecyclePolicyParametersExcludeBootVolume = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs
--- a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicyPolicyDetails.hs
@@ -8,6 +8,7 @@
 module Stratosphere.ResourceProperties.DLMLifecyclePolicyPolicyDetails where
 
 import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.DLMLifecyclePolicyParameters
 import Stratosphere.ResourceProperties.DLMLifecyclePolicySchedule
 import Stratosphere.ResourceProperties.Tag
 
@@ -15,7 +16,9 @@
 -- 'dlmLifecyclePolicyPolicyDetails' for a more convenient constructor.
 data DLMLifecyclePolicyPolicyDetails =
   DLMLifecyclePolicyPolicyDetails
-  { _dLMLifecyclePolicyPolicyDetailsResourceTypes :: Maybe (ValList Text)
+  { _dLMLifecyclePolicyPolicyDetailsParameters :: Maybe DLMLifecyclePolicyParameters
+  , _dLMLifecyclePolicyPolicyDetailsPolicyType :: Maybe (Val Text)
+  , _dLMLifecyclePolicyPolicyDetailsResourceTypes :: Maybe (ValList Text)
   , _dLMLifecyclePolicyPolicyDetailsSchedules :: Maybe [DLMLifecyclePolicySchedule]
   , _dLMLifecyclePolicyPolicyDetailsTargetTags :: Maybe [Tag]
   } deriving (Show, Eq)
@@ -24,7 +27,9 @@
   toJSON DLMLifecyclePolicyPolicyDetails{..} =
     object $
     catMaybes
-    [ fmap (("ResourceTypes",) . toJSON) _dLMLifecyclePolicyPolicyDetailsResourceTypes
+    [ fmap (("Parameters",) . toJSON) _dLMLifecyclePolicyPolicyDetailsParameters
+    , fmap (("PolicyType",) . toJSON) _dLMLifecyclePolicyPolicyDetailsPolicyType
+    , fmap (("ResourceTypes",) . toJSON) _dLMLifecyclePolicyPolicyDetailsResourceTypes
     , fmap (("Schedules",) . toJSON) _dLMLifecyclePolicyPolicyDetailsSchedules
     , fmap (("TargetTags",) . toJSON) _dLMLifecyclePolicyPolicyDetailsTargetTags
     ]
@@ -35,10 +40,20 @@
   :: DLMLifecyclePolicyPolicyDetails
 dlmLifecyclePolicyPolicyDetails  =
   DLMLifecyclePolicyPolicyDetails
-  { _dLMLifecyclePolicyPolicyDetailsResourceTypes = Nothing
+  { _dLMLifecyclePolicyPolicyDetailsParameters = Nothing
+  , _dLMLifecyclePolicyPolicyDetailsPolicyType = Nothing
+  , _dLMLifecyclePolicyPolicyDetailsResourceTypes = Nothing
   , _dLMLifecyclePolicyPolicyDetailsSchedules = Nothing
   , _dLMLifecyclePolicyPolicyDetailsTargetTags = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-parameters
+dlmlppdParameters :: Lens' DLMLifecyclePolicyPolicyDetails (Maybe DLMLifecyclePolicyParameters)
+dlmlppdParameters = lens _dLMLifecyclePolicyPolicyDetailsParameters (\s a -> s { _dLMLifecyclePolicyPolicyDetailsParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-policytype
+dlmlppdPolicyType :: Lens' DLMLifecyclePolicyPolicyDetails (Maybe (Val Text))
+dlmlppdPolicyType = lens _dLMLifecyclePolicyPolicyDetailsPolicyType (\s a -> s { _dLMLifecyclePolicyPolicyDetailsPolicyType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-resourcetypes
 dlmlppdResourceTypes :: Lens' DLMLifecyclePolicyPolicyDetails (Maybe (ValList Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs
--- a/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DLMLifecyclePolicySchedule.hs
@@ -21,6 +21,7 @@
   , _dLMLifecyclePolicyScheduleName :: Maybe (Val Text)
   , _dLMLifecyclePolicyScheduleRetainRule :: Maybe DLMLifecyclePolicyRetainRule
   , _dLMLifecyclePolicyScheduleTagsToAdd :: Maybe [Tag]
+  , _dLMLifecyclePolicyScheduleVariableTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToJSON DLMLifecyclePolicySchedule where
@@ -32,6 +33,7 @@
     , fmap (("Name",) . toJSON) _dLMLifecyclePolicyScheduleName
     , fmap (("RetainRule",) . toJSON) _dLMLifecyclePolicyScheduleRetainRule
     , fmap (("TagsToAdd",) . toJSON) _dLMLifecyclePolicyScheduleTagsToAdd
+    , fmap (("VariableTags",) . toJSON) _dLMLifecyclePolicyScheduleVariableTags
     ]
 
 -- | Constructor for 'DLMLifecyclePolicySchedule' containing required fields
@@ -45,6 +47,7 @@
   , _dLMLifecyclePolicyScheduleName = Nothing
   , _dLMLifecyclePolicyScheduleRetainRule = Nothing
   , _dLMLifecyclePolicyScheduleTagsToAdd = Nothing
+  , _dLMLifecyclePolicyScheduleVariableTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html#cfn-dlm-lifecyclepolicy-schedule-copytags
@@ -66,3 +69,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html#cfn-dlm-lifecyclepolicy-schedule-tagstoadd
 dlmlpsTagsToAdd :: Lens' DLMLifecyclePolicySchedule (Maybe [Tag])
 dlmlpsTagsToAdd = lens _dLMLifecyclePolicyScheduleTagsToAdd (\s a -> s { _dLMLifecyclePolicyScheduleTagsToAdd = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html#cfn-dlm-lifecyclepolicy-schedule-variabletags
+dlmlpsVariableTags :: Lens' DLMLifecyclePolicySchedule (Maybe [Tag])
+dlmlpsVariableTags = lens _dLMLifecyclePolicyScheduleVariableTags (\s a -> s { _dLMLifecyclePolicyScheduleVariableTags = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointCertificateAuthenticationRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointCertificateAuthenticationRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointCertificateAuthenticationRequest.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html
+
+module Stratosphere.ResourceProperties.EC2ClientVpnEndpointCertificateAuthenticationRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- EC2ClientVpnEndpointCertificateAuthenticationRequest. See
+-- 'ec2ClientVpnEndpointCertificateAuthenticationRequest' for a more
+-- convenient constructor.
+data EC2ClientVpnEndpointCertificateAuthenticationRequest =
+  EC2ClientVpnEndpointCertificateAuthenticationRequest
+  { _eC2ClientVpnEndpointCertificateAuthenticationRequestClientRootCertificateChainArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON EC2ClientVpnEndpointCertificateAuthenticationRequest where
+  toJSON EC2ClientVpnEndpointCertificateAuthenticationRequest{..} =
+    object $
+    catMaybes
+    [ (Just . ("ClientRootCertificateChainArn",) . toJSON) _eC2ClientVpnEndpointCertificateAuthenticationRequestClientRootCertificateChainArn
+    ]
+
+-- | Constructor for 'EC2ClientVpnEndpointCertificateAuthenticationRequest'
+-- containing required fields as arguments.
+ec2ClientVpnEndpointCertificateAuthenticationRequest
+  :: Val Text -- ^ 'eccvecarClientRootCertificateChainArn'
+  -> EC2ClientVpnEndpointCertificateAuthenticationRequest
+ec2ClientVpnEndpointCertificateAuthenticationRequest clientRootCertificateChainArnarg =
+  EC2ClientVpnEndpointCertificateAuthenticationRequest
+  { _eC2ClientVpnEndpointCertificateAuthenticationRequestClientRootCertificateChainArn = clientRootCertificateChainArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html#cfn-ec2-clientvpnendpoint-certificateauthenticationrequest-clientrootcertificatechainarn
+eccvecarClientRootCertificateChainArn :: Lens' EC2ClientVpnEndpointCertificateAuthenticationRequest (Val Text)
+eccvecarClientRootCertificateChainArn = lens _eC2ClientVpnEndpointCertificateAuthenticationRequestClientRootCertificateChainArn (\s a -> s { _eC2ClientVpnEndpointCertificateAuthenticationRequestClientRootCertificateChainArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointClientAuthenticationRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointClientAuthenticationRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointClientAuthenticationRequest.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html
+
+module Stratosphere.ResourceProperties.EC2ClientVpnEndpointClientAuthenticationRequest where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointCertificateAuthenticationRequest
+
+-- | Full data type definition for
+-- EC2ClientVpnEndpointClientAuthenticationRequest. See
+-- 'ec2ClientVpnEndpointClientAuthenticationRequest' for a more convenient
+-- constructor.
+data EC2ClientVpnEndpointClientAuthenticationRequest =
+  EC2ClientVpnEndpointClientAuthenticationRequest
+  { _eC2ClientVpnEndpointClientAuthenticationRequestActiveDirectory :: Maybe EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest
+  , _eC2ClientVpnEndpointClientAuthenticationRequestMutualAuthentication :: Maybe EC2ClientVpnEndpointCertificateAuthenticationRequest
+  , _eC2ClientVpnEndpointClientAuthenticationRequestType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON EC2ClientVpnEndpointClientAuthenticationRequest where
+  toJSON EC2ClientVpnEndpointClientAuthenticationRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("ActiveDirectory",) . toJSON) _eC2ClientVpnEndpointClientAuthenticationRequestActiveDirectory
+    , fmap (("MutualAuthentication",) . toJSON) _eC2ClientVpnEndpointClientAuthenticationRequestMutualAuthentication
+    , (Just . ("Type",) . toJSON) _eC2ClientVpnEndpointClientAuthenticationRequestType
+    ]
+
+-- | Constructor for 'EC2ClientVpnEndpointClientAuthenticationRequest'
+-- containing required fields as arguments.
+ec2ClientVpnEndpointClientAuthenticationRequest
+  :: Val Text -- ^ 'eccvecarType'
+  -> EC2ClientVpnEndpointClientAuthenticationRequest
+ec2ClientVpnEndpointClientAuthenticationRequest typearg =
+  EC2ClientVpnEndpointClientAuthenticationRequest
+  { _eC2ClientVpnEndpointClientAuthenticationRequestActiveDirectory = Nothing
+  , _eC2ClientVpnEndpointClientAuthenticationRequestMutualAuthentication = Nothing
+  , _eC2ClientVpnEndpointClientAuthenticationRequestType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-activedirectory
+eccvecarActiveDirectory :: Lens' EC2ClientVpnEndpointClientAuthenticationRequest (Maybe EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest)
+eccvecarActiveDirectory = lens _eC2ClientVpnEndpointClientAuthenticationRequestActiveDirectory (\s a -> s { _eC2ClientVpnEndpointClientAuthenticationRequestActiveDirectory = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-mutualauthentication
+eccvecarMutualAuthentication :: Lens' EC2ClientVpnEndpointClientAuthenticationRequest (Maybe EC2ClientVpnEndpointCertificateAuthenticationRequest)
+eccvecarMutualAuthentication = lens _eC2ClientVpnEndpointClientAuthenticationRequestMutualAuthentication (\s a -> s { _eC2ClientVpnEndpointClientAuthenticationRequestMutualAuthentication = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-type
+eccvecarType :: Lens' EC2ClientVpnEndpointClientAuthenticationRequest (Val Text)
+eccvecarType = lens _eC2ClientVpnEndpointClientAuthenticationRequestType (\s a -> s { _eC2ClientVpnEndpointClientAuthenticationRequestType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointConnectionLogOptions.hs b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointConnectionLogOptions.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointConnectionLogOptions.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html
+
+module Stratosphere.ResourceProperties.EC2ClientVpnEndpointConnectionLogOptions where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2ClientVpnEndpointConnectionLogOptions.
+-- See 'ec2ClientVpnEndpointConnectionLogOptions' for a more convenient
+-- constructor.
+data EC2ClientVpnEndpointConnectionLogOptions =
+  EC2ClientVpnEndpointConnectionLogOptions
+  { _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogGroup :: Maybe (Val Text)
+  , _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogStream :: Maybe (Val Text)
+  , _eC2ClientVpnEndpointConnectionLogOptionsEnabled :: Val Bool
+  } deriving (Show, Eq)
+
+instance ToJSON EC2ClientVpnEndpointConnectionLogOptions where
+  toJSON EC2ClientVpnEndpointConnectionLogOptions{..} =
+    object $
+    catMaybes
+    [ fmap (("CloudwatchLogGroup",) . toJSON) _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogGroup
+    , fmap (("CloudwatchLogStream",) . toJSON) _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogStream
+    , (Just . ("Enabled",) . toJSON) _eC2ClientVpnEndpointConnectionLogOptionsEnabled
+    ]
+
+-- | Constructor for 'EC2ClientVpnEndpointConnectionLogOptions' containing
+-- required fields as arguments.
+ec2ClientVpnEndpointConnectionLogOptions
+  :: Val Bool -- ^ 'eccvecloEnabled'
+  -> EC2ClientVpnEndpointConnectionLogOptions
+ec2ClientVpnEndpointConnectionLogOptions enabledarg =
+  EC2ClientVpnEndpointConnectionLogOptions
+  { _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogGroup = Nothing
+  , _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogStream = Nothing
+  , _eC2ClientVpnEndpointConnectionLogOptionsEnabled = enabledarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchloggroup
+eccvecloCloudwatchLogGroup :: Lens' EC2ClientVpnEndpointConnectionLogOptions (Maybe (Val Text))
+eccvecloCloudwatchLogGroup = lens _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogGroup (\s a -> s { _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogGroup = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchlogstream
+eccvecloCloudwatchLogStream :: Lens' EC2ClientVpnEndpointConnectionLogOptions (Maybe (Val Text))
+eccvecloCloudwatchLogStream = lens _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogStream (\s a -> s { _eC2ClientVpnEndpointConnectionLogOptionsCloudwatchLogStream = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-enabled
+eccvecloEnabled :: Lens' EC2ClientVpnEndpointConnectionLogOptions (Val Bool)
+eccvecloEnabled = lens _eC2ClientVpnEndpointConnectionLogOptionsEnabled (\s a -> s { _eC2ClientVpnEndpointConnectionLogOptionsEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html
+
+module Stratosphere.ResourceProperties.EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest. See
+-- 'ec2ClientVpnEndpointDirectoryServiceAuthenticationRequest' for a more
+-- convenient constructor.
+data EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest =
+  EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest
+  { _eC2ClientVpnEndpointDirectoryServiceAuthenticationRequestDirectoryId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest where
+  toJSON EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest{..} =
+    object $
+    catMaybes
+    [ (Just . ("DirectoryId",) . toJSON) _eC2ClientVpnEndpointDirectoryServiceAuthenticationRequestDirectoryId
+    ]
+
+-- | Constructor for
+-- 'EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest' containing
+-- required fields as arguments.
+ec2ClientVpnEndpointDirectoryServiceAuthenticationRequest
+  :: Val Text -- ^ 'eccvedsarDirectoryId'
+  -> EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest
+ec2ClientVpnEndpointDirectoryServiceAuthenticationRequest directoryIdarg =
+  EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest
+  { _eC2ClientVpnEndpointDirectoryServiceAuthenticationRequestDirectoryId = directoryIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html#cfn-ec2-clientvpnendpoint-directoryserviceauthenticationrequest-directoryid
+eccvedsarDirectoryId :: Lens' EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest (Val Text)
+eccvedsarDirectoryId = lens _eC2ClientVpnEndpointDirectoryServiceAuthenticationRequestDirectoryId (\s a -> s { _eC2ClientVpnEndpointDirectoryServiceAuthenticationRequestDirectoryId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointTagSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointTagSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2ClientVpnEndpointTagSpecification.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html
+
+module Stratosphere.ResourceProperties.EC2ClientVpnEndpointTagSpecification where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for EC2ClientVpnEndpointTagSpecification. See
+-- 'ec2ClientVpnEndpointTagSpecification' for a more convenient constructor.
+data EC2ClientVpnEndpointTagSpecification =
+  EC2ClientVpnEndpointTagSpecification
+  { _eC2ClientVpnEndpointTagSpecificationResourceType :: Maybe (Val Text)
+  , _eC2ClientVpnEndpointTagSpecificationTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON EC2ClientVpnEndpointTagSpecification where
+  toJSON EC2ClientVpnEndpointTagSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("ResourceType",) . toJSON) _eC2ClientVpnEndpointTagSpecificationResourceType
+    , fmap (("Tags",) . toJSON) _eC2ClientVpnEndpointTagSpecificationTags
+    ]
+
+-- | Constructor for 'EC2ClientVpnEndpointTagSpecification' containing
+-- required fields as arguments.
+ec2ClientVpnEndpointTagSpecification
+  :: EC2ClientVpnEndpointTagSpecification
+ec2ClientVpnEndpointTagSpecification  =
+  EC2ClientVpnEndpointTagSpecification
+  { _eC2ClientVpnEndpointTagSpecificationResourceType = Nothing
+  , _eC2ClientVpnEndpointTagSpecificationTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-resourcetype
+eccvetsResourceType :: Lens' EC2ClientVpnEndpointTagSpecification (Maybe (Val Text))
+eccvetsResourceType = lens _eC2ClientVpnEndpointTagSpecificationResourceType (\s a -> s { _eC2ClientVpnEndpointTagSpecificationResourceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-tags
+eccvetsTags :: Lens' EC2ClientVpnEndpointTagSpecification (Maybe [Tag])
+eccvetsTags = lens _eC2ClientVpnEndpointTagSpecificationTags (\s a -> s { _eC2ClientVpnEndpointTagSpecificationTags = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
@@ -17,6 +17,8 @@
 import Stratosphere.ResourceProperties.ECSTaskDefinitionMountPoint
 import Stratosphere.ResourceProperties.ECSTaskDefinitionPortMapping
 import Stratosphere.ResourceProperties.ECSTaskDefinitionRepositoryCredentials
+import Stratosphere.ResourceProperties.ECSTaskDefinitionResourceRequirement
+import Stratosphere.ResourceProperties.ECSTaskDefinitionSecret
 import Stratosphere.ResourceProperties.ECSTaskDefinitionUlimit
 import Stratosphere.ResourceProperties.ECSTaskDefinitionVolumeFrom
 
@@ -50,6 +52,8 @@
   , _eCSTaskDefinitionContainerDefinitionPrivileged :: Maybe (Val Bool)
   , _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem :: Maybe (Val Bool)
   , _eCSTaskDefinitionContainerDefinitionRepositoryCredentials :: Maybe ECSTaskDefinitionRepositoryCredentials
+  , _eCSTaskDefinitionContainerDefinitionResourceRequirements :: Maybe [ECSTaskDefinitionResourceRequirement]
+  , _eCSTaskDefinitionContainerDefinitionSecrets :: Maybe [ECSTaskDefinitionSecret]
   , _eCSTaskDefinitionContainerDefinitionStartTimeout :: Maybe (Val Integer)
   , _eCSTaskDefinitionContainerDefinitionStopTimeout :: Maybe (Val Integer)
   , _eCSTaskDefinitionContainerDefinitionUlimits :: Maybe [ECSTaskDefinitionUlimit]
@@ -88,6 +92,8 @@
     , fmap (("Privileged",) . toJSON) _eCSTaskDefinitionContainerDefinitionPrivileged
     , fmap (("ReadonlyRootFilesystem",) . toJSON) _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem
     , fmap (("RepositoryCredentials",) . toJSON) _eCSTaskDefinitionContainerDefinitionRepositoryCredentials
+    , fmap (("ResourceRequirements",) . toJSON) _eCSTaskDefinitionContainerDefinitionResourceRequirements
+    , fmap (("Secrets",) . toJSON) _eCSTaskDefinitionContainerDefinitionSecrets
     , fmap (("StartTimeout",) . toJSON) _eCSTaskDefinitionContainerDefinitionStartTimeout
     , fmap (("StopTimeout",) . toJSON) _eCSTaskDefinitionContainerDefinitionStopTimeout
     , fmap (("Ulimits",) . toJSON) _eCSTaskDefinitionContainerDefinitionUlimits
@@ -130,6 +136,8 @@
   , _eCSTaskDefinitionContainerDefinitionPrivileged = Nothing
   , _eCSTaskDefinitionContainerDefinitionReadonlyRootFilesystem = Nothing
   , _eCSTaskDefinitionContainerDefinitionRepositoryCredentials = Nothing
+  , _eCSTaskDefinitionContainerDefinitionResourceRequirements = Nothing
+  , _eCSTaskDefinitionContainerDefinitionSecrets = Nothing
   , _eCSTaskDefinitionContainerDefinitionStartTimeout = Nothing
   , _eCSTaskDefinitionContainerDefinitionStopTimeout = Nothing
   , _eCSTaskDefinitionContainerDefinitionUlimits = Nothing
@@ -241,6 +249,14 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-repositorycredentials
 ecstdcdRepositoryCredentials :: Lens' ECSTaskDefinitionContainerDefinition (Maybe ECSTaskDefinitionRepositoryCredentials)
 ecstdcdRepositoryCredentials = lens _eCSTaskDefinitionContainerDefinitionRepositoryCredentials (\s a -> s { _eCSTaskDefinitionContainerDefinitionRepositoryCredentials = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-resourcerequirements
+ecstdcdResourceRequirements :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [ECSTaskDefinitionResourceRequirement])
+ecstdcdResourceRequirements = lens _eCSTaskDefinitionContainerDefinitionResourceRequirements (\s a -> s { _eCSTaskDefinitionContainerDefinitionResourceRequirements = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-secrets
+ecstdcdSecrets :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [ECSTaskDefinitionSecret])
+ecstdcdSecrets = lens _eCSTaskDefinitionContainerDefinitionSecrets (\s a -> s { _eCSTaskDefinitionContainerDefinitionSecrets = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-starttimeout
 ecstdcdStartTimeout :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Integer))
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionResourceRequirement.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionResourceRequirement.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionResourceRequirement.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-resourcerequirement.html
+
+module Stratosphere.ResourceProperties.ECSTaskDefinitionResourceRequirement where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ECSTaskDefinitionResourceRequirement. See
+-- 'ecsTaskDefinitionResourceRequirement' for a more convenient constructor.
+data ECSTaskDefinitionResourceRequirement =
+  ECSTaskDefinitionResourceRequirement
+  { _eCSTaskDefinitionResourceRequirementType :: Val Text
+  , _eCSTaskDefinitionResourceRequirementValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ECSTaskDefinitionResourceRequirement where
+  toJSON ECSTaskDefinitionResourceRequirement{..} =
+    object $
+    catMaybes
+    [ (Just . ("Type",) . toJSON) _eCSTaskDefinitionResourceRequirementType
+    , (Just . ("Value",) . toJSON) _eCSTaskDefinitionResourceRequirementValue
+    ]
+
+-- | Constructor for 'ECSTaskDefinitionResourceRequirement' containing
+-- required fields as arguments.
+ecsTaskDefinitionResourceRequirement
+  :: Val Text -- ^ 'ecstdrrType'
+  -> Val Text -- ^ 'ecstdrrValue'
+  -> ECSTaskDefinitionResourceRequirement
+ecsTaskDefinitionResourceRequirement typearg valuearg =
+  ECSTaskDefinitionResourceRequirement
+  { _eCSTaskDefinitionResourceRequirementType = typearg
+  , _eCSTaskDefinitionResourceRequirementValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-resourcerequirement.html#cfn-ecs-taskdefinition-resourcerequirement-type
+ecstdrrType :: Lens' ECSTaskDefinitionResourceRequirement (Val Text)
+ecstdrrType = lens _eCSTaskDefinitionResourceRequirementType (\s a -> s { _eCSTaskDefinitionResourceRequirementType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-resourcerequirement.html#cfn-ecs-taskdefinition-resourcerequirement-value
+ecstdrrValue :: Lens' ECSTaskDefinitionResourceRequirement (Val Text)
+ecstdrrValue = lens _eCSTaskDefinitionResourceRequirementValue (\s a -> s { _eCSTaskDefinitionResourceRequirementValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionSecret.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionSecret.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionSecret.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-secret.html
+
+module Stratosphere.ResourceProperties.ECSTaskDefinitionSecret where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ECSTaskDefinitionSecret. See
+-- 'ecsTaskDefinitionSecret' for a more convenient constructor.
+data ECSTaskDefinitionSecret =
+  ECSTaskDefinitionSecret
+  { _eCSTaskDefinitionSecretName :: Val Text
+  , _eCSTaskDefinitionSecretValueFrom :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ECSTaskDefinitionSecret where
+  toJSON ECSTaskDefinitionSecret{..} =
+    object $
+    catMaybes
+    [ (Just . ("Name",) . toJSON) _eCSTaskDefinitionSecretName
+    , (Just . ("ValueFrom",) . toJSON) _eCSTaskDefinitionSecretValueFrom
+    ]
+
+-- | Constructor for 'ECSTaskDefinitionSecret' containing required fields as
+-- arguments.
+ecsTaskDefinitionSecret
+  :: Val Text -- ^ 'ecstdsName'
+  -> Val Text -- ^ 'ecstdsValueFrom'
+  -> ECSTaskDefinitionSecret
+ecsTaskDefinitionSecret namearg valueFromarg =
+  ECSTaskDefinitionSecret
+  { _eCSTaskDefinitionSecretName = namearg
+  , _eCSTaskDefinitionSecretValueFrom = valueFromarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-secret.html#cfn-ecs-taskdefinition-secret-name
+ecstdsName :: Lens' ECSTaskDefinitionSecret (Val Text)
+ecstdsName = lens _eCSTaskDefinitionSecretName (\s a -> s { _eCSTaskDefinitionSecretName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-secret.html#cfn-ecs-taskdefinition-secret-valuefrom
+ecstdsValueFrom :: Lens' ECSTaskDefinitionSecret (Val Text)
+ecstdsValueFrom = lens _eCSTaskDefinitionSecretValueFrom (\s a -> s { _eCSTaskDefinitionSecretValueFrom = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EFSFileSystemLifecyclePolicy.hs b/library-gen/Stratosphere/ResourceProperties/EFSFileSystemLifecyclePolicy.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EFSFileSystemLifecyclePolicy.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticfilesystem-filesystem-lifecyclepolicy.html
+
+module Stratosphere.ResourceProperties.EFSFileSystemLifecyclePolicy where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EFSFileSystemLifecyclePolicy. See
+-- 'efsFileSystemLifecyclePolicy' for a more convenient constructor.
+data EFSFileSystemLifecyclePolicy =
+  EFSFileSystemLifecyclePolicy
+  { _eFSFileSystemLifecyclePolicyTransitionToIA :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON EFSFileSystemLifecyclePolicy where
+  toJSON EFSFileSystemLifecyclePolicy{..} =
+    object $
+    catMaybes
+    [ (Just . ("TransitionToIA",) . toJSON) _eFSFileSystemLifecyclePolicyTransitionToIA
+    ]
+
+-- | Constructor for 'EFSFileSystemLifecyclePolicy' containing required fields
+-- as arguments.
+efsFileSystemLifecyclePolicy
+  :: Val Text -- ^ 'efsfslpTransitionToIA'
+  -> EFSFileSystemLifecyclePolicy
+efsFileSystemLifecyclePolicy transitionToIAarg =
+  EFSFileSystemLifecyclePolicy
+  { _eFSFileSystemLifecyclePolicyTransitionToIA = transitionToIAarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticfilesystem-filesystem-lifecyclepolicy.html#cfn-elasticfilesystem-filesystem-lifecyclepolicy-transitiontoia
+efsfslpTransitionToIA :: Lens' EFSFileSystemLifecyclePolicy (Val Text)
+efsfslpTransitionToIA = lens _eFSFileSystemLifecyclePolicyTransitionToIA (\s a -> s { _eFSFileSystemLifecyclePolicyTransitionToIA = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
@@ -22,6 +22,7 @@
   , _eMRClusterJobFlowInstancesConfigCoreInstanceGroup :: Maybe EMRClusterInstanceGroupConfig
   , _eMRClusterJobFlowInstancesConfigEc2KeyName :: Maybe (Val Text)
   , _eMRClusterJobFlowInstancesConfigEc2SubnetId :: Maybe (Val Text)
+  , _eMRClusterJobFlowInstancesConfigEc2SubnetIds :: Maybe (ValList Text)
   , _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup :: Maybe (Val Text)
   , _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup :: Maybe (Val Text)
   , _eMRClusterJobFlowInstancesConfigHadoopVersion :: Maybe (Val Text)
@@ -43,6 +44,7 @@
     , fmap (("CoreInstanceGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigCoreInstanceGroup
     , fmap (("Ec2KeyName",) . toJSON) _eMRClusterJobFlowInstancesConfigEc2KeyName
     , fmap (("Ec2SubnetId",) . toJSON) _eMRClusterJobFlowInstancesConfigEc2SubnetId
+    , fmap (("Ec2SubnetIds",) . toJSON) _eMRClusterJobFlowInstancesConfigEc2SubnetIds
     , fmap (("EmrManagedMasterSecurityGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup
     , fmap (("EmrManagedSlaveSecurityGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup
     , fmap (("HadoopVersion",) . toJSON) _eMRClusterJobFlowInstancesConfigHadoopVersion
@@ -66,6 +68,7 @@
   , _eMRClusterJobFlowInstancesConfigCoreInstanceGroup = Nothing
   , _eMRClusterJobFlowInstancesConfigEc2KeyName = Nothing
   , _eMRClusterJobFlowInstancesConfigEc2SubnetId = Nothing
+  , _eMRClusterJobFlowInstancesConfigEc2SubnetIds = Nothing
   , _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup = Nothing
   , _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup = Nothing
   , _eMRClusterJobFlowInstancesConfigHadoopVersion = Nothing
@@ -100,6 +103,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-ec2subnetid
 emrcjficEc2SubnetId :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
 emrcjficEc2SubnetId = lens _eMRClusterJobFlowInstancesConfigEc2SubnetId (\s a -> s { _eMRClusterJobFlowInstancesConfigEc2SubnetId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-ec2subnetids
+emrcjficEc2SubnetIds :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (ValList Text))
+emrcjficEc2SubnetIds = lens _eMRClusterJobFlowInstancesConfigEc2SubnetIds (\s a -> s { _eMRClusterJobFlowInstancesConfigEc2SubnetIds = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-emrmanagedmastersecuritygroup
 emrcjficEmrManagedMasterSecurityGroup :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHostHeaderConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHostHeaderConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHostHeaderConfig.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-hostheaderconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHostHeaderConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleHostHeaderConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleHostHeaderConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleHostHeaderConfig =
+  ElasticLoadBalancingV2ListenerRuleHostHeaderConfig
+  { _elasticLoadBalancingV2ListenerRuleHostHeaderConfigValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleHostHeaderConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleHostHeaderConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRuleHostHeaderConfigValues
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleHostHeaderConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleHostHeaderConfig
+  :: ElasticLoadBalancingV2ListenerRuleHostHeaderConfig
+elasticLoadBalancingV2ListenerRuleHostHeaderConfig  =
+  ElasticLoadBalancingV2ListenerRuleHostHeaderConfig
+  { _elasticLoadBalancingV2ListenerRuleHostHeaderConfigValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-hostheaderconfig.html#cfn-elasticloadbalancingv2-listenerrule-hostheaderconfig-values
+elbvlrhohcValues :: Lens' ElasticLoadBalancingV2ListenerRuleHostHeaderConfig (Maybe (ValList Text))
+elbvlrhohcValues = lens _elasticLoadBalancingV2ListenerRuleHostHeaderConfigValues (\s a -> s { _elasticLoadBalancingV2ListenerRuleHostHeaderConfigValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig.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-httpheaderconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleHttpHeaderConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig =
+  ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig
+  { _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigHttpHeaderName :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("HttpHeaderName",) . toJSON) _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigHttpHeaderName
+    , fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigValues
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleHttpHeaderConfig
+  :: ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig
+elasticLoadBalancingV2ListenerRuleHttpHeaderConfig  =
+  ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig
+  { _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigHttpHeaderName = Nothing
+  , _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-httpheaderconfig.html#cfn-elasticloadbalancingv2-listenerrule-httpheaderconfig-httpheadername
+elbvlrhthcHttpHeaderName :: Lens' ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig (Maybe (Val Text))
+elbvlrhthcHttpHeaderName = lens _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigHttpHeaderName (\s a -> s { _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigHttpHeaderName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-httpheaderconfig.html#cfn-elasticloadbalancingv2-listenerrule-httpheaderconfig-values
+elbvlrhthcValues :: Lens' ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig (Maybe (ValList Text))
+elbvlrhthcValues = lens _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigValues (\s a -> s { _elasticLoadBalancingV2ListenerRuleHttpHeaderConfigValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-httprequestmethodconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig =
+  ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
+  { _elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfigValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfigValues
+    ]
+
+-- | Constructor for
+-- 'ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig' containing
+-- required fields as arguments.
+elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
+  :: ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
+elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig  =
+  ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
+  { _elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfigValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-httprequestmethodconfig.html#cfn-elasticloadbalancingv2-listenerrule-httprequestmethodconfig-values
+elbvlrhrmcValues :: Lens' ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig (Maybe (ValList Text))
+elbvlrhrmcValues = lens _elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfigValues (\s a -> s { _elasticLoadBalancingV2ListenerRuleHttpRequestMethodConfigValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRulePathPatternConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRulePathPatternConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRulePathPatternConfig.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-pathpatternconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRulePathPatternConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRulePathPatternConfig. See
+-- 'elasticLoadBalancingV2ListenerRulePathPatternConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRulePathPatternConfig =
+  ElasticLoadBalancingV2ListenerRulePathPatternConfig
+  { _elasticLoadBalancingV2ListenerRulePathPatternConfigValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRulePathPatternConfig where
+  toJSON ElasticLoadBalancingV2ListenerRulePathPatternConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRulePathPatternConfigValues
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRulePathPatternConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRulePathPatternConfig
+  :: ElasticLoadBalancingV2ListenerRulePathPatternConfig
+elasticLoadBalancingV2ListenerRulePathPatternConfig  =
+  ElasticLoadBalancingV2ListenerRulePathPatternConfig
+  { _elasticLoadBalancingV2ListenerRulePathPatternConfigValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-pathpatternconfig.html#cfn-elasticloadbalancingv2-listenerrule-pathpatternconfig-values
+elbvlrppcValues :: Lens' ElasticLoadBalancingV2ListenerRulePathPatternConfig (Maybe (ValList Text))
+elbvlrppcValues = lens _elasticLoadBalancingV2ListenerRulePathPatternConfigValues (\s a -> s { _elasticLoadBalancingV2ListenerRulePathPatternConfigValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleQueryStringConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleQueryStringConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleQueryStringConfig.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-querystringconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleQueryStringConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleQueryStringConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleQueryStringConfig =
+  ElasticLoadBalancingV2ListenerRuleQueryStringConfig
+  { _elasticLoadBalancingV2ListenerRuleQueryStringConfigValues :: Maybe [ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue]
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleQueryStringConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleQueryStringConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRuleQueryStringConfigValues
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleQueryStringConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleQueryStringConfig
+  :: ElasticLoadBalancingV2ListenerRuleQueryStringConfig
+elasticLoadBalancingV2ListenerRuleQueryStringConfig  =
+  ElasticLoadBalancingV2ListenerRuleQueryStringConfig
+  { _elasticLoadBalancingV2ListenerRuleQueryStringConfigValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-querystringconfig.html#cfn-elasticloadbalancingv2-listenerrule-querystringconfig-values
+elbvlrqscValues :: Lens' ElasticLoadBalancingV2ListenerRuleQueryStringConfig (Maybe [ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue])
+elbvlrqscValues = lens _elasticLoadBalancingV2ListenerRuleQueryStringConfigValues (\s a -> s { _elasticLoadBalancingV2ListenerRuleQueryStringConfigValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue.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-querystringkeyvalue.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue. See
+-- 'elasticLoadBalancingV2ListenerRuleQueryStringKeyValue' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue =
+  ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue
+  { _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueKey :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue where
+  toJSON ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueKey
+    , fmap (("Value",) . toJSON) _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueValue
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleQueryStringKeyValue
+  :: ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue
+elasticLoadBalancingV2ListenerRuleQueryStringKeyValue  =
+  ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue
+  { _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueKey = Nothing
+  , _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-querystringkeyvalue.html#cfn-elasticloadbalancingv2-listenerrule-querystringkeyvalue-key
+elbvlrqskvKey :: Lens' ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue (Maybe (Val Text))
+elbvlrqskvKey = lens _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueKey (\s a -> s { _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-querystringkeyvalue.html#cfn-elasticloadbalancingv2-listenerrule-querystringkeyvalue-value
+elbvlrqskvValue :: Lens' ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue (Maybe (Val Text))
+elbvlrqskvValue = lens _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueValue (\s a -> s { _elasticLoadBalancingV2ListenerRuleQueryStringKeyValueValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRuleCondition.hs
@@ -8,7 +8,12 @@
 module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHostHeaderConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRulePathPatternConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleSourceIpConfig
 
 -- | Full data type definition for
 -- ElasticLoadBalancingV2ListenerRuleRuleCondition. See
@@ -17,6 +22,12 @@
 data ElasticLoadBalancingV2ListenerRuleRuleCondition =
   ElasticLoadBalancingV2ListenerRuleRuleCondition
   { _elasticLoadBalancingV2ListenerRuleRuleConditionField :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionHostHeaderConfig :: Maybe ElasticLoadBalancingV2ListenerRuleHostHeaderConfig
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionHttpHeaderConfig :: Maybe ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionHttpRequestMethodConfig :: Maybe ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionPathPatternConfig :: Maybe ElasticLoadBalancingV2ListenerRulePathPatternConfig
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionQueryStringConfig :: Maybe ElasticLoadBalancingV2ListenerRuleQueryStringConfig
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionSourceIpConfig :: Maybe ElasticLoadBalancingV2ListenerRuleSourceIpConfig
   , _elasticLoadBalancingV2ListenerRuleRuleConditionValues :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
@@ -25,6 +36,12 @@
     object $
     catMaybes
     [ fmap (("Field",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionField
+    , fmap (("HostHeaderConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionHostHeaderConfig
+    , fmap (("HttpHeaderConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionHttpHeaderConfig
+    , fmap (("HttpRequestMethodConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionHttpRequestMethodConfig
+    , fmap (("PathPatternConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionPathPatternConfig
+    , fmap (("QueryStringConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionQueryStringConfig
+    , fmap (("SourceIpConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionSourceIpConfig
     , fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRuleRuleConditionValues
     ]
 
@@ -35,12 +52,42 @@
 elasticLoadBalancingV2ListenerRuleRuleCondition  =
   ElasticLoadBalancingV2ListenerRuleRuleCondition
   { _elasticLoadBalancingV2ListenerRuleRuleConditionField = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionHostHeaderConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionHttpHeaderConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionHttpRequestMethodConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionPathPatternConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionQueryStringConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRuleConditionSourceIpConfig = Nothing
   , _elasticLoadBalancingV2ListenerRuleRuleConditionValues = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-field
 elbvlrrcField :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe (Val Text))
 elbvlrrcField = lens _elasticLoadBalancingV2ListenerRuleRuleConditionField (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionField = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig
+elbvlrrcHostHeaderConfig :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe ElasticLoadBalancingV2ListenerRuleHostHeaderConfig)
+elbvlrrcHostHeaderConfig = lens _elasticLoadBalancingV2ListenerRuleRuleConditionHostHeaderConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionHostHeaderConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig
+elbvlrrcHttpHeaderConfig :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig)
+elbvlrrcHttpHeaderConfig = lens _elasticLoadBalancingV2ListenerRuleRuleConditionHttpHeaderConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionHttpHeaderConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig
+elbvlrrcHttpRequestMethodConfig :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig)
+elbvlrrcHttpRequestMethodConfig = lens _elasticLoadBalancingV2ListenerRuleRuleConditionHttpRequestMethodConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionHttpRequestMethodConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig
+elbvlrrcPathPatternConfig :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe ElasticLoadBalancingV2ListenerRulePathPatternConfig)
+elbvlrrcPathPatternConfig = lens _elasticLoadBalancingV2ListenerRuleRuleConditionPathPatternConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionPathPatternConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig
+elbvlrrcQueryStringConfig :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe ElasticLoadBalancingV2ListenerRuleQueryStringConfig)
+elbvlrrcQueryStringConfig = lens _elasticLoadBalancingV2ListenerRuleRuleConditionQueryStringConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionQueryStringConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig
+elbvlrrcSourceIpConfig :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe ElasticLoadBalancingV2ListenerRuleSourceIpConfig)
+elbvlrrcSourceIpConfig = lens _elasticLoadBalancingV2ListenerRuleRuleConditionSourceIpConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleRuleConditionSourceIpConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-values
 elbvlrrcValues :: Lens' ElasticLoadBalancingV2ListenerRuleRuleCondition (Maybe (ValList Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleSourceIpConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleSourceIpConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleSourceIpConfig.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-sourceipconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleSourceIpConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleSourceIpConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleSourceIpConfig' for a more convenient
+-- constructor.
+data ElasticLoadBalancingV2ListenerRuleSourceIpConfig =
+  ElasticLoadBalancingV2ListenerRuleSourceIpConfig
+  { _elasticLoadBalancingV2ListenerRuleSourceIpConfigValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleSourceIpConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleSourceIpConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Values",) . toJSON) _elasticLoadBalancingV2ListenerRuleSourceIpConfigValues
+    ]
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleSourceIpConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleSourceIpConfig
+  :: ElasticLoadBalancingV2ListenerRuleSourceIpConfig
+elasticLoadBalancingV2ListenerRuleSourceIpConfig  =
+  ElasticLoadBalancingV2ListenerRuleSourceIpConfig
+  { _elasticLoadBalancingV2ListenerRuleSourceIpConfigValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-sourceipconfig.html#cfn-elasticloadbalancingv2-listenerrule-sourceipconfig-values
+elbvlrsicValues :: Lens' ElasticLoadBalancingV2ListenerRuleSourceIpConfig (Maybe (ValList Text))
+elbvlrsicValues = lens _elasticLoadBalancingV2ListenerRuleSourceIpConfigValues (\s a -> s { _elasticLoadBalancingV2ListenerRuleSourceIpConfigValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentDeliveryRule.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentDeliveryRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentDeliveryRule.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-datasetcontentdeliveryrule.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRule where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+
+-- | Full data type definition for
+-- IoTAnalyticsDatasetDatasetContentDeliveryRule. See
+-- 'ioTAnalyticsDatasetDatasetContentDeliveryRule' for a more convenient
+-- constructor.
+data IoTAnalyticsDatasetDatasetContentDeliveryRule =
+  IoTAnalyticsDatasetDatasetContentDeliveryRule
+  { _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination :: IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+  , _ioTAnalyticsDatasetDatasetContentDeliveryRuleEntryName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetDatasetContentDeliveryRule where
+  toJSON IoTAnalyticsDatasetDatasetContentDeliveryRule{..} =
+    object $
+    catMaybes
+    [ (Just . ("Destination",) . toJSON) _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+    , fmap (("EntryName",) . toJSON) _ioTAnalyticsDatasetDatasetContentDeliveryRuleEntryName
+    ]
+
+-- | Constructor for 'IoTAnalyticsDatasetDatasetContentDeliveryRule'
+-- containing required fields as arguments.
+ioTAnalyticsDatasetDatasetContentDeliveryRule
+  :: IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination -- ^ 'itaddcdrDestination'
+  -> IoTAnalyticsDatasetDatasetContentDeliveryRule
+ioTAnalyticsDatasetDatasetContentDeliveryRule destinationarg =
+  IoTAnalyticsDatasetDatasetContentDeliveryRule
+  { _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination = destinationarg
+  , _ioTAnalyticsDatasetDatasetContentDeliveryRuleEntryName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-datasetcontentdeliveryrule.html#cfn-iotanalytics-dataset-datasetcontentdeliveryrule-destination
+itaddcdrDestination :: Lens' IoTAnalyticsDatasetDatasetContentDeliveryRule IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+itaddcdrDestination = lens _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination (\s a -> s { _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-datasetcontentdeliveryrule.html#cfn-iotanalytics-dataset-datasetcontentdeliveryrule-entryname
+itaddcdrEntryName :: Lens' IoTAnalyticsDatasetDatasetContentDeliveryRule (Maybe (Val Text))
+itaddcdrEntryName = lens _ioTAnalyticsDatasetDatasetContentDeliveryRuleEntryName (\s a -> s { _ioTAnalyticsDatasetDatasetContentDeliveryRuleEntryName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-datasetcontentdeliveryruledestination.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetIotEventsDestinationConfiguration
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetS3DestinationConfiguration
+
+-- | Full data type definition for
+-- IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination. See
+-- 'ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination' for a more
+-- convenient constructor.
+data IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination =
+  IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+  { _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationIotEventsDestinationConfiguration :: Maybe IoTAnalyticsDatasetIotEventsDestinationConfiguration
+  , _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationS3DestinationConfiguration :: Maybe IoTAnalyticsDatasetS3DestinationConfiguration
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination where
+  toJSON IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination{..} =
+    object $
+    catMaybes
+    [ fmap (("IotEventsDestinationConfiguration",) . toJSON) _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationIotEventsDestinationConfiguration
+    , fmap (("S3DestinationConfiguration",) . toJSON) _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationS3DestinationConfiguration
+    ]
+
+-- | Constructor for
+-- 'IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination' containing
+-- required fields as arguments.
+ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+  :: IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+ioTAnalyticsDatasetDatasetContentDeliveryRuleDestination  =
+  IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination
+  { _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationIotEventsDestinationConfiguration = Nothing
+  , _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationS3DestinationConfiguration = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-datasetcontentdeliveryruledestination.html#cfn-iotanalytics-dataset-datasetcontentdeliveryruledestination-ioteventsdestinationconfiguration
+itaddcdrdIotEventsDestinationConfiguration :: Lens' IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination (Maybe IoTAnalyticsDatasetIotEventsDestinationConfiguration)
+itaddcdrdIotEventsDestinationConfiguration = lens _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationIotEventsDestinationConfiguration (\s a -> s { _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationIotEventsDestinationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-datasetcontentdeliveryruledestination.html#cfn-iotanalytics-dataset-datasetcontentdeliveryruledestination-s3destinationconfiguration
+itaddcdrdS3DestinationConfiguration :: Lens' IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination (Maybe IoTAnalyticsDatasetS3DestinationConfiguration)
+itaddcdrdS3DestinationConfiguration = lens _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationS3DestinationConfiguration (\s a -> s { _ioTAnalyticsDatasetDatasetContentDeliveryRuleDestinationS3DestinationConfiguration = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetGlueConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetGlueConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetGlueConfiguration.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-glueconfiguration.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetGlueConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetGlueConfiguration. See
+-- 'ioTAnalyticsDatasetGlueConfiguration' for a more convenient constructor.
+data IoTAnalyticsDatasetGlueConfiguration =
+  IoTAnalyticsDatasetGlueConfiguration
+  { _ioTAnalyticsDatasetGlueConfigurationDatabaseName :: Val Text
+  , _ioTAnalyticsDatasetGlueConfigurationTableName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetGlueConfiguration where
+  toJSON IoTAnalyticsDatasetGlueConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("DatabaseName",) . toJSON) _ioTAnalyticsDatasetGlueConfigurationDatabaseName
+    , (Just . ("TableName",) . toJSON) _ioTAnalyticsDatasetGlueConfigurationTableName
+    ]
+
+-- | Constructor for 'IoTAnalyticsDatasetGlueConfiguration' containing
+-- required fields as arguments.
+ioTAnalyticsDatasetGlueConfiguration
+  :: Val Text -- ^ 'itadgcDatabaseName'
+  -> Val Text -- ^ 'itadgcTableName'
+  -> IoTAnalyticsDatasetGlueConfiguration
+ioTAnalyticsDatasetGlueConfiguration databaseNamearg tableNamearg =
+  IoTAnalyticsDatasetGlueConfiguration
+  { _ioTAnalyticsDatasetGlueConfigurationDatabaseName = databaseNamearg
+  , _ioTAnalyticsDatasetGlueConfigurationTableName = tableNamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-glueconfiguration.html#cfn-iotanalytics-dataset-glueconfiguration-databasename
+itadgcDatabaseName :: Lens' IoTAnalyticsDatasetGlueConfiguration (Val Text)
+itadgcDatabaseName = lens _ioTAnalyticsDatasetGlueConfigurationDatabaseName (\s a -> s { _ioTAnalyticsDatasetGlueConfigurationDatabaseName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-glueconfiguration.html#cfn-iotanalytics-dataset-glueconfiguration-tablename
+itadgcTableName :: Lens' IoTAnalyticsDatasetGlueConfiguration (Val Text)
+itadgcTableName = lens _ioTAnalyticsDatasetGlueConfigurationTableName (\s a -> s { _ioTAnalyticsDatasetGlueConfigurationTableName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetIotEventsDestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetIotEventsDestinationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetIotEventsDestinationConfiguration.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-ioteventsdestinationconfiguration.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetIotEventsDestinationConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- IoTAnalyticsDatasetIotEventsDestinationConfiguration. See
+-- 'ioTAnalyticsDatasetIotEventsDestinationConfiguration' for a more
+-- convenient constructor.
+data IoTAnalyticsDatasetIotEventsDestinationConfiguration =
+  IoTAnalyticsDatasetIotEventsDestinationConfiguration
+  { _ioTAnalyticsDatasetIotEventsDestinationConfigurationInputName :: Val Text
+  , _ioTAnalyticsDatasetIotEventsDestinationConfigurationRoleArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetIotEventsDestinationConfiguration where
+  toJSON IoTAnalyticsDatasetIotEventsDestinationConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("InputName",) . toJSON) _ioTAnalyticsDatasetIotEventsDestinationConfigurationInputName
+    , (Just . ("RoleArn",) . toJSON) _ioTAnalyticsDatasetIotEventsDestinationConfigurationRoleArn
+    ]
+
+-- | Constructor for 'IoTAnalyticsDatasetIotEventsDestinationConfiguration'
+-- containing required fields as arguments.
+ioTAnalyticsDatasetIotEventsDestinationConfiguration
+  :: Val Text -- ^ 'itadiedcInputName'
+  -> Val Text -- ^ 'itadiedcRoleArn'
+  -> IoTAnalyticsDatasetIotEventsDestinationConfiguration
+ioTAnalyticsDatasetIotEventsDestinationConfiguration inputNamearg roleArnarg =
+  IoTAnalyticsDatasetIotEventsDestinationConfiguration
+  { _ioTAnalyticsDatasetIotEventsDestinationConfigurationInputName = inputNamearg
+  , _ioTAnalyticsDatasetIotEventsDestinationConfigurationRoleArn = roleArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-ioteventsdestinationconfiguration.html#cfn-iotanalytics-dataset-ioteventsdestinationconfiguration-inputname
+itadiedcInputName :: Lens' IoTAnalyticsDatasetIotEventsDestinationConfiguration (Val Text)
+itadiedcInputName = lens _ioTAnalyticsDatasetIotEventsDestinationConfigurationInputName (\s a -> s { _ioTAnalyticsDatasetIotEventsDestinationConfigurationInputName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-ioteventsdestinationconfiguration.html#cfn-iotanalytics-dataset-ioteventsdestinationconfiguration-rolearn
+itadiedcRoleArn :: Lens' IoTAnalyticsDatasetIotEventsDestinationConfiguration (Val Text)
+itadiedcRoleArn = lens _ioTAnalyticsDatasetIotEventsDestinationConfigurationRoleArn (\s a -> s { _ioTAnalyticsDatasetIotEventsDestinationConfigurationRoleArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetS3DestinationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetS3DestinationConfiguration.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-s3destinationconfiguration.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetS3DestinationConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetGlueConfiguration
+
+-- | Full data type definition for
+-- IoTAnalyticsDatasetS3DestinationConfiguration. See
+-- 'ioTAnalyticsDatasetS3DestinationConfiguration' for a more convenient
+-- constructor.
+data IoTAnalyticsDatasetS3DestinationConfiguration =
+  IoTAnalyticsDatasetS3DestinationConfiguration
+  { _ioTAnalyticsDatasetS3DestinationConfigurationBucket :: Val Text
+  , _ioTAnalyticsDatasetS3DestinationConfigurationGlueConfiguration :: Maybe IoTAnalyticsDatasetGlueConfiguration
+  , _ioTAnalyticsDatasetS3DestinationConfigurationKey :: Val Text
+  , _ioTAnalyticsDatasetS3DestinationConfigurationRoleArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetS3DestinationConfiguration where
+  toJSON IoTAnalyticsDatasetS3DestinationConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Bucket",) . toJSON) _ioTAnalyticsDatasetS3DestinationConfigurationBucket
+    , fmap (("GlueConfiguration",) . toJSON) _ioTAnalyticsDatasetS3DestinationConfigurationGlueConfiguration
+    , (Just . ("Key",) . toJSON) _ioTAnalyticsDatasetS3DestinationConfigurationKey
+    , (Just . ("RoleArn",) . toJSON) _ioTAnalyticsDatasetS3DestinationConfigurationRoleArn
+    ]
+
+-- | Constructor for 'IoTAnalyticsDatasetS3DestinationConfiguration'
+-- containing required fields as arguments.
+ioTAnalyticsDatasetS3DestinationConfiguration
+  :: Val Text -- ^ 'itadsdcBucket'
+  -> Val Text -- ^ 'itadsdcKey'
+  -> Val Text -- ^ 'itadsdcRoleArn'
+  -> IoTAnalyticsDatasetS3DestinationConfiguration
+ioTAnalyticsDatasetS3DestinationConfiguration bucketarg keyarg roleArnarg =
+  IoTAnalyticsDatasetS3DestinationConfiguration
+  { _ioTAnalyticsDatasetS3DestinationConfigurationBucket = bucketarg
+  , _ioTAnalyticsDatasetS3DestinationConfigurationGlueConfiguration = Nothing
+  , _ioTAnalyticsDatasetS3DestinationConfigurationKey = keyarg
+  , _ioTAnalyticsDatasetS3DestinationConfigurationRoleArn = roleArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-s3destinationconfiguration.html#cfn-iotanalytics-dataset-s3destinationconfiguration-bucket
+itadsdcBucket :: Lens' IoTAnalyticsDatasetS3DestinationConfiguration (Val Text)
+itadsdcBucket = lens _ioTAnalyticsDatasetS3DestinationConfigurationBucket (\s a -> s { _ioTAnalyticsDatasetS3DestinationConfigurationBucket = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-s3destinationconfiguration.html#cfn-iotanalytics-dataset-s3destinationconfiguration-glueconfiguration
+itadsdcGlueConfiguration :: Lens' IoTAnalyticsDatasetS3DestinationConfiguration (Maybe IoTAnalyticsDatasetGlueConfiguration)
+itadsdcGlueConfiguration = lens _ioTAnalyticsDatasetS3DestinationConfigurationGlueConfiguration (\s a -> s { _ioTAnalyticsDatasetS3DestinationConfigurationGlueConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-s3destinationconfiguration.html#cfn-iotanalytics-dataset-s3destinationconfiguration-key
+itadsdcKey :: Lens' IoTAnalyticsDatasetS3DestinationConfiguration (Val Text)
+itadsdcKey = lens _ioTAnalyticsDatasetS3DestinationConfigurationKey (\s a -> s { _ioTAnalyticsDatasetS3DestinationConfigurationKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-s3destinationconfiguration.html#cfn-iotanalytics-dataset-s3destinationconfiguration-rolearn
+itadsdcRoleArn :: Lens' IoTAnalyticsDatasetS3DestinationConfiguration (Val Text)
+itadsdcRoleArn = lens _ioTAnalyticsDatasetS3DestinationConfigurationRoleArn (\s a -> s { _ioTAnalyticsDatasetS3DestinationConfigurationRoleArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVersioningConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVersioningConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVersioningConfiguration.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-versioningconfiguration.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetVersioningConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetVersioningConfiguration.
+-- See 'ioTAnalyticsDatasetVersioningConfiguration' for a more convenient
+-- constructor.
+data IoTAnalyticsDatasetVersioningConfiguration =
+  IoTAnalyticsDatasetVersioningConfiguration
+  { _ioTAnalyticsDatasetVersioningConfigurationMaxVersions :: Maybe (Val Integer)
+  , _ioTAnalyticsDatasetVersioningConfigurationUnlimited :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetVersioningConfiguration where
+  toJSON IoTAnalyticsDatasetVersioningConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("MaxVersions",) . toJSON) _ioTAnalyticsDatasetVersioningConfigurationMaxVersions
+    , fmap (("Unlimited",) . toJSON) _ioTAnalyticsDatasetVersioningConfigurationUnlimited
+    ]
+
+-- | Constructor for 'IoTAnalyticsDatasetVersioningConfiguration' containing
+-- required fields as arguments.
+ioTAnalyticsDatasetVersioningConfiguration
+  :: IoTAnalyticsDatasetVersioningConfiguration
+ioTAnalyticsDatasetVersioningConfiguration  =
+  IoTAnalyticsDatasetVersioningConfiguration
+  { _ioTAnalyticsDatasetVersioningConfigurationMaxVersions = Nothing
+  , _ioTAnalyticsDatasetVersioningConfigurationUnlimited = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-versioningconfiguration.html#cfn-iotanalytics-dataset-versioningconfiguration-maxversions
+itadvcMaxVersions :: Lens' IoTAnalyticsDatasetVersioningConfiguration (Maybe (Val Integer))
+itadvcMaxVersions = lens _ioTAnalyticsDatasetVersioningConfigurationMaxVersions (\s a -> s { _ioTAnalyticsDatasetVersioningConfigurationMaxVersions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-versioningconfiguration.html#cfn-iotanalytics-dataset-versioningconfiguration-unlimited
+itadvcUnlimited :: Lens' IoTAnalyticsDatasetVersioningConfiguration (Maybe (Val Bool))
+itadvcUnlimited = lens _ioTAnalyticsDatasetVersioningConfigurationUnlimited (\s a -> s { _ioTAnalyticsDatasetVersioningConfigurationUnlimited = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTThingsGraphFlowTemplateDefinitionDocument.hs b/library-gen/Stratosphere/ResourceProperties/IoTThingsGraphFlowTemplateDefinitionDocument.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTThingsGraphFlowTemplateDefinitionDocument.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotthingsgraph-flowtemplate-definitiondocument.html
+
+module Stratosphere.ResourceProperties.IoTThingsGraphFlowTemplateDefinitionDocument where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- IoTThingsGraphFlowTemplateDefinitionDocument. See
+-- 'ioTThingsGraphFlowTemplateDefinitionDocument' for a more convenient
+-- constructor.
+data IoTThingsGraphFlowTemplateDefinitionDocument =
+  IoTThingsGraphFlowTemplateDefinitionDocument
+  { _ioTThingsGraphFlowTemplateDefinitionDocumentLanguage :: Val Text
+  , _ioTThingsGraphFlowTemplateDefinitionDocumentText :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTThingsGraphFlowTemplateDefinitionDocument where
+  toJSON IoTThingsGraphFlowTemplateDefinitionDocument{..} =
+    object $
+    catMaybes
+    [ (Just . ("Language",) . toJSON) _ioTThingsGraphFlowTemplateDefinitionDocumentLanguage
+    , (Just . ("Text",) . toJSON) _ioTThingsGraphFlowTemplateDefinitionDocumentText
+    ]
+
+-- | Constructor for 'IoTThingsGraphFlowTemplateDefinitionDocument' containing
+-- required fields as arguments.
+ioTThingsGraphFlowTemplateDefinitionDocument
+  :: Val Text -- ^ 'ittgftddLanguage'
+  -> Val Text -- ^ 'ittgftddText'
+  -> IoTThingsGraphFlowTemplateDefinitionDocument
+ioTThingsGraphFlowTemplateDefinitionDocument languagearg textarg =
+  IoTThingsGraphFlowTemplateDefinitionDocument
+  { _ioTThingsGraphFlowTemplateDefinitionDocumentLanguage = languagearg
+  , _ioTThingsGraphFlowTemplateDefinitionDocumentText = textarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotthingsgraph-flowtemplate-definitiondocument.html#cfn-iotthingsgraph-flowtemplate-definitiondocument-language
+ittgftddLanguage :: Lens' IoTThingsGraphFlowTemplateDefinitionDocument (Val Text)
+ittgftddLanguage = lens _ioTThingsGraphFlowTemplateDefinitionDocumentLanguage (\s a -> s { _ioTThingsGraphFlowTemplateDefinitionDocumentLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotthingsgraph-flowtemplate-definitiondocument.html#cfn-iotthingsgraph-flowtemplate-definitiondocument-text
+ittgftddText :: Lens' IoTThingsGraphFlowTemplateDefinitionDocument (Val Text)
+ittgftddText = lens _ioTThingsGraphFlowTemplateDefinitionDocumentText (\s a -> s { _ioTThingsGraphFlowTemplateDefinitionDocumentText = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-dataformatconversionconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamInputFormatConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOutputFormatConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSchemaConfiguration
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamDataFormatConversionConfiguration' for a
+-- more convenient constructor.
+data KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration =
+  KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration
+  { _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationEnabled :: Val Bool
+  , _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationInputFormatConfiguration :: KinesisFirehoseDeliveryStreamInputFormatConfiguration
+  , _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationOutputFormatConfiguration :: KinesisFirehoseDeliveryStreamOutputFormatConfiguration
+  , _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationSchemaConfiguration :: KinesisFirehoseDeliveryStreamSchemaConfiguration
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Enabled",) . toJSON) _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationEnabled
+    , (Just . ("InputFormatConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationInputFormatConfiguration
+    , (Just . ("OutputFormatConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationOutputFormatConfiguration
+    , (Just . ("SchemaConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationSchemaConfiguration
+    ]
+
+-- | Constructor for
+-- 'KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamDataFormatConversionConfiguration
+  :: Val Bool -- ^ 'kfdsdfccEnabled'
+  -> KinesisFirehoseDeliveryStreamInputFormatConfiguration -- ^ 'kfdsdfccInputFormatConfiguration'
+  -> KinesisFirehoseDeliveryStreamOutputFormatConfiguration -- ^ 'kfdsdfccOutputFormatConfiguration'
+  -> KinesisFirehoseDeliveryStreamSchemaConfiguration -- ^ 'kfdsdfccSchemaConfiguration'
+  -> KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration
+kinesisFirehoseDeliveryStreamDataFormatConversionConfiguration enabledarg inputFormatConfigurationarg outputFormatConfigurationarg schemaConfigurationarg =
+  KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration
+  { _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationEnabled = enabledarg
+  , _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationInputFormatConfiguration = inputFormatConfigurationarg
+  , _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationOutputFormatConfiguration = outputFormatConfigurationarg
+  , _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationSchemaConfiguration = schemaConfigurationarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-dataformatconversionconfiguration.html#cfn-kinesisfirehose-deliverystream-dataformatconversionconfiguration-enabled
+kfdsdfccEnabled :: Lens' KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration (Val Bool)
+kfdsdfccEnabled = lens _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationEnabled (\s a -> s { _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-dataformatconversionconfiguration.html#cfn-kinesisfirehose-deliverystream-dataformatconversionconfiguration-inputformatconfiguration
+kfdsdfccInputFormatConfiguration :: Lens' KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration KinesisFirehoseDeliveryStreamInputFormatConfiguration
+kfdsdfccInputFormatConfiguration = lens _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationInputFormatConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationInputFormatConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-dataformatconversionconfiguration.html#cfn-kinesisfirehose-deliverystream-dataformatconversionconfiguration-outputformatconfiguration
+kfdsdfccOutputFormatConfiguration :: Lens' KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration KinesisFirehoseDeliveryStreamOutputFormatConfiguration
+kfdsdfccOutputFormatConfiguration = lens _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationOutputFormatConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationOutputFormatConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-dataformatconversionconfiguration.html#cfn-kinesisfirehose-deliverystream-dataformatconversionconfiguration-schemaconfiguration
+kfdsdfccSchemaConfiguration :: Lens' KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration KinesisFirehoseDeliveryStreamSchemaConfiguration
+kfdsdfccSchemaConfiguration = lens _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationSchemaConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamDataFormatConversionConfigurationSchemaConfiguration = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamDeserializer.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamDeserializer.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamDeserializer.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-deserializer.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDeserializer where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamHiveJsonSerDe
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOpenXJsonSerDe
+
+-- | Full data type definition for KinesisFirehoseDeliveryStreamDeserializer.
+-- See 'kinesisFirehoseDeliveryStreamDeserializer' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamDeserializer =
+  KinesisFirehoseDeliveryStreamDeserializer
+  { _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe :: Maybe KinesisFirehoseDeliveryStreamHiveJsonSerDe
+  , _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe :: Maybe KinesisFirehoseDeliveryStreamOpenXJsonSerDe
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamDeserializer where
+  toJSON KinesisFirehoseDeliveryStreamDeserializer{..} =
+    object $
+    catMaybes
+    [ fmap (("HiveJsonSerDe",) . toJSON) _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe
+    , fmap (("OpenXJsonSerDe",) . toJSON) _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamDeserializer' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamDeserializer
+  :: KinesisFirehoseDeliveryStreamDeserializer
+kinesisFirehoseDeliveryStreamDeserializer  =
+  KinesisFirehoseDeliveryStreamDeserializer
+  { _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe = Nothing
+  , _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-deserializer.html#cfn-kinesisfirehose-deliverystream-deserializer-hivejsonserde
+kfdsdHiveJsonSerDe :: Lens' KinesisFirehoseDeliveryStreamDeserializer (Maybe KinesisFirehoseDeliveryStreamHiveJsonSerDe)
+kfdsdHiveJsonSerDe = lens _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe (\s a -> s { _kinesisFirehoseDeliveryStreamDeserializerHiveJsonSerDe = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-deserializer.html#cfn-kinesisfirehose-deliverystream-deserializer-openxjsonserde
+kfdsdOpenXJsonSerDe :: Lens' KinesisFirehoseDeliveryStreamDeserializer (Maybe KinesisFirehoseDeliveryStreamOpenXJsonSerDe)
+kfdsdOpenXJsonSerDe = lens _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe (\s a -> s { _kinesisFirehoseDeliveryStreamDeserializerOpenXJsonSerDe = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration.hs
@@ -10,6 +10,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
@@ -24,8 +25,10 @@
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints :: KinesisFirehoseDeliveryStreamBufferingHints
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions :: Maybe KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat :: Val Text
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationDataFormatConversionConfiguration :: Maybe KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration :: Maybe KinesisFirehoseDeliveryStreamEncryptionConfiguration
-  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix :: Val Text
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationErrorOutputPrefix :: Maybe (Val Text)
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix :: Maybe (Val Text)
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration :: Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN :: Val Text
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration :: Maybe KinesisFirehoseDeliveryStreamS3DestinationConfiguration
@@ -40,8 +43,10 @@
     , (Just . ("BufferingHints",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints
     , fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions
     , (Just . ("CompressionFormat",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat
+    , fmap (("DataFormatConversionConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationDataFormatConversionConfiguration
     , fmap (("EncryptionConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration
-    , (Just . ("Prefix",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix
+    , fmap (("ErrorOutputPrefix",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationErrorOutputPrefix
+    , fmap (("Prefix",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix
     , fmap (("ProcessingConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration
     , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN
     , fmap (("S3BackupConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration
@@ -55,17 +60,18 @@
   :: Val Text -- ^ 'kfdsesdcBucketARN'
   -> KinesisFirehoseDeliveryStreamBufferingHints -- ^ 'kfdsesdcBufferingHints'
   -> Val Text -- ^ 'kfdsesdcCompressionFormat'
-  -> Val Text -- ^ 'kfdsesdcPrefix'
   -> Val Text -- ^ 'kfdsesdcRoleARN'
   -> KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
-kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration bucketARNarg bufferingHintsarg compressionFormatarg prefixarg roleARNarg =
+kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration bucketARNarg bufferingHintsarg compressionFormatarg roleARNarg =
   KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
   { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBucketARN = bucketARNarg
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationBufferingHints = bufferingHintsarg
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCloudWatchLoggingOptions = Nothing
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat = compressionFormatarg
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationDataFormatConversionConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration = Nothing
-  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix = prefixarg
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationErrorOutputPrefix = Nothing
+  , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix = Nothing
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationProcessingConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationRoleARN = roleARNarg
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationS3BackupConfiguration = Nothing
@@ -88,12 +94,20 @@
 kfdsesdcCompressionFormat :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Val Text)
 kfdsesdcCompressionFormat = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationCompressionFormat = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-dataformatconversionconfiguration
+kfdsesdcDataFormatConversionConfiguration :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration)
+kfdsesdcDataFormatConversionConfiguration = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationDataFormatConversionConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationDataFormatConversionConfiguration = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-encryptionconfiguration
 kfdsesdcEncryptionConfiguration :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamEncryptionConfiguration)
 kfdsesdcEncryptionConfiguration = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationEncryptionConfiguration = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-erroroutputprefix
+kfdsesdcErrorOutputPrefix :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe (Val Text))
+kfdsesdcErrorOutputPrefix = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationErrorOutputPrefix (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationErrorOutputPrefix = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-prefix
-kfdsesdcPrefix :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Val Text)
+kfdsesdcPrefix :: Lens' KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (Maybe (Val Text))
 kfdsesdcPrefix = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfigurationPrefix = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-extendeds3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration-processingconfiguration
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamHiveJsonSerDe.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamHiveJsonSerDe.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamHiveJsonSerDe.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-hivejsonserde.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamHiveJsonSerDe where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for KinesisFirehoseDeliveryStreamHiveJsonSerDe.
+-- See 'kinesisFirehoseDeliveryStreamHiveJsonSerDe' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamHiveJsonSerDe =
+  KinesisFirehoseDeliveryStreamHiveJsonSerDe
+  { _kinesisFirehoseDeliveryStreamHiveJsonSerDeTimestampFormats :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamHiveJsonSerDe where
+  toJSON KinesisFirehoseDeliveryStreamHiveJsonSerDe{..} =
+    object $
+    catMaybes
+    [ fmap (("TimestampFormats",) . toJSON) _kinesisFirehoseDeliveryStreamHiveJsonSerDeTimestampFormats
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamHiveJsonSerDe' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamHiveJsonSerDe
+  :: KinesisFirehoseDeliveryStreamHiveJsonSerDe
+kinesisFirehoseDeliveryStreamHiveJsonSerDe  =
+  KinesisFirehoseDeliveryStreamHiveJsonSerDe
+  { _kinesisFirehoseDeliveryStreamHiveJsonSerDeTimestampFormats = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-hivejsonserde.html#cfn-kinesisfirehose-deliverystream-hivejsonserde-timestampformats
+kfdshjsdTimestampFormats :: Lens' KinesisFirehoseDeliveryStreamHiveJsonSerDe (Maybe (ValList Text))
+kfdshjsdTimestampFormats = lens _kinesisFirehoseDeliveryStreamHiveJsonSerDeTimestampFormats (\s a -> s { _kinesisFirehoseDeliveryStreamHiveJsonSerDeTimestampFormats = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamInputFormatConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamInputFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamInputFormatConfiguration.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-inputformatconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamInputFormatConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDeserializer
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamInputFormatConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamInputFormatConfiguration' for a more
+-- convenient constructor.
+data KinesisFirehoseDeliveryStreamInputFormatConfiguration =
+  KinesisFirehoseDeliveryStreamInputFormatConfiguration
+  { _kinesisFirehoseDeliveryStreamInputFormatConfigurationDeserializer :: KinesisFirehoseDeliveryStreamDeserializer
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamInputFormatConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamInputFormatConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Deserializer",) . toJSON) _kinesisFirehoseDeliveryStreamInputFormatConfigurationDeserializer
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamInputFormatConfiguration'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamInputFormatConfiguration
+  :: KinesisFirehoseDeliveryStreamDeserializer -- ^ 'kfdsifcDeserializer'
+  -> KinesisFirehoseDeliveryStreamInputFormatConfiguration
+kinesisFirehoseDeliveryStreamInputFormatConfiguration deserializerarg =
+  KinesisFirehoseDeliveryStreamInputFormatConfiguration
+  { _kinesisFirehoseDeliveryStreamInputFormatConfigurationDeserializer = deserializerarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-inputformatconfiguration.html#cfn-kinesisfirehose-deliverystream-inputformatconfiguration-deserializer
+kfdsifcDeserializer :: Lens' KinesisFirehoseDeliveryStreamInputFormatConfiguration KinesisFirehoseDeliveryStreamDeserializer
+kfdsifcDeserializer = lens _kinesisFirehoseDeliveryStreamInputFormatConfigurationDeserializer (\s a -> s { _kinesisFirehoseDeliveryStreamInputFormatConfigurationDeserializer = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOpenXJsonSerDe.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOpenXJsonSerDe.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOpenXJsonSerDe.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-openxjsonserde.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOpenXJsonSerDe where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamOpenXJsonSerDe. See
+-- 'kinesisFirehoseDeliveryStreamOpenXJsonSerDe' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamOpenXJsonSerDe =
+  KinesisFirehoseDeliveryStreamOpenXJsonSerDe
+  { _kinesisFirehoseDeliveryStreamOpenXJsonSerDeCaseInsensitive :: Maybe (Val Bool)
+  , _kinesisFirehoseDeliveryStreamOpenXJsonSerDeColumnToJsonKeyMappings :: Maybe Object
+  , _kinesisFirehoseDeliveryStreamOpenXJsonSerDeConvertDotsInJsonKeysToUnderscores :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamOpenXJsonSerDe where
+  toJSON KinesisFirehoseDeliveryStreamOpenXJsonSerDe{..} =
+    object $
+    catMaybes
+    [ fmap (("CaseInsensitive",) . toJSON) _kinesisFirehoseDeliveryStreamOpenXJsonSerDeCaseInsensitive
+    , fmap (("ColumnToJsonKeyMappings",) . toJSON) _kinesisFirehoseDeliveryStreamOpenXJsonSerDeColumnToJsonKeyMappings
+    , fmap (("ConvertDotsInJsonKeysToUnderscores",) . toJSON) _kinesisFirehoseDeliveryStreamOpenXJsonSerDeConvertDotsInJsonKeysToUnderscores
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamOpenXJsonSerDe' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamOpenXJsonSerDe
+  :: KinesisFirehoseDeliveryStreamOpenXJsonSerDe
+kinesisFirehoseDeliveryStreamOpenXJsonSerDe  =
+  KinesisFirehoseDeliveryStreamOpenXJsonSerDe
+  { _kinesisFirehoseDeliveryStreamOpenXJsonSerDeCaseInsensitive = Nothing
+  , _kinesisFirehoseDeliveryStreamOpenXJsonSerDeColumnToJsonKeyMappings = Nothing
+  , _kinesisFirehoseDeliveryStreamOpenXJsonSerDeConvertDotsInJsonKeysToUnderscores = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-openxjsonserde.html#cfn-kinesisfirehose-deliverystream-openxjsonserde-caseinsensitive
+kfdsoxjsdCaseInsensitive :: Lens' KinesisFirehoseDeliveryStreamOpenXJsonSerDe (Maybe (Val Bool))
+kfdsoxjsdCaseInsensitive = lens _kinesisFirehoseDeliveryStreamOpenXJsonSerDeCaseInsensitive (\s a -> s { _kinesisFirehoseDeliveryStreamOpenXJsonSerDeCaseInsensitive = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-openxjsonserde.html#cfn-kinesisfirehose-deliverystream-openxjsonserde-columntojsonkeymappings
+kfdsoxjsdColumnToJsonKeyMappings :: Lens' KinesisFirehoseDeliveryStreamOpenXJsonSerDe (Maybe Object)
+kfdsoxjsdColumnToJsonKeyMappings = lens _kinesisFirehoseDeliveryStreamOpenXJsonSerDeColumnToJsonKeyMappings (\s a -> s { _kinesisFirehoseDeliveryStreamOpenXJsonSerDeColumnToJsonKeyMappings = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-openxjsonserde.html#cfn-kinesisfirehose-deliverystream-openxjsonserde-convertdotsinjsonkeystounderscores
+kfdsoxjsdConvertDotsInJsonKeysToUnderscores :: Lens' KinesisFirehoseDeliveryStreamOpenXJsonSerDe (Maybe (Val Bool))
+kfdsoxjsdConvertDotsInJsonKeysToUnderscores = lens _kinesisFirehoseDeliveryStreamOpenXJsonSerDeConvertDotsInJsonKeysToUnderscores (\s a -> s { _kinesisFirehoseDeliveryStreamOpenXJsonSerDeConvertDotsInJsonKeysToUnderscores = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOrcSerDe.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOrcSerDe.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOrcSerDe.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOrcSerDe where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for KinesisFirehoseDeliveryStreamOrcSerDe. See
+-- 'kinesisFirehoseDeliveryStreamOrcSerDe' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamOrcSerDe =
+  KinesisFirehoseDeliveryStreamOrcSerDe
+  { _kinesisFirehoseDeliveryStreamOrcSerDeBlockSizeBytes :: Maybe (Val Integer)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterColumns :: Maybe (ValList Text)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterFalsePositiveProbability :: Maybe (Val Double)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeCompression :: Maybe (Val Text)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeDictionaryKeyThreshold :: Maybe (Val Double)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeEnablePadding :: Maybe (Val Bool)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeFormatVersion :: Maybe (Val Text)
+  , _kinesisFirehoseDeliveryStreamOrcSerDePaddingTolerance :: Maybe (Val Double)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeRowIndexStride :: Maybe (Val Integer)
+  , _kinesisFirehoseDeliveryStreamOrcSerDeStripeSizeBytes :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamOrcSerDe where
+  toJSON KinesisFirehoseDeliveryStreamOrcSerDe{..} =
+    object $
+    catMaybes
+    [ fmap (("BlockSizeBytes",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeBlockSizeBytes
+    , fmap (("BloomFilterColumns",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterColumns
+    , fmap (("BloomFilterFalsePositiveProbability",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterFalsePositiveProbability
+    , fmap (("Compression",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeCompression
+    , fmap (("DictionaryKeyThreshold",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeDictionaryKeyThreshold
+    , fmap (("EnablePadding",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeEnablePadding
+    , fmap (("FormatVersion",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeFormatVersion
+    , fmap (("PaddingTolerance",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDePaddingTolerance
+    , fmap (("RowIndexStride",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeRowIndexStride
+    , fmap (("StripeSizeBytes",) . toJSON) _kinesisFirehoseDeliveryStreamOrcSerDeStripeSizeBytes
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamOrcSerDe' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamOrcSerDe
+  :: KinesisFirehoseDeliveryStreamOrcSerDe
+kinesisFirehoseDeliveryStreamOrcSerDe  =
+  KinesisFirehoseDeliveryStreamOrcSerDe
+  { _kinesisFirehoseDeliveryStreamOrcSerDeBlockSizeBytes = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterColumns = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterFalsePositiveProbability = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeCompression = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeDictionaryKeyThreshold = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeEnablePadding = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeFormatVersion = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDePaddingTolerance = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeRowIndexStride = Nothing
+  , _kinesisFirehoseDeliveryStreamOrcSerDeStripeSizeBytes = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-blocksizebytes
+kfdsosdBlockSizeBytes :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Integer))
+kfdsosdBlockSizeBytes = lens _kinesisFirehoseDeliveryStreamOrcSerDeBlockSizeBytes (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeBlockSizeBytes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-bloomfiltercolumns
+kfdsosdBloomFilterColumns :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (ValList Text))
+kfdsosdBloomFilterColumns = lens _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterColumns (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-bloomfilterfalsepositiveprobability
+kfdsosdBloomFilterFalsePositiveProbability :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Double))
+kfdsosdBloomFilterFalsePositiveProbability = lens _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterFalsePositiveProbability (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeBloomFilterFalsePositiveProbability = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-compression
+kfdsosdCompression :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Text))
+kfdsosdCompression = lens _kinesisFirehoseDeliveryStreamOrcSerDeCompression (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeCompression = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-dictionarykeythreshold
+kfdsosdDictionaryKeyThreshold :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Double))
+kfdsosdDictionaryKeyThreshold = lens _kinesisFirehoseDeliveryStreamOrcSerDeDictionaryKeyThreshold (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeDictionaryKeyThreshold = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-enablepadding
+kfdsosdEnablePadding :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Bool))
+kfdsosdEnablePadding = lens _kinesisFirehoseDeliveryStreamOrcSerDeEnablePadding (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeEnablePadding = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-formatversion
+kfdsosdFormatVersion :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Text))
+kfdsosdFormatVersion = lens _kinesisFirehoseDeliveryStreamOrcSerDeFormatVersion (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeFormatVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-paddingtolerance
+kfdsosdPaddingTolerance :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Double))
+kfdsosdPaddingTolerance = lens _kinesisFirehoseDeliveryStreamOrcSerDePaddingTolerance (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDePaddingTolerance = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-rowindexstride
+kfdsosdRowIndexStride :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Integer))
+kfdsosdRowIndexStride = lens _kinesisFirehoseDeliveryStreamOrcSerDeRowIndexStride (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeRowIndexStride = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-orcserde.html#cfn-kinesisfirehose-deliverystream-orcserde-stripesizebytes
+kfdsosdStripeSizeBytes :: Lens' KinesisFirehoseDeliveryStreamOrcSerDe (Maybe (Val Integer))
+kfdsosdStripeSizeBytes = lens _kinesisFirehoseDeliveryStreamOrcSerDeStripeSizeBytes (\s a -> s { _kinesisFirehoseDeliveryStreamOrcSerDeStripeSizeBytes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOutputFormatConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOutputFormatConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamOutputFormatConfiguration.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-outputformatconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOutputFormatConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSerializer
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamOutputFormatConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamOutputFormatConfiguration' for a more
+-- convenient constructor.
+data KinesisFirehoseDeliveryStreamOutputFormatConfiguration =
+  KinesisFirehoseDeliveryStreamOutputFormatConfiguration
+  { _kinesisFirehoseDeliveryStreamOutputFormatConfigurationSerializer :: KinesisFirehoseDeliveryStreamSerializer
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamOutputFormatConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamOutputFormatConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Serializer",) . toJSON) _kinesisFirehoseDeliveryStreamOutputFormatConfigurationSerializer
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamOutputFormatConfiguration'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamOutputFormatConfiguration
+  :: KinesisFirehoseDeliveryStreamSerializer -- ^ 'kfdsofcSerializer'
+  -> KinesisFirehoseDeliveryStreamOutputFormatConfiguration
+kinesisFirehoseDeliveryStreamOutputFormatConfiguration serializerarg =
+  KinesisFirehoseDeliveryStreamOutputFormatConfiguration
+  { _kinesisFirehoseDeliveryStreamOutputFormatConfigurationSerializer = serializerarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-outputformatconfiguration.html#cfn-kinesisfirehose-deliverystream-outputformatconfiguration-serializer
+kfdsofcSerializer :: Lens' KinesisFirehoseDeliveryStreamOutputFormatConfiguration KinesisFirehoseDeliveryStreamSerializer
+kfdsofcSerializer = lens _kinesisFirehoseDeliveryStreamOutputFormatConfigurationSerializer (\s a -> s { _kinesisFirehoseDeliveryStreamOutputFormatConfigurationSerializer = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamParquetSerDe.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamParquetSerDe.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamParquetSerDe.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-parquetserde.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamParquetSerDe where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for KinesisFirehoseDeliveryStreamParquetSerDe.
+-- See 'kinesisFirehoseDeliveryStreamParquetSerDe' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamParquetSerDe =
+  KinesisFirehoseDeliveryStreamParquetSerDe
+  { _kinesisFirehoseDeliveryStreamParquetSerDeBlockSizeBytes :: Maybe (Val Integer)
+  , _kinesisFirehoseDeliveryStreamParquetSerDeCompression :: Maybe (Val Text)
+  , _kinesisFirehoseDeliveryStreamParquetSerDeEnableDictionaryCompression :: Maybe (Val Bool)
+  , _kinesisFirehoseDeliveryStreamParquetSerDeMaxPaddingBytes :: Maybe (Val Integer)
+  , _kinesisFirehoseDeliveryStreamParquetSerDePageSizeBytes :: Maybe (Val Integer)
+  , _kinesisFirehoseDeliveryStreamParquetSerDeWriterVersion :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamParquetSerDe where
+  toJSON KinesisFirehoseDeliveryStreamParquetSerDe{..} =
+    object $
+    catMaybes
+    [ fmap (("BlockSizeBytes",) . toJSON) _kinesisFirehoseDeliveryStreamParquetSerDeBlockSizeBytes
+    , fmap (("Compression",) . toJSON) _kinesisFirehoseDeliveryStreamParquetSerDeCompression
+    , fmap (("EnableDictionaryCompression",) . toJSON) _kinesisFirehoseDeliveryStreamParquetSerDeEnableDictionaryCompression
+    , fmap (("MaxPaddingBytes",) . toJSON) _kinesisFirehoseDeliveryStreamParquetSerDeMaxPaddingBytes
+    , fmap (("PageSizeBytes",) . toJSON) _kinesisFirehoseDeliveryStreamParquetSerDePageSizeBytes
+    , fmap (("WriterVersion",) . toJSON) _kinesisFirehoseDeliveryStreamParquetSerDeWriterVersion
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamParquetSerDe' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamParquetSerDe
+  :: KinesisFirehoseDeliveryStreamParquetSerDe
+kinesisFirehoseDeliveryStreamParquetSerDe  =
+  KinesisFirehoseDeliveryStreamParquetSerDe
+  { _kinesisFirehoseDeliveryStreamParquetSerDeBlockSizeBytes = Nothing
+  , _kinesisFirehoseDeliveryStreamParquetSerDeCompression = Nothing
+  , _kinesisFirehoseDeliveryStreamParquetSerDeEnableDictionaryCompression = Nothing
+  , _kinesisFirehoseDeliveryStreamParquetSerDeMaxPaddingBytes = Nothing
+  , _kinesisFirehoseDeliveryStreamParquetSerDePageSizeBytes = Nothing
+  , _kinesisFirehoseDeliveryStreamParquetSerDeWriterVersion = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-parquetserde.html#cfn-kinesisfirehose-deliverystream-parquetserde-blocksizebytes
+kfdspsdBlockSizeBytes :: Lens' KinesisFirehoseDeliveryStreamParquetSerDe (Maybe (Val Integer))
+kfdspsdBlockSizeBytes = lens _kinesisFirehoseDeliveryStreamParquetSerDeBlockSizeBytes (\s a -> s { _kinesisFirehoseDeliveryStreamParquetSerDeBlockSizeBytes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-parquetserde.html#cfn-kinesisfirehose-deliverystream-parquetserde-compression
+kfdspsdCompression :: Lens' KinesisFirehoseDeliveryStreamParquetSerDe (Maybe (Val Text))
+kfdspsdCompression = lens _kinesisFirehoseDeliveryStreamParquetSerDeCompression (\s a -> s { _kinesisFirehoseDeliveryStreamParquetSerDeCompression = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-parquetserde.html#cfn-kinesisfirehose-deliverystream-parquetserde-enabledictionarycompression
+kfdspsdEnableDictionaryCompression :: Lens' KinesisFirehoseDeliveryStreamParquetSerDe (Maybe (Val Bool))
+kfdspsdEnableDictionaryCompression = lens _kinesisFirehoseDeliveryStreamParquetSerDeEnableDictionaryCompression (\s a -> s { _kinesisFirehoseDeliveryStreamParquetSerDeEnableDictionaryCompression = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-parquetserde.html#cfn-kinesisfirehose-deliverystream-parquetserde-maxpaddingbytes
+kfdspsdMaxPaddingBytes :: Lens' KinesisFirehoseDeliveryStreamParquetSerDe (Maybe (Val Integer))
+kfdspsdMaxPaddingBytes = lens _kinesisFirehoseDeliveryStreamParquetSerDeMaxPaddingBytes (\s a -> s { _kinesisFirehoseDeliveryStreamParquetSerDeMaxPaddingBytes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-parquetserde.html#cfn-kinesisfirehose-deliverystream-parquetserde-pagesizebytes
+kfdspsdPageSizeBytes :: Lens' KinesisFirehoseDeliveryStreamParquetSerDe (Maybe (Val Integer))
+kfdspsdPageSizeBytes = lens _kinesisFirehoseDeliveryStreamParquetSerDePageSizeBytes (\s a -> s { _kinesisFirehoseDeliveryStreamParquetSerDePageSizeBytes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-parquetserde.html#cfn-kinesisfirehose-deliverystream-parquetserde-writerversion
+kfdspsdWriterVersion :: Lens' KinesisFirehoseDeliveryStreamParquetSerDe (Maybe (Val Text))
+kfdspsdWriterVersion = lens _kinesisFirehoseDeliveryStreamParquetSerDeWriterVersion (\s a -> s { _kinesisFirehoseDeliveryStreamParquetSerDeWriterVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
@@ -24,6 +24,7 @@
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions :: Maybe KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat :: Val KinesisFirehoseS3CompressionFormat
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration :: Maybe KinesisFirehoseDeliveryStreamEncryptionConfiguration
+  , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationErrorOutputPrefix :: Maybe (Val Text)
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix :: Maybe (Val Text)
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN :: Val Text
   } deriving (Show, Eq)
@@ -37,6 +38,7 @@
     , fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions
     , (Just . ("CompressionFormat",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat
     , fmap (("EncryptionConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration
+    , fmap (("ErrorOutputPrefix",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationErrorOutputPrefix
     , fmap (("Prefix",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix
     , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN
     ]
@@ -56,6 +58,7 @@
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat = compressionFormatarg
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationErrorOutputPrefix = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN = roleARNarg
   }
@@ -79,6 +82,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-encryptionconfiguration
 kfdssdcEncryptionConfiguration :: Lens' KinesisFirehoseDeliveryStreamS3DestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamEncryptionConfiguration)
 kfdssdcEncryptionConfiguration = lens _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-erroroutputprefix
+kfdssdcErrorOutputPrefix :: Lens' KinesisFirehoseDeliveryStreamS3DestinationConfiguration (Maybe (Val Text))
+kfdssdcErrorOutputPrefix = lens _kinesisFirehoseDeliveryStreamS3DestinationConfigurationErrorOutputPrefix (\s a -> s { _kinesisFirehoseDeliveryStreamS3DestinationConfigurationErrorOutputPrefix = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-prefix
 kfdssdcPrefix :: Lens' KinesisFirehoseDeliveryStreamS3DestinationConfiguration (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSchemaConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSchemaConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSchemaConfiguration.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-schemaconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSchemaConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamSchemaConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamSchemaConfiguration' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamSchemaConfiguration =
+  KinesisFirehoseDeliveryStreamSchemaConfiguration
+  { _kinesisFirehoseDeliveryStreamSchemaConfigurationCatalogId :: Val Text
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationDatabaseName :: Val Text
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationRegion :: Val Text
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationRoleARN :: Val Text
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationTableName :: Val Text
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationVersionId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamSchemaConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamSchemaConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("CatalogId",) . toJSON) _kinesisFirehoseDeliveryStreamSchemaConfigurationCatalogId
+    , (Just . ("DatabaseName",) . toJSON) _kinesisFirehoseDeliveryStreamSchemaConfigurationDatabaseName
+    , (Just . ("Region",) . toJSON) _kinesisFirehoseDeliveryStreamSchemaConfigurationRegion
+    , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamSchemaConfigurationRoleARN
+    , (Just . ("TableName",) . toJSON) _kinesisFirehoseDeliveryStreamSchemaConfigurationTableName
+    , (Just . ("VersionId",) . toJSON) _kinesisFirehoseDeliveryStreamSchemaConfigurationVersionId
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamSchemaConfiguration'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamSchemaConfiguration
+  :: Val Text -- ^ 'kfdsscCatalogId'
+  -> Val Text -- ^ 'kfdsscDatabaseName'
+  -> Val Text -- ^ 'kfdsscRegion'
+  -> Val Text -- ^ 'kfdsscRoleARN'
+  -> Val Text -- ^ 'kfdsscTableName'
+  -> Val Text -- ^ 'kfdsscVersionId'
+  -> KinesisFirehoseDeliveryStreamSchemaConfiguration
+kinesisFirehoseDeliveryStreamSchemaConfiguration catalogIdarg databaseNamearg regionarg roleARNarg tableNamearg versionIdarg =
+  KinesisFirehoseDeliveryStreamSchemaConfiguration
+  { _kinesisFirehoseDeliveryStreamSchemaConfigurationCatalogId = catalogIdarg
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationDatabaseName = databaseNamearg
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationRegion = regionarg
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationRoleARN = roleARNarg
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationTableName = tableNamearg
+  , _kinesisFirehoseDeliveryStreamSchemaConfigurationVersionId = versionIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-schemaconfiguration.html#cfn-kinesisfirehose-deliverystream-schemaconfiguration-catalogid
+kfdsscCatalogId :: Lens' KinesisFirehoseDeliveryStreamSchemaConfiguration (Val Text)
+kfdsscCatalogId = lens _kinesisFirehoseDeliveryStreamSchemaConfigurationCatalogId (\s a -> s { _kinesisFirehoseDeliveryStreamSchemaConfigurationCatalogId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-schemaconfiguration.html#cfn-kinesisfirehose-deliverystream-schemaconfiguration-databasename
+kfdsscDatabaseName :: Lens' KinesisFirehoseDeliveryStreamSchemaConfiguration (Val Text)
+kfdsscDatabaseName = lens _kinesisFirehoseDeliveryStreamSchemaConfigurationDatabaseName (\s a -> s { _kinesisFirehoseDeliveryStreamSchemaConfigurationDatabaseName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-schemaconfiguration.html#cfn-kinesisfirehose-deliverystream-schemaconfiguration-region
+kfdsscRegion :: Lens' KinesisFirehoseDeliveryStreamSchemaConfiguration (Val Text)
+kfdsscRegion = lens _kinesisFirehoseDeliveryStreamSchemaConfigurationRegion (\s a -> s { _kinesisFirehoseDeliveryStreamSchemaConfigurationRegion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-schemaconfiguration.html#cfn-kinesisfirehose-deliverystream-schemaconfiguration-rolearn
+kfdsscRoleARN :: Lens' KinesisFirehoseDeliveryStreamSchemaConfiguration (Val Text)
+kfdsscRoleARN = lens _kinesisFirehoseDeliveryStreamSchemaConfigurationRoleARN (\s a -> s { _kinesisFirehoseDeliveryStreamSchemaConfigurationRoleARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-schemaconfiguration.html#cfn-kinesisfirehose-deliverystream-schemaconfiguration-tablename
+kfdsscTableName :: Lens' KinesisFirehoseDeliveryStreamSchemaConfiguration (Val Text)
+kfdsscTableName = lens _kinesisFirehoseDeliveryStreamSchemaConfigurationTableName (\s a -> s { _kinesisFirehoseDeliveryStreamSchemaConfigurationTableName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-schemaconfiguration.html#cfn-kinesisfirehose-deliverystream-schemaconfiguration-versionid
+kfdsscVersionId :: Lens' KinesisFirehoseDeliveryStreamSchemaConfiguration (Val Text)
+kfdsscVersionId = lens _kinesisFirehoseDeliveryStreamSchemaConfigurationVersionId (\s a -> s { _kinesisFirehoseDeliveryStreamSchemaConfigurationVersionId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSerializer.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSerializer.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSerializer.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-serializer.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSerializer where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOrcSerDe
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamParquetSerDe
+
+-- | Full data type definition for KinesisFirehoseDeliveryStreamSerializer.
+-- See 'kinesisFirehoseDeliveryStreamSerializer' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamSerializer =
+  KinesisFirehoseDeliveryStreamSerializer
+  { _kinesisFirehoseDeliveryStreamSerializerOrcSerDe :: Maybe KinesisFirehoseDeliveryStreamOrcSerDe
+  , _kinesisFirehoseDeliveryStreamSerializerParquetSerDe :: Maybe KinesisFirehoseDeliveryStreamParquetSerDe
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamSerializer where
+  toJSON KinesisFirehoseDeliveryStreamSerializer{..} =
+    object $
+    catMaybes
+    [ fmap (("OrcSerDe",) . toJSON) _kinesisFirehoseDeliveryStreamSerializerOrcSerDe
+    , fmap (("ParquetSerDe",) . toJSON) _kinesisFirehoseDeliveryStreamSerializerParquetSerDe
+    ]
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamSerializer' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamSerializer
+  :: KinesisFirehoseDeliveryStreamSerializer
+kinesisFirehoseDeliveryStreamSerializer  =
+  KinesisFirehoseDeliveryStreamSerializer
+  { _kinesisFirehoseDeliveryStreamSerializerOrcSerDe = Nothing
+  , _kinesisFirehoseDeliveryStreamSerializerParquetSerDe = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-serializer.html#cfn-kinesisfirehose-deliverystream-serializer-orcserde
+kfdssOrcSerDe :: Lens' KinesisFirehoseDeliveryStreamSerializer (Maybe KinesisFirehoseDeliveryStreamOrcSerDe)
+kfdssOrcSerDe = lens _kinesisFirehoseDeliveryStreamSerializerOrcSerDe (\s a -> s { _kinesisFirehoseDeliveryStreamSerializerOrcSerDe = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-serializer.html#cfn-kinesisfirehose-deliverystream-serializer-parquetserde
+kfdssParquetSerDe :: Lens' KinesisFirehoseDeliveryStreamSerializer (Maybe KinesisFirehoseDeliveryStreamParquetSerDe)
+kfdssParquetSerDe = lens _kinesisFirehoseDeliveryStreamSerializerParquetSerDe (\s a -> s { _kinesisFirehoseDeliveryStreamSerializerParquetSerDe = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterBrokerNodeGroupInfo.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterBrokerNodeGroupInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterBrokerNodeGroupInfo.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokernodegroupinfo.html
+
+module Stratosphere.ResourceProperties.MSKClusterBrokerNodeGroupInfo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.MSKClusterStorageInfo
+
+-- | Full data type definition for MSKClusterBrokerNodeGroupInfo. See
+-- 'mskClusterBrokerNodeGroupInfo' for a more convenient constructor.
+data MSKClusterBrokerNodeGroupInfo =
+  MSKClusterBrokerNodeGroupInfo
+  { _mSKClusterBrokerNodeGroupInfoBrokerAZDistribution :: Maybe (Val Text)
+  , _mSKClusterBrokerNodeGroupInfoClientSubnets :: ValList Text
+  , _mSKClusterBrokerNodeGroupInfoInstanceType :: Val Text
+  , _mSKClusterBrokerNodeGroupInfoSecurityGroups :: Maybe (ValList Text)
+  , _mSKClusterBrokerNodeGroupInfoStorageInfo :: Maybe MSKClusterStorageInfo
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterBrokerNodeGroupInfo where
+  toJSON MSKClusterBrokerNodeGroupInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("BrokerAZDistribution",) . toJSON) _mSKClusterBrokerNodeGroupInfoBrokerAZDistribution
+    , (Just . ("ClientSubnets",) . toJSON) _mSKClusterBrokerNodeGroupInfoClientSubnets
+    , (Just . ("InstanceType",) . toJSON) _mSKClusterBrokerNodeGroupInfoInstanceType
+    , fmap (("SecurityGroups",) . toJSON) _mSKClusterBrokerNodeGroupInfoSecurityGroups
+    , fmap (("StorageInfo",) . toJSON) _mSKClusterBrokerNodeGroupInfoStorageInfo
+    ]
+
+-- | Constructor for 'MSKClusterBrokerNodeGroupInfo' containing required
+-- fields as arguments.
+mskClusterBrokerNodeGroupInfo
+  :: ValList Text -- ^ 'mskcbngiClientSubnets'
+  -> Val Text -- ^ 'mskcbngiInstanceType'
+  -> MSKClusterBrokerNodeGroupInfo
+mskClusterBrokerNodeGroupInfo clientSubnetsarg instanceTypearg =
+  MSKClusterBrokerNodeGroupInfo
+  { _mSKClusterBrokerNodeGroupInfoBrokerAZDistribution = Nothing
+  , _mSKClusterBrokerNodeGroupInfoClientSubnets = clientSubnetsarg
+  , _mSKClusterBrokerNodeGroupInfoInstanceType = instanceTypearg
+  , _mSKClusterBrokerNodeGroupInfoSecurityGroups = Nothing
+  , _mSKClusterBrokerNodeGroupInfoStorageInfo = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokernodegroupinfo.html#cfn-msk-cluster-brokernodegroupinfo-brokerazdistribution
+mskcbngiBrokerAZDistribution :: Lens' MSKClusterBrokerNodeGroupInfo (Maybe (Val Text))
+mskcbngiBrokerAZDistribution = lens _mSKClusterBrokerNodeGroupInfoBrokerAZDistribution (\s a -> s { _mSKClusterBrokerNodeGroupInfoBrokerAZDistribution = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokernodegroupinfo.html#cfn-msk-cluster-brokernodegroupinfo-clientsubnets
+mskcbngiClientSubnets :: Lens' MSKClusterBrokerNodeGroupInfo (ValList Text)
+mskcbngiClientSubnets = lens _mSKClusterBrokerNodeGroupInfoClientSubnets (\s a -> s { _mSKClusterBrokerNodeGroupInfoClientSubnets = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokernodegroupinfo.html#cfn-msk-cluster-brokernodegroupinfo-instancetype
+mskcbngiInstanceType :: Lens' MSKClusterBrokerNodeGroupInfo (Val Text)
+mskcbngiInstanceType = lens _mSKClusterBrokerNodeGroupInfoInstanceType (\s a -> s { _mSKClusterBrokerNodeGroupInfoInstanceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokernodegroupinfo.html#cfn-msk-cluster-brokernodegroupinfo-securitygroups
+mskcbngiSecurityGroups :: Lens' MSKClusterBrokerNodeGroupInfo (Maybe (ValList Text))
+mskcbngiSecurityGroups = lens _mSKClusterBrokerNodeGroupInfoSecurityGroups (\s a -> s { _mSKClusterBrokerNodeGroupInfoSecurityGroups = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-brokernodegroupinfo.html#cfn-msk-cluster-brokernodegroupinfo-storageinfo
+mskcbngiStorageInfo :: Lens' MSKClusterBrokerNodeGroupInfo (Maybe MSKClusterStorageInfo)
+mskcbngiStorageInfo = lens _mSKClusterBrokerNodeGroupInfoStorageInfo (\s a -> s { _mSKClusterBrokerNodeGroupInfoStorageInfo = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterClientAuthentication.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterClientAuthentication.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterClientAuthentication.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-clientauthentication.html
+
+module Stratosphere.ResourceProperties.MSKClusterClientAuthentication where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.MSKClusterTls
+
+-- | Full data type definition for MSKClusterClientAuthentication. See
+-- 'mskClusterClientAuthentication' for a more convenient constructor.
+data MSKClusterClientAuthentication =
+  MSKClusterClientAuthentication
+  { _mSKClusterClientAuthenticationTls :: Maybe MSKClusterTls
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterClientAuthentication where
+  toJSON MSKClusterClientAuthentication{..} =
+    object $
+    catMaybes
+    [ fmap (("Tls",) . toJSON) _mSKClusterClientAuthenticationTls
+    ]
+
+-- | Constructor for 'MSKClusterClientAuthentication' containing required
+-- fields as arguments.
+mskClusterClientAuthentication
+  :: MSKClusterClientAuthentication
+mskClusterClientAuthentication  =
+  MSKClusterClientAuthentication
+  { _mSKClusterClientAuthenticationTls = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-clientauthentication.html#cfn-msk-cluster-clientauthentication-tls
+mskccaTls :: Lens' MSKClusterClientAuthentication (Maybe MSKClusterTls)
+mskccaTls = lens _mSKClusterClientAuthenticationTls (\s a -> s { _mSKClusterClientAuthenticationTls = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterConfigurationInfo.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterConfigurationInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterConfigurationInfo.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-configurationinfo.html
+
+module Stratosphere.ResourceProperties.MSKClusterConfigurationInfo where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for MSKClusterConfigurationInfo. See
+-- 'mskClusterConfigurationInfo' for a more convenient constructor.
+data MSKClusterConfigurationInfo =
+  MSKClusterConfigurationInfo
+  { _mSKClusterConfigurationInfoArn :: Val Text
+  , _mSKClusterConfigurationInfoRevision :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterConfigurationInfo where
+  toJSON MSKClusterConfigurationInfo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Arn",) . toJSON) _mSKClusterConfigurationInfoArn
+    , (Just . ("Revision",) . toJSON) _mSKClusterConfigurationInfoRevision
+    ]
+
+-- | Constructor for 'MSKClusterConfigurationInfo' containing required fields
+-- as arguments.
+mskClusterConfigurationInfo
+  :: Val Text -- ^ 'mskcciArn'
+  -> Val Integer -- ^ 'mskcciRevision'
+  -> MSKClusterConfigurationInfo
+mskClusterConfigurationInfo arnarg revisionarg =
+  MSKClusterConfigurationInfo
+  { _mSKClusterConfigurationInfoArn = arnarg
+  , _mSKClusterConfigurationInfoRevision = revisionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-configurationinfo.html#cfn-msk-cluster-configurationinfo-arn
+mskcciArn :: Lens' MSKClusterConfigurationInfo (Val Text)
+mskcciArn = lens _mSKClusterConfigurationInfoArn (\s a -> s { _mSKClusterConfigurationInfoArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-configurationinfo.html#cfn-msk-cluster-configurationinfo-revision
+mskcciRevision :: Lens' MSKClusterConfigurationInfo (Val Integer)
+mskcciRevision = lens _mSKClusterConfigurationInfoRevision (\s a -> s { _mSKClusterConfigurationInfoRevision = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterEBSStorageInfo.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterEBSStorageInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterEBSStorageInfo.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-ebsstorageinfo.html
+
+module Stratosphere.ResourceProperties.MSKClusterEBSStorageInfo where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for MSKClusterEBSStorageInfo. See
+-- 'mskClusterEBSStorageInfo' for a more convenient constructor.
+data MSKClusterEBSStorageInfo =
+  MSKClusterEBSStorageInfo
+  { _mSKClusterEBSStorageInfoVolumeSize :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterEBSStorageInfo where
+  toJSON MSKClusterEBSStorageInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("VolumeSize",) . toJSON) _mSKClusterEBSStorageInfoVolumeSize
+    ]
+
+-- | Constructor for 'MSKClusterEBSStorageInfo' containing required fields as
+-- arguments.
+mskClusterEBSStorageInfo
+  :: MSKClusterEBSStorageInfo
+mskClusterEBSStorageInfo  =
+  MSKClusterEBSStorageInfo
+  { _mSKClusterEBSStorageInfoVolumeSize = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-ebsstorageinfo.html#cfn-msk-cluster-ebsstorageinfo-volumesize
+mskcebssiVolumeSize :: Lens' MSKClusterEBSStorageInfo (Maybe (Val Integer))
+mskcebssiVolumeSize = lens _mSKClusterEBSStorageInfoVolumeSize (\s a -> s { _mSKClusterEBSStorageInfoVolumeSize = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionAtRest.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionAtRest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionAtRest.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptionatrest.html
+
+module Stratosphere.ResourceProperties.MSKClusterEncryptionAtRest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for MSKClusterEncryptionAtRest. See
+-- 'mskClusterEncryptionAtRest' for a more convenient constructor.
+data MSKClusterEncryptionAtRest =
+  MSKClusterEncryptionAtRest
+  { _mSKClusterEncryptionAtRestDataVolumeKMSKeyId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterEncryptionAtRest where
+  toJSON MSKClusterEncryptionAtRest{..} =
+    object $
+    catMaybes
+    [ (Just . ("DataVolumeKMSKeyId",) . toJSON) _mSKClusterEncryptionAtRestDataVolumeKMSKeyId
+    ]
+
+-- | Constructor for 'MSKClusterEncryptionAtRest' containing required fields
+-- as arguments.
+mskClusterEncryptionAtRest
+  :: Val Text -- ^ 'mskcearDataVolumeKMSKeyId'
+  -> MSKClusterEncryptionAtRest
+mskClusterEncryptionAtRest dataVolumeKMSKeyIdarg =
+  MSKClusterEncryptionAtRest
+  { _mSKClusterEncryptionAtRestDataVolumeKMSKeyId = dataVolumeKMSKeyIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptionatrest.html#cfn-msk-cluster-encryptionatrest-datavolumekmskeyid
+mskcearDataVolumeKMSKeyId :: Lens' MSKClusterEncryptionAtRest (Val Text)
+mskcearDataVolumeKMSKeyId = lens _mSKClusterEncryptionAtRestDataVolumeKMSKeyId (\s a -> s { _mSKClusterEncryptionAtRestDataVolumeKMSKeyId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionInTransit.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionInTransit.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionInTransit.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptionintransit.html
+
+module Stratosphere.ResourceProperties.MSKClusterEncryptionInTransit where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for MSKClusterEncryptionInTransit. See
+-- 'mskClusterEncryptionInTransit' for a more convenient constructor.
+data MSKClusterEncryptionInTransit =
+  MSKClusterEncryptionInTransit
+  { _mSKClusterEncryptionInTransitClientBroker :: Maybe (Val Text)
+  , _mSKClusterEncryptionInTransitInCluster :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterEncryptionInTransit where
+  toJSON MSKClusterEncryptionInTransit{..} =
+    object $
+    catMaybes
+    [ fmap (("ClientBroker",) . toJSON) _mSKClusterEncryptionInTransitClientBroker
+    , fmap (("InCluster",) . toJSON) _mSKClusterEncryptionInTransitInCluster
+    ]
+
+-- | Constructor for 'MSKClusterEncryptionInTransit' containing required
+-- fields as arguments.
+mskClusterEncryptionInTransit
+  :: MSKClusterEncryptionInTransit
+mskClusterEncryptionInTransit  =
+  MSKClusterEncryptionInTransit
+  { _mSKClusterEncryptionInTransitClientBroker = Nothing
+  , _mSKClusterEncryptionInTransitInCluster = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptionintransit.html#cfn-msk-cluster-encryptionintransit-clientbroker
+mskceitClientBroker :: Lens' MSKClusterEncryptionInTransit (Maybe (Val Text))
+mskceitClientBroker = lens _mSKClusterEncryptionInTransitClientBroker (\s a -> s { _mSKClusterEncryptionInTransitClientBroker = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptionintransit.html#cfn-msk-cluster-encryptionintransit-incluster
+mskceitInCluster :: Lens' MSKClusterEncryptionInTransit (Maybe (Val Bool))
+mskceitInCluster = lens _mSKClusterEncryptionInTransitInCluster (\s a -> s { _mSKClusterEncryptionInTransitInCluster = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionInfo.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterEncryptionInfo.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptioninfo.html
+
+module Stratosphere.ResourceProperties.MSKClusterEncryptionInfo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.MSKClusterEncryptionAtRest
+import Stratosphere.ResourceProperties.MSKClusterEncryptionInTransit
+
+-- | Full data type definition for MSKClusterEncryptionInfo. See
+-- 'mskClusterEncryptionInfo' for a more convenient constructor.
+data MSKClusterEncryptionInfo =
+  MSKClusterEncryptionInfo
+  { _mSKClusterEncryptionInfoEncryptionAtRest :: Maybe MSKClusterEncryptionAtRest
+  , _mSKClusterEncryptionInfoEncryptionInTransit :: Maybe MSKClusterEncryptionInTransit
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterEncryptionInfo where
+  toJSON MSKClusterEncryptionInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("EncryptionAtRest",) . toJSON) _mSKClusterEncryptionInfoEncryptionAtRest
+    , fmap (("EncryptionInTransit",) . toJSON) _mSKClusterEncryptionInfoEncryptionInTransit
+    ]
+
+-- | Constructor for 'MSKClusterEncryptionInfo' containing required fields as
+-- arguments.
+mskClusterEncryptionInfo
+  :: MSKClusterEncryptionInfo
+mskClusterEncryptionInfo  =
+  MSKClusterEncryptionInfo
+  { _mSKClusterEncryptionInfoEncryptionAtRest = Nothing
+  , _mSKClusterEncryptionInfoEncryptionInTransit = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptioninfo.html#cfn-msk-cluster-encryptioninfo-encryptionatrest
+mskceiEncryptionAtRest :: Lens' MSKClusterEncryptionInfo (Maybe MSKClusterEncryptionAtRest)
+mskceiEncryptionAtRest = lens _mSKClusterEncryptionInfoEncryptionAtRest (\s a -> s { _mSKClusterEncryptionInfoEncryptionAtRest = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-encryptioninfo.html#cfn-msk-cluster-encryptioninfo-encryptionintransit
+mskceiEncryptionInTransit :: Lens' MSKClusterEncryptionInfo (Maybe MSKClusterEncryptionInTransit)
+mskceiEncryptionInTransit = lens _mSKClusterEncryptionInfoEncryptionInTransit (\s a -> s { _mSKClusterEncryptionInfoEncryptionInTransit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterStorageInfo.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterStorageInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterStorageInfo.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-storageinfo.html
+
+module Stratosphere.ResourceProperties.MSKClusterStorageInfo where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.MSKClusterEBSStorageInfo
+
+-- | Full data type definition for MSKClusterStorageInfo. See
+-- 'mskClusterStorageInfo' for a more convenient constructor.
+data MSKClusterStorageInfo =
+  MSKClusterStorageInfo
+  { _mSKClusterStorageInfoEBSStorageInfo :: Maybe MSKClusterEBSStorageInfo
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterStorageInfo where
+  toJSON MSKClusterStorageInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("EBSStorageInfo",) . toJSON) _mSKClusterStorageInfoEBSStorageInfo
+    ]
+
+-- | Constructor for 'MSKClusterStorageInfo' containing required fields as
+-- arguments.
+mskClusterStorageInfo
+  :: MSKClusterStorageInfo
+mskClusterStorageInfo  =
+  MSKClusterStorageInfo
+  { _mSKClusterStorageInfoEBSStorageInfo = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-storageinfo.html#cfn-msk-cluster-storageinfo-ebsstorageinfo
+mskcsiEBSStorageInfo :: Lens' MSKClusterStorageInfo (Maybe MSKClusterEBSStorageInfo)
+mskcsiEBSStorageInfo = lens _mSKClusterStorageInfoEBSStorageInfo (\s a -> s { _mSKClusterStorageInfoEBSStorageInfo = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/MSKClusterTls.hs b/library-gen/Stratosphere/ResourceProperties/MSKClusterTls.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/MSKClusterTls.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-tls.html
+
+module Stratosphere.ResourceProperties.MSKClusterTls where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for MSKClusterTls. See 'mskClusterTls' for a
+-- more convenient constructor.
+data MSKClusterTls =
+  MSKClusterTls
+  { _mSKClusterTlsCertificateAuthorityArnList :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON MSKClusterTls where
+  toJSON MSKClusterTls{..} =
+    object $
+    catMaybes
+    [ fmap (("CertificateAuthorityArnList",) . toJSON) _mSKClusterTlsCertificateAuthorityArnList
+    ]
+
+-- | Constructor for 'MSKClusterTls' containing required fields as arguments.
+mskClusterTls
+  :: MSKClusterTls
+mskClusterTls  =
+  MSKClusterTls
+  { _mSKClusterTlsCertificateAuthorityArnList = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-msk-cluster-tls.html#cfn-msk-cluster-tls-certificateauthorityarnlist
+mskctCertificateAuthorityArnList :: Lens' MSKClusterTls (Maybe (ValList Text))
+mskctCertificateAuthorityArnList = lens _mSKClusterTlsCertificateAuthorityArnList (\s a -> s { _mSKClusterTlsCertificateAuthorityArnList = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsCampaignHook.hs b/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsCampaignHook.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsCampaignHook.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-campaignhook.html
+
+module Stratosphere.ResourceProperties.PinpointApplicationSettingsCampaignHook where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointApplicationSettingsCampaignHook.
+-- See 'pinpointApplicationSettingsCampaignHook' for a more convenient
+-- constructor.
+data PinpointApplicationSettingsCampaignHook =
+  PinpointApplicationSettingsCampaignHook
+  { _pinpointApplicationSettingsCampaignHookLambdaFunctionName :: Maybe (Val Text)
+  , _pinpointApplicationSettingsCampaignHookMode :: Maybe (Val Text)
+  , _pinpointApplicationSettingsCampaignHookWebUrl :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointApplicationSettingsCampaignHook where
+  toJSON PinpointApplicationSettingsCampaignHook{..} =
+    object $
+    catMaybes
+    [ fmap (("LambdaFunctionName",) . toJSON) _pinpointApplicationSettingsCampaignHookLambdaFunctionName
+    , fmap (("Mode",) . toJSON) _pinpointApplicationSettingsCampaignHookMode
+    , fmap (("WebUrl",) . toJSON) _pinpointApplicationSettingsCampaignHookWebUrl
+    ]
+
+-- | Constructor for 'PinpointApplicationSettingsCampaignHook' containing
+-- required fields as arguments.
+pinpointApplicationSettingsCampaignHook
+  :: PinpointApplicationSettingsCampaignHook
+pinpointApplicationSettingsCampaignHook  =
+  PinpointApplicationSettingsCampaignHook
+  { _pinpointApplicationSettingsCampaignHookLambdaFunctionName = Nothing
+  , _pinpointApplicationSettingsCampaignHookMode = Nothing
+  , _pinpointApplicationSettingsCampaignHookWebUrl = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-campaignhook.html#cfn-pinpoint-applicationsettings-campaignhook-lambdafunctionname
+paschLambdaFunctionName :: Lens' PinpointApplicationSettingsCampaignHook (Maybe (Val Text))
+paschLambdaFunctionName = lens _pinpointApplicationSettingsCampaignHookLambdaFunctionName (\s a -> s { _pinpointApplicationSettingsCampaignHookLambdaFunctionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-campaignhook.html#cfn-pinpoint-applicationsettings-campaignhook-mode
+paschMode :: Lens' PinpointApplicationSettingsCampaignHook (Maybe (Val Text))
+paschMode = lens _pinpointApplicationSettingsCampaignHookMode (\s a -> s { _pinpointApplicationSettingsCampaignHookMode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-campaignhook.html#cfn-pinpoint-applicationsettings-campaignhook-weburl
+paschWebUrl :: Lens' PinpointApplicationSettingsCampaignHook (Maybe (Val Text))
+paschWebUrl = lens _pinpointApplicationSettingsCampaignHookWebUrl (\s a -> s { _pinpointApplicationSettingsCampaignHookWebUrl = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsLimits.hs b/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsLimits.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsLimits.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html
+
+module Stratosphere.ResourceProperties.PinpointApplicationSettingsLimits where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointApplicationSettingsLimits. See
+-- 'pinpointApplicationSettingsLimits' for a more convenient constructor.
+data PinpointApplicationSettingsLimits =
+  PinpointApplicationSettingsLimits
+  { _pinpointApplicationSettingsLimitsDaily :: Maybe (Val Integer)
+  , _pinpointApplicationSettingsLimitsMaximumDuration :: Maybe (Val Integer)
+  , _pinpointApplicationSettingsLimitsMessagesPerSecond :: Maybe (Val Integer)
+  , _pinpointApplicationSettingsLimitsTotal :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointApplicationSettingsLimits where
+  toJSON PinpointApplicationSettingsLimits{..} =
+    object $
+    catMaybes
+    [ fmap (("Daily",) . toJSON) _pinpointApplicationSettingsLimitsDaily
+    , fmap (("MaximumDuration",) . toJSON) _pinpointApplicationSettingsLimitsMaximumDuration
+    , fmap (("MessagesPerSecond",) . toJSON) _pinpointApplicationSettingsLimitsMessagesPerSecond
+    , fmap (("Total",) . toJSON) _pinpointApplicationSettingsLimitsTotal
+    ]
+
+-- | Constructor for 'PinpointApplicationSettingsLimits' containing required
+-- fields as arguments.
+pinpointApplicationSettingsLimits
+  :: PinpointApplicationSettingsLimits
+pinpointApplicationSettingsLimits  =
+  PinpointApplicationSettingsLimits
+  { _pinpointApplicationSettingsLimitsDaily = Nothing
+  , _pinpointApplicationSettingsLimitsMaximumDuration = Nothing
+  , _pinpointApplicationSettingsLimitsMessagesPerSecond = Nothing
+  , _pinpointApplicationSettingsLimitsTotal = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-daily
+paslDaily :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
+paslDaily = lens _pinpointApplicationSettingsLimitsDaily (\s a -> s { _pinpointApplicationSettingsLimitsDaily = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-maximumduration
+paslMaximumDuration :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
+paslMaximumDuration = lens _pinpointApplicationSettingsLimitsMaximumDuration (\s a -> s { _pinpointApplicationSettingsLimitsMaximumDuration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-messagespersecond
+paslMessagesPerSecond :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
+paslMessagesPerSecond = lens _pinpointApplicationSettingsLimitsMessagesPerSecond (\s a -> s { _pinpointApplicationSettingsLimitsMessagesPerSecond = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-limits.html#cfn-pinpoint-applicationsettings-limits-total
+paslTotal :: Lens' PinpointApplicationSettingsLimits (Maybe (Val Integer))
+paslTotal = lens _pinpointApplicationSettingsLimitsTotal (\s a -> s { _pinpointApplicationSettingsLimitsTotal = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsQuietTime.hs b/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsQuietTime.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointApplicationSettingsQuietTime.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-quiettime.html
+
+module Stratosphere.ResourceProperties.PinpointApplicationSettingsQuietTime where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointApplicationSettingsQuietTime. See
+-- 'pinpointApplicationSettingsQuietTime' for a more convenient constructor.
+data PinpointApplicationSettingsQuietTime =
+  PinpointApplicationSettingsQuietTime
+  { _pinpointApplicationSettingsQuietTimeEnd :: Val Text
+  , _pinpointApplicationSettingsQuietTimeStart :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointApplicationSettingsQuietTime where
+  toJSON PinpointApplicationSettingsQuietTime{..} =
+    object $
+    catMaybes
+    [ (Just . ("End",) . toJSON) _pinpointApplicationSettingsQuietTimeEnd
+    , (Just . ("Start",) . toJSON) _pinpointApplicationSettingsQuietTimeStart
+    ]
+
+-- | Constructor for 'PinpointApplicationSettingsQuietTime' containing
+-- required fields as arguments.
+pinpointApplicationSettingsQuietTime
+  :: Val Text -- ^ 'pasqtEnd'
+  -> Val Text -- ^ 'pasqtStart'
+  -> PinpointApplicationSettingsQuietTime
+pinpointApplicationSettingsQuietTime endarg startarg =
+  PinpointApplicationSettingsQuietTime
+  { _pinpointApplicationSettingsQuietTimeEnd = endarg
+  , _pinpointApplicationSettingsQuietTimeStart = startarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-quiettime.html#cfn-pinpoint-applicationsettings-quiettime-end
+pasqtEnd :: Lens' PinpointApplicationSettingsQuietTime (Val Text)
+pasqtEnd = lens _pinpointApplicationSettingsQuietTimeEnd (\s a -> s { _pinpointApplicationSettingsQuietTimeEnd = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-applicationsettings-quiettime.html#cfn-pinpoint-applicationsettings-quiettime-start
+pasqtStart :: Lens' PinpointApplicationSettingsQuietTime (Val Text)
+pasqtStart = lens _pinpointApplicationSettingsQuietTimeStart (\s a -> s { _pinpointApplicationSettingsQuietTimeStart = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignAttributeDimension.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignAttributeDimension.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignAttributeDimension.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-attributedimension.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignAttributeDimension where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignAttributeDimension. See
+-- 'pinpointCampaignAttributeDimension' for a more convenient constructor.
+data PinpointCampaignAttributeDimension =
+  PinpointCampaignAttributeDimension
+  { _pinpointCampaignAttributeDimensionAttributeType :: Maybe (Val Text)
+  , _pinpointCampaignAttributeDimensionValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignAttributeDimension where
+  toJSON PinpointCampaignAttributeDimension{..} =
+    object $
+    catMaybes
+    [ fmap (("AttributeType",) . toJSON) _pinpointCampaignAttributeDimensionAttributeType
+    , fmap (("Values",) . toJSON) _pinpointCampaignAttributeDimensionValues
+    ]
+
+-- | Constructor for 'PinpointCampaignAttributeDimension' containing required
+-- fields as arguments.
+pinpointCampaignAttributeDimension
+  :: PinpointCampaignAttributeDimension
+pinpointCampaignAttributeDimension  =
+  PinpointCampaignAttributeDimension
+  { _pinpointCampaignAttributeDimensionAttributeType = Nothing
+  , _pinpointCampaignAttributeDimensionValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-attributedimension.html#cfn-pinpoint-campaign-attributedimension-attributetype
+pcadAttributeType :: Lens' PinpointCampaignAttributeDimension (Maybe (Val Text))
+pcadAttributeType = lens _pinpointCampaignAttributeDimensionAttributeType (\s a -> s { _pinpointCampaignAttributeDimensionAttributeType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-attributedimension.html#cfn-pinpoint-campaign-attributedimension-values
+pcadValues :: Lens' PinpointCampaignAttributeDimension (Maybe (ValList Text))
+pcadValues = lens _pinpointCampaignAttributeDimensionValues (\s a -> s { _pinpointCampaignAttributeDimensionValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignEmailMessage.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignEmailMessage.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignEmailMessage.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignemailmessage.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignCampaignEmailMessage where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignCampaignEmailMessage. See
+-- 'pinpointCampaignCampaignEmailMessage' for a more convenient constructor.
+data PinpointCampaignCampaignEmailMessage =
+  PinpointCampaignCampaignEmailMessage
+  { _pinpointCampaignCampaignEmailMessageBody :: Maybe (Val Text)
+  , _pinpointCampaignCampaignEmailMessageFromAddress :: Maybe (Val Text)
+  , _pinpointCampaignCampaignEmailMessageHtmlBody :: Maybe (Val Text)
+  , _pinpointCampaignCampaignEmailMessageTitle :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignCampaignEmailMessage where
+  toJSON PinpointCampaignCampaignEmailMessage{..} =
+    object $
+    catMaybes
+    [ fmap (("Body",) . toJSON) _pinpointCampaignCampaignEmailMessageBody
+    , fmap (("FromAddress",) . toJSON) _pinpointCampaignCampaignEmailMessageFromAddress
+    , fmap (("HtmlBody",) . toJSON) _pinpointCampaignCampaignEmailMessageHtmlBody
+    , fmap (("Title",) . toJSON) _pinpointCampaignCampaignEmailMessageTitle
+    ]
+
+-- | Constructor for 'PinpointCampaignCampaignEmailMessage' containing
+-- required fields as arguments.
+pinpointCampaignCampaignEmailMessage
+  :: PinpointCampaignCampaignEmailMessage
+pinpointCampaignCampaignEmailMessage  =
+  PinpointCampaignCampaignEmailMessage
+  { _pinpointCampaignCampaignEmailMessageBody = Nothing
+  , _pinpointCampaignCampaignEmailMessageFromAddress = Nothing
+  , _pinpointCampaignCampaignEmailMessageHtmlBody = Nothing
+  , _pinpointCampaignCampaignEmailMessageTitle = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignemailmessage.html#cfn-pinpoint-campaign-campaignemailmessage-body
+pccemBody :: Lens' PinpointCampaignCampaignEmailMessage (Maybe (Val Text))
+pccemBody = lens _pinpointCampaignCampaignEmailMessageBody (\s a -> s { _pinpointCampaignCampaignEmailMessageBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignemailmessage.html#cfn-pinpoint-campaign-campaignemailmessage-fromaddress
+pccemFromAddress :: Lens' PinpointCampaignCampaignEmailMessage (Maybe (Val Text))
+pccemFromAddress = lens _pinpointCampaignCampaignEmailMessageFromAddress (\s a -> s { _pinpointCampaignCampaignEmailMessageFromAddress = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignemailmessage.html#cfn-pinpoint-campaign-campaignemailmessage-htmlbody
+pccemHtmlBody :: Lens' PinpointCampaignCampaignEmailMessage (Maybe (Val Text))
+pccemHtmlBody = lens _pinpointCampaignCampaignEmailMessageHtmlBody (\s a -> s { _pinpointCampaignCampaignEmailMessageHtmlBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignemailmessage.html#cfn-pinpoint-campaign-campaignemailmessage-title
+pccemTitle :: Lens' PinpointCampaignCampaignEmailMessage (Maybe (Val Text))
+pccemTitle = lens _pinpointCampaignCampaignEmailMessageTitle (\s a -> s { _pinpointCampaignCampaignEmailMessageTitle = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignEventFilter.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignEventFilter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignEventFilter.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaigneventfilter.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignCampaignEventFilter where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointCampaignEventDimensions
+
+-- | Full data type definition for PinpointCampaignCampaignEventFilter. See
+-- 'pinpointCampaignCampaignEventFilter' for a more convenient constructor.
+data PinpointCampaignCampaignEventFilter =
+  PinpointCampaignCampaignEventFilter
+  { _pinpointCampaignCampaignEventFilterDimensions :: Maybe PinpointCampaignEventDimensions
+  , _pinpointCampaignCampaignEventFilterFilterType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignCampaignEventFilter where
+  toJSON PinpointCampaignCampaignEventFilter{..} =
+    object $
+    catMaybes
+    [ fmap (("Dimensions",) . toJSON) _pinpointCampaignCampaignEventFilterDimensions
+    , fmap (("FilterType",) . toJSON) _pinpointCampaignCampaignEventFilterFilterType
+    ]
+
+-- | Constructor for 'PinpointCampaignCampaignEventFilter' containing required
+-- fields as arguments.
+pinpointCampaignCampaignEventFilter
+  :: PinpointCampaignCampaignEventFilter
+pinpointCampaignCampaignEventFilter  =
+  PinpointCampaignCampaignEventFilter
+  { _pinpointCampaignCampaignEventFilterDimensions = Nothing
+  , _pinpointCampaignCampaignEventFilterFilterType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaigneventfilter.html#cfn-pinpoint-campaign-campaigneventfilter-dimensions
+pccefDimensions :: Lens' PinpointCampaignCampaignEventFilter (Maybe PinpointCampaignEventDimensions)
+pccefDimensions = lens _pinpointCampaignCampaignEventFilterDimensions (\s a -> s { _pinpointCampaignCampaignEventFilterDimensions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaigneventfilter.html#cfn-pinpoint-campaign-campaigneventfilter-filtertype
+pccefFilterType :: Lens' PinpointCampaignCampaignEventFilter (Maybe (Val Text))
+pccefFilterType = lens _pinpointCampaignCampaignEventFilterFilterType (\s a -> s { _pinpointCampaignCampaignEventFilterFilterType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignHook.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignHook.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignHook.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignhook.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignCampaignHook where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignCampaignHook. See
+-- 'pinpointCampaignCampaignHook' for a more convenient constructor.
+data PinpointCampaignCampaignHook =
+  PinpointCampaignCampaignHook
+  { _pinpointCampaignCampaignHookLambdaFunctionName :: Maybe (Val Text)
+  , _pinpointCampaignCampaignHookMode :: Maybe (Val Text)
+  , _pinpointCampaignCampaignHookWebUrl :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignCampaignHook where
+  toJSON PinpointCampaignCampaignHook{..} =
+    object $
+    catMaybes
+    [ fmap (("LambdaFunctionName",) . toJSON) _pinpointCampaignCampaignHookLambdaFunctionName
+    , fmap (("Mode",) . toJSON) _pinpointCampaignCampaignHookMode
+    , fmap (("WebUrl",) . toJSON) _pinpointCampaignCampaignHookWebUrl
+    ]
+
+-- | Constructor for 'PinpointCampaignCampaignHook' containing required fields
+-- as arguments.
+pinpointCampaignCampaignHook
+  :: PinpointCampaignCampaignHook
+pinpointCampaignCampaignHook  =
+  PinpointCampaignCampaignHook
+  { _pinpointCampaignCampaignHookLambdaFunctionName = Nothing
+  , _pinpointCampaignCampaignHookMode = Nothing
+  , _pinpointCampaignCampaignHookWebUrl = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignhook.html#cfn-pinpoint-campaign-campaignhook-lambdafunctionname
+pcchLambdaFunctionName :: Lens' PinpointCampaignCampaignHook (Maybe (Val Text))
+pcchLambdaFunctionName = lens _pinpointCampaignCampaignHookLambdaFunctionName (\s a -> s { _pinpointCampaignCampaignHookLambdaFunctionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignhook.html#cfn-pinpoint-campaign-campaignhook-mode
+pcchMode :: Lens' PinpointCampaignCampaignHook (Maybe (Val Text))
+pcchMode = lens _pinpointCampaignCampaignHookMode (\s a -> s { _pinpointCampaignCampaignHookMode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignhook.html#cfn-pinpoint-campaign-campaignhook-weburl
+pcchWebUrl :: Lens' PinpointCampaignCampaignHook (Maybe (Val Text))
+pcchWebUrl = lens _pinpointCampaignCampaignHookWebUrl (\s a -> s { _pinpointCampaignCampaignHookWebUrl = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignSmsMessage.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignSmsMessage.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignCampaignSmsMessage.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignsmsmessage.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignCampaignSmsMessage where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignCampaignSmsMessage. See
+-- 'pinpointCampaignCampaignSmsMessage' for a more convenient constructor.
+data PinpointCampaignCampaignSmsMessage =
+  PinpointCampaignCampaignSmsMessage
+  { _pinpointCampaignCampaignSmsMessageBody :: Maybe (Val Text)
+  , _pinpointCampaignCampaignSmsMessageMessageType :: Maybe (Val Text)
+  , _pinpointCampaignCampaignSmsMessageSenderId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignCampaignSmsMessage where
+  toJSON PinpointCampaignCampaignSmsMessage{..} =
+    object $
+    catMaybes
+    [ fmap (("Body",) . toJSON) _pinpointCampaignCampaignSmsMessageBody
+    , fmap (("MessageType",) . toJSON) _pinpointCampaignCampaignSmsMessageMessageType
+    , fmap (("SenderId",) . toJSON) _pinpointCampaignCampaignSmsMessageSenderId
+    ]
+
+-- | Constructor for 'PinpointCampaignCampaignSmsMessage' containing required
+-- fields as arguments.
+pinpointCampaignCampaignSmsMessage
+  :: PinpointCampaignCampaignSmsMessage
+pinpointCampaignCampaignSmsMessage  =
+  PinpointCampaignCampaignSmsMessage
+  { _pinpointCampaignCampaignSmsMessageBody = Nothing
+  , _pinpointCampaignCampaignSmsMessageMessageType = Nothing
+  , _pinpointCampaignCampaignSmsMessageSenderId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignsmsmessage.html#cfn-pinpoint-campaign-campaignsmsmessage-body
+pccsmBody :: Lens' PinpointCampaignCampaignSmsMessage (Maybe (Val Text))
+pccsmBody = lens _pinpointCampaignCampaignSmsMessageBody (\s a -> s { _pinpointCampaignCampaignSmsMessageBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignsmsmessage.html#cfn-pinpoint-campaign-campaignsmsmessage-messagetype
+pccsmMessageType :: Lens' PinpointCampaignCampaignSmsMessage (Maybe (Val Text))
+pccsmMessageType = lens _pinpointCampaignCampaignSmsMessageMessageType (\s a -> s { _pinpointCampaignCampaignSmsMessageMessageType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-campaignsmsmessage.html#cfn-pinpoint-campaign-campaignsmsmessage-senderid
+pccsmSenderId :: Lens' PinpointCampaignCampaignSmsMessage (Maybe (Val Text))
+pccsmSenderId = lens _pinpointCampaignCampaignSmsMessageSenderId (\s a -> s { _pinpointCampaignCampaignSmsMessageSenderId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignEventDimensions.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignEventDimensions.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignEventDimensions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-eventdimensions.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignEventDimensions where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointCampaignSetDimension
+
+-- | Full data type definition for PinpointCampaignEventDimensions. See
+-- 'pinpointCampaignEventDimensions' for a more convenient constructor.
+data PinpointCampaignEventDimensions =
+  PinpointCampaignEventDimensions
+  { _pinpointCampaignEventDimensionsAttributes :: Maybe Object
+  , _pinpointCampaignEventDimensionsEventType :: Maybe PinpointCampaignSetDimension
+  , _pinpointCampaignEventDimensionsMetrics :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignEventDimensions where
+  toJSON PinpointCampaignEventDimensions{..} =
+    object $
+    catMaybes
+    [ fmap (("Attributes",) . toJSON) _pinpointCampaignEventDimensionsAttributes
+    , fmap (("EventType",) . toJSON) _pinpointCampaignEventDimensionsEventType
+    , fmap (("Metrics",) . toJSON) _pinpointCampaignEventDimensionsMetrics
+    ]
+
+-- | Constructor for 'PinpointCampaignEventDimensions' containing required
+-- fields as arguments.
+pinpointCampaignEventDimensions
+  :: PinpointCampaignEventDimensions
+pinpointCampaignEventDimensions  =
+  PinpointCampaignEventDimensions
+  { _pinpointCampaignEventDimensionsAttributes = Nothing
+  , _pinpointCampaignEventDimensionsEventType = Nothing
+  , _pinpointCampaignEventDimensionsMetrics = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-eventdimensions.html#cfn-pinpoint-campaign-eventdimensions-attributes
+pcedAttributes :: Lens' PinpointCampaignEventDimensions (Maybe Object)
+pcedAttributes = lens _pinpointCampaignEventDimensionsAttributes (\s a -> s { _pinpointCampaignEventDimensionsAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-eventdimensions.html#cfn-pinpoint-campaign-eventdimensions-eventtype
+pcedEventType :: Lens' PinpointCampaignEventDimensions (Maybe PinpointCampaignSetDimension)
+pcedEventType = lens _pinpointCampaignEventDimensionsEventType (\s a -> s { _pinpointCampaignEventDimensionsEventType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-eventdimensions.html#cfn-pinpoint-campaign-eventdimensions-metrics
+pcedMetrics :: Lens' PinpointCampaignEventDimensions (Maybe Object)
+pcedMetrics = lens _pinpointCampaignEventDimensionsMetrics (\s a -> s { _pinpointCampaignEventDimensionsMetrics = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignLimits.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignLimits.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignLimits.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-limits.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignLimits where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignLimits. See
+-- 'pinpointCampaignLimits' for a more convenient constructor.
+data PinpointCampaignLimits =
+  PinpointCampaignLimits
+  { _pinpointCampaignLimitsDaily :: Maybe (Val Integer)
+  , _pinpointCampaignLimitsMaximumDuration :: Maybe (Val Integer)
+  , _pinpointCampaignLimitsMessagesPerSecond :: Maybe (Val Integer)
+  , _pinpointCampaignLimitsTotal :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignLimits where
+  toJSON PinpointCampaignLimits{..} =
+    object $
+    catMaybes
+    [ fmap (("Daily",) . toJSON) _pinpointCampaignLimitsDaily
+    , fmap (("MaximumDuration",) . toJSON) _pinpointCampaignLimitsMaximumDuration
+    , fmap (("MessagesPerSecond",) . toJSON) _pinpointCampaignLimitsMessagesPerSecond
+    , fmap (("Total",) . toJSON) _pinpointCampaignLimitsTotal
+    ]
+
+-- | Constructor for 'PinpointCampaignLimits' containing required fields as
+-- arguments.
+pinpointCampaignLimits
+  :: PinpointCampaignLimits
+pinpointCampaignLimits  =
+  PinpointCampaignLimits
+  { _pinpointCampaignLimitsDaily = Nothing
+  , _pinpointCampaignLimitsMaximumDuration = Nothing
+  , _pinpointCampaignLimitsMessagesPerSecond = Nothing
+  , _pinpointCampaignLimitsTotal = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-limits.html#cfn-pinpoint-campaign-limits-daily
+pclDaily :: Lens' PinpointCampaignLimits (Maybe (Val Integer))
+pclDaily = lens _pinpointCampaignLimitsDaily (\s a -> s { _pinpointCampaignLimitsDaily = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-limits.html#cfn-pinpoint-campaign-limits-maximumduration
+pclMaximumDuration :: Lens' PinpointCampaignLimits (Maybe (Val Integer))
+pclMaximumDuration = lens _pinpointCampaignLimitsMaximumDuration (\s a -> s { _pinpointCampaignLimitsMaximumDuration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-limits.html#cfn-pinpoint-campaign-limits-messagespersecond
+pclMessagesPerSecond :: Lens' PinpointCampaignLimits (Maybe (Val Integer))
+pclMessagesPerSecond = lens _pinpointCampaignLimitsMessagesPerSecond (\s a -> s { _pinpointCampaignLimitsMessagesPerSecond = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-limits.html#cfn-pinpoint-campaign-limits-total
+pclTotal :: Lens' PinpointCampaignLimits (Maybe (Val Integer))
+pclTotal = lens _pinpointCampaignLimitsTotal (\s a -> s { _pinpointCampaignLimitsTotal = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMessage.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMessage.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMessage.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignMessage where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignMessage. See
+-- 'pinpointCampaignMessage' for a more convenient constructor.
+data PinpointCampaignMessage =
+  PinpointCampaignMessage
+  { _pinpointCampaignMessageAction :: Maybe (Val Text)
+  , _pinpointCampaignMessageBody :: Maybe (Val Text)
+  , _pinpointCampaignMessageImageIconUrl :: Maybe (Val Text)
+  , _pinpointCampaignMessageImageSmallIconUrl :: Maybe (Val Text)
+  , _pinpointCampaignMessageImageUrl :: Maybe (Val Text)
+  , _pinpointCampaignMessageJsonBody :: Maybe (Val Text)
+  , _pinpointCampaignMessageMediaUrl :: Maybe (Val Text)
+  , _pinpointCampaignMessageRawContent :: Maybe (Val Text)
+  , _pinpointCampaignMessageSilentPush :: Maybe (Val Bool)
+  , _pinpointCampaignMessageTimeToLive :: Maybe (Val Integer)
+  , _pinpointCampaignMessageTitle :: Maybe (Val Text)
+  , _pinpointCampaignMessageUrl :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignMessage where
+  toJSON PinpointCampaignMessage{..} =
+    object $
+    catMaybes
+    [ fmap (("Action",) . toJSON) _pinpointCampaignMessageAction
+    , fmap (("Body",) . toJSON) _pinpointCampaignMessageBody
+    , fmap (("ImageIconUrl",) . toJSON) _pinpointCampaignMessageImageIconUrl
+    , fmap (("ImageSmallIconUrl",) . toJSON) _pinpointCampaignMessageImageSmallIconUrl
+    , fmap (("ImageUrl",) . toJSON) _pinpointCampaignMessageImageUrl
+    , fmap (("JsonBody",) . toJSON) _pinpointCampaignMessageJsonBody
+    , fmap (("MediaUrl",) . toJSON) _pinpointCampaignMessageMediaUrl
+    , fmap (("RawContent",) . toJSON) _pinpointCampaignMessageRawContent
+    , fmap (("SilentPush",) . toJSON) _pinpointCampaignMessageSilentPush
+    , fmap (("TimeToLive",) . toJSON) _pinpointCampaignMessageTimeToLive
+    , fmap (("Title",) . toJSON) _pinpointCampaignMessageTitle
+    , fmap (("Url",) . toJSON) _pinpointCampaignMessageUrl
+    ]
+
+-- | Constructor for 'PinpointCampaignMessage' containing required fields as
+-- arguments.
+pinpointCampaignMessage
+  :: PinpointCampaignMessage
+pinpointCampaignMessage  =
+  PinpointCampaignMessage
+  { _pinpointCampaignMessageAction = Nothing
+  , _pinpointCampaignMessageBody = Nothing
+  , _pinpointCampaignMessageImageIconUrl = Nothing
+  , _pinpointCampaignMessageImageSmallIconUrl = Nothing
+  , _pinpointCampaignMessageImageUrl = Nothing
+  , _pinpointCampaignMessageJsonBody = Nothing
+  , _pinpointCampaignMessageMediaUrl = Nothing
+  , _pinpointCampaignMessageRawContent = Nothing
+  , _pinpointCampaignMessageSilentPush = Nothing
+  , _pinpointCampaignMessageTimeToLive = Nothing
+  , _pinpointCampaignMessageTitle = Nothing
+  , _pinpointCampaignMessageUrl = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-action
+pcmAction :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmAction = lens _pinpointCampaignMessageAction (\s a -> s { _pinpointCampaignMessageAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-body
+pcmBody :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmBody = lens _pinpointCampaignMessageBody (\s a -> s { _pinpointCampaignMessageBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-imageiconurl
+pcmImageIconUrl :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmImageIconUrl = lens _pinpointCampaignMessageImageIconUrl (\s a -> s { _pinpointCampaignMessageImageIconUrl = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-imagesmalliconurl
+pcmImageSmallIconUrl :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmImageSmallIconUrl = lens _pinpointCampaignMessageImageSmallIconUrl (\s a -> s { _pinpointCampaignMessageImageSmallIconUrl = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-imageurl
+pcmImageUrl :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmImageUrl = lens _pinpointCampaignMessageImageUrl (\s a -> s { _pinpointCampaignMessageImageUrl = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-jsonbody
+pcmJsonBody :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmJsonBody = lens _pinpointCampaignMessageJsonBody (\s a -> s { _pinpointCampaignMessageJsonBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-mediaurl
+pcmMediaUrl :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmMediaUrl = lens _pinpointCampaignMessageMediaUrl (\s a -> s { _pinpointCampaignMessageMediaUrl = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-rawcontent
+pcmRawContent :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmRawContent = lens _pinpointCampaignMessageRawContent (\s a -> s { _pinpointCampaignMessageRawContent = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-silentpush
+pcmSilentPush :: Lens' PinpointCampaignMessage (Maybe (Val Bool))
+pcmSilentPush = lens _pinpointCampaignMessageSilentPush (\s a -> s { _pinpointCampaignMessageSilentPush = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-timetolive
+pcmTimeToLive :: Lens' PinpointCampaignMessage (Maybe (Val Integer))
+pcmTimeToLive = lens _pinpointCampaignMessageTimeToLive (\s a -> s { _pinpointCampaignMessageTimeToLive = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-title
+pcmTitle :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmTitle = lens _pinpointCampaignMessageTitle (\s a -> s { _pinpointCampaignMessageTitle = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-message.html#cfn-pinpoint-campaign-message-url
+pcmUrl :: Lens' PinpointCampaignMessage (Maybe (Val Text))
+pcmUrl = lens _pinpointCampaignMessageUrl (\s a -> s { _pinpointCampaignMessageUrl = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMessageConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMessageConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMessageConfiguration.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignMessageConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointCampaignMessage
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignEmailMessage
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignSmsMessage
+
+-- | Full data type definition for PinpointCampaignMessageConfiguration. See
+-- 'pinpointCampaignMessageConfiguration' for a more convenient constructor.
+data PinpointCampaignMessageConfiguration =
+  PinpointCampaignMessageConfiguration
+  { _pinpointCampaignMessageConfigurationADMMessage :: Maybe PinpointCampaignMessage
+  , _pinpointCampaignMessageConfigurationAPNSMessage :: Maybe PinpointCampaignMessage
+  , _pinpointCampaignMessageConfigurationBaiduMessage :: Maybe PinpointCampaignMessage
+  , _pinpointCampaignMessageConfigurationDefaultMessage :: Maybe PinpointCampaignMessage
+  , _pinpointCampaignMessageConfigurationEmailMessage :: Maybe PinpointCampaignCampaignEmailMessage
+  , _pinpointCampaignMessageConfigurationGCMMessage :: Maybe PinpointCampaignMessage
+  , _pinpointCampaignMessageConfigurationSMSMessage :: Maybe PinpointCampaignCampaignSmsMessage
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignMessageConfiguration where
+  toJSON PinpointCampaignMessageConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("ADMMessage",) . toJSON) _pinpointCampaignMessageConfigurationADMMessage
+    , fmap (("APNSMessage",) . toJSON) _pinpointCampaignMessageConfigurationAPNSMessage
+    , fmap (("BaiduMessage",) . toJSON) _pinpointCampaignMessageConfigurationBaiduMessage
+    , fmap (("DefaultMessage",) . toJSON) _pinpointCampaignMessageConfigurationDefaultMessage
+    , fmap (("EmailMessage",) . toJSON) _pinpointCampaignMessageConfigurationEmailMessage
+    , fmap (("GCMMessage",) . toJSON) _pinpointCampaignMessageConfigurationGCMMessage
+    , fmap (("SMSMessage",) . toJSON) _pinpointCampaignMessageConfigurationSMSMessage
+    ]
+
+-- | Constructor for 'PinpointCampaignMessageConfiguration' containing
+-- required fields as arguments.
+pinpointCampaignMessageConfiguration
+  :: PinpointCampaignMessageConfiguration
+pinpointCampaignMessageConfiguration  =
+  PinpointCampaignMessageConfiguration
+  { _pinpointCampaignMessageConfigurationADMMessage = Nothing
+  , _pinpointCampaignMessageConfigurationAPNSMessage = Nothing
+  , _pinpointCampaignMessageConfigurationBaiduMessage = Nothing
+  , _pinpointCampaignMessageConfigurationDefaultMessage = Nothing
+  , _pinpointCampaignMessageConfigurationEmailMessage = Nothing
+  , _pinpointCampaignMessageConfigurationGCMMessage = Nothing
+  , _pinpointCampaignMessageConfigurationSMSMessage = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html#cfn-pinpoint-campaign-messageconfiguration-admmessage
+pcmcADMMessage :: Lens' PinpointCampaignMessageConfiguration (Maybe PinpointCampaignMessage)
+pcmcADMMessage = lens _pinpointCampaignMessageConfigurationADMMessage (\s a -> s { _pinpointCampaignMessageConfigurationADMMessage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html#cfn-pinpoint-campaign-messageconfiguration-apnsmessage
+pcmcAPNSMessage :: Lens' PinpointCampaignMessageConfiguration (Maybe PinpointCampaignMessage)
+pcmcAPNSMessage = lens _pinpointCampaignMessageConfigurationAPNSMessage (\s a -> s { _pinpointCampaignMessageConfigurationAPNSMessage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html#cfn-pinpoint-campaign-messageconfiguration-baidumessage
+pcmcBaiduMessage :: Lens' PinpointCampaignMessageConfiguration (Maybe PinpointCampaignMessage)
+pcmcBaiduMessage = lens _pinpointCampaignMessageConfigurationBaiduMessage (\s a -> s { _pinpointCampaignMessageConfigurationBaiduMessage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html#cfn-pinpoint-campaign-messageconfiguration-defaultmessage
+pcmcDefaultMessage :: Lens' PinpointCampaignMessageConfiguration (Maybe PinpointCampaignMessage)
+pcmcDefaultMessage = lens _pinpointCampaignMessageConfigurationDefaultMessage (\s a -> s { _pinpointCampaignMessageConfigurationDefaultMessage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html#cfn-pinpoint-campaign-messageconfiguration-emailmessage
+pcmcEmailMessage :: Lens' PinpointCampaignMessageConfiguration (Maybe PinpointCampaignCampaignEmailMessage)
+pcmcEmailMessage = lens _pinpointCampaignMessageConfigurationEmailMessage (\s a -> s { _pinpointCampaignMessageConfigurationEmailMessage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html#cfn-pinpoint-campaign-messageconfiguration-gcmmessage
+pcmcGCMMessage :: Lens' PinpointCampaignMessageConfiguration (Maybe PinpointCampaignMessage)
+pcmcGCMMessage = lens _pinpointCampaignMessageConfigurationGCMMessage (\s a -> s { _pinpointCampaignMessageConfigurationGCMMessage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-messageconfiguration.html#cfn-pinpoint-campaign-messageconfiguration-smsmessage
+pcmcSMSMessage :: Lens' PinpointCampaignMessageConfiguration (Maybe PinpointCampaignCampaignSmsMessage)
+pcmcSMSMessage = lens _pinpointCampaignMessageConfigurationSMSMessage (\s a -> s { _pinpointCampaignMessageConfigurationSMSMessage = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMetricDimension.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMetricDimension.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignMetricDimension.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-metricdimension.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignMetricDimension where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignMetricDimension. See
+-- 'pinpointCampaignMetricDimension' for a more convenient constructor.
+data PinpointCampaignMetricDimension =
+  PinpointCampaignMetricDimension
+  { _pinpointCampaignMetricDimensionComparisonOperator :: Maybe (Val Text)
+  , _pinpointCampaignMetricDimensionValue :: Maybe (Val Double)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignMetricDimension where
+  toJSON PinpointCampaignMetricDimension{..} =
+    object $
+    catMaybes
+    [ fmap (("ComparisonOperator",) . toJSON) _pinpointCampaignMetricDimensionComparisonOperator
+    , fmap (("Value",) . toJSON) _pinpointCampaignMetricDimensionValue
+    ]
+
+-- | Constructor for 'PinpointCampaignMetricDimension' containing required
+-- fields as arguments.
+pinpointCampaignMetricDimension
+  :: PinpointCampaignMetricDimension
+pinpointCampaignMetricDimension  =
+  PinpointCampaignMetricDimension
+  { _pinpointCampaignMetricDimensionComparisonOperator = Nothing
+  , _pinpointCampaignMetricDimensionValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-metricdimension.html#cfn-pinpoint-campaign-metricdimension-comparisonoperator
+pcmdComparisonOperator :: Lens' PinpointCampaignMetricDimension (Maybe (Val Text))
+pcmdComparisonOperator = lens _pinpointCampaignMetricDimensionComparisonOperator (\s a -> s { _pinpointCampaignMetricDimensionComparisonOperator = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-metricdimension.html#cfn-pinpoint-campaign-metricdimension-value
+pcmdValue :: Lens' PinpointCampaignMetricDimension (Maybe (Val Double))
+pcmdValue = lens _pinpointCampaignMetricDimensionValue (\s a -> s { _pinpointCampaignMetricDimensionValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignQuietTime.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignQuietTime.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignQuietTime.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule-quiettime.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignQuietTime where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignQuietTime. See
+-- 'pinpointCampaignQuietTime' for a more convenient constructor.
+data PinpointCampaignQuietTime =
+  PinpointCampaignQuietTime
+  { _pinpointCampaignQuietTimeEnd :: Val Text
+  , _pinpointCampaignQuietTimeStart :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignQuietTime where
+  toJSON PinpointCampaignQuietTime{..} =
+    object $
+    catMaybes
+    [ (Just . ("End",) . toJSON) _pinpointCampaignQuietTimeEnd
+    , (Just . ("Start",) . toJSON) _pinpointCampaignQuietTimeStart
+    ]
+
+-- | Constructor for 'PinpointCampaignQuietTime' containing required fields as
+-- arguments.
+pinpointCampaignQuietTime
+  :: Val Text -- ^ 'pcqtEnd'
+  -> Val Text -- ^ 'pcqtStart'
+  -> PinpointCampaignQuietTime
+pinpointCampaignQuietTime endarg startarg =
+  PinpointCampaignQuietTime
+  { _pinpointCampaignQuietTimeEnd = endarg
+  , _pinpointCampaignQuietTimeStart = startarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule-quiettime.html#cfn-pinpoint-campaign-schedule-quiettime-end
+pcqtEnd :: Lens' PinpointCampaignQuietTime (Val Text)
+pcqtEnd = lens _pinpointCampaignQuietTimeEnd (\s a -> s { _pinpointCampaignQuietTimeEnd = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule-quiettime.html#cfn-pinpoint-campaign-schedule-quiettime-start
+pcqtStart :: Lens' PinpointCampaignQuietTime (Val Text)
+pcqtStart = lens _pinpointCampaignQuietTimeStart (\s a -> s { _pinpointCampaignQuietTimeStart = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignSchedule.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignSchedule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignSchedule.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignSchedule where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignEventFilter
+import Stratosphere.ResourceProperties.PinpointCampaignQuietTime
+
+-- | Full data type definition for PinpointCampaignSchedule. See
+-- 'pinpointCampaignSchedule' for a more convenient constructor.
+data PinpointCampaignSchedule =
+  PinpointCampaignSchedule
+  { _pinpointCampaignScheduleEndTime :: Maybe (Val Text)
+  , _pinpointCampaignScheduleEventFilter :: Maybe PinpointCampaignCampaignEventFilter
+  , _pinpointCampaignScheduleFrequency :: Maybe (Val Text)
+  , _pinpointCampaignScheduleIsLocalTime :: Maybe (Val Bool)
+  , _pinpointCampaignScheduleQuietTime :: Maybe PinpointCampaignQuietTime
+  , _pinpointCampaignScheduleStartTime :: Maybe (Val Text)
+  , _pinpointCampaignScheduleTimeZone :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignSchedule where
+  toJSON PinpointCampaignSchedule{..} =
+    object $
+    catMaybes
+    [ fmap (("EndTime",) . toJSON) _pinpointCampaignScheduleEndTime
+    , fmap (("EventFilter",) . toJSON) _pinpointCampaignScheduleEventFilter
+    , fmap (("Frequency",) . toJSON) _pinpointCampaignScheduleFrequency
+    , fmap (("IsLocalTime",) . toJSON) _pinpointCampaignScheduleIsLocalTime
+    , fmap (("QuietTime",) . toJSON) _pinpointCampaignScheduleQuietTime
+    , fmap (("StartTime",) . toJSON) _pinpointCampaignScheduleStartTime
+    , fmap (("TimeZone",) . toJSON) _pinpointCampaignScheduleTimeZone
+    ]
+
+-- | Constructor for 'PinpointCampaignSchedule' containing required fields as
+-- arguments.
+pinpointCampaignSchedule
+  :: PinpointCampaignSchedule
+pinpointCampaignSchedule  =
+  PinpointCampaignSchedule
+  { _pinpointCampaignScheduleEndTime = Nothing
+  , _pinpointCampaignScheduleEventFilter = Nothing
+  , _pinpointCampaignScheduleFrequency = Nothing
+  , _pinpointCampaignScheduleIsLocalTime = Nothing
+  , _pinpointCampaignScheduleQuietTime = Nothing
+  , _pinpointCampaignScheduleStartTime = Nothing
+  , _pinpointCampaignScheduleTimeZone = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-endtime
+pcsEndTime :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
+pcsEndTime = lens _pinpointCampaignScheduleEndTime (\s a -> s { _pinpointCampaignScheduleEndTime = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-eventfilter
+pcsEventFilter :: Lens' PinpointCampaignSchedule (Maybe PinpointCampaignCampaignEventFilter)
+pcsEventFilter = lens _pinpointCampaignScheduleEventFilter (\s a -> s { _pinpointCampaignScheduleEventFilter = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-frequency
+pcsFrequency :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
+pcsFrequency = lens _pinpointCampaignScheduleFrequency (\s a -> s { _pinpointCampaignScheduleFrequency = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-islocaltime
+pcsIsLocalTime :: Lens' PinpointCampaignSchedule (Maybe (Val Bool))
+pcsIsLocalTime = lens _pinpointCampaignScheduleIsLocalTime (\s a -> s { _pinpointCampaignScheduleIsLocalTime = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-quiettime
+pcsQuietTime :: Lens' PinpointCampaignSchedule (Maybe PinpointCampaignQuietTime)
+pcsQuietTime = lens _pinpointCampaignScheduleQuietTime (\s a -> s { _pinpointCampaignScheduleQuietTime = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-starttime
+pcsStartTime :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
+pcsStartTime = lens _pinpointCampaignScheduleStartTime (\s a -> s { _pinpointCampaignScheduleStartTime = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-schedule.html#cfn-pinpoint-campaign-schedule-timezone
+pcsTimeZone :: Lens' PinpointCampaignSchedule (Maybe (Val Text))
+pcsTimeZone = lens _pinpointCampaignScheduleTimeZone (\s a -> s { _pinpointCampaignScheduleTimeZone = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignSetDimension.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignSetDimension.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignSetDimension.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-setdimension.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignSetDimension where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointCampaignSetDimension. See
+-- 'pinpointCampaignSetDimension' for a more convenient constructor.
+data PinpointCampaignSetDimension =
+  PinpointCampaignSetDimension
+  { _pinpointCampaignSetDimensionDimensionType :: Maybe (Val Text)
+  , _pinpointCampaignSetDimensionValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignSetDimension where
+  toJSON PinpointCampaignSetDimension{..} =
+    object $
+    catMaybes
+    [ fmap (("DimensionType",) . toJSON) _pinpointCampaignSetDimensionDimensionType
+    , fmap (("Values",) . toJSON) _pinpointCampaignSetDimensionValues
+    ]
+
+-- | Constructor for 'PinpointCampaignSetDimension' containing required fields
+-- as arguments.
+pinpointCampaignSetDimension
+  :: PinpointCampaignSetDimension
+pinpointCampaignSetDimension  =
+  PinpointCampaignSetDimension
+  { _pinpointCampaignSetDimensionDimensionType = Nothing
+  , _pinpointCampaignSetDimensionValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-setdimension.html#cfn-pinpoint-campaign-setdimension-dimensiontype
+pcsdDimensionType :: Lens' PinpointCampaignSetDimension (Maybe (Val Text))
+pcsdDimensionType = lens _pinpointCampaignSetDimensionDimensionType (\s a -> s { _pinpointCampaignSetDimensionDimensionType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-setdimension.html#cfn-pinpoint-campaign-setdimension-values
+pcsdValues :: Lens' PinpointCampaignSetDimension (Maybe (ValList Text))
+pcsdValues = lens _pinpointCampaignSetDimensionValues (\s a -> s { _pinpointCampaignSetDimensionValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointCampaignWriteTreatmentResource.hs b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignWriteTreatmentResource.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointCampaignWriteTreatmentResource.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-writetreatmentresource.html
+
+module Stratosphere.ResourceProperties.PinpointCampaignWriteTreatmentResource where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointCampaignMessageConfiguration
+import Stratosphere.ResourceProperties.PinpointCampaignSchedule
+
+-- | Full data type definition for PinpointCampaignWriteTreatmentResource. See
+-- 'pinpointCampaignWriteTreatmentResource' for a more convenient
+-- constructor.
+data PinpointCampaignWriteTreatmentResource =
+  PinpointCampaignWriteTreatmentResource
+  { _pinpointCampaignWriteTreatmentResourceMessageConfiguration :: Maybe PinpointCampaignMessageConfiguration
+  , _pinpointCampaignWriteTreatmentResourceSchedule :: Maybe PinpointCampaignSchedule
+  , _pinpointCampaignWriteTreatmentResourceSizePercent :: Maybe (Val Integer)
+  , _pinpointCampaignWriteTreatmentResourceTreatmentDescription :: Maybe (Val Text)
+  , _pinpointCampaignWriteTreatmentResourceTreatmentName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointCampaignWriteTreatmentResource where
+  toJSON PinpointCampaignWriteTreatmentResource{..} =
+    object $
+    catMaybes
+    [ fmap (("MessageConfiguration",) . toJSON) _pinpointCampaignWriteTreatmentResourceMessageConfiguration
+    , fmap (("Schedule",) . toJSON) _pinpointCampaignWriteTreatmentResourceSchedule
+    , fmap (("SizePercent",) . toJSON) _pinpointCampaignWriteTreatmentResourceSizePercent
+    , fmap (("TreatmentDescription",) . toJSON) _pinpointCampaignWriteTreatmentResourceTreatmentDescription
+    , fmap (("TreatmentName",) . toJSON) _pinpointCampaignWriteTreatmentResourceTreatmentName
+    ]
+
+-- | Constructor for 'PinpointCampaignWriteTreatmentResource' containing
+-- required fields as arguments.
+pinpointCampaignWriteTreatmentResource
+  :: PinpointCampaignWriteTreatmentResource
+pinpointCampaignWriteTreatmentResource  =
+  PinpointCampaignWriteTreatmentResource
+  { _pinpointCampaignWriteTreatmentResourceMessageConfiguration = Nothing
+  , _pinpointCampaignWriteTreatmentResourceSchedule = Nothing
+  , _pinpointCampaignWriteTreatmentResourceSizePercent = Nothing
+  , _pinpointCampaignWriteTreatmentResourceTreatmentDescription = Nothing
+  , _pinpointCampaignWriteTreatmentResourceTreatmentName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-writetreatmentresource.html#cfn-pinpoint-campaign-writetreatmentresource-messageconfiguration
+pcwtrMessageConfiguration :: Lens' PinpointCampaignWriteTreatmentResource (Maybe PinpointCampaignMessageConfiguration)
+pcwtrMessageConfiguration = lens _pinpointCampaignWriteTreatmentResourceMessageConfiguration (\s a -> s { _pinpointCampaignWriteTreatmentResourceMessageConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-writetreatmentresource.html#cfn-pinpoint-campaign-writetreatmentresource-schedule
+pcwtrSchedule :: Lens' PinpointCampaignWriteTreatmentResource (Maybe PinpointCampaignSchedule)
+pcwtrSchedule = lens _pinpointCampaignWriteTreatmentResourceSchedule (\s a -> s { _pinpointCampaignWriteTreatmentResourceSchedule = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-writetreatmentresource.html#cfn-pinpoint-campaign-writetreatmentresource-sizepercent
+pcwtrSizePercent :: Lens' PinpointCampaignWriteTreatmentResource (Maybe (Val Integer))
+pcwtrSizePercent = lens _pinpointCampaignWriteTreatmentResourceSizePercent (\s a -> s { _pinpointCampaignWriteTreatmentResourceSizePercent = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-writetreatmentresource.html#cfn-pinpoint-campaign-writetreatmentresource-treatmentdescription
+pcwtrTreatmentDescription :: Lens' PinpointCampaignWriteTreatmentResource (Maybe (Val Text))
+pcwtrTreatmentDescription = lens _pinpointCampaignWriteTreatmentResourceTreatmentDescription (\s a -> s { _pinpointCampaignWriteTreatmentResourceTreatmentDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-campaign-writetreatmentresource.html#cfn-pinpoint-campaign-writetreatmentresource-treatmentname
+pcwtrTreatmentName :: Lens' PinpointCampaignWriteTreatmentResource (Maybe (Val Text))
+pcwtrTreatmentName = lens _pinpointCampaignWriteTreatmentResourceTreatmentName (\s a -> s { _pinpointCampaignWriteTreatmentResourceTreatmentName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentAttributeDimension.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentAttributeDimension.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentAttributeDimension.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-attributedimension.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentAttributeDimension where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointSegmentAttributeDimension. See
+-- 'pinpointSegmentAttributeDimension' for a more convenient constructor.
+data PinpointSegmentAttributeDimension =
+  PinpointSegmentAttributeDimension
+  { _pinpointSegmentAttributeDimensionAttributeType :: Maybe (Val Text)
+  , _pinpointSegmentAttributeDimensionValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentAttributeDimension where
+  toJSON PinpointSegmentAttributeDimension{..} =
+    object $
+    catMaybes
+    [ fmap (("AttributeType",) . toJSON) _pinpointSegmentAttributeDimensionAttributeType
+    , fmap (("Values",) . toJSON) _pinpointSegmentAttributeDimensionValues
+    ]
+
+-- | Constructor for 'PinpointSegmentAttributeDimension' containing required
+-- fields as arguments.
+pinpointSegmentAttributeDimension
+  :: PinpointSegmentAttributeDimension
+pinpointSegmentAttributeDimension  =
+  PinpointSegmentAttributeDimension
+  { _pinpointSegmentAttributeDimensionAttributeType = Nothing
+  , _pinpointSegmentAttributeDimensionValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-attributedimension.html#cfn-pinpoint-segment-attributedimension-attributetype
+psadAttributeType :: Lens' PinpointSegmentAttributeDimension (Maybe (Val Text))
+psadAttributeType = lens _pinpointSegmentAttributeDimensionAttributeType (\s a -> s { _pinpointSegmentAttributeDimensionAttributeType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-attributedimension.html#cfn-pinpoint-segment-attributedimension-values
+psadValues :: Lens' PinpointSegmentAttributeDimension (Maybe (ValList Text))
+psadValues = lens _pinpointSegmentAttributeDimensionValues (\s a -> s { _pinpointSegmentAttributeDimensionValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentBehavior.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentBehavior.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentBehavior.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-behavior.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentBehavior where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentRecency
+
+-- | Full data type definition for PinpointSegmentBehavior. See
+-- 'pinpointSegmentBehavior' for a more convenient constructor.
+data PinpointSegmentBehavior =
+  PinpointSegmentBehavior
+  { _pinpointSegmentBehaviorRecency :: Maybe PinpointSegmentRecency
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentBehavior where
+  toJSON PinpointSegmentBehavior{..} =
+    object $
+    catMaybes
+    [ fmap (("Recency",) . toJSON) _pinpointSegmentBehaviorRecency
+    ]
+
+-- | Constructor for 'PinpointSegmentBehavior' containing required fields as
+-- arguments.
+pinpointSegmentBehavior
+  :: PinpointSegmentBehavior
+pinpointSegmentBehavior  =
+  PinpointSegmentBehavior
+  { _pinpointSegmentBehaviorRecency = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-behavior.html#cfn-pinpoint-segment-segmentdimensions-behavior-recency
+psbRecency :: Lens' PinpointSegmentBehavior (Maybe PinpointSegmentRecency)
+psbRecency = lens _pinpointSegmentBehaviorRecency (\s a -> s { _pinpointSegmentBehaviorRecency = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentCoordinates.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentCoordinates.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentCoordinates.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint-coordinates.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentCoordinates where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointSegmentCoordinates. See
+-- 'pinpointSegmentCoordinates' for a more convenient constructor.
+data PinpointSegmentCoordinates =
+  PinpointSegmentCoordinates
+  { _pinpointSegmentCoordinatesLatitude :: Val Double
+  , _pinpointSegmentCoordinatesLongitude :: Val Double
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentCoordinates where
+  toJSON PinpointSegmentCoordinates{..} =
+    object $
+    catMaybes
+    [ (Just . ("Latitude",) . toJSON) _pinpointSegmentCoordinatesLatitude
+    , (Just . ("Longitude",) . toJSON) _pinpointSegmentCoordinatesLongitude
+    ]
+
+-- | Constructor for 'PinpointSegmentCoordinates' containing required fields
+-- as arguments.
+pinpointSegmentCoordinates
+  :: Val Double -- ^ 'pscLatitude'
+  -> Val Double -- ^ 'pscLongitude'
+  -> PinpointSegmentCoordinates
+pinpointSegmentCoordinates latitudearg longitudearg =
+  PinpointSegmentCoordinates
+  { _pinpointSegmentCoordinatesLatitude = latitudearg
+  , _pinpointSegmentCoordinatesLongitude = longitudearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint-coordinates.html#cfn-pinpoint-segment-segmentdimensions-location-gpspoint-coordinates-latitude
+pscLatitude :: Lens' PinpointSegmentCoordinates (Val Double)
+pscLatitude = lens _pinpointSegmentCoordinatesLatitude (\s a -> s { _pinpointSegmentCoordinatesLatitude = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint-coordinates.html#cfn-pinpoint-segment-segmentdimensions-location-gpspoint-coordinates-longitude
+pscLongitude :: Lens' PinpointSegmentCoordinates (Val Double)
+pscLongitude = lens _pinpointSegmentCoordinatesLongitude (\s a -> s { _pinpointSegmentCoordinatesLongitude = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentDemographic.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentDemographic.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentDemographic.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentDemographic where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentSetDimension
+
+-- | Full data type definition for PinpointSegmentDemographic. See
+-- 'pinpointSegmentDemographic' for a more convenient constructor.
+data PinpointSegmentDemographic =
+  PinpointSegmentDemographic
+  { _pinpointSegmentDemographicAppVersion :: Maybe PinpointSegmentSetDimension
+  , _pinpointSegmentDemographicChannel :: Maybe PinpointSegmentSetDimension
+  , _pinpointSegmentDemographicDeviceType :: Maybe PinpointSegmentSetDimension
+  , _pinpointSegmentDemographicMake :: Maybe PinpointSegmentSetDimension
+  , _pinpointSegmentDemographicModel :: Maybe PinpointSegmentSetDimension
+  , _pinpointSegmentDemographicPlatform :: Maybe PinpointSegmentSetDimension
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentDemographic where
+  toJSON PinpointSegmentDemographic{..} =
+    object $
+    catMaybes
+    [ fmap (("AppVersion",) . toJSON) _pinpointSegmentDemographicAppVersion
+    , fmap (("Channel",) . toJSON) _pinpointSegmentDemographicChannel
+    , fmap (("DeviceType",) . toJSON) _pinpointSegmentDemographicDeviceType
+    , fmap (("Make",) . toJSON) _pinpointSegmentDemographicMake
+    , fmap (("Model",) . toJSON) _pinpointSegmentDemographicModel
+    , fmap (("Platform",) . toJSON) _pinpointSegmentDemographicPlatform
+    ]
+
+-- | Constructor for 'PinpointSegmentDemographic' containing required fields
+-- as arguments.
+pinpointSegmentDemographic
+  :: PinpointSegmentDemographic
+pinpointSegmentDemographic  =
+  PinpointSegmentDemographic
+  { _pinpointSegmentDemographicAppVersion = Nothing
+  , _pinpointSegmentDemographicChannel = Nothing
+  , _pinpointSegmentDemographicDeviceType = Nothing
+  , _pinpointSegmentDemographicMake = Nothing
+  , _pinpointSegmentDemographicModel = Nothing
+  , _pinpointSegmentDemographicPlatform = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-appversion
+psdAppVersion :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
+psdAppVersion = lens _pinpointSegmentDemographicAppVersion (\s a -> s { _pinpointSegmentDemographicAppVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-channel
+psdChannel :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
+psdChannel = lens _pinpointSegmentDemographicChannel (\s a -> s { _pinpointSegmentDemographicChannel = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-devicetype
+psdDeviceType :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
+psdDeviceType = lens _pinpointSegmentDemographicDeviceType (\s a -> s { _pinpointSegmentDemographicDeviceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-make
+psdMake :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
+psdMake = lens _pinpointSegmentDemographicMake (\s a -> s { _pinpointSegmentDemographicMake = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-model
+psdModel :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
+psdModel = lens _pinpointSegmentDemographicModel (\s a -> s { _pinpointSegmentDemographicModel = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-demographic.html#cfn-pinpoint-segment-segmentdimensions-demographic-platform
+psdPlatform :: Lens' PinpointSegmentDemographic (Maybe PinpointSegmentSetDimension)
+psdPlatform = lens _pinpointSegmentDemographicPlatform (\s a -> s { _pinpointSegmentDemographicPlatform = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentGPSPoint.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentGPSPoint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentGPSPoint.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentGPSPoint where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentCoordinates
+
+-- | Full data type definition for PinpointSegmentGPSPoint. See
+-- 'pinpointSegmentGPSPoint' for a more convenient constructor.
+data PinpointSegmentGPSPoint =
+  PinpointSegmentGPSPoint
+  { _pinpointSegmentGPSPointCoordinates :: PinpointSegmentCoordinates
+  , _pinpointSegmentGPSPointRangeInKilometers :: Val Double
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentGPSPoint where
+  toJSON PinpointSegmentGPSPoint{..} =
+    object $
+    catMaybes
+    [ (Just . ("Coordinates",) . toJSON) _pinpointSegmentGPSPointCoordinates
+    , (Just . ("RangeInKilometers",) . toJSON) _pinpointSegmentGPSPointRangeInKilometers
+    ]
+
+-- | Constructor for 'PinpointSegmentGPSPoint' containing required fields as
+-- arguments.
+pinpointSegmentGPSPoint
+  :: PinpointSegmentCoordinates -- ^ 'psgpspCoordinates'
+  -> Val Double -- ^ 'psgpspRangeInKilometers'
+  -> PinpointSegmentGPSPoint
+pinpointSegmentGPSPoint coordinatesarg rangeInKilometersarg =
+  PinpointSegmentGPSPoint
+  { _pinpointSegmentGPSPointCoordinates = coordinatesarg
+  , _pinpointSegmentGPSPointRangeInKilometers = rangeInKilometersarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint.html#cfn-pinpoint-segment-segmentdimensions-location-gpspoint-coordinates
+psgpspCoordinates :: Lens' PinpointSegmentGPSPoint PinpointSegmentCoordinates
+psgpspCoordinates = lens _pinpointSegmentGPSPointCoordinates (\s a -> s { _pinpointSegmentGPSPointCoordinates = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location-gpspoint.html#cfn-pinpoint-segment-segmentdimensions-location-gpspoint-rangeinkilometers
+psgpspRangeInKilometers :: Lens' PinpointSegmentGPSPoint (Val Double)
+psgpspRangeInKilometers = lens _pinpointSegmentGPSPointRangeInKilometers (\s a -> s { _pinpointSegmentGPSPointRangeInKilometers = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentGroups.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentGroups.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentGroups.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentGroups where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentSegmentDimensions
+import Stratosphere.ResourceProperties.PinpointSegmentSourceSegments
+
+-- | Full data type definition for PinpointSegmentGroups. See
+-- 'pinpointSegmentGroups' for a more convenient constructor.
+data PinpointSegmentGroups =
+  PinpointSegmentGroups
+  { _pinpointSegmentGroupsDimensions :: Maybe [PinpointSegmentSegmentDimensions]
+  , _pinpointSegmentGroupsSourceSegments :: Maybe [PinpointSegmentSourceSegments]
+  , _pinpointSegmentGroupsSourceType :: Maybe (Val Text)
+  , _pinpointSegmentGroupsType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentGroups where
+  toJSON PinpointSegmentGroups{..} =
+    object $
+    catMaybes
+    [ fmap (("Dimensions",) . toJSON) _pinpointSegmentGroupsDimensions
+    , fmap (("SourceSegments",) . toJSON) _pinpointSegmentGroupsSourceSegments
+    , fmap (("SourceType",) . toJSON) _pinpointSegmentGroupsSourceType
+    , fmap (("Type",) . toJSON) _pinpointSegmentGroupsType
+    ]
+
+-- | Constructor for 'PinpointSegmentGroups' containing required fields as
+-- arguments.
+pinpointSegmentGroups
+  :: PinpointSegmentGroups
+pinpointSegmentGroups  =
+  PinpointSegmentGroups
+  { _pinpointSegmentGroupsDimensions = Nothing
+  , _pinpointSegmentGroupsSourceSegments = Nothing
+  , _pinpointSegmentGroupsSourceType = Nothing
+  , _pinpointSegmentGroupsType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups.html#cfn-pinpoint-segment-segmentgroups-groups-dimensions
+psgDimensions :: Lens' PinpointSegmentGroups (Maybe [PinpointSegmentSegmentDimensions])
+psgDimensions = lens _pinpointSegmentGroupsDimensions (\s a -> s { _pinpointSegmentGroupsDimensions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups.html#cfn-pinpoint-segment-segmentgroups-groups-sourcesegments
+psgSourceSegments :: Lens' PinpointSegmentGroups (Maybe [PinpointSegmentSourceSegments])
+psgSourceSegments = lens _pinpointSegmentGroupsSourceSegments (\s a -> s { _pinpointSegmentGroupsSourceSegments = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups.html#cfn-pinpoint-segment-segmentgroups-groups-sourcetype
+psgSourceType :: Lens' PinpointSegmentGroups (Maybe (Val Text))
+psgSourceType = lens _pinpointSegmentGroupsSourceType (\s a -> s { _pinpointSegmentGroupsSourceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups.html#cfn-pinpoint-segment-segmentgroups-groups-type
+psgType :: Lens' PinpointSegmentGroups (Maybe (Val Text))
+psgType = lens _pinpointSegmentGroupsType (\s a -> s { _pinpointSegmentGroupsType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentLocation.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentLocation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentLocation.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentLocation where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentSetDimension
+import Stratosphere.ResourceProperties.PinpointSegmentGPSPoint
+
+-- | Full data type definition for PinpointSegmentLocation. See
+-- 'pinpointSegmentLocation' for a more convenient constructor.
+data PinpointSegmentLocation =
+  PinpointSegmentLocation
+  { _pinpointSegmentLocationCountry :: Maybe PinpointSegmentSetDimension
+  , _pinpointSegmentLocationGPSPoint :: Maybe PinpointSegmentGPSPoint
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentLocation where
+  toJSON PinpointSegmentLocation{..} =
+    object $
+    catMaybes
+    [ fmap (("Country",) . toJSON) _pinpointSegmentLocationCountry
+    , fmap (("GPSPoint",) . toJSON) _pinpointSegmentLocationGPSPoint
+    ]
+
+-- | Constructor for 'PinpointSegmentLocation' containing required fields as
+-- arguments.
+pinpointSegmentLocation
+  :: PinpointSegmentLocation
+pinpointSegmentLocation  =
+  PinpointSegmentLocation
+  { _pinpointSegmentLocationCountry = Nothing
+  , _pinpointSegmentLocationGPSPoint = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location.html#cfn-pinpoint-segment-segmentdimensions-location-country
+pslCountry :: Lens' PinpointSegmentLocation (Maybe PinpointSegmentSetDimension)
+pslCountry = lens _pinpointSegmentLocationCountry (\s a -> s { _pinpointSegmentLocationCountry = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-location.html#cfn-pinpoint-segment-segmentdimensions-location-gpspoint
+pslGPSPoint :: Lens' PinpointSegmentLocation (Maybe PinpointSegmentGPSPoint)
+pslGPSPoint = lens _pinpointSegmentLocationGPSPoint (\s a -> s { _pinpointSegmentLocationGPSPoint = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentRecency.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentRecency.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentRecency.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-behavior-recency.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentRecency where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointSegmentRecency. See
+-- 'pinpointSegmentRecency' for a more convenient constructor.
+data PinpointSegmentRecency =
+  PinpointSegmentRecency
+  { _pinpointSegmentRecencyDuration :: Val Text
+  , _pinpointSegmentRecencyRecencyType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentRecency where
+  toJSON PinpointSegmentRecency{..} =
+    object $
+    catMaybes
+    [ (Just . ("Duration",) . toJSON) _pinpointSegmentRecencyDuration
+    , (Just . ("RecencyType",) . toJSON) _pinpointSegmentRecencyRecencyType
+    ]
+
+-- | Constructor for 'PinpointSegmentRecency' containing required fields as
+-- arguments.
+pinpointSegmentRecency
+  :: Val Text -- ^ 'psrDuration'
+  -> Val Text -- ^ 'psrRecencyType'
+  -> PinpointSegmentRecency
+pinpointSegmentRecency durationarg recencyTypearg =
+  PinpointSegmentRecency
+  { _pinpointSegmentRecencyDuration = durationarg
+  , _pinpointSegmentRecencyRecencyType = recencyTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-behavior-recency.html#cfn-pinpoint-segment-segmentdimensions-behavior-recency-duration
+psrDuration :: Lens' PinpointSegmentRecency (Val Text)
+psrDuration = lens _pinpointSegmentRecencyDuration (\s a -> s { _pinpointSegmentRecencyDuration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions-behavior-recency.html#cfn-pinpoint-segment-segmentdimensions-behavior-recency-recencytype
+psrRecencyType :: Lens' PinpointSegmentRecency (Val Text)
+psrRecencyType = lens _pinpointSegmentRecencyRecencyType (\s a -> s { _pinpointSegmentRecencyRecencyType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSegmentDimensions.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSegmentDimensions.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSegmentDimensions.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentSegmentDimensions where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentBehavior
+import Stratosphere.ResourceProperties.PinpointSegmentDemographic
+import Stratosphere.ResourceProperties.PinpointSegmentLocation
+
+-- | Full data type definition for PinpointSegmentSegmentDimensions. See
+-- 'pinpointSegmentSegmentDimensions' for a more convenient constructor.
+data PinpointSegmentSegmentDimensions =
+  PinpointSegmentSegmentDimensions
+  { _pinpointSegmentSegmentDimensionsAttributes :: Maybe Object
+  , _pinpointSegmentSegmentDimensionsBehavior :: Maybe PinpointSegmentBehavior
+  , _pinpointSegmentSegmentDimensionsDemographic :: Maybe PinpointSegmentDemographic
+  , _pinpointSegmentSegmentDimensionsLocation :: Maybe PinpointSegmentLocation
+  , _pinpointSegmentSegmentDimensionsMetrics :: Maybe Object
+  , _pinpointSegmentSegmentDimensionsUserAttributes :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentSegmentDimensions where
+  toJSON PinpointSegmentSegmentDimensions{..} =
+    object $
+    catMaybes
+    [ fmap (("Attributes",) . toJSON) _pinpointSegmentSegmentDimensionsAttributes
+    , fmap (("Behavior",) . toJSON) _pinpointSegmentSegmentDimensionsBehavior
+    , fmap (("Demographic",) . toJSON) _pinpointSegmentSegmentDimensionsDemographic
+    , fmap (("Location",) . toJSON) _pinpointSegmentSegmentDimensionsLocation
+    , fmap (("Metrics",) . toJSON) _pinpointSegmentSegmentDimensionsMetrics
+    , fmap (("UserAttributes",) . toJSON) _pinpointSegmentSegmentDimensionsUserAttributes
+    ]
+
+-- | Constructor for 'PinpointSegmentSegmentDimensions' containing required
+-- fields as arguments.
+pinpointSegmentSegmentDimensions
+  :: PinpointSegmentSegmentDimensions
+pinpointSegmentSegmentDimensions  =
+  PinpointSegmentSegmentDimensions
+  { _pinpointSegmentSegmentDimensionsAttributes = Nothing
+  , _pinpointSegmentSegmentDimensionsBehavior = Nothing
+  , _pinpointSegmentSegmentDimensionsDemographic = Nothing
+  , _pinpointSegmentSegmentDimensionsLocation = Nothing
+  , _pinpointSegmentSegmentDimensionsMetrics = Nothing
+  , _pinpointSegmentSegmentDimensionsUserAttributes = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html#cfn-pinpoint-segment-segmentdimensions-attributes
+pssdAttributes :: Lens' PinpointSegmentSegmentDimensions (Maybe Object)
+pssdAttributes = lens _pinpointSegmentSegmentDimensionsAttributes (\s a -> s { _pinpointSegmentSegmentDimensionsAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html#cfn-pinpoint-segment-segmentdimensions-behavior
+pssdBehavior :: Lens' PinpointSegmentSegmentDimensions (Maybe PinpointSegmentBehavior)
+pssdBehavior = lens _pinpointSegmentSegmentDimensionsBehavior (\s a -> s { _pinpointSegmentSegmentDimensionsBehavior = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html#cfn-pinpoint-segment-segmentdimensions-demographic
+pssdDemographic :: Lens' PinpointSegmentSegmentDimensions (Maybe PinpointSegmentDemographic)
+pssdDemographic = lens _pinpointSegmentSegmentDimensionsDemographic (\s a -> s { _pinpointSegmentSegmentDimensionsDemographic = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html#cfn-pinpoint-segment-segmentdimensions-location
+pssdLocation :: Lens' PinpointSegmentSegmentDimensions (Maybe PinpointSegmentLocation)
+pssdLocation = lens _pinpointSegmentSegmentDimensionsLocation (\s a -> s { _pinpointSegmentSegmentDimensionsLocation = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html#cfn-pinpoint-segment-segmentdimensions-metrics
+pssdMetrics :: Lens' PinpointSegmentSegmentDimensions (Maybe Object)
+pssdMetrics = lens _pinpointSegmentSegmentDimensionsMetrics (\s a -> s { _pinpointSegmentSegmentDimensionsMetrics = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentdimensions.html#cfn-pinpoint-segment-segmentdimensions-userattributes
+pssdUserAttributes :: Lens' PinpointSegmentSegmentDimensions (Maybe Object)
+pssdUserAttributes = lens _pinpointSegmentSegmentDimensionsUserAttributes (\s a -> s { _pinpointSegmentSegmentDimensionsUserAttributes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSegmentGroups.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSegmentGroups.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSegmentGroups.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentSegmentGroups where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentGroups
+
+-- | Full data type definition for PinpointSegmentSegmentGroups. See
+-- 'pinpointSegmentSegmentGroups' for a more convenient constructor.
+data PinpointSegmentSegmentGroups =
+  PinpointSegmentSegmentGroups
+  { _pinpointSegmentSegmentGroupsGroups :: Maybe [PinpointSegmentGroups]
+  , _pinpointSegmentSegmentGroupsInclude :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentSegmentGroups where
+  toJSON PinpointSegmentSegmentGroups{..} =
+    object $
+    catMaybes
+    [ fmap (("Groups",) . toJSON) _pinpointSegmentSegmentGroupsGroups
+    , fmap (("Include",) . toJSON) _pinpointSegmentSegmentGroupsInclude
+    ]
+
+-- | Constructor for 'PinpointSegmentSegmentGroups' containing required fields
+-- as arguments.
+pinpointSegmentSegmentGroups
+  :: PinpointSegmentSegmentGroups
+pinpointSegmentSegmentGroups  =
+  PinpointSegmentSegmentGroups
+  { _pinpointSegmentSegmentGroupsGroups = Nothing
+  , _pinpointSegmentSegmentGroupsInclude = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups.html#cfn-pinpoint-segment-segmentgroups-groups
+pssgGroups :: Lens' PinpointSegmentSegmentGroups (Maybe [PinpointSegmentGroups])
+pssgGroups = lens _pinpointSegmentSegmentGroupsGroups (\s a -> s { _pinpointSegmentSegmentGroupsGroups = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups.html#cfn-pinpoint-segment-segmentgroups-include
+pssgInclude :: Lens' PinpointSegmentSegmentGroups (Maybe (Val Text))
+pssgInclude = lens _pinpointSegmentSegmentGroupsInclude (\s a -> s { _pinpointSegmentSegmentGroupsInclude = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSetDimension.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSetDimension.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSetDimension.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-setdimension.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentSetDimension where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointSegmentSetDimension. See
+-- 'pinpointSegmentSetDimension' for a more convenient constructor.
+data PinpointSegmentSetDimension =
+  PinpointSegmentSetDimension
+  { _pinpointSegmentSetDimensionDimensionType :: Maybe (Val Text)
+  , _pinpointSegmentSetDimensionValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentSetDimension where
+  toJSON PinpointSegmentSetDimension{..} =
+    object $
+    catMaybes
+    [ fmap (("DimensionType",) . toJSON) _pinpointSegmentSetDimensionDimensionType
+    , fmap (("Values",) . toJSON) _pinpointSegmentSetDimensionValues
+    ]
+
+-- | Constructor for 'PinpointSegmentSetDimension' containing required fields
+-- as arguments.
+pinpointSegmentSetDimension
+  :: PinpointSegmentSetDimension
+pinpointSegmentSetDimension  =
+  PinpointSegmentSetDimension
+  { _pinpointSegmentSetDimensionDimensionType = Nothing
+  , _pinpointSegmentSetDimensionValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-setdimension.html#cfn-pinpoint-segment-setdimension-dimensiontype
+pssdDimensionType :: Lens' PinpointSegmentSetDimension (Maybe (Val Text))
+pssdDimensionType = lens _pinpointSegmentSetDimensionDimensionType (\s a -> s { _pinpointSegmentSetDimensionDimensionType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-setdimension.html#cfn-pinpoint-segment-setdimension-values
+pssdValues :: Lens' PinpointSegmentSetDimension (Maybe (ValList Text))
+pssdValues = lens _pinpointSegmentSetDimensionValues (\s a -> s { _pinpointSegmentSetDimensionValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSourceSegments.hs b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSourceSegments.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/PinpointSegmentSourceSegments.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups-sourcesegments.html
+
+module Stratosphere.ResourceProperties.PinpointSegmentSourceSegments where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointSegmentSourceSegments. See
+-- 'pinpointSegmentSourceSegments' for a more convenient constructor.
+data PinpointSegmentSourceSegments =
+  PinpointSegmentSourceSegments
+  { _pinpointSegmentSourceSegmentsId :: Val Text
+  , _pinpointSegmentSourceSegmentsVersion :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON PinpointSegmentSourceSegments where
+  toJSON PinpointSegmentSourceSegments{..} =
+    object $
+    catMaybes
+    [ (Just . ("Id",) . toJSON) _pinpointSegmentSourceSegmentsId
+    , fmap (("Version",) . toJSON) _pinpointSegmentSourceSegmentsVersion
+    ]
+
+-- | Constructor for 'PinpointSegmentSourceSegments' containing required
+-- fields as arguments.
+pinpointSegmentSourceSegments
+  :: Val Text -- ^ 'psssId'
+  -> PinpointSegmentSourceSegments
+pinpointSegmentSourceSegments idarg =
+  PinpointSegmentSourceSegments
+  { _pinpointSegmentSourceSegmentsId = idarg
+  , _pinpointSegmentSourceSegmentsVersion = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups-sourcesegments.html#cfn-pinpoint-segment-segmentgroups-groups-sourcesegments-id
+psssId :: Lens' PinpointSegmentSourceSegments (Val Text)
+psssId = lens _pinpointSegmentSourceSegmentsId (\s a -> s { _pinpointSegmentSourceSegmentsId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-pinpoint-segment-segmentgroups-groups-sourcesegments.html#cfn-pinpoint-segment-segmentgroups-groups-sourcesegments-version
+psssVersion :: Lens' PinpointSegmentSourceSegments (Maybe (Val Integer))
+psssVersion = lens _pinpointSegmentSourceSegmentsVersion (\s a -> s { _pinpointSegmentSourceSegmentsVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketDefaultRetention.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketDefaultRetention.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketDefaultRetention.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html
+
+module Stratosphere.ResourceProperties.S3BucketDefaultRetention where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for S3BucketDefaultRetention. See
+-- 's3BucketDefaultRetention' for a more convenient constructor.
+data S3BucketDefaultRetention =
+  S3BucketDefaultRetention
+  { _s3BucketDefaultRetentionDays :: Maybe (Val Integer)
+  , _s3BucketDefaultRetentionMode :: Maybe (Val Text)
+  , _s3BucketDefaultRetentionYears :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketDefaultRetention where
+  toJSON S3BucketDefaultRetention{..} =
+    object $
+    catMaybes
+    [ fmap (("Days",) . toJSON) _s3BucketDefaultRetentionDays
+    , fmap (("Mode",) . toJSON) _s3BucketDefaultRetentionMode
+    , fmap (("Years",) . toJSON) _s3BucketDefaultRetentionYears
+    ]
+
+-- | Constructor for 'S3BucketDefaultRetention' containing required fields as
+-- arguments.
+s3BucketDefaultRetention
+  :: S3BucketDefaultRetention
+s3BucketDefaultRetention  =
+  S3BucketDefaultRetention
+  { _s3BucketDefaultRetentionDays = Nothing
+  , _s3BucketDefaultRetentionMode = Nothing
+  , _s3BucketDefaultRetentionYears = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html#cfn-s3-bucket-defaultretention-days
+sbdrDays :: Lens' S3BucketDefaultRetention (Maybe (Val Integer))
+sbdrDays = lens _s3BucketDefaultRetentionDays (\s a -> s { _s3BucketDefaultRetentionDays = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html#cfn-s3-bucket-defaultretention-mode
+sbdrMode :: Lens' S3BucketDefaultRetention (Maybe (Val Text))
+sbdrMode = lens _s3BucketDefaultRetentionMode (\s a -> s { _s3BucketDefaultRetentionMode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-defaultretention.html#cfn-s3-bucket-defaultretention-years
+sbdrYears :: Lens' S3BucketDefaultRetention (Maybe (Val Integer))
+sbdrYears = lens _s3BucketDefaultRetentionYears (\s a -> s { _s3BucketDefaultRetentionYears = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketObjectLockConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketObjectLockConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketObjectLockConfiguration.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockconfiguration.html
+
+module Stratosphere.ResourceProperties.S3BucketObjectLockConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.S3BucketObjectLockRule
+
+-- | Full data type definition for S3BucketObjectLockConfiguration. See
+-- 's3BucketObjectLockConfiguration' for a more convenient constructor.
+data S3BucketObjectLockConfiguration =
+  S3BucketObjectLockConfiguration
+  { _s3BucketObjectLockConfigurationObjectLockEnabled :: Maybe (Val Text)
+  , _s3BucketObjectLockConfigurationRule :: Maybe S3BucketObjectLockRule
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketObjectLockConfiguration where
+  toJSON S3BucketObjectLockConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("ObjectLockEnabled",) . toJSON) _s3BucketObjectLockConfigurationObjectLockEnabled
+    , fmap (("Rule",) . toJSON) _s3BucketObjectLockConfigurationRule
+    ]
+
+-- | Constructor for 'S3BucketObjectLockConfiguration' containing required
+-- fields as arguments.
+s3BucketObjectLockConfiguration
+  :: S3BucketObjectLockConfiguration
+s3BucketObjectLockConfiguration  =
+  S3BucketObjectLockConfiguration
+  { _s3BucketObjectLockConfigurationObjectLockEnabled = Nothing
+  , _s3BucketObjectLockConfigurationRule = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockconfiguration.html#cfn-s3-bucket-objectlockconfiguration-objectlockenabled
+sbolcObjectLockEnabled :: Lens' S3BucketObjectLockConfiguration (Maybe (Val Text))
+sbolcObjectLockEnabled = lens _s3BucketObjectLockConfigurationObjectLockEnabled (\s a -> s { _s3BucketObjectLockConfigurationObjectLockEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockconfiguration.html#cfn-s3-bucket-objectlockconfiguration-rule
+sbolcRule :: Lens' S3BucketObjectLockConfiguration (Maybe S3BucketObjectLockRule)
+sbolcRule = lens _s3BucketObjectLockConfigurationRule (\s a -> s { _s3BucketObjectLockConfigurationRule = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketObjectLockRule.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketObjectLockRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketObjectLockRule.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockrule.html
+
+module Stratosphere.ResourceProperties.S3BucketObjectLockRule where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.S3BucketDefaultRetention
+
+-- | Full data type definition for S3BucketObjectLockRule. See
+-- 's3BucketObjectLockRule' for a more convenient constructor.
+data S3BucketObjectLockRule =
+  S3BucketObjectLockRule
+  { _s3BucketObjectLockRuleDefaultRetention :: Maybe S3BucketDefaultRetention
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketObjectLockRule where
+  toJSON S3BucketObjectLockRule{..} =
+    object $
+    catMaybes
+    [ fmap (("DefaultRetention",) . toJSON) _s3BucketObjectLockRuleDefaultRetention
+    ]
+
+-- | Constructor for 'S3BucketObjectLockRule' containing required fields as
+-- arguments.
+s3BucketObjectLockRule
+  :: S3BucketObjectLockRule
+s3BucketObjectLockRule  =
+  S3BucketObjectLockRule
+  { _s3BucketObjectLockRuleDefaultRetention = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-objectlockrule.html#cfn-s3-bucket-objectlockrule-defaultretention
+sbolrDefaultRetention :: Lens' S3BucketObjectLockRule (Maybe S3BucketDefaultRetention)
+sbolrDefaultRetention = lens _s3BucketObjectLockRuleDefaultRetention (\s a -> s { _s3BucketObjectLockRuleDefaultRetention = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/Tag.hs b/library-gen/Stratosphere/ResourceProperties/Tag.hs
--- a/library-gen/Stratosphere/ResourceProperties/Tag.hs
+++ b/library-gen/Stratosphere/ResourceProperties/Tag.hs
@@ -3,7 +3,7 @@
 {-# LANGUAGE StrictData #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-tag.html
 
 module Stratosphere.ResourceProperties.Tag where
 
@@ -37,10 +37,10 @@
   , _tagValue = valuearg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html#cfn-resource-tags-key
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-tag.html#cfn-amplify-branch-tag-key
 tagKey :: Lens' Tag (Val Text)
 tagKey = lens _tagKey (\s a -> s { _tagKey = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html#cfn-resource-tags-value
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-tag.html#cfn-amplify-branch-tag-value
 tagValue :: Lens' Tag (Val Text)
 tagValue = lens _tagValue (\s a -> s { _tagValue = 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
@@ -47,6 +47,9 @@
 import Stratosphere.Resources.AmazonMQBroker as X
 import Stratosphere.Resources.AmazonMQConfiguration as X
 import Stratosphere.Resources.AmazonMQConfigurationAssociation as X
+import Stratosphere.Resources.AmplifyApp as X
+import Stratosphere.Resources.AmplifyBranch as X
+import Stratosphere.Resources.AmplifyDomain as X
 import Stratosphere.Resources.ApiGatewayAccount as X
 import Stratosphere.Resources.ApiGatewayApiKey as X
 import Stratosphere.Resources.ApiGatewayAuthorizer as X
@@ -160,6 +163,10 @@
 import Stratosphere.Resources.DocDBDBSubnetGroup as X
 import Stratosphere.Resources.DynamoDBTable as X
 import Stratosphere.Resources.EC2CapacityReservation as X
+import Stratosphere.Resources.EC2ClientVpnAuthorizationRule as X
+import Stratosphere.Resources.EC2ClientVpnEndpoint as X
+import Stratosphere.Resources.EC2ClientVpnRoute as X
+import Stratosphere.Resources.EC2ClientVpnTargetNetworkAssociation as X
 import Stratosphere.Resources.EC2CustomerGateway as X
 import Stratosphere.Resources.EC2DHCPOptions as X
 import Stratosphere.Resources.EC2EC2Fleet as X
@@ -301,6 +308,7 @@
 import Stratosphere.Resources.IoTAnalyticsDataset as X
 import Stratosphere.Resources.IoTAnalyticsDatastore as X
 import Stratosphere.Resources.IoTAnalyticsPipeline as X
+import Stratosphere.Resources.IoTThingsGraphFlowTemplate as X
 import Stratosphere.Resources.KMSAlias as X
 import Stratosphere.Resources.KMSKey as X
 import Stratosphere.Resources.KinesisStream as X
@@ -325,6 +333,7 @@
 import Stratosphere.Resources.LogsLogStream as X
 import Stratosphere.Resources.LogsMetricFilter as X
 import Stratosphere.Resources.LogsSubscriptionFilter as X
+import Stratosphere.Resources.MSKCluster as X
 import Stratosphere.Resources.MediaStoreContainer as X
 import Stratosphere.Resources.NeptuneDBCluster as X
 import Stratosphere.Resources.NeptuneDBClusterParameterGroup as X
@@ -339,6 +348,21 @@
 import Stratosphere.Resources.OpsWorksUserProfile as X
 import Stratosphere.Resources.OpsWorksVolume as X
 import Stratosphere.Resources.OpsWorksCMServer as X
+import Stratosphere.Resources.PinpointADMChannel as X
+import Stratosphere.Resources.PinpointAPNSChannel as X
+import Stratosphere.Resources.PinpointAPNSSandboxChannel as X
+import Stratosphere.Resources.PinpointAPNSVoipChannel as X
+import Stratosphere.Resources.PinpointAPNSVoipSandboxChannel as X
+import Stratosphere.Resources.PinpointApp as X
+import Stratosphere.Resources.PinpointApplicationSettings as X
+import Stratosphere.Resources.PinpointBaiduChannel as X
+import Stratosphere.Resources.PinpointCampaign as X
+import Stratosphere.Resources.PinpointEmailChannel as X
+import Stratosphere.Resources.PinpointEventStream as X
+import Stratosphere.Resources.PinpointGCMChannel as X
+import Stratosphere.Resources.PinpointSMSChannel as X
+import Stratosphere.Resources.PinpointSegment as X
+import Stratosphere.Resources.PinpointVoiceChannel as X
 import Stratosphere.Resources.PinpointEmailConfigurationSet as X
 import Stratosphere.Resources.PinpointEmailConfigurationSetEventDestination as X
 import Stratosphere.Resources.PinpointEmailDedicatedIpPool as X
@@ -450,6 +474,13 @@
 import Stratosphere.ResourceProperties.AmazonMQBrokerUser as X
 import Stratosphere.ResourceProperties.AmazonMQConfigurationTagsEntry as X
 import Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId as X
+import Stratosphere.ResourceProperties.AmplifyAppBasicAuthConfig as X
+import Stratosphere.ResourceProperties.AmplifyAppCustomRule as X
+import Stratosphere.ResourceProperties.AmplifyAppEnvironmentVariable as X
+import Stratosphere.ResourceProperties.AmplifyAppToken as X
+import Stratosphere.ResourceProperties.AmplifyBranchBasicAuthConfig as X
+import Stratosphere.ResourceProperties.AmplifyBranchEnvironmentVariable as X
+import Stratosphere.ResourceProperties.AmplifyDomainSubDomainSetting as X
 import Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentAccessLogSetting as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting as X
@@ -690,6 +721,7 @@
 import Stratosphere.ResourceProperties.ConfigDeliveryChannelConfigSnapshotDeliveryProperties as X
 import Stratosphere.ResourceProperties.DAXClusterSSESpecification as X
 import Stratosphere.ResourceProperties.DLMLifecyclePolicyCreateRule as X
+import Stratosphere.ResourceProperties.DLMLifecyclePolicyParameters as X
 import Stratosphere.ResourceProperties.DLMLifecyclePolicyPolicyDetails as X
 import Stratosphere.ResourceProperties.DLMLifecyclePolicyRetainRule as X
 import Stratosphere.ResourceProperties.DLMLifecyclePolicySchedule as X
@@ -717,6 +749,11 @@
 import Stratosphere.ResourceProperties.DynamoDBTableStreamSpecification as X
 import Stratosphere.ResourceProperties.DynamoDBTableTimeToLiveSpecification as X
 import Stratosphere.ResourceProperties.EC2CapacityReservationTagSpecification as X
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointCertificateAuthenticationRequest as X
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointClientAuthenticationRequest as X
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointConnectionLogOptions as X
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest as X
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointTagSpecification as X
 import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest as X
 import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest as X
 import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest as X
@@ -809,12 +846,15 @@
 import Stratosphere.ResourceProperties.ECSTaskDefinitionPortMapping as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionProxyConfiguration as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionRepositoryCredentials as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionResourceRequirement as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionSecret as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionTaskDefinitionPlacementConstraint as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionTmpfs as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionUlimit as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionVolume as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionVolumeFrom as X
 import Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag as X
+import Stratosphere.ResourceProperties.EFSFileSystemLifecyclePolicy as X
 import Stratosphere.ResourceProperties.EKSClusterResourcesVpcConfig as X
 import Stratosphere.ResourceProperties.EMRClusterApplication as X
 import Stratosphere.ResourceProperties.EMRClusterAutoScalingPolicy as X
@@ -892,8 +932,15 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHostHeaderConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRulePathPatternConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleSourceIpConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupMatcher as X
@@ -1032,17 +1079,23 @@
 import Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRule as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetGlueConfiguration as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetIotEventsDestinationConfiguration as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetS3DestinationConfiguration as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetVersioningConfiguration as X
 import Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod as X
 import Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity as X
 import Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes as X
@@ -1055,6 +1108,7 @@
 import Stratosphere.ResourceProperties.IoTAnalyticsPipelineMath as X
 import Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes as X
 import Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes as X
+import Stratosphere.ResourceProperties.IoTThingsGraphFlowTemplateDefinitionDocument as X
 import Stratosphere.ResourceProperties.KinesisStreamStreamEncryption as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput as X
@@ -1122,18 +1176,28 @@
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCopyCommand as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDeserializer as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchBufferingHints as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchRetryOptions as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamHiveJsonSerDe as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamInputFormatConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKMSEncryptionConfig as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOpenXJsonSerDe as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOrcSerDe as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOutputFormatConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamParquetSerDe as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSchemaConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSerializer as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions as X
 import Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration as X
@@ -1145,6 +1209,15 @@
 import Stratosphere.ResourceProperties.LambdaFunctionVpcConfig as X
 import Stratosphere.ResourceProperties.LambdaLayerVersionContent as X
 import Stratosphere.ResourceProperties.LogsMetricFilterMetricTransformation as X
+import Stratosphere.ResourceProperties.MSKClusterBrokerNodeGroupInfo as X
+import Stratosphere.ResourceProperties.MSKClusterClientAuthentication as X
+import Stratosphere.ResourceProperties.MSKClusterConfigurationInfo as X
+import Stratosphere.ResourceProperties.MSKClusterEBSStorageInfo as X
+import Stratosphere.ResourceProperties.MSKClusterEncryptionAtRest as X
+import Stratosphere.ResourceProperties.MSKClusterEncryptionInTransit as X
+import Stratosphere.ResourceProperties.MSKClusterEncryptionInfo as X
+import Stratosphere.ResourceProperties.MSKClusterStorageInfo as X
+import Stratosphere.ResourceProperties.MSKClusterTls as X
 import Stratosphere.ResourceProperties.MediaStoreContainerCorsRule as X
 import Stratosphere.ResourceProperties.OpsWorksAppDataSource as X
 import Stratosphere.ResourceProperties.OpsWorksAppEnvironmentVariable as X
@@ -1165,6 +1238,35 @@
 import Stratosphere.ResourceProperties.OpsWorksStackSource as X
 import Stratosphere.ResourceProperties.OpsWorksStackStackConfigurationManager as X
 import Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute as X
+import Stratosphere.ResourceProperties.PinpointApplicationSettingsCampaignHook as X
+import Stratosphere.ResourceProperties.PinpointApplicationSettingsLimits as X
+import Stratosphere.ResourceProperties.PinpointApplicationSettingsQuietTime as X
+import Stratosphere.ResourceProperties.PinpointCampaignAttributeDimension as X
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignEmailMessage as X
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignEventFilter as X
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignHook as X
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignSmsMessage as X
+import Stratosphere.ResourceProperties.PinpointCampaignEventDimensions as X
+import Stratosphere.ResourceProperties.PinpointCampaignLimits as X
+import Stratosphere.ResourceProperties.PinpointCampaignMessage as X
+import Stratosphere.ResourceProperties.PinpointCampaignMessageConfiguration as X
+import Stratosphere.ResourceProperties.PinpointCampaignMetricDimension as X
+import Stratosphere.ResourceProperties.PinpointCampaignQuietTime as X
+import Stratosphere.ResourceProperties.PinpointCampaignSchedule as X
+import Stratosphere.ResourceProperties.PinpointCampaignSetDimension as X
+import Stratosphere.ResourceProperties.PinpointCampaignWriteTreatmentResource as X
+import Stratosphere.ResourceProperties.PinpointSegmentAttributeDimension as X
+import Stratosphere.ResourceProperties.PinpointSegmentBehavior as X
+import Stratosphere.ResourceProperties.PinpointSegmentCoordinates as X
+import Stratosphere.ResourceProperties.PinpointSegmentDemographic as X
+import Stratosphere.ResourceProperties.PinpointSegmentGPSPoint as X
+import Stratosphere.ResourceProperties.PinpointSegmentGroups as X
+import Stratosphere.ResourceProperties.PinpointSegmentLocation as X
+import Stratosphere.ResourceProperties.PinpointSegmentRecency as X
+import Stratosphere.ResourceProperties.PinpointSegmentSegmentDimensions as X
+import Stratosphere.ResourceProperties.PinpointSegmentSegmentGroups as X
+import Stratosphere.ResourceProperties.PinpointSegmentSetDimension as X
+import Stratosphere.ResourceProperties.PinpointSegmentSourceSegments as X
 import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetDeliveryOptions as X
 import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetReputationOptions as X
 import Stratosphere.ResourceProperties.PinpointEmailConfigurationSetSendingOptions as X
@@ -1214,6 +1316,7 @@
 import Stratosphere.ResourceProperties.S3BucketCorsConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketCorsRule as X
 import Stratosphere.ResourceProperties.S3BucketDataExport as X
+import Stratosphere.ResourceProperties.S3BucketDefaultRetention as X
 import Stratosphere.ResourceProperties.S3BucketDestination as X
 import Stratosphere.ResourceProperties.S3BucketEncryptionConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketFilterRule as X
@@ -1225,6 +1328,8 @@
 import Stratosphere.ResourceProperties.S3BucketNoncurrentVersionTransition as X
 import Stratosphere.ResourceProperties.S3BucketNotificationConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketNotificationFilter as X
+import Stratosphere.ResourceProperties.S3BucketObjectLockConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketObjectLockRule as X
 import Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketQueueConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketRedirectAllRequestsTo as X
diff --git a/library-gen/Stratosphere/Resources/AmplifyApp.hs b/library-gen/Stratosphere/Resources/AmplifyApp.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AmplifyApp.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html
+
+module Stratosphere.Resources.AmplifyApp where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AmplifyAppBasicAuthConfig
+import Stratosphere.ResourceProperties.AmplifyAppCustomRule
+import Stratosphere.ResourceProperties.AmplifyAppEnvironmentVariable
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for AmplifyApp. See 'amplifyApp' for a more
+-- convenient constructor.
+data AmplifyApp =
+  AmplifyApp
+  { _amplifyAppAccessToken :: Maybe (Val Text)
+  , _amplifyAppBasicAuthConfig :: Maybe AmplifyAppBasicAuthConfig
+  , _amplifyAppBuildSpec :: Maybe (Val Text)
+  , _amplifyAppCustomRules :: Maybe [AmplifyAppCustomRule]
+  , _amplifyAppDescription :: Maybe (Val Text)
+  , _amplifyAppEnvironmentVariables :: Maybe [AmplifyAppEnvironmentVariable]
+  , _amplifyAppIAMServiceRole :: Maybe (Val Text)
+  , _amplifyAppName :: Val Text
+  , _amplifyAppOauthToken :: Maybe (Val Text)
+  , _amplifyAppRepository :: Val Text
+  , _amplifyAppTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AmplifyApp where
+  toResourceProperties AmplifyApp{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Amplify::App"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccessToken",) . toJSON) _amplifyAppAccessToken
+        , fmap (("BasicAuthConfig",) . toJSON) _amplifyAppBasicAuthConfig
+        , fmap (("BuildSpec",) . toJSON) _amplifyAppBuildSpec
+        , fmap (("CustomRules",) . toJSON) _amplifyAppCustomRules
+        , fmap (("Description",) . toJSON) _amplifyAppDescription
+        , fmap (("EnvironmentVariables",) . toJSON) _amplifyAppEnvironmentVariables
+        , fmap (("IAMServiceRole",) . toJSON) _amplifyAppIAMServiceRole
+        , (Just . ("Name",) . toJSON) _amplifyAppName
+        , fmap (("OauthToken",) . toJSON) _amplifyAppOauthToken
+        , (Just . ("Repository",) . toJSON) _amplifyAppRepository
+        , fmap (("Tags",) . toJSON) _amplifyAppTags
+        ]
+    }
+
+-- | Constructor for 'AmplifyApp' containing required fields as arguments.
+amplifyApp
+  :: Val Text -- ^ 'aaName'
+  -> Val Text -- ^ 'aaRepository'
+  -> AmplifyApp
+amplifyApp namearg repositoryarg =
+  AmplifyApp
+  { _amplifyAppAccessToken = Nothing
+  , _amplifyAppBasicAuthConfig = Nothing
+  , _amplifyAppBuildSpec = Nothing
+  , _amplifyAppCustomRules = Nothing
+  , _amplifyAppDescription = Nothing
+  , _amplifyAppEnvironmentVariables = Nothing
+  , _amplifyAppIAMServiceRole = Nothing
+  , _amplifyAppName = namearg
+  , _amplifyAppOauthToken = Nothing
+  , _amplifyAppRepository = repositoryarg
+  , _amplifyAppTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-accesstoken
+aaAccessToken :: Lens' AmplifyApp (Maybe (Val Text))
+aaAccessToken = lens _amplifyAppAccessToken (\s a -> s { _amplifyAppAccessToken = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-basicauthconfig
+aaBasicAuthConfig :: Lens' AmplifyApp (Maybe AmplifyAppBasicAuthConfig)
+aaBasicAuthConfig = lens _amplifyAppBasicAuthConfig (\s a -> s { _amplifyAppBasicAuthConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-buildspec
+aaBuildSpec :: Lens' AmplifyApp (Maybe (Val Text))
+aaBuildSpec = lens _amplifyAppBuildSpec (\s a -> s { _amplifyAppBuildSpec = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-customrules
+aaCustomRules :: Lens' AmplifyApp (Maybe [AmplifyAppCustomRule])
+aaCustomRules = lens _amplifyAppCustomRules (\s a -> s { _amplifyAppCustomRules = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-description
+aaDescription :: Lens' AmplifyApp (Maybe (Val Text))
+aaDescription = lens _amplifyAppDescription (\s a -> s { _amplifyAppDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-environmentvariables
+aaEnvironmentVariables :: Lens' AmplifyApp (Maybe [AmplifyAppEnvironmentVariable])
+aaEnvironmentVariables = lens _amplifyAppEnvironmentVariables (\s a -> s { _amplifyAppEnvironmentVariables = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-iamservicerole
+aaIAMServiceRole :: Lens' AmplifyApp (Maybe (Val Text))
+aaIAMServiceRole = lens _amplifyAppIAMServiceRole (\s a -> s { _amplifyAppIAMServiceRole = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-name
+aaName :: Lens' AmplifyApp (Val Text)
+aaName = lens _amplifyAppName (\s a -> s { _amplifyAppName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-oauthtoken
+aaOauthToken :: Lens' AmplifyApp (Maybe (Val Text))
+aaOauthToken = lens _amplifyAppOauthToken (\s a -> s { _amplifyAppOauthToken = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-repository
+aaRepository :: Lens' AmplifyApp (Val Text)
+aaRepository = lens _amplifyAppRepository (\s a -> s { _amplifyAppRepository = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-tags
+aaTags :: Lens' AmplifyApp (Maybe [Tag])
+aaTags = lens _amplifyAppTags (\s a -> s { _amplifyAppTags = a })
diff --git a/library-gen/Stratosphere/Resources/AmplifyBranch.hs b/library-gen/Stratosphere/Resources/AmplifyBranch.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AmplifyBranch.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html
+
+module Stratosphere.Resources.AmplifyBranch where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AmplifyBranchBasicAuthConfig
+import Stratosphere.ResourceProperties.AmplifyBranchEnvironmentVariable
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for AmplifyBranch. See 'amplifyBranch' for a
+-- more convenient constructor.
+data AmplifyBranch =
+  AmplifyBranch
+  { _amplifyBranchAppId :: Val Text
+  , _amplifyBranchBasicAuthConfig :: Maybe AmplifyBranchBasicAuthConfig
+  , _amplifyBranchBranchName :: Val Text
+  , _amplifyBranchBuildSpec :: Maybe (Val Text)
+  , _amplifyBranchDescription :: Maybe (Val Text)
+  , _amplifyBranchEnvironmentVariables :: Maybe [AmplifyBranchEnvironmentVariable]
+  , _amplifyBranchStage :: Maybe (Val Text)
+  , _amplifyBranchTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AmplifyBranch where
+  toResourceProperties AmplifyBranch{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Amplify::Branch"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AppId",) . toJSON) _amplifyBranchAppId
+        , fmap (("BasicAuthConfig",) . toJSON) _amplifyBranchBasicAuthConfig
+        , (Just . ("BranchName",) . toJSON) _amplifyBranchBranchName
+        , fmap (("BuildSpec",) . toJSON) _amplifyBranchBuildSpec
+        , fmap (("Description",) . toJSON) _amplifyBranchDescription
+        , fmap (("EnvironmentVariables",) . toJSON) _amplifyBranchEnvironmentVariables
+        , fmap (("Stage",) . toJSON) _amplifyBranchStage
+        , fmap (("Tags",) . toJSON) _amplifyBranchTags
+        ]
+    }
+
+-- | Constructor for 'AmplifyBranch' containing required fields as arguments.
+amplifyBranch
+  :: Val Text -- ^ 'abAppId'
+  -> Val Text -- ^ 'abBranchName'
+  -> AmplifyBranch
+amplifyBranch appIdarg branchNamearg =
+  AmplifyBranch
+  { _amplifyBranchAppId = appIdarg
+  , _amplifyBranchBasicAuthConfig = Nothing
+  , _amplifyBranchBranchName = branchNamearg
+  , _amplifyBranchBuildSpec = Nothing
+  , _amplifyBranchDescription = Nothing
+  , _amplifyBranchEnvironmentVariables = Nothing
+  , _amplifyBranchStage = Nothing
+  , _amplifyBranchTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-appid
+abAppId :: Lens' AmplifyBranch (Val Text)
+abAppId = lens _amplifyBranchAppId (\s a -> s { _amplifyBranchAppId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-basicauthconfig
+abBasicAuthConfig :: Lens' AmplifyBranch (Maybe AmplifyBranchBasicAuthConfig)
+abBasicAuthConfig = lens _amplifyBranchBasicAuthConfig (\s a -> s { _amplifyBranchBasicAuthConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-branchname
+abBranchName :: Lens' AmplifyBranch (Val Text)
+abBranchName = lens _amplifyBranchBranchName (\s a -> s { _amplifyBranchBranchName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-buildspec
+abBuildSpec :: Lens' AmplifyBranch (Maybe (Val Text))
+abBuildSpec = lens _amplifyBranchBuildSpec (\s a -> s { _amplifyBranchBuildSpec = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-description
+abDescription :: Lens' AmplifyBranch (Maybe (Val Text))
+abDescription = lens _amplifyBranchDescription (\s a -> s { _amplifyBranchDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-environmentvariables
+abEnvironmentVariables :: Lens' AmplifyBranch (Maybe [AmplifyBranchEnvironmentVariable])
+abEnvironmentVariables = lens _amplifyBranchEnvironmentVariables (\s a -> s { _amplifyBranchEnvironmentVariables = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-stage
+abStage :: Lens' AmplifyBranch (Maybe (Val Text))
+abStage = lens _amplifyBranchStage (\s a -> s { _amplifyBranchStage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-branch.html#cfn-amplify-branch-tags
+abTags :: Lens' AmplifyBranch (Maybe [Tag])
+abTags = lens _amplifyBranchTags (\s a -> s { _amplifyBranchTags = a })
diff --git a/library-gen/Stratosphere/Resources/AmplifyDomain.hs b/library-gen/Stratosphere/Resources/AmplifyDomain.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AmplifyDomain.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html
+
+module Stratosphere.Resources.AmplifyDomain where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AmplifyDomainSubDomainSetting
+
+-- | Full data type definition for AmplifyDomain. See 'amplifyDomain' for a
+-- more convenient constructor.
+data AmplifyDomain =
+  AmplifyDomain
+  { _amplifyDomainAppId :: Val Text
+  , _amplifyDomainDomainName :: Val Text
+  , _amplifyDomainSubDomainSettings :: [AmplifyDomainSubDomainSetting]
+  } deriving (Show, Eq)
+
+instance ToResourceProperties AmplifyDomain where
+  toResourceProperties AmplifyDomain{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Amplify::Domain"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AppId",) . toJSON) _amplifyDomainAppId
+        , (Just . ("DomainName",) . toJSON) _amplifyDomainDomainName
+        , (Just . ("SubDomainSettings",) . toJSON) _amplifyDomainSubDomainSettings
+        ]
+    }
+
+-- | Constructor for 'AmplifyDomain' containing required fields as arguments.
+amplifyDomain
+  :: Val Text -- ^ 'adAppId'
+  -> Val Text -- ^ 'adDomainName'
+  -> [AmplifyDomainSubDomainSetting] -- ^ 'adSubDomainSettings'
+  -> AmplifyDomain
+amplifyDomain appIdarg domainNamearg subDomainSettingsarg =
+  AmplifyDomain
+  { _amplifyDomainAppId = appIdarg
+  , _amplifyDomainDomainName = domainNamearg
+  , _amplifyDomainSubDomainSettings = subDomainSettingsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-appid
+adAppId :: Lens' AmplifyDomain (Val Text)
+adAppId = lens _amplifyDomainAppId (\s a -> s { _amplifyDomainAppId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-domainname
+adDomainName :: Lens' AmplifyDomain (Val Text)
+adDomainName = lens _amplifyDomainDomainName (\s a -> s { _amplifyDomainDomainName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-subdomainsettings
+adSubDomainSettings :: Lens' AmplifyDomain [AmplifyDomainSubDomainSetting]
+adSubDomainSettings = lens _amplifyDomainSubDomainSettings (\s a -> s { _amplifyDomainSubDomainSettings = a })
diff --git a/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs b/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
--- a/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
+++ b/library-gen/Stratosphere/Resources/CodePipelineCustomActionType.hs
@@ -22,7 +22,7 @@
   , _codePipelineCustomActionTypeOutputArtifactDetails :: CodePipelineCustomActionTypeArtifactDetails
   , _codePipelineCustomActionTypeProvider :: Val Text
   , _codePipelineCustomActionTypeSettings :: Maybe CodePipelineCustomActionTypeSettings
-  , _codePipelineCustomActionTypeVersion :: Maybe (Val Text)
+  , _codePipelineCustomActionTypeVersion :: Val Text
   } deriving (Show, Eq)
 
 instance ToResourceProperties CodePipelineCustomActionType where
@@ -37,7 +37,7 @@
         , (Just . ("OutputArtifactDetails",) . toJSON) _codePipelineCustomActionTypeOutputArtifactDetails
         , (Just . ("Provider",) . toJSON) _codePipelineCustomActionTypeProvider
         , fmap (("Settings",) . toJSON) _codePipelineCustomActionTypeSettings
-        , fmap (("Version",) . toJSON) _codePipelineCustomActionTypeVersion
+        , (Just . ("Version",) . toJSON) _codePipelineCustomActionTypeVersion
         ]
     }
 
@@ -48,8 +48,9 @@
   -> CodePipelineCustomActionTypeArtifactDetails -- ^ 'cpcatInputArtifactDetails'
   -> CodePipelineCustomActionTypeArtifactDetails -- ^ 'cpcatOutputArtifactDetails'
   -> Val Text -- ^ 'cpcatProvider'
+  -> Val Text -- ^ 'cpcatVersion'
   -> CodePipelineCustomActionType
-codePipelineCustomActionType categoryarg inputArtifactDetailsarg outputArtifactDetailsarg providerarg =
+codePipelineCustomActionType categoryarg inputArtifactDetailsarg outputArtifactDetailsarg providerarg versionarg =
   CodePipelineCustomActionType
   { _codePipelineCustomActionTypeCategory = categoryarg
   , _codePipelineCustomActionTypeConfigurationProperties = Nothing
@@ -57,7 +58,7 @@
   , _codePipelineCustomActionTypeOutputArtifactDetails = outputArtifactDetailsarg
   , _codePipelineCustomActionTypeProvider = providerarg
   , _codePipelineCustomActionTypeSettings = Nothing
-  , _codePipelineCustomActionTypeVersion = Nothing
+  , _codePipelineCustomActionTypeVersion = versionarg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-category
@@ -85,5 +86,5 @@
 cpcatSettings = lens _codePipelineCustomActionTypeSettings (\s a -> s { _codePipelineCustomActionTypeSettings = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html#cfn-codepipeline-customactiontype-version
-cpcatVersion :: Lens' CodePipelineCustomActionType (Maybe (Val Text))
+cpcatVersion :: Lens' CodePipelineCustomActionType (Val Text)
 cpcatVersion = lens _codePipelineCustomActionTypeVersion (\s a -> s { _codePipelineCustomActionTypeVersion = a })
diff --git a/library-gen/Stratosphere/Resources/EC2ClientVpnAuthorizationRule.hs b/library-gen/Stratosphere/Resources/EC2ClientVpnAuthorizationRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2ClientVpnAuthorizationRule.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html
+
+module Stratosphere.Resources.EC2ClientVpnAuthorizationRule where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2ClientVpnAuthorizationRule. See
+-- 'ec2ClientVpnAuthorizationRule' for a more convenient constructor.
+data EC2ClientVpnAuthorizationRule =
+  EC2ClientVpnAuthorizationRule
+  { _eC2ClientVpnAuthorizationRuleAccessGroupId :: Maybe (Val Text)
+  , _eC2ClientVpnAuthorizationRuleAuthorizeAllGroups :: Maybe (Val Bool)
+  , _eC2ClientVpnAuthorizationRuleClientVpnEndpointId :: Val Text
+  , _eC2ClientVpnAuthorizationRuleDescription :: Maybe (Val Text)
+  , _eC2ClientVpnAuthorizationRuleTargetNetworkCidr :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties EC2ClientVpnAuthorizationRule where
+  toResourceProperties EC2ClientVpnAuthorizationRule{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::ClientVpnAuthorizationRule"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AccessGroupId",) . toJSON) _eC2ClientVpnAuthorizationRuleAccessGroupId
+        , fmap (("AuthorizeAllGroups",) . toJSON) _eC2ClientVpnAuthorizationRuleAuthorizeAllGroups
+        , (Just . ("ClientVpnEndpointId",) . toJSON) _eC2ClientVpnAuthorizationRuleClientVpnEndpointId
+        , fmap (("Description",) . toJSON) _eC2ClientVpnAuthorizationRuleDescription
+        , (Just . ("TargetNetworkCidr",) . toJSON) _eC2ClientVpnAuthorizationRuleTargetNetworkCidr
+        ]
+    }
+
+-- | Constructor for 'EC2ClientVpnAuthorizationRule' containing required
+-- fields as arguments.
+ec2ClientVpnAuthorizationRule
+  :: Val Text -- ^ 'eccvarClientVpnEndpointId'
+  -> Val Text -- ^ 'eccvarTargetNetworkCidr'
+  -> EC2ClientVpnAuthorizationRule
+ec2ClientVpnAuthorizationRule clientVpnEndpointIdarg targetNetworkCidrarg =
+  EC2ClientVpnAuthorizationRule
+  { _eC2ClientVpnAuthorizationRuleAccessGroupId = Nothing
+  , _eC2ClientVpnAuthorizationRuleAuthorizeAllGroups = Nothing
+  , _eC2ClientVpnAuthorizationRuleClientVpnEndpointId = clientVpnEndpointIdarg
+  , _eC2ClientVpnAuthorizationRuleDescription = Nothing
+  , _eC2ClientVpnAuthorizationRuleTargetNetworkCidr = targetNetworkCidrarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-accessgroupid
+eccvarAccessGroupId :: Lens' EC2ClientVpnAuthorizationRule (Maybe (Val Text))
+eccvarAccessGroupId = lens _eC2ClientVpnAuthorizationRuleAccessGroupId (\s a -> s { _eC2ClientVpnAuthorizationRuleAccessGroupId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-authorizeallgroups
+eccvarAuthorizeAllGroups :: Lens' EC2ClientVpnAuthorizationRule (Maybe (Val Bool))
+eccvarAuthorizeAllGroups = lens _eC2ClientVpnAuthorizationRuleAuthorizeAllGroups (\s a -> s { _eC2ClientVpnAuthorizationRuleAuthorizeAllGroups = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-clientvpnendpointid
+eccvarClientVpnEndpointId :: Lens' EC2ClientVpnAuthorizationRule (Val Text)
+eccvarClientVpnEndpointId = lens _eC2ClientVpnAuthorizationRuleClientVpnEndpointId (\s a -> s { _eC2ClientVpnAuthorizationRuleClientVpnEndpointId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-description
+eccvarDescription :: Lens' EC2ClientVpnAuthorizationRule (Maybe (Val Text))
+eccvarDescription = lens _eC2ClientVpnAuthorizationRuleDescription (\s a -> s { _eC2ClientVpnAuthorizationRuleDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnauthorizationrule.html#cfn-ec2-clientvpnauthorizationrule-targetnetworkcidr
+eccvarTargetNetworkCidr :: Lens' EC2ClientVpnAuthorizationRule (Val Text)
+eccvarTargetNetworkCidr = lens _eC2ClientVpnAuthorizationRuleTargetNetworkCidr (\s a -> s { _eC2ClientVpnAuthorizationRuleTargetNetworkCidr = a })
diff --git a/library-gen/Stratosphere/Resources/EC2ClientVpnEndpoint.hs b/library-gen/Stratosphere/Resources/EC2ClientVpnEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2ClientVpnEndpoint.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html
+
+module Stratosphere.Resources.EC2ClientVpnEndpoint where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointClientAuthenticationRequest
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointConnectionLogOptions
+import Stratosphere.ResourceProperties.EC2ClientVpnEndpointTagSpecification
+
+-- | Full data type definition for EC2ClientVpnEndpoint. See
+-- 'ec2ClientVpnEndpoint' for a more convenient constructor.
+data EC2ClientVpnEndpoint =
+  EC2ClientVpnEndpoint
+  { _eC2ClientVpnEndpointAuthenticationOptions :: [EC2ClientVpnEndpointClientAuthenticationRequest]
+  , _eC2ClientVpnEndpointClientCidrBlock :: Val Text
+  , _eC2ClientVpnEndpointConnectionLogOptions :: EC2ClientVpnEndpointConnectionLogOptions
+  , _eC2ClientVpnEndpointDescription :: Maybe (Val Text)
+  , _eC2ClientVpnEndpointDnsServers :: Maybe (ValList Text)
+  , _eC2ClientVpnEndpointServerCertificateArn :: Val Text
+  , _eC2ClientVpnEndpointTagSpecifications :: Maybe [EC2ClientVpnEndpointTagSpecification]
+  , _eC2ClientVpnEndpointTransportProtocol :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties EC2ClientVpnEndpoint where
+  toResourceProperties EC2ClientVpnEndpoint{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::ClientVpnEndpoint"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("AuthenticationOptions",) . toJSON) _eC2ClientVpnEndpointAuthenticationOptions
+        , (Just . ("ClientCidrBlock",) . toJSON) _eC2ClientVpnEndpointClientCidrBlock
+        , (Just . ("ConnectionLogOptions",) . toJSON) _eC2ClientVpnEndpointConnectionLogOptions
+        , fmap (("Description",) . toJSON) _eC2ClientVpnEndpointDescription
+        , fmap (("DnsServers",) . toJSON) _eC2ClientVpnEndpointDnsServers
+        , (Just . ("ServerCertificateArn",) . toJSON) _eC2ClientVpnEndpointServerCertificateArn
+        , fmap (("TagSpecifications",) . toJSON) _eC2ClientVpnEndpointTagSpecifications
+        , fmap (("TransportProtocol",) . toJSON) _eC2ClientVpnEndpointTransportProtocol
+        ]
+    }
+
+-- | Constructor for 'EC2ClientVpnEndpoint' containing required fields as
+-- arguments.
+ec2ClientVpnEndpoint
+  :: [EC2ClientVpnEndpointClientAuthenticationRequest] -- ^ 'eccveAuthenticationOptions'
+  -> Val Text -- ^ 'eccveClientCidrBlock'
+  -> EC2ClientVpnEndpointConnectionLogOptions -- ^ 'eccveConnectionLogOptions'
+  -> Val Text -- ^ 'eccveServerCertificateArn'
+  -> EC2ClientVpnEndpoint
+ec2ClientVpnEndpoint authenticationOptionsarg clientCidrBlockarg connectionLogOptionsarg serverCertificateArnarg =
+  EC2ClientVpnEndpoint
+  { _eC2ClientVpnEndpointAuthenticationOptions = authenticationOptionsarg
+  , _eC2ClientVpnEndpointClientCidrBlock = clientCidrBlockarg
+  , _eC2ClientVpnEndpointConnectionLogOptions = connectionLogOptionsarg
+  , _eC2ClientVpnEndpointDescription = Nothing
+  , _eC2ClientVpnEndpointDnsServers = Nothing
+  , _eC2ClientVpnEndpointServerCertificateArn = serverCertificateArnarg
+  , _eC2ClientVpnEndpointTagSpecifications = Nothing
+  , _eC2ClientVpnEndpointTransportProtocol = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-authenticationoptions
+eccveAuthenticationOptions :: Lens' EC2ClientVpnEndpoint [EC2ClientVpnEndpointClientAuthenticationRequest]
+eccveAuthenticationOptions = lens _eC2ClientVpnEndpointAuthenticationOptions (\s a -> s { _eC2ClientVpnEndpointAuthenticationOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-clientcidrblock
+eccveClientCidrBlock :: Lens' EC2ClientVpnEndpoint (Val Text)
+eccveClientCidrBlock = lens _eC2ClientVpnEndpointClientCidrBlock (\s a -> s { _eC2ClientVpnEndpointClientCidrBlock = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-connectionlogoptions
+eccveConnectionLogOptions :: Lens' EC2ClientVpnEndpoint EC2ClientVpnEndpointConnectionLogOptions
+eccveConnectionLogOptions = lens _eC2ClientVpnEndpointConnectionLogOptions (\s a -> s { _eC2ClientVpnEndpointConnectionLogOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-description
+eccveDescription :: Lens' EC2ClientVpnEndpoint (Maybe (Val Text))
+eccveDescription = lens _eC2ClientVpnEndpointDescription (\s a -> s { _eC2ClientVpnEndpointDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-dnsservers
+eccveDnsServers :: Lens' EC2ClientVpnEndpoint (Maybe (ValList Text))
+eccveDnsServers = lens _eC2ClientVpnEndpointDnsServers (\s a -> s { _eC2ClientVpnEndpointDnsServers = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-servercertificatearn
+eccveServerCertificateArn :: Lens' EC2ClientVpnEndpoint (Val Text)
+eccveServerCertificateArn = lens _eC2ClientVpnEndpointServerCertificateArn (\s a -> s { _eC2ClientVpnEndpointServerCertificateArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-tagspecifications
+eccveTagSpecifications :: Lens' EC2ClientVpnEndpoint (Maybe [EC2ClientVpnEndpointTagSpecification])
+eccveTagSpecifications = lens _eC2ClientVpnEndpointTagSpecifications (\s a -> s { _eC2ClientVpnEndpointTagSpecifications = a })
+
+-- | 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 })
diff --git a/library-gen/Stratosphere/Resources/EC2ClientVpnRoute.hs b/library-gen/Stratosphere/Resources/EC2ClientVpnRoute.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2ClientVpnRoute.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html
+
+module Stratosphere.Resources.EC2ClientVpnRoute where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2ClientVpnRoute. See 'ec2ClientVpnRoute'
+-- for a more convenient constructor.
+data EC2ClientVpnRoute =
+  EC2ClientVpnRoute
+  { _eC2ClientVpnRouteClientVpnEndpointId :: Val Text
+  , _eC2ClientVpnRouteDescription :: Maybe (Val Text)
+  , _eC2ClientVpnRouteDestinationCidrBlock :: Val Text
+  , _eC2ClientVpnRouteTargetVpcSubnetId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties EC2ClientVpnRoute where
+  toResourceProperties EC2ClientVpnRoute{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::ClientVpnRoute"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ClientVpnEndpointId",) . toJSON) _eC2ClientVpnRouteClientVpnEndpointId
+        , fmap (("Description",) . toJSON) _eC2ClientVpnRouteDescription
+        , (Just . ("DestinationCidrBlock",) . toJSON) _eC2ClientVpnRouteDestinationCidrBlock
+        , (Just . ("TargetVpcSubnetId",) . toJSON) _eC2ClientVpnRouteTargetVpcSubnetId
+        ]
+    }
+
+-- | Constructor for 'EC2ClientVpnRoute' containing required fields as
+-- arguments.
+ec2ClientVpnRoute
+  :: Val Text -- ^ 'eccvrClientVpnEndpointId'
+  -> Val Text -- ^ 'eccvrDestinationCidrBlock'
+  -> Val Text -- ^ 'eccvrTargetVpcSubnetId'
+  -> EC2ClientVpnRoute
+ec2ClientVpnRoute clientVpnEndpointIdarg destinationCidrBlockarg targetVpcSubnetIdarg =
+  EC2ClientVpnRoute
+  { _eC2ClientVpnRouteClientVpnEndpointId = clientVpnEndpointIdarg
+  , _eC2ClientVpnRouteDescription = Nothing
+  , _eC2ClientVpnRouteDestinationCidrBlock = destinationCidrBlockarg
+  , _eC2ClientVpnRouteTargetVpcSubnetId = targetVpcSubnetIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-clientvpnendpointid
+eccvrClientVpnEndpointId :: Lens' EC2ClientVpnRoute (Val Text)
+eccvrClientVpnEndpointId = lens _eC2ClientVpnRouteClientVpnEndpointId (\s a -> s { _eC2ClientVpnRouteClientVpnEndpointId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-description
+eccvrDescription :: Lens' EC2ClientVpnRoute (Maybe (Val Text))
+eccvrDescription = lens _eC2ClientVpnRouteDescription (\s a -> s { _eC2ClientVpnRouteDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-destinationcidrblock
+eccvrDestinationCidrBlock :: Lens' EC2ClientVpnRoute (Val Text)
+eccvrDestinationCidrBlock = lens _eC2ClientVpnRouteDestinationCidrBlock (\s a -> s { _eC2ClientVpnRouteDestinationCidrBlock = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnroute.html#cfn-ec2-clientvpnroute-targetvpcsubnetid
+eccvrTargetVpcSubnetId :: Lens' EC2ClientVpnRoute (Val Text)
+eccvrTargetVpcSubnetId = lens _eC2ClientVpnRouteTargetVpcSubnetId (\s a -> s { _eC2ClientVpnRouteTargetVpcSubnetId = a })
diff --git a/library-gen/Stratosphere/Resources/EC2ClientVpnTargetNetworkAssociation.hs b/library-gen/Stratosphere/Resources/EC2ClientVpnTargetNetworkAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2ClientVpnTargetNetworkAssociation.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html
+
+module Stratosphere.Resources.EC2ClientVpnTargetNetworkAssociation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2ClientVpnTargetNetworkAssociation. See
+-- 'ec2ClientVpnTargetNetworkAssociation' for a more convenient constructor.
+data EC2ClientVpnTargetNetworkAssociation =
+  EC2ClientVpnTargetNetworkAssociation
+  { _eC2ClientVpnTargetNetworkAssociationClientVpnEndpointId :: Val Text
+  , _eC2ClientVpnTargetNetworkAssociationSubnetId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties EC2ClientVpnTargetNetworkAssociation where
+  toResourceProperties EC2ClientVpnTargetNetworkAssociation{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::EC2::ClientVpnTargetNetworkAssociation"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ClientVpnEndpointId",) . toJSON) _eC2ClientVpnTargetNetworkAssociationClientVpnEndpointId
+        , (Just . ("SubnetId",) . toJSON) _eC2ClientVpnTargetNetworkAssociationSubnetId
+        ]
+    }
+
+-- | Constructor for 'EC2ClientVpnTargetNetworkAssociation' containing
+-- required fields as arguments.
+ec2ClientVpnTargetNetworkAssociation
+  :: Val Text -- ^ 'eccvtnaClientVpnEndpointId'
+  -> Val Text -- ^ 'eccvtnaSubnetId'
+  -> EC2ClientVpnTargetNetworkAssociation
+ec2ClientVpnTargetNetworkAssociation clientVpnEndpointIdarg subnetIdarg =
+  EC2ClientVpnTargetNetworkAssociation
+  { _eC2ClientVpnTargetNetworkAssociationClientVpnEndpointId = clientVpnEndpointIdarg
+  , _eC2ClientVpnTargetNetworkAssociationSubnetId = subnetIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html#cfn-ec2-clientvpntargetnetworkassociation-clientvpnendpointid
+eccvtnaClientVpnEndpointId :: Lens' EC2ClientVpnTargetNetworkAssociation (Val Text)
+eccvtnaClientVpnEndpointId = lens _eC2ClientVpnTargetNetworkAssociationClientVpnEndpointId (\s a -> s { _eC2ClientVpnTargetNetworkAssociationClientVpnEndpointId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpntargetnetworkassociation.html#cfn-ec2-clientvpntargetnetworkassociation-subnetid
+eccvtnaSubnetId :: Lens' EC2ClientVpnTargetNetworkAssociation (Val Text)
+eccvtnaSubnetId = lens _eC2ClientVpnTargetNetworkAssociationSubnetId (\s a -> s { _eC2ClientVpnTargetNetworkAssociationSubnetId = a })
diff --git a/library-gen/Stratosphere/Resources/EC2Host.hs b/library-gen/Stratosphere/Resources/EC2Host.hs
--- a/library-gen/Stratosphere/Resources/EC2Host.hs
+++ b/library-gen/Stratosphere/Resources/EC2Host.hs
@@ -16,6 +16,7 @@
   EC2Host
   { _eC2HostAutoPlacement :: Maybe (Val Text)
   , _eC2HostAvailabilityZone :: Val Text
+  , _eC2HostHostRecovery :: Maybe (Val Text)
   , _eC2HostInstanceType :: Val Text
   } deriving (Show, Eq)
 
@@ -27,6 +28,7 @@
         hashMapFromList $ catMaybes
         [ fmap (("AutoPlacement",) . toJSON) _eC2HostAutoPlacement
         , (Just . ("AvailabilityZone",) . toJSON) _eC2HostAvailabilityZone
+        , fmap (("HostRecovery",) . toJSON) _eC2HostHostRecovery
         , (Just . ("InstanceType",) . toJSON) _eC2HostInstanceType
         ]
     }
@@ -40,6 +42,7 @@
   EC2Host
   { _eC2HostAutoPlacement = Nothing
   , _eC2HostAvailabilityZone = availabilityZonearg
+  , _eC2HostHostRecovery = Nothing
   , _eC2HostInstanceType = instanceTypearg
   }
 
@@ -50,6 +53,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-availabilityzone
 echAvailabilityZone :: Lens' EC2Host (Val Text)
 echAvailabilityZone = lens _eC2HostAvailabilityZone (\s a -> s { _eC2HostAvailabilityZone = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-hostrecovery
+echHostRecovery :: Lens' EC2Host (Maybe (Val Text))
+echHostRecovery = lens _eC2HostHostRecovery (\s a -> s { _eC2HostHostRecovery = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-host.html#cfn-ec2-host-instancetype
 echInstanceType :: Lens' EC2Host (Val Text)
diff --git a/library-gen/Stratosphere/Resources/EC2Route.hs b/library-gen/Stratosphere/Resources/EC2Route.hs
--- a/library-gen/Stratosphere/Resources/EC2Route.hs
+++ b/library-gen/Stratosphere/Resources/EC2Route.hs
@@ -22,6 +22,7 @@
   , _eC2RouteNatGatewayId :: Maybe (Val Text)
   , _eC2RouteNetworkInterfaceId :: Maybe (Val Text)
   , _eC2RouteRouteTableId :: Val Text
+  , _eC2RouteTransitGatewayId :: Maybe (Val Text)
   , _eC2RouteVpcPeeringConnectionId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -39,6 +40,7 @@
         , fmap (("NatGatewayId",) . toJSON) _eC2RouteNatGatewayId
         , fmap (("NetworkInterfaceId",) . toJSON) _eC2RouteNetworkInterfaceId
         , (Just . ("RouteTableId",) . toJSON) _eC2RouteRouteTableId
+        , fmap (("TransitGatewayId",) . toJSON) _eC2RouteTransitGatewayId
         , fmap (("VpcPeeringConnectionId",) . toJSON) _eC2RouteVpcPeeringConnectionId
         ]
     }
@@ -57,6 +59,7 @@
   , _eC2RouteNatGatewayId = Nothing
   , _eC2RouteNetworkInterfaceId = Nothing
   , _eC2RouteRouteTableId = routeTableIdarg
+  , _eC2RouteTransitGatewayId = Nothing
   , _eC2RouteVpcPeeringConnectionId = Nothing
   }
 
@@ -91,6 +94,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-routetableid
 ecrRouteTableId :: Lens' EC2Route (Val Text)
 ecrRouteTableId = lens _eC2RouteRouteTableId (\s a -> s { _eC2RouteRouteTableId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-transitgatewayid
+ecrTransitGatewayId :: Lens' EC2Route (Maybe (Val Text))
+ecrTransitGatewayId = lens _eC2RouteTransitGatewayId (\s a -> s { _eC2RouteTransitGatewayId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-vpcpeeringconnectionid
 ecrVpcPeeringConnectionId :: Lens' EC2Route (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
@@ -18,8 +18,9 @@
   { _eC2VPNConnectionCustomerGatewayId :: Val Text
   , _eC2VPNConnectionStaticRoutesOnly :: Maybe (Val Bool)
   , _eC2VPNConnectionTags :: Maybe [Tag]
+  , _eC2VPNConnectionTransitGatewayId :: Maybe (Val Text)
   , _eC2VPNConnectionType :: Val Text
-  , _eC2VPNConnectionVpnGatewayId :: Val Text
+  , _eC2VPNConnectionVpnGatewayId :: Maybe (Val Text)
   , _eC2VPNConnectionVpnTunnelOptionsSpecifications :: Maybe [EC2VPNConnectionVpnTunnelOptionsSpecification]
   } deriving (Show, Eq)
 
@@ -32,8 +33,9 @@
         [ (Just . ("CustomerGatewayId",) . toJSON) _eC2VPNConnectionCustomerGatewayId
         , fmap (("StaticRoutesOnly",) . toJSON) _eC2VPNConnectionStaticRoutesOnly
         , fmap (("Tags",) . toJSON) _eC2VPNConnectionTags
+        , fmap (("TransitGatewayId",) . toJSON) _eC2VPNConnectionTransitGatewayId
         , (Just . ("Type",) . toJSON) _eC2VPNConnectionType
-        , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNConnectionVpnGatewayId
+        , fmap (("VpnGatewayId",) . toJSON) _eC2VPNConnectionVpnGatewayId
         , fmap (("VpnTunnelOptionsSpecifications",) . toJSON) _eC2VPNConnectionVpnTunnelOptionsSpecifications
         ]
     }
@@ -43,15 +45,15 @@
 ec2VPNConnection
   :: Val Text -- ^ 'ecvpncCustomerGatewayId'
   -> Val Text -- ^ 'ecvpncType'
-  -> Val Text -- ^ 'ecvpncVpnGatewayId'
   -> EC2VPNConnection
-ec2VPNConnection customerGatewayIdarg typearg vpnGatewayIdarg =
+ec2VPNConnection customerGatewayIdarg typearg =
   EC2VPNConnection
   { _eC2VPNConnectionCustomerGatewayId = customerGatewayIdarg
   , _eC2VPNConnectionStaticRoutesOnly = Nothing
   , _eC2VPNConnectionTags = Nothing
+  , _eC2VPNConnectionTransitGatewayId = Nothing
   , _eC2VPNConnectionType = typearg
-  , _eC2VPNConnectionVpnGatewayId = vpnGatewayIdarg
+  , _eC2VPNConnectionVpnGatewayId = Nothing
   , _eC2VPNConnectionVpnTunnelOptionsSpecifications = Nothing
   }
 
@@ -67,12 +69,16 @@
 ecvpncTags :: Lens' EC2VPNConnection (Maybe [Tag])
 ecvpncTags = lens _eC2VPNConnectionTags (\s a -> s { _eC2VPNConnectionTags = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-transitgatewayid
+ecvpncTransitGatewayId :: Lens' EC2VPNConnection (Maybe (Val Text))
+ecvpncTransitGatewayId = lens _eC2VPNConnectionTransitGatewayId (\s a -> s { _eC2VPNConnectionTransitGatewayId = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-type
 ecvpncType :: Lens' EC2VPNConnection (Val Text)
 ecvpncType = lens _eC2VPNConnectionType (\s a -> s { _eC2VPNConnectionType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-vpngatewayid
-ecvpncVpnGatewayId :: Lens' EC2VPNConnection (Val Text)
+ecvpncVpnGatewayId :: Lens' EC2VPNConnection (Maybe (Val Text))
 ecvpncVpnGatewayId = lens _eC2VPNConnectionVpnGatewayId (\s a -> s { _eC2VPNConnectionVpnGatewayId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-vpntunneloptionsspecifications
diff --git a/library-gen/Stratosphere/Resources/ECRRepository.hs b/library-gen/Stratosphere/Resources/ECRRepository.hs
--- a/library-gen/Stratosphere/Resources/ECRRepository.hs
+++ b/library-gen/Stratosphere/Resources/ECRRepository.hs
@@ -9,6 +9,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.ECRRepositoryLifecyclePolicy
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ECRRepository. See 'ecrRepository' for a
 -- more convenient constructor.
@@ -17,6 +18,7 @@
   { _eCRRepositoryLifecyclePolicy :: Maybe ECRRepositoryLifecyclePolicy
   , _eCRRepositoryRepositoryName :: Maybe (Val Text)
   , _eCRRepositoryRepositoryPolicyText :: Maybe Object
+  , _eCRRepositoryTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToResourceProperties ECRRepository where
@@ -28,6 +30,7 @@
         [ fmap (("LifecyclePolicy",) . toJSON) _eCRRepositoryLifecyclePolicy
         , fmap (("RepositoryName",) . toJSON) _eCRRepositoryRepositoryName
         , fmap (("RepositoryPolicyText",) . toJSON) _eCRRepositoryRepositoryPolicyText
+        , fmap (("Tags",) . toJSON) _eCRRepositoryTags
         ]
     }
 
@@ -39,6 +42,7 @@
   { _eCRRepositoryLifecyclePolicy = Nothing
   , _eCRRepositoryRepositoryName = Nothing
   , _eCRRepositoryRepositoryPolicyText = Nothing
+  , _eCRRepositoryTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html#cfn-ecr-repository-lifecyclepolicy
@@ -52,3 +56,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html#cfn-ecr-repository-repositorypolicytext
 ecrrRepositoryPolicyText :: Lens' ECRRepository (Maybe Object)
 ecrrRepositoryPolicyText = lens _eCRRepositoryRepositoryPolicyText (\s a -> s { _eCRRepositoryRepositoryPolicyText = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html#cfn-ecr-repository-tags
+ecrrTags :: Lens' ECRRepository (Maybe [Tag])
+ecrrTags = lens _eCRRepositoryTags (\s a -> s { _eCRRepositoryTags = a })
diff --git a/library-gen/Stratosphere/Resources/ECSCluster.hs b/library-gen/Stratosphere/Resources/ECSCluster.hs
--- a/library-gen/Stratosphere/Resources/ECSCluster.hs
+++ b/library-gen/Stratosphere/Resources/ECSCluster.hs
@@ -8,13 +8,14 @@
 module Stratosphere.Resources.ECSCluster where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ECSCluster. See 'ecsCluster' for a more
 -- convenient constructor.
 data ECSCluster =
   ECSCluster
   { _eCSClusterClusterName :: Maybe (Val Text)
+  , _eCSClusterTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToResourceProperties ECSCluster where
@@ -24,6 +25,7 @@
     , resourcePropertiesProperties =
         hashMapFromList $ catMaybes
         [ fmap (("ClusterName",) . toJSON) _eCSClusterClusterName
+        , fmap (("Tags",) . toJSON) _eCSClusterTags
         ]
     }
 
@@ -33,8 +35,13 @@
 ecsCluster  =
   ECSCluster
   { _eCSClusterClusterName = Nothing
+  , _eCSClusterTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#cfn-ecs-cluster-clustername
 ecscClusterName :: Lens' ECSCluster (Maybe (Val Text))
 ecscClusterName = lens _eCSClusterClusterName (\s a -> s { _eCSClusterClusterName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html#cfn-ecs-cluster-tags
+ecscTags :: Lens' ECSCluster (Maybe [Tag])
+ecscTags = lens _eCSClusterTags (\s a -> s { _eCSClusterTags = a })
diff --git a/library-gen/Stratosphere/Resources/ECSService.hs b/library-gen/Stratosphere/Resources/ECSService.hs
--- a/library-gen/Stratosphere/Resources/ECSService.hs
+++ b/library-gen/Stratosphere/Resources/ECSService.hs
@@ -14,6 +14,7 @@
 import Stratosphere.ResourceProperties.ECSServicePlacementConstraint
 import Stratosphere.ResourceProperties.ECSServicePlacementStrategy
 import Stratosphere.ResourceProperties.ECSServiceServiceRegistry
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ECSService. See 'ecsService' for a more
 -- convenient constructor.
@@ -22,6 +23,7 @@
   { _eCSServiceCluster :: Maybe (Val Text)
   , _eCSServiceDeploymentConfiguration :: Maybe ECSServiceDeploymentConfiguration
   , _eCSServiceDesiredCount :: Maybe (Val Integer)
+  , _eCSServiceEnableECSManagedTags :: Maybe (Val Bool)
   , _eCSServiceHealthCheckGracePeriodSeconds :: Maybe (Val Integer)
   , _eCSServiceLaunchType :: Maybe (Val Text)
   , _eCSServiceLoadBalancers :: Maybe [ECSServiceLoadBalancer]
@@ -29,10 +31,12 @@
   , _eCSServicePlacementConstraints :: Maybe [ECSServicePlacementConstraint]
   , _eCSServicePlacementStrategies :: Maybe [ECSServicePlacementStrategy]
   , _eCSServicePlatformVersion :: Maybe (Val Text)
+  , _eCSServicePropagateTags :: Maybe (Val Text)
   , _eCSServiceRole :: Maybe (Val Text)
   , _eCSServiceSchedulingStrategy :: Maybe (Val Text)
   , _eCSServiceServiceName :: Maybe (Val Text)
   , _eCSServiceServiceRegistries :: Maybe [ECSServiceServiceRegistry]
+  , _eCSServiceTags :: Maybe [Tag]
   , _eCSServiceTaskDefinition :: Val Text
   } deriving (Show, Eq)
 
@@ -45,6 +49,7 @@
         [ fmap (("Cluster",) . toJSON) _eCSServiceCluster
         , fmap (("DeploymentConfiguration",) . toJSON) _eCSServiceDeploymentConfiguration
         , fmap (("DesiredCount",) . toJSON) _eCSServiceDesiredCount
+        , fmap (("EnableECSManagedTags",) . toJSON) _eCSServiceEnableECSManagedTags
         , fmap (("HealthCheckGracePeriodSeconds",) . toJSON) _eCSServiceHealthCheckGracePeriodSeconds
         , fmap (("LaunchType",) . toJSON) _eCSServiceLaunchType
         , fmap (("LoadBalancers",) . toJSON) _eCSServiceLoadBalancers
@@ -52,10 +57,12 @@
         , fmap (("PlacementConstraints",) . toJSON) _eCSServicePlacementConstraints
         , fmap (("PlacementStrategies",) . toJSON) _eCSServicePlacementStrategies
         , fmap (("PlatformVersion",) . toJSON) _eCSServicePlatformVersion
+        , fmap (("PropagateTags",) . toJSON) _eCSServicePropagateTags
         , fmap (("Role",) . toJSON) _eCSServiceRole
         , fmap (("SchedulingStrategy",) . toJSON) _eCSServiceSchedulingStrategy
         , fmap (("ServiceName",) . toJSON) _eCSServiceServiceName
         , fmap (("ServiceRegistries",) . toJSON) _eCSServiceServiceRegistries
+        , fmap (("Tags",) . toJSON) _eCSServiceTags
         , (Just . ("TaskDefinition",) . toJSON) _eCSServiceTaskDefinition
         ]
     }
@@ -69,6 +76,7 @@
   { _eCSServiceCluster = Nothing
   , _eCSServiceDeploymentConfiguration = Nothing
   , _eCSServiceDesiredCount = Nothing
+  , _eCSServiceEnableECSManagedTags = Nothing
   , _eCSServiceHealthCheckGracePeriodSeconds = Nothing
   , _eCSServiceLaunchType = Nothing
   , _eCSServiceLoadBalancers = Nothing
@@ -76,10 +84,12 @@
   , _eCSServicePlacementConstraints = Nothing
   , _eCSServicePlacementStrategies = Nothing
   , _eCSServicePlatformVersion = Nothing
+  , _eCSServicePropagateTags = Nothing
   , _eCSServiceRole = Nothing
   , _eCSServiceSchedulingStrategy = Nothing
   , _eCSServiceServiceName = Nothing
   , _eCSServiceServiceRegistries = Nothing
+  , _eCSServiceTags = Nothing
   , _eCSServiceTaskDefinition = taskDefinitionarg
   }
 
@@ -95,6 +105,10 @@
 ecssDesiredCount :: Lens' ECSService (Maybe (Val Integer))
 ecssDesiredCount = lens _eCSServiceDesiredCount (\s a -> s { _eCSServiceDesiredCount = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-enableecsmanagedtags
+ecssEnableECSManagedTags :: Lens' ECSService (Maybe (Val Bool))
+ecssEnableECSManagedTags = lens _eCSServiceEnableECSManagedTags (\s a -> s { _eCSServiceEnableECSManagedTags = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-healthcheckgraceperiodseconds
 ecssHealthCheckGracePeriodSeconds :: Lens' ECSService (Maybe (Val Integer))
 ecssHealthCheckGracePeriodSeconds = lens _eCSServiceHealthCheckGracePeriodSeconds (\s a -> s { _eCSServiceHealthCheckGracePeriodSeconds = a })
@@ -123,6 +137,10 @@
 ecssPlatformVersion :: Lens' ECSService (Maybe (Val Text))
 ecssPlatformVersion = lens _eCSServicePlatformVersion (\s a -> s { _eCSServicePlatformVersion = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-propagatetags
+ecssPropagateTags :: Lens' ECSService (Maybe (Val Text))
+ecssPropagateTags = lens _eCSServicePropagateTags (\s a -> s { _eCSServicePropagateTags = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-role
 ecssRole :: Lens' ECSService (Maybe (Val Text))
 ecssRole = lens _eCSServiceRole (\s a -> s { _eCSServiceRole = a })
@@ -138,6 +156,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-serviceregistries
 ecssServiceRegistries :: Lens' ECSService (Maybe [ECSServiceServiceRegistry])
 ecssServiceRegistries = lens _eCSServiceServiceRegistries (\s a -> s { _eCSServiceServiceRegistries = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-tags
+ecssTags :: Lens' ECSService (Maybe [Tag])
+ecssTags = lens _eCSServiceTags (\s a -> s { _eCSServiceTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-taskdefinition
 ecssTaskDefinition :: Lens' ECSService (Val Text)
diff --git a/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs b/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
--- a/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
+++ b/library-gen/Stratosphere/Resources/ECSTaskDefinition.hs
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.ECSTaskDefinitionContainerDefinition
 import Stratosphere.ResourceProperties.ECSTaskDefinitionTaskDefinitionPlacementConstraint
 import Stratosphere.ResourceProperties.ECSTaskDefinitionProxyConfiguration
+import Stratosphere.ResourceProperties.Tag
 import Stratosphere.ResourceProperties.ECSTaskDefinitionVolume
 
 -- | Full data type definition for ECSTaskDefinition. See 'ecsTaskDefinition'
@@ -26,6 +27,7 @@
   , _eCSTaskDefinitionPlacementConstraints :: Maybe [ECSTaskDefinitionTaskDefinitionPlacementConstraint]
   , _eCSTaskDefinitionProxyConfiguration :: Maybe ECSTaskDefinitionProxyConfiguration
   , _eCSTaskDefinitionRequiresCompatibilities :: Maybe (ValList Text)
+  , _eCSTaskDefinitionTags :: Maybe [Tag]
   , _eCSTaskDefinitionTaskRoleArn :: Maybe (Val Text)
   , _eCSTaskDefinitionVolumes :: Maybe [ECSTaskDefinitionVolume]
   } deriving (Show, Eq)
@@ -45,6 +47,7 @@
         , fmap (("PlacementConstraints",) . toJSON) _eCSTaskDefinitionPlacementConstraints
         , fmap (("ProxyConfiguration",) . toJSON) _eCSTaskDefinitionProxyConfiguration
         , fmap (("RequiresCompatibilities",) . toJSON) _eCSTaskDefinitionRequiresCompatibilities
+        , fmap (("Tags",) . toJSON) _eCSTaskDefinitionTags
         , fmap (("TaskRoleArn",) . toJSON) _eCSTaskDefinitionTaskRoleArn
         , fmap (("Volumes",) . toJSON) _eCSTaskDefinitionVolumes
         ]
@@ -65,6 +68,7 @@
   , _eCSTaskDefinitionPlacementConstraints = Nothing
   , _eCSTaskDefinitionProxyConfiguration = Nothing
   , _eCSTaskDefinitionRequiresCompatibilities = Nothing
+  , _eCSTaskDefinitionTags = Nothing
   , _eCSTaskDefinitionTaskRoleArn = Nothing
   , _eCSTaskDefinitionVolumes = Nothing
   }
@@ -104,6 +108,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-requirescompatibilities
 ecstdRequiresCompatibilities :: Lens' ECSTaskDefinition (Maybe (ValList Text))
 ecstdRequiresCompatibilities = lens _eCSTaskDefinitionRequiresCompatibilities (\s a -> s { _eCSTaskDefinitionRequiresCompatibilities = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-tags
+ecstdTags :: Lens' ECSTaskDefinition (Maybe [Tag])
+ecstdTags = lens _eCSTaskDefinitionTags (\s a -> s { _eCSTaskDefinitionTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html#cfn-ecs-taskdefinition-taskrolearn
 ecstdTaskRoleArn :: Lens' ECSTaskDefinition (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/EFSFileSystem.hs b/library-gen/Stratosphere/Resources/EFSFileSystem.hs
--- a/library-gen/Stratosphere/Resources/EFSFileSystem.hs
+++ b/library-gen/Stratosphere/Resources/EFSFileSystem.hs
@@ -9,6 +9,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag
+import Stratosphere.ResourceProperties.EFSFileSystemLifecyclePolicy
 
 -- | Full data type definition for EFSFileSystem. See 'efsFileSystem' for a
 -- more convenient constructor.
@@ -17,6 +18,7 @@
   { _eFSFileSystemEncrypted :: Maybe (Val Bool)
   , _eFSFileSystemFileSystemTags :: Maybe [EFSFileSystemElasticFileSystemTag]
   , _eFSFileSystemKmsKeyId :: Maybe (Val Text)
+  , _eFSFileSystemLifecyclePolicies :: Maybe [EFSFileSystemLifecyclePolicy]
   , _eFSFileSystemPerformanceMode :: Maybe (Val Text)
   , _eFSFileSystemProvisionedThroughputInMibps :: Maybe (Val Double)
   , _eFSFileSystemThroughputMode :: Maybe (Val Text)
@@ -31,6 +33,7 @@
         [ fmap (("Encrypted",) . toJSON) _eFSFileSystemEncrypted
         , fmap (("FileSystemTags",) . toJSON) _eFSFileSystemFileSystemTags
         , fmap (("KmsKeyId",) . toJSON) _eFSFileSystemKmsKeyId
+        , fmap (("LifecyclePolicies",) . toJSON) _eFSFileSystemLifecyclePolicies
         , fmap (("PerformanceMode",) . toJSON) _eFSFileSystemPerformanceMode
         , fmap (("ProvisionedThroughputInMibps",) . toJSON) _eFSFileSystemProvisionedThroughputInMibps
         , fmap (("ThroughputMode",) . toJSON) _eFSFileSystemThroughputMode
@@ -45,6 +48,7 @@
   { _eFSFileSystemEncrypted = Nothing
   , _eFSFileSystemFileSystemTags = Nothing
   , _eFSFileSystemKmsKeyId = Nothing
+  , _eFSFileSystemLifecyclePolicies = Nothing
   , _eFSFileSystemPerformanceMode = Nothing
   , _eFSFileSystemProvisionedThroughputInMibps = Nothing
   , _eFSFileSystemThroughputMode = Nothing
@@ -61,6 +65,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-kmskeyid
 efsfsKmsKeyId :: Lens' EFSFileSystem (Maybe (Val Text))
 efsfsKmsKeyId = lens _eFSFileSystemKmsKeyId (\s a -> s { _eFSFileSystemKmsKeyId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-elasticfilesystem-filesystem-lifecyclepolicies
+efsfsLifecyclePolicies :: Lens' EFSFileSystem (Maybe [EFSFileSystemLifecyclePolicy])
+efsfsLifecyclePolicies = lens _eFSFileSystemLifecyclePolicies (\s a -> s { _eFSFileSystemLifecyclePolicies = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-efs-filesystem-performancemode
 efsfsPerformanceMode :: Lens' EFSFileSystem (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
--- a/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
@@ -9,19 +9,23 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRule
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod
 import Stratosphere.ResourceProperties.Tag
 import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetVersioningConfiguration
 
 -- | Full data type definition for IoTAnalyticsDataset. See
 -- 'ioTAnalyticsDataset' for a more convenient constructor.
 data IoTAnalyticsDataset =
   IoTAnalyticsDataset
   { _ioTAnalyticsDatasetActions :: [IoTAnalyticsDatasetAction]
+  , _ioTAnalyticsDatasetContentDeliveryRules :: Maybe [IoTAnalyticsDatasetDatasetContentDeliveryRule]
   , _ioTAnalyticsDatasetDatasetName :: Maybe (Val Text)
   , _ioTAnalyticsDatasetRetentionPeriod :: Maybe IoTAnalyticsDatasetRetentionPeriod
   , _ioTAnalyticsDatasetTags :: Maybe [Tag]
   , _ioTAnalyticsDatasetTriggers :: Maybe [IoTAnalyticsDatasetTrigger]
+  , _ioTAnalyticsDatasetVersioningConfiguration :: Maybe IoTAnalyticsDatasetVersioningConfiguration
   } deriving (Show, Eq)
 
 instance ToResourceProperties IoTAnalyticsDataset where
@@ -31,10 +35,12 @@
     , resourcePropertiesProperties =
         hashMapFromList $ catMaybes
         [ (Just . ("Actions",) . toJSON) _ioTAnalyticsDatasetActions
+        , fmap (("ContentDeliveryRules",) . toJSON) _ioTAnalyticsDatasetContentDeliveryRules
         , fmap (("DatasetName",) . toJSON) _ioTAnalyticsDatasetDatasetName
         , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsDatasetRetentionPeriod
         , fmap (("Tags",) . toJSON) _ioTAnalyticsDatasetTags
         , fmap (("Triggers",) . toJSON) _ioTAnalyticsDatasetTriggers
+        , fmap (("VersioningConfiguration",) . toJSON) _ioTAnalyticsDatasetVersioningConfiguration
         ]
     }
 
@@ -46,16 +52,22 @@
 ioTAnalyticsDataset actionsarg =
   IoTAnalyticsDataset
   { _ioTAnalyticsDatasetActions = actionsarg
+  , _ioTAnalyticsDatasetContentDeliveryRules = Nothing
   , _ioTAnalyticsDatasetDatasetName = Nothing
   , _ioTAnalyticsDatasetRetentionPeriod = Nothing
   , _ioTAnalyticsDatasetTags = Nothing
   , _ioTAnalyticsDatasetTriggers = Nothing
+  , _ioTAnalyticsDatasetVersioningConfiguration = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-actions
 itadsActions :: Lens' IoTAnalyticsDataset [IoTAnalyticsDatasetAction]
 itadsActions = lens _ioTAnalyticsDatasetActions (\s a -> s { _ioTAnalyticsDatasetActions = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-contentdeliveryrules
+itadsContentDeliveryRules :: Lens' IoTAnalyticsDataset (Maybe [IoTAnalyticsDatasetDatasetContentDeliveryRule])
+itadsContentDeliveryRules = lens _ioTAnalyticsDatasetContentDeliveryRules (\s a -> s { _ioTAnalyticsDatasetContentDeliveryRules = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-datasetname
 itadsDatasetName :: Lens' IoTAnalyticsDataset (Maybe (Val Text))
 itadsDatasetName = lens _ioTAnalyticsDatasetDatasetName (\s a -> s { _ioTAnalyticsDatasetDatasetName = a })
@@ -71,3 +83,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-triggers
 itadsTriggers :: Lens' IoTAnalyticsDataset (Maybe [IoTAnalyticsDatasetTrigger])
 itadsTriggers = lens _ioTAnalyticsDatasetTriggers (\s a -> s { _ioTAnalyticsDatasetTriggers = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-versioningconfiguration
+itadsVersioningConfiguration :: Lens' IoTAnalyticsDataset (Maybe IoTAnalyticsDatasetVersioningConfiguration)
+itadsVersioningConfiguration = lens _ioTAnalyticsDatasetVersioningConfiguration (\s a -> s { _ioTAnalyticsDatasetVersioningConfiguration = a })
diff --git a/library-gen/Stratosphere/Resources/IoTThingsGraphFlowTemplate.hs b/library-gen/Stratosphere/Resources/IoTThingsGraphFlowTemplate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/IoTThingsGraphFlowTemplate.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotthingsgraph-flowtemplate.html
+
+module Stratosphere.Resources.IoTThingsGraphFlowTemplate where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTThingsGraphFlowTemplateDefinitionDocument
+
+-- | Full data type definition for IoTThingsGraphFlowTemplate. See
+-- 'ioTThingsGraphFlowTemplate' for a more convenient constructor.
+data IoTThingsGraphFlowTemplate =
+  IoTThingsGraphFlowTemplate
+  { _ioTThingsGraphFlowTemplateCompatibleNamespaceVersion :: Maybe (Val Double)
+  , _ioTThingsGraphFlowTemplateDefinition :: IoTThingsGraphFlowTemplateDefinitionDocument
+  } deriving (Show, Eq)
+
+instance ToResourceProperties IoTThingsGraphFlowTemplate where
+  toResourceProperties IoTThingsGraphFlowTemplate{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::IoTThingsGraph::FlowTemplate"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("CompatibleNamespaceVersion",) . toJSON) _ioTThingsGraphFlowTemplateCompatibleNamespaceVersion
+        , (Just . ("Definition",) . toJSON) _ioTThingsGraphFlowTemplateDefinition
+        ]
+    }
+
+-- | Constructor for 'IoTThingsGraphFlowTemplate' containing required fields
+-- as arguments.
+ioTThingsGraphFlowTemplate
+  :: IoTThingsGraphFlowTemplateDefinitionDocument -- ^ 'ittgftDefinition'
+  -> IoTThingsGraphFlowTemplate
+ioTThingsGraphFlowTemplate definitionarg =
+  IoTThingsGraphFlowTemplate
+  { _ioTThingsGraphFlowTemplateCompatibleNamespaceVersion = Nothing
+  , _ioTThingsGraphFlowTemplateDefinition = definitionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotthingsgraph-flowtemplate.html#cfn-iotthingsgraph-flowtemplate-compatiblenamespaceversion
+ittgftCompatibleNamespaceVersion :: Lens' IoTThingsGraphFlowTemplate (Maybe (Val Double))
+ittgftCompatibleNamespaceVersion = lens _ioTThingsGraphFlowTemplateCompatibleNamespaceVersion (\s a -> s { _ioTThingsGraphFlowTemplateCompatibleNamespaceVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotthingsgraph-flowtemplate.html#cfn-iotthingsgraph-flowtemplate-definition
+ittgftDefinition :: Lens' IoTThingsGraphFlowTemplate IoTThingsGraphFlowTemplateDefinitionDocument
+ittgftDefinition = lens _ioTThingsGraphFlowTemplateDefinition (\s a -> s { _ioTThingsGraphFlowTemplateDefinition = a })
diff --git a/library-gen/Stratosphere/Resources/MSKCluster.hs b/library-gen/Stratosphere/Resources/MSKCluster.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/MSKCluster.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html
+
+module Stratosphere.Resources.MSKCluster where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.MSKClusterBrokerNodeGroupInfo
+import Stratosphere.ResourceProperties.MSKClusterClientAuthentication
+import Stratosphere.ResourceProperties.MSKClusterConfigurationInfo
+import Stratosphere.ResourceProperties.MSKClusterEncryptionInfo
+
+-- | Full data type definition for MSKCluster. See 'mskCluster' for a more
+-- convenient constructor.
+data MSKCluster =
+  MSKCluster
+  { _mSKClusterBrokerNodeGroupInfo :: MSKClusterBrokerNodeGroupInfo
+  , _mSKClusterClientAuthentication :: Maybe MSKClusterClientAuthentication
+  , _mSKClusterClusterName :: Val Text
+  , _mSKClusterConfigurationInfo :: Maybe MSKClusterConfigurationInfo
+  , _mSKClusterEncryptionInfo :: Maybe MSKClusterEncryptionInfo
+  , _mSKClusterEnhancedMonitoring :: Maybe (Val Text)
+  , _mSKClusterKafkaVersion :: Val Text
+  , _mSKClusterNumberOfBrokerNodes :: Val Integer
+  , _mSKClusterTags :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToResourceProperties MSKCluster where
+  toResourceProperties MSKCluster{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::MSK::Cluster"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("BrokerNodeGroupInfo",) . toJSON) _mSKClusterBrokerNodeGroupInfo
+        , fmap (("ClientAuthentication",) . toJSON) _mSKClusterClientAuthentication
+        , (Just . ("ClusterName",) . toJSON) _mSKClusterClusterName
+        , fmap (("ConfigurationInfo",) . toJSON) _mSKClusterConfigurationInfo
+        , fmap (("EncryptionInfo",) . toJSON) _mSKClusterEncryptionInfo
+        , fmap (("EnhancedMonitoring",) . toJSON) _mSKClusterEnhancedMonitoring
+        , (Just . ("KafkaVersion",) . toJSON) _mSKClusterKafkaVersion
+        , (Just . ("NumberOfBrokerNodes",) . toJSON) _mSKClusterNumberOfBrokerNodes
+        , fmap (("Tags",) . toJSON) _mSKClusterTags
+        ]
+    }
+
+-- | Constructor for 'MSKCluster' containing required fields as arguments.
+mskCluster
+  :: MSKClusterBrokerNodeGroupInfo -- ^ 'mskcBrokerNodeGroupInfo'
+  -> Val Text -- ^ 'mskcClusterName'
+  -> Val Text -- ^ 'mskcKafkaVersion'
+  -> Val Integer -- ^ 'mskcNumberOfBrokerNodes'
+  -> MSKCluster
+mskCluster brokerNodeGroupInfoarg clusterNamearg kafkaVersionarg numberOfBrokerNodesarg =
+  MSKCluster
+  { _mSKClusterBrokerNodeGroupInfo = brokerNodeGroupInfoarg
+  , _mSKClusterClientAuthentication = Nothing
+  , _mSKClusterClusterName = clusterNamearg
+  , _mSKClusterConfigurationInfo = Nothing
+  , _mSKClusterEncryptionInfo = Nothing
+  , _mSKClusterEnhancedMonitoring = Nothing
+  , _mSKClusterKafkaVersion = kafkaVersionarg
+  , _mSKClusterNumberOfBrokerNodes = numberOfBrokerNodesarg
+  , _mSKClusterTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-brokernodegroupinfo
+mskcBrokerNodeGroupInfo :: Lens' MSKCluster MSKClusterBrokerNodeGroupInfo
+mskcBrokerNodeGroupInfo = lens _mSKClusterBrokerNodeGroupInfo (\s a -> s { _mSKClusterBrokerNodeGroupInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-clientauthentication
+mskcClientAuthentication :: Lens' MSKCluster (Maybe MSKClusterClientAuthentication)
+mskcClientAuthentication = lens _mSKClusterClientAuthentication (\s a -> s { _mSKClusterClientAuthentication = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-clustername
+mskcClusterName :: Lens' MSKCluster (Val Text)
+mskcClusterName = lens _mSKClusterClusterName (\s a -> s { _mSKClusterClusterName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-configurationinfo
+mskcConfigurationInfo :: Lens' MSKCluster (Maybe MSKClusterConfigurationInfo)
+mskcConfigurationInfo = lens _mSKClusterConfigurationInfo (\s a -> s { _mSKClusterConfigurationInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-encryptioninfo
+mskcEncryptionInfo :: Lens' MSKCluster (Maybe MSKClusterEncryptionInfo)
+mskcEncryptionInfo = lens _mSKClusterEncryptionInfo (\s a -> s { _mSKClusterEncryptionInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-enhancedmonitoring
+mskcEnhancedMonitoring :: Lens' MSKCluster (Maybe (Val Text))
+mskcEnhancedMonitoring = lens _mSKClusterEnhancedMonitoring (\s a -> s { _mSKClusterEnhancedMonitoring = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-kafkaversion
+mskcKafkaVersion :: Lens' MSKCluster (Val Text)
+mskcKafkaVersion = lens _mSKClusterKafkaVersion (\s a -> s { _mSKClusterKafkaVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-numberofbrokernodes
+mskcNumberOfBrokerNodes :: Lens' MSKCluster (Val Integer)
+mskcNumberOfBrokerNodes = lens _mSKClusterNumberOfBrokerNodes (\s a -> s { _mSKClusterNumberOfBrokerNodes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html#cfn-msk-cluster-tags
+mskcTags :: Lens' MSKCluster (Maybe Object)
+mskcTags = lens _mSKClusterTags (\s a -> s { _mSKClusterTags = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointADMChannel.hs b/library-gen/Stratosphere/Resources/PinpointADMChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointADMChannel.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-admchannel.html
+
+module Stratosphere.Resources.PinpointADMChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointADMChannel. See
+-- 'pinpointADMChannel' for a more convenient constructor.
+data PinpointADMChannel =
+  PinpointADMChannel
+  { _pinpointADMChannelApplicationId :: Val Text
+  , _pinpointADMChannelClientId :: Val Text
+  , _pinpointADMChannelClientSecret :: Val Text
+  , _pinpointADMChannelEnabled :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointADMChannel where
+  toResourceProperties PinpointADMChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::ADMChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointADMChannelApplicationId
+        , (Just . ("ClientId",) . toJSON) _pinpointADMChannelClientId
+        , (Just . ("ClientSecret",) . toJSON) _pinpointADMChannelClientSecret
+        , fmap (("Enabled",) . toJSON) _pinpointADMChannelEnabled
+        ]
+    }
+
+-- | Constructor for 'PinpointADMChannel' containing required fields as
+-- arguments.
+pinpointADMChannel
+  :: Val Text -- ^ 'padmcApplicationId'
+  -> Val Text -- ^ 'padmcClientId'
+  -> Val Text -- ^ 'padmcClientSecret'
+  -> PinpointADMChannel
+pinpointADMChannel applicationIdarg clientIdarg clientSecretarg =
+  PinpointADMChannel
+  { _pinpointADMChannelApplicationId = applicationIdarg
+  , _pinpointADMChannelClientId = clientIdarg
+  , _pinpointADMChannelClientSecret = clientSecretarg
+  , _pinpointADMChannelEnabled = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-admchannel.html#cfn-pinpoint-admchannel-applicationid
+padmcApplicationId :: Lens' PinpointADMChannel (Val Text)
+padmcApplicationId = lens _pinpointADMChannelApplicationId (\s a -> s { _pinpointADMChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-admchannel.html#cfn-pinpoint-admchannel-clientid
+padmcClientId :: Lens' PinpointADMChannel (Val Text)
+padmcClientId = lens _pinpointADMChannelClientId (\s a -> s { _pinpointADMChannelClientId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-admchannel.html#cfn-pinpoint-admchannel-clientsecret
+padmcClientSecret :: Lens' PinpointADMChannel (Val Text)
+padmcClientSecret = lens _pinpointADMChannelClientSecret (\s a -> s { _pinpointADMChannelClientSecret = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-admchannel.html#cfn-pinpoint-admchannel-enabled
+padmcEnabled :: Lens' PinpointADMChannel (Maybe (Val Bool))
+padmcEnabled = lens _pinpointADMChannelEnabled (\s a -> s { _pinpointADMChannelEnabled = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointAPNSChannel.hs b/library-gen/Stratosphere/Resources/PinpointAPNSChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointAPNSChannel.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html
+
+module Stratosphere.Resources.PinpointAPNSChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointAPNSChannel. See
+-- 'pinpointAPNSChannel' for a more convenient constructor.
+data PinpointAPNSChannel =
+  PinpointAPNSChannel
+  { _pinpointAPNSChannelApplicationId :: Val Text
+  , _pinpointAPNSChannelBundleId :: Maybe (Val Text)
+  , _pinpointAPNSChannelCertificate :: Maybe (Val Text)
+  , _pinpointAPNSChannelDefaultAuthenticationMethod :: Maybe (Val Text)
+  , _pinpointAPNSChannelEnabled :: Maybe (Val Bool)
+  , _pinpointAPNSChannelPrivateKey :: Maybe (Val Text)
+  , _pinpointAPNSChannelTeamId :: Maybe (Val Text)
+  , _pinpointAPNSChannelTokenKey :: Maybe (Val Text)
+  , _pinpointAPNSChannelTokenKeyId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointAPNSChannel where
+  toResourceProperties PinpointAPNSChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::APNSChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointAPNSChannelApplicationId
+        , fmap (("BundleId",) . toJSON) _pinpointAPNSChannelBundleId
+        , fmap (("Certificate",) . toJSON) _pinpointAPNSChannelCertificate
+        , fmap (("DefaultAuthenticationMethod",) . toJSON) _pinpointAPNSChannelDefaultAuthenticationMethod
+        , fmap (("Enabled",) . toJSON) _pinpointAPNSChannelEnabled
+        , fmap (("PrivateKey",) . toJSON) _pinpointAPNSChannelPrivateKey
+        , fmap (("TeamId",) . toJSON) _pinpointAPNSChannelTeamId
+        , fmap (("TokenKey",) . toJSON) _pinpointAPNSChannelTokenKey
+        , fmap (("TokenKeyId",) . toJSON) _pinpointAPNSChannelTokenKeyId
+        ]
+    }
+
+-- | Constructor for 'PinpointAPNSChannel' containing required fields as
+-- arguments.
+pinpointAPNSChannel
+  :: Val Text -- ^ 'papnscApplicationId'
+  -> PinpointAPNSChannel
+pinpointAPNSChannel applicationIdarg =
+  PinpointAPNSChannel
+  { _pinpointAPNSChannelApplicationId = applicationIdarg
+  , _pinpointAPNSChannelBundleId = Nothing
+  , _pinpointAPNSChannelCertificate = Nothing
+  , _pinpointAPNSChannelDefaultAuthenticationMethod = Nothing
+  , _pinpointAPNSChannelEnabled = Nothing
+  , _pinpointAPNSChannelPrivateKey = Nothing
+  , _pinpointAPNSChannelTeamId = Nothing
+  , _pinpointAPNSChannelTokenKey = Nothing
+  , _pinpointAPNSChannelTokenKeyId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-applicationid
+papnscApplicationId :: Lens' PinpointAPNSChannel (Val Text)
+papnscApplicationId = lens _pinpointAPNSChannelApplicationId (\s a -> s { _pinpointAPNSChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-bundleid
+papnscBundleId :: Lens' PinpointAPNSChannel (Maybe (Val Text))
+papnscBundleId = lens _pinpointAPNSChannelBundleId (\s a -> s { _pinpointAPNSChannelBundleId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-certificate
+papnscCertificate :: Lens' PinpointAPNSChannel (Maybe (Val Text))
+papnscCertificate = lens _pinpointAPNSChannelCertificate (\s a -> s { _pinpointAPNSChannelCertificate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-defaultauthenticationmethod
+papnscDefaultAuthenticationMethod :: Lens' PinpointAPNSChannel (Maybe (Val Text))
+papnscDefaultAuthenticationMethod = lens _pinpointAPNSChannelDefaultAuthenticationMethod (\s a -> s { _pinpointAPNSChannelDefaultAuthenticationMethod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-enabled
+papnscEnabled :: Lens' PinpointAPNSChannel (Maybe (Val Bool))
+papnscEnabled = lens _pinpointAPNSChannelEnabled (\s a -> s { _pinpointAPNSChannelEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-privatekey
+papnscPrivateKey :: Lens' PinpointAPNSChannel (Maybe (Val Text))
+papnscPrivateKey = lens _pinpointAPNSChannelPrivateKey (\s a -> s { _pinpointAPNSChannelPrivateKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-teamid
+papnscTeamId :: Lens' PinpointAPNSChannel (Maybe (Val Text))
+papnscTeamId = lens _pinpointAPNSChannelTeamId (\s a -> s { _pinpointAPNSChannelTeamId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-tokenkey
+papnscTokenKey :: Lens' PinpointAPNSChannel (Maybe (Val Text))
+papnscTokenKey = lens _pinpointAPNSChannelTokenKey (\s a -> s { _pinpointAPNSChannelTokenKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnschannel.html#cfn-pinpoint-apnschannel-tokenkeyid
+papnscTokenKeyId :: Lens' PinpointAPNSChannel (Maybe (Val Text))
+papnscTokenKeyId = lens _pinpointAPNSChannelTokenKeyId (\s a -> s { _pinpointAPNSChannelTokenKeyId = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointAPNSSandboxChannel.hs b/library-gen/Stratosphere/Resources/PinpointAPNSSandboxChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointAPNSSandboxChannel.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html
+
+module Stratosphere.Resources.PinpointAPNSSandboxChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointAPNSSandboxChannel. See
+-- 'pinpointAPNSSandboxChannel' for a more convenient constructor.
+data PinpointAPNSSandboxChannel =
+  PinpointAPNSSandboxChannel
+  { _pinpointAPNSSandboxChannelApplicationId :: Val Text
+  , _pinpointAPNSSandboxChannelBundleId :: Maybe (Val Text)
+  , _pinpointAPNSSandboxChannelCertificate :: Maybe (Val Text)
+  , _pinpointAPNSSandboxChannelDefaultAuthenticationMethod :: Maybe (Val Text)
+  , _pinpointAPNSSandboxChannelEnabled :: Maybe (Val Bool)
+  , _pinpointAPNSSandboxChannelPrivateKey :: Maybe (Val Text)
+  , _pinpointAPNSSandboxChannelTeamId :: Maybe (Val Text)
+  , _pinpointAPNSSandboxChannelTokenKey :: Maybe (Val Text)
+  , _pinpointAPNSSandboxChannelTokenKeyId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointAPNSSandboxChannel where
+  toResourceProperties PinpointAPNSSandboxChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::APNSSandboxChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointAPNSSandboxChannelApplicationId
+        , fmap (("BundleId",) . toJSON) _pinpointAPNSSandboxChannelBundleId
+        , fmap (("Certificate",) . toJSON) _pinpointAPNSSandboxChannelCertificate
+        , fmap (("DefaultAuthenticationMethod",) . toJSON) _pinpointAPNSSandboxChannelDefaultAuthenticationMethod
+        , fmap (("Enabled",) . toJSON) _pinpointAPNSSandboxChannelEnabled
+        , fmap (("PrivateKey",) . toJSON) _pinpointAPNSSandboxChannelPrivateKey
+        , fmap (("TeamId",) . toJSON) _pinpointAPNSSandboxChannelTeamId
+        , fmap (("TokenKey",) . toJSON) _pinpointAPNSSandboxChannelTokenKey
+        , fmap (("TokenKeyId",) . toJSON) _pinpointAPNSSandboxChannelTokenKeyId
+        ]
+    }
+
+-- | Constructor for 'PinpointAPNSSandboxChannel' containing required fields
+-- as arguments.
+pinpointAPNSSandboxChannel
+  :: Val Text -- ^ 'papnsscApplicationId'
+  -> PinpointAPNSSandboxChannel
+pinpointAPNSSandboxChannel applicationIdarg =
+  PinpointAPNSSandboxChannel
+  { _pinpointAPNSSandboxChannelApplicationId = applicationIdarg
+  , _pinpointAPNSSandboxChannelBundleId = Nothing
+  , _pinpointAPNSSandboxChannelCertificate = Nothing
+  , _pinpointAPNSSandboxChannelDefaultAuthenticationMethod = Nothing
+  , _pinpointAPNSSandboxChannelEnabled = Nothing
+  , _pinpointAPNSSandboxChannelPrivateKey = Nothing
+  , _pinpointAPNSSandboxChannelTeamId = Nothing
+  , _pinpointAPNSSandboxChannelTokenKey = Nothing
+  , _pinpointAPNSSandboxChannelTokenKeyId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-applicationid
+papnsscApplicationId :: Lens' PinpointAPNSSandboxChannel (Val Text)
+papnsscApplicationId = lens _pinpointAPNSSandboxChannelApplicationId (\s a -> s { _pinpointAPNSSandboxChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-bundleid
+papnsscBundleId :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Text))
+papnsscBundleId = lens _pinpointAPNSSandboxChannelBundleId (\s a -> s { _pinpointAPNSSandboxChannelBundleId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-certificate
+papnsscCertificate :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Text))
+papnsscCertificate = lens _pinpointAPNSSandboxChannelCertificate (\s a -> s { _pinpointAPNSSandboxChannelCertificate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-defaultauthenticationmethod
+papnsscDefaultAuthenticationMethod :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Text))
+papnsscDefaultAuthenticationMethod = lens _pinpointAPNSSandboxChannelDefaultAuthenticationMethod (\s a -> s { _pinpointAPNSSandboxChannelDefaultAuthenticationMethod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-enabled
+papnsscEnabled :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Bool))
+papnsscEnabled = lens _pinpointAPNSSandboxChannelEnabled (\s a -> s { _pinpointAPNSSandboxChannelEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-privatekey
+papnsscPrivateKey :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Text))
+papnsscPrivateKey = lens _pinpointAPNSSandboxChannelPrivateKey (\s a -> s { _pinpointAPNSSandboxChannelPrivateKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-teamid
+papnsscTeamId :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Text))
+papnsscTeamId = lens _pinpointAPNSSandboxChannelTeamId (\s a -> s { _pinpointAPNSSandboxChannelTeamId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-tokenkey
+papnsscTokenKey :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Text))
+papnsscTokenKey = lens _pinpointAPNSSandboxChannelTokenKey (\s a -> s { _pinpointAPNSSandboxChannelTokenKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnssandboxchannel.html#cfn-pinpoint-apnssandboxchannel-tokenkeyid
+papnsscTokenKeyId :: Lens' PinpointAPNSSandboxChannel (Maybe (Val Text))
+papnsscTokenKeyId = lens _pinpointAPNSSandboxChannelTokenKeyId (\s a -> s { _pinpointAPNSSandboxChannelTokenKeyId = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointAPNSVoipChannel.hs b/library-gen/Stratosphere/Resources/PinpointAPNSVoipChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointAPNSVoipChannel.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html
+
+module Stratosphere.Resources.PinpointAPNSVoipChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointAPNSVoipChannel. See
+-- 'pinpointAPNSVoipChannel' for a more convenient constructor.
+data PinpointAPNSVoipChannel =
+  PinpointAPNSVoipChannel
+  { _pinpointAPNSVoipChannelApplicationId :: Val Text
+  , _pinpointAPNSVoipChannelBundleId :: Maybe (Val Text)
+  , _pinpointAPNSVoipChannelCertificate :: Maybe (Val Text)
+  , _pinpointAPNSVoipChannelDefaultAuthenticationMethod :: Maybe (Val Text)
+  , _pinpointAPNSVoipChannelEnabled :: Maybe (Val Bool)
+  , _pinpointAPNSVoipChannelPrivateKey :: Maybe (Val Text)
+  , _pinpointAPNSVoipChannelTeamId :: Maybe (Val Text)
+  , _pinpointAPNSVoipChannelTokenKey :: Maybe (Val Text)
+  , _pinpointAPNSVoipChannelTokenKeyId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointAPNSVoipChannel where
+  toResourceProperties PinpointAPNSVoipChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::APNSVoipChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointAPNSVoipChannelApplicationId
+        , fmap (("BundleId",) . toJSON) _pinpointAPNSVoipChannelBundleId
+        , fmap (("Certificate",) . toJSON) _pinpointAPNSVoipChannelCertificate
+        , fmap (("DefaultAuthenticationMethod",) . toJSON) _pinpointAPNSVoipChannelDefaultAuthenticationMethod
+        , fmap (("Enabled",) . toJSON) _pinpointAPNSVoipChannelEnabled
+        , fmap (("PrivateKey",) . toJSON) _pinpointAPNSVoipChannelPrivateKey
+        , fmap (("TeamId",) . toJSON) _pinpointAPNSVoipChannelTeamId
+        , fmap (("TokenKey",) . toJSON) _pinpointAPNSVoipChannelTokenKey
+        , fmap (("TokenKeyId",) . toJSON) _pinpointAPNSVoipChannelTokenKeyId
+        ]
+    }
+
+-- | Constructor for 'PinpointAPNSVoipChannel' containing required fields as
+-- arguments.
+pinpointAPNSVoipChannel
+  :: Val Text -- ^ 'papnsvcApplicationId'
+  -> PinpointAPNSVoipChannel
+pinpointAPNSVoipChannel applicationIdarg =
+  PinpointAPNSVoipChannel
+  { _pinpointAPNSVoipChannelApplicationId = applicationIdarg
+  , _pinpointAPNSVoipChannelBundleId = Nothing
+  , _pinpointAPNSVoipChannelCertificate = Nothing
+  , _pinpointAPNSVoipChannelDefaultAuthenticationMethod = Nothing
+  , _pinpointAPNSVoipChannelEnabled = Nothing
+  , _pinpointAPNSVoipChannelPrivateKey = Nothing
+  , _pinpointAPNSVoipChannelTeamId = Nothing
+  , _pinpointAPNSVoipChannelTokenKey = Nothing
+  , _pinpointAPNSVoipChannelTokenKeyId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-applicationid
+papnsvcApplicationId :: Lens' PinpointAPNSVoipChannel (Val Text)
+papnsvcApplicationId = lens _pinpointAPNSVoipChannelApplicationId (\s a -> s { _pinpointAPNSVoipChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-bundleid
+papnsvcBundleId :: Lens' PinpointAPNSVoipChannel (Maybe (Val Text))
+papnsvcBundleId = lens _pinpointAPNSVoipChannelBundleId (\s a -> s { _pinpointAPNSVoipChannelBundleId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-certificate
+papnsvcCertificate :: Lens' PinpointAPNSVoipChannel (Maybe (Val Text))
+papnsvcCertificate = lens _pinpointAPNSVoipChannelCertificate (\s a -> s { _pinpointAPNSVoipChannelCertificate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-defaultauthenticationmethod
+papnsvcDefaultAuthenticationMethod :: Lens' PinpointAPNSVoipChannel (Maybe (Val Text))
+papnsvcDefaultAuthenticationMethod = lens _pinpointAPNSVoipChannelDefaultAuthenticationMethod (\s a -> s { _pinpointAPNSVoipChannelDefaultAuthenticationMethod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-enabled
+papnsvcEnabled :: Lens' PinpointAPNSVoipChannel (Maybe (Val Bool))
+papnsvcEnabled = lens _pinpointAPNSVoipChannelEnabled (\s a -> s { _pinpointAPNSVoipChannelEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-privatekey
+papnsvcPrivateKey :: Lens' PinpointAPNSVoipChannel (Maybe (Val Text))
+papnsvcPrivateKey = lens _pinpointAPNSVoipChannelPrivateKey (\s a -> s { _pinpointAPNSVoipChannelPrivateKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-teamid
+papnsvcTeamId :: Lens' PinpointAPNSVoipChannel (Maybe (Val Text))
+papnsvcTeamId = lens _pinpointAPNSVoipChannelTeamId (\s a -> s { _pinpointAPNSVoipChannelTeamId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-tokenkey
+papnsvcTokenKey :: Lens' PinpointAPNSVoipChannel (Maybe (Val Text))
+papnsvcTokenKey = lens _pinpointAPNSVoipChannelTokenKey (\s a -> s { _pinpointAPNSVoipChannelTokenKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipchannel.html#cfn-pinpoint-apnsvoipchannel-tokenkeyid
+papnsvcTokenKeyId :: Lens' PinpointAPNSVoipChannel (Maybe (Val Text))
+papnsvcTokenKeyId = lens _pinpointAPNSVoipChannelTokenKeyId (\s a -> s { _pinpointAPNSVoipChannelTokenKeyId = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointAPNSVoipSandboxChannel.hs b/library-gen/Stratosphere/Resources/PinpointAPNSVoipSandboxChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointAPNSVoipSandboxChannel.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html
+
+module Stratosphere.Resources.PinpointAPNSVoipSandboxChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointAPNSVoipSandboxChannel. See
+-- 'pinpointAPNSVoipSandboxChannel' for a more convenient constructor.
+data PinpointAPNSVoipSandboxChannel =
+  PinpointAPNSVoipSandboxChannel
+  { _pinpointAPNSVoipSandboxChannelApplicationId :: Val Text
+  , _pinpointAPNSVoipSandboxChannelBundleId :: Maybe (Val Text)
+  , _pinpointAPNSVoipSandboxChannelCertificate :: Maybe (Val Text)
+  , _pinpointAPNSVoipSandboxChannelDefaultAuthenticationMethod :: Maybe (Val Text)
+  , _pinpointAPNSVoipSandboxChannelEnabled :: Maybe (Val Bool)
+  , _pinpointAPNSVoipSandboxChannelPrivateKey :: Maybe (Val Text)
+  , _pinpointAPNSVoipSandboxChannelTeamId :: Maybe (Val Text)
+  , _pinpointAPNSVoipSandboxChannelTokenKey :: Maybe (Val Text)
+  , _pinpointAPNSVoipSandboxChannelTokenKeyId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointAPNSVoipSandboxChannel where
+  toResourceProperties PinpointAPNSVoipSandboxChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::APNSVoipSandboxChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointAPNSVoipSandboxChannelApplicationId
+        , fmap (("BundleId",) . toJSON) _pinpointAPNSVoipSandboxChannelBundleId
+        , fmap (("Certificate",) . toJSON) _pinpointAPNSVoipSandboxChannelCertificate
+        , fmap (("DefaultAuthenticationMethod",) . toJSON) _pinpointAPNSVoipSandboxChannelDefaultAuthenticationMethod
+        , fmap (("Enabled",) . toJSON) _pinpointAPNSVoipSandboxChannelEnabled
+        , fmap (("PrivateKey",) . toJSON) _pinpointAPNSVoipSandboxChannelPrivateKey
+        , fmap (("TeamId",) . toJSON) _pinpointAPNSVoipSandboxChannelTeamId
+        , fmap (("TokenKey",) . toJSON) _pinpointAPNSVoipSandboxChannelTokenKey
+        , fmap (("TokenKeyId",) . toJSON) _pinpointAPNSVoipSandboxChannelTokenKeyId
+        ]
+    }
+
+-- | Constructor for 'PinpointAPNSVoipSandboxChannel' containing required
+-- fields as arguments.
+pinpointAPNSVoipSandboxChannel
+  :: Val Text -- ^ 'papnsvscApplicationId'
+  -> PinpointAPNSVoipSandboxChannel
+pinpointAPNSVoipSandboxChannel applicationIdarg =
+  PinpointAPNSVoipSandboxChannel
+  { _pinpointAPNSVoipSandboxChannelApplicationId = applicationIdarg
+  , _pinpointAPNSVoipSandboxChannelBundleId = Nothing
+  , _pinpointAPNSVoipSandboxChannelCertificate = Nothing
+  , _pinpointAPNSVoipSandboxChannelDefaultAuthenticationMethod = Nothing
+  , _pinpointAPNSVoipSandboxChannelEnabled = Nothing
+  , _pinpointAPNSVoipSandboxChannelPrivateKey = Nothing
+  , _pinpointAPNSVoipSandboxChannelTeamId = Nothing
+  , _pinpointAPNSVoipSandboxChannelTokenKey = Nothing
+  , _pinpointAPNSVoipSandboxChannelTokenKeyId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-applicationid
+papnsvscApplicationId :: Lens' PinpointAPNSVoipSandboxChannel (Val Text)
+papnsvscApplicationId = lens _pinpointAPNSVoipSandboxChannelApplicationId (\s a -> s { _pinpointAPNSVoipSandboxChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-bundleid
+papnsvscBundleId :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Text))
+papnsvscBundleId = lens _pinpointAPNSVoipSandboxChannelBundleId (\s a -> s { _pinpointAPNSVoipSandboxChannelBundleId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-certificate
+papnsvscCertificate :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Text))
+papnsvscCertificate = lens _pinpointAPNSVoipSandboxChannelCertificate (\s a -> s { _pinpointAPNSVoipSandboxChannelCertificate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-defaultauthenticationmethod
+papnsvscDefaultAuthenticationMethod :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Text))
+papnsvscDefaultAuthenticationMethod = lens _pinpointAPNSVoipSandboxChannelDefaultAuthenticationMethod (\s a -> s { _pinpointAPNSVoipSandboxChannelDefaultAuthenticationMethod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-enabled
+papnsvscEnabled :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Bool))
+papnsvscEnabled = lens _pinpointAPNSVoipSandboxChannelEnabled (\s a -> s { _pinpointAPNSVoipSandboxChannelEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-privatekey
+papnsvscPrivateKey :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Text))
+papnsvscPrivateKey = lens _pinpointAPNSVoipSandboxChannelPrivateKey (\s a -> s { _pinpointAPNSVoipSandboxChannelPrivateKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-teamid
+papnsvscTeamId :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Text))
+papnsvscTeamId = lens _pinpointAPNSVoipSandboxChannelTeamId (\s a -> s { _pinpointAPNSVoipSandboxChannelTeamId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-tokenkey
+papnsvscTokenKey :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Text))
+papnsvscTokenKey = lens _pinpointAPNSVoipSandboxChannelTokenKey (\s a -> s { _pinpointAPNSVoipSandboxChannelTokenKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-apnsvoipsandboxchannel.html#cfn-pinpoint-apnsvoipsandboxchannel-tokenkeyid
+papnsvscTokenKeyId :: Lens' PinpointAPNSVoipSandboxChannel (Maybe (Val Text))
+papnsvscTokenKeyId = lens _pinpointAPNSVoipSandboxChannelTokenKeyId (\s a -> s { _pinpointAPNSVoipSandboxChannelTokenKeyId = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointApp.hs b/library-gen/Stratosphere/Resources/PinpointApp.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointApp.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-app.html
+
+module Stratosphere.Resources.PinpointApp where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointApp. See 'pinpointApp' for a more
+-- convenient constructor.
+data PinpointApp =
+  PinpointApp
+  { _pinpointAppName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointApp where
+  toResourceProperties PinpointApp{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::App"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("Name",) . toJSON) _pinpointAppName
+        ]
+    }
+
+-- | Constructor for 'PinpointApp' containing required fields as arguments.
+pinpointApp
+  :: Val Text -- ^ 'paName'
+  -> PinpointApp
+pinpointApp namearg =
+  PinpointApp
+  { _pinpointAppName = namearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-app.html#cfn-pinpoint-app-name
+paName :: Lens' PinpointApp (Val Text)
+paName = lens _pinpointAppName (\s a -> s { _pinpointAppName = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointApplicationSettings.hs b/library-gen/Stratosphere/Resources/PinpointApplicationSettings.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointApplicationSettings.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-applicationsettings.html
+
+module Stratosphere.Resources.PinpointApplicationSettings where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointApplicationSettingsCampaignHook
+import Stratosphere.ResourceProperties.PinpointApplicationSettingsLimits
+import Stratosphere.ResourceProperties.PinpointApplicationSettingsQuietTime
+
+-- | Full data type definition for PinpointApplicationSettings. See
+-- 'pinpointApplicationSettings' for a more convenient constructor.
+data PinpointApplicationSettings =
+  PinpointApplicationSettings
+  { _pinpointApplicationSettingsApplicationId :: Val Text
+  , _pinpointApplicationSettingsCampaignHook :: Maybe PinpointApplicationSettingsCampaignHook
+  , _pinpointApplicationSettingsCloudWatchMetricsEnabled :: Maybe (Val Bool)
+  , _pinpointApplicationSettingsLimits :: Maybe PinpointApplicationSettingsLimits
+  , _pinpointApplicationSettingsQuietTime :: Maybe PinpointApplicationSettingsQuietTime
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointApplicationSettings where
+  toResourceProperties PinpointApplicationSettings{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::ApplicationSettings"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointApplicationSettingsApplicationId
+        , fmap (("CampaignHook",) . toJSON) _pinpointApplicationSettingsCampaignHook
+        , fmap (("CloudWatchMetricsEnabled",) . toJSON) _pinpointApplicationSettingsCloudWatchMetricsEnabled
+        , fmap (("Limits",) . toJSON) _pinpointApplicationSettingsLimits
+        , fmap (("QuietTime",) . toJSON) _pinpointApplicationSettingsQuietTime
+        ]
+    }
+
+-- | Constructor for 'PinpointApplicationSettings' containing required fields
+-- as arguments.
+pinpointApplicationSettings
+  :: Val Text -- ^ 'pasApplicationId'
+  -> PinpointApplicationSettings
+pinpointApplicationSettings applicationIdarg =
+  PinpointApplicationSettings
+  { _pinpointApplicationSettingsApplicationId = applicationIdarg
+  , _pinpointApplicationSettingsCampaignHook = Nothing
+  , _pinpointApplicationSettingsCloudWatchMetricsEnabled = Nothing
+  , _pinpointApplicationSettingsLimits = Nothing
+  , _pinpointApplicationSettingsQuietTime = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-applicationsettings.html#cfn-pinpoint-applicationsettings-applicationid
+pasApplicationId :: Lens' PinpointApplicationSettings (Val Text)
+pasApplicationId = lens _pinpointApplicationSettingsApplicationId (\s a -> s { _pinpointApplicationSettingsApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-applicationsettings.html#cfn-pinpoint-applicationsettings-campaignhook
+pasCampaignHook :: Lens' PinpointApplicationSettings (Maybe PinpointApplicationSettingsCampaignHook)
+pasCampaignHook = lens _pinpointApplicationSettingsCampaignHook (\s a -> s { _pinpointApplicationSettingsCampaignHook = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-applicationsettings.html#cfn-pinpoint-applicationsettings-cloudwatchmetricsenabled
+pasCloudWatchMetricsEnabled :: Lens' PinpointApplicationSettings (Maybe (Val Bool))
+pasCloudWatchMetricsEnabled = lens _pinpointApplicationSettingsCloudWatchMetricsEnabled (\s a -> s { _pinpointApplicationSettingsCloudWatchMetricsEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-applicationsettings.html#cfn-pinpoint-applicationsettings-limits
+pasLimits :: Lens' PinpointApplicationSettings (Maybe PinpointApplicationSettingsLimits)
+pasLimits = lens _pinpointApplicationSettingsLimits (\s a -> s { _pinpointApplicationSettingsLimits = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-applicationsettings.html#cfn-pinpoint-applicationsettings-quiettime
+pasQuietTime :: Lens' PinpointApplicationSettings (Maybe PinpointApplicationSettingsQuietTime)
+pasQuietTime = lens _pinpointApplicationSettingsQuietTime (\s a -> s { _pinpointApplicationSettingsQuietTime = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointBaiduChannel.hs b/library-gen/Stratosphere/Resources/PinpointBaiduChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointBaiduChannel.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-baiduchannel.html
+
+module Stratosphere.Resources.PinpointBaiduChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointBaiduChannel. See
+-- 'pinpointBaiduChannel' for a more convenient constructor.
+data PinpointBaiduChannel =
+  PinpointBaiduChannel
+  { _pinpointBaiduChannelApiKey :: Val Text
+  , _pinpointBaiduChannelApplicationId :: Val Text
+  , _pinpointBaiduChannelEnabled :: Maybe (Val Bool)
+  , _pinpointBaiduChannelSecretKey :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointBaiduChannel where
+  toResourceProperties PinpointBaiduChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::BaiduChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiKey",) . toJSON) _pinpointBaiduChannelApiKey
+        , (Just . ("ApplicationId",) . toJSON) _pinpointBaiduChannelApplicationId
+        , fmap (("Enabled",) . toJSON) _pinpointBaiduChannelEnabled
+        , (Just . ("SecretKey",) . toJSON) _pinpointBaiduChannelSecretKey
+        ]
+    }
+
+-- | Constructor for 'PinpointBaiduChannel' containing required fields as
+-- arguments.
+pinpointBaiduChannel
+  :: Val Text -- ^ 'pbcApiKey'
+  -> Val Text -- ^ 'pbcApplicationId'
+  -> Val Text -- ^ 'pbcSecretKey'
+  -> PinpointBaiduChannel
+pinpointBaiduChannel apiKeyarg applicationIdarg secretKeyarg =
+  PinpointBaiduChannel
+  { _pinpointBaiduChannelApiKey = apiKeyarg
+  , _pinpointBaiduChannelApplicationId = applicationIdarg
+  , _pinpointBaiduChannelEnabled = Nothing
+  , _pinpointBaiduChannelSecretKey = secretKeyarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-baiduchannel.html#cfn-pinpoint-baiduchannel-apikey
+pbcApiKey :: Lens' PinpointBaiduChannel (Val Text)
+pbcApiKey = lens _pinpointBaiduChannelApiKey (\s a -> s { _pinpointBaiduChannelApiKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-baiduchannel.html#cfn-pinpoint-baiduchannel-applicationid
+pbcApplicationId :: Lens' PinpointBaiduChannel (Val Text)
+pbcApplicationId = lens _pinpointBaiduChannelApplicationId (\s a -> s { _pinpointBaiduChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-baiduchannel.html#cfn-pinpoint-baiduchannel-enabled
+pbcEnabled :: Lens' PinpointBaiduChannel (Maybe (Val Bool))
+pbcEnabled = lens _pinpointBaiduChannelEnabled (\s a -> s { _pinpointBaiduChannelEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-baiduchannel.html#cfn-pinpoint-baiduchannel-secretkey
+pbcSecretKey :: Lens' PinpointBaiduChannel (Val Text)
+pbcSecretKey = lens _pinpointBaiduChannelSecretKey (\s a -> s { _pinpointBaiduChannelSecretKey = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointCampaign.hs b/library-gen/Stratosphere/Resources/PinpointCampaign.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointCampaign.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html
+
+module Stratosphere.Resources.PinpointCampaign where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointCampaignWriteTreatmentResource
+import Stratosphere.ResourceProperties.PinpointCampaignCampaignHook
+import Stratosphere.ResourceProperties.PinpointCampaignLimits
+import Stratosphere.ResourceProperties.PinpointCampaignMessageConfiguration
+import Stratosphere.ResourceProperties.PinpointCampaignSchedule
+
+-- | Full data type definition for PinpointCampaign. See 'pinpointCampaign'
+-- for a more convenient constructor.
+data PinpointCampaign =
+  PinpointCampaign
+  { _pinpointCampaignAdditionalTreatments :: Maybe [PinpointCampaignWriteTreatmentResource]
+  , _pinpointCampaignApplicationId :: Val Text
+  , _pinpointCampaignCampaignHook :: Maybe PinpointCampaignCampaignHook
+  , _pinpointCampaignDescription :: Maybe (Val Text)
+  , _pinpointCampaignHoldoutPercent :: Maybe (Val Integer)
+  , _pinpointCampaignIsPaused :: Maybe (Val Bool)
+  , _pinpointCampaignLimits :: Maybe PinpointCampaignLimits
+  , _pinpointCampaignMessageConfiguration :: PinpointCampaignMessageConfiguration
+  , _pinpointCampaignName :: Val Text
+  , _pinpointCampaignSchedule :: PinpointCampaignSchedule
+  , _pinpointCampaignSegmentId :: Val Text
+  , _pinpointCampaignSegmentVersion :: Maybe (Val Integer)
+  , _pinpointCampaignTreatmentDescription :: Maybe (Val Text)
+  , _pinpointCampaignTreatmentName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointCampaign where
+  toResourceProperties PinpointCampaign{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::Campaign"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ fmap (("AdditionalTreatments",) . toJSON) _pinpointCampaignAdditionalTreatments
+        , (Just . ("ApplicationId",) . toJSON) _pinpointCampaignApplicationId
+        , fmap (("CampaignHook",) . toJSON) _pinpointCampaignCampaignHook
+        , fmap (("Description",) . toJSON) _pinpointCampaignDescription
+        , fmap (("HoldoutPercent",) . toJSON) _pinpointCampaignHoldoutPercent
+        , fmap (("IsPaused",) . toJSON) _pinpointCampaignIsPaused
+        , fmap (("Limits",) . toJSON) _pinpointCampaignLimits
+        , (Just . ("MessageConfiguration",) . toJSON) _pinpointCampaignMessageConfiguration
+        , (Just . ("Name",) . toJSON) _pinpointCampaignName
+        , (Just . ("Schedule",) . toJSON) _pinpointCampaignSchedule
+        , (Just . ("SegmentId",) . toJSON) _pinpointCampaignSegmentId
+        , fmap (("SegmentVersion",) . toJSON) _pinpointCampaignSegmentVersion
+        , fmap (("TreatmentDescription",) . toJSON) _pinpointCampaignTreatmentDescription
+        , fmap (("TreatmentName",) . toJSON) _pinpointCampaignTreatmentName
+        ]
+    }
+
+-- | Constructor for 'PinpointCampaign' containing required fields as
+-- arguments.
+pinpointCampaign
+  :: Val Text -- ^ 'pcApplicationId'
+  -> PinpointCampaignMessageConfiguration -- ^ 'pcMessageConfiguration'
+  -> Val Text -- ^ 'pcName'
+  -> PinpointCampaignSchedule -- ^ 'pcSchedule'
+  -> Val Text -- ^ 'pcSegmentId'
+  -> PinpointCampaign
+pinpointCampaign applicationIdarg messageConfigurationarg namearg schedulearg segmentIdarg =
+  PinpointCampaign
+  { _pinpointCampaignAdditionalTreatments = Nothing
+  , _pinpointCampaignApplicationId = applicationIdarg
+  , _pinpointCampaignCampaignHook = Nothing
+  , _pinpointCampaignDescription = Nothing
+  , _pinpointCampaignHoldoutPercent = Nothing
+  , _pinpointCampaignIsPaused = Nothing
+  , _pinpointCampaignLimits = Nothing
+  , _pinpointCampaignMessageConfiguration = messageConfigurationarg
+  , _pinpointCampaignName = namearg
+  , _pinpointCampaignSchedule = schedulearg
+  , _pinpointCampaignSegmentId = segmentIdarg
+  , _pinpointCampaignSegmentVersion = Nothing
+  , _pinpointCampaignTreatmentDescription = Nothing
+  , _pinpointCampaignTreatmentName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-additionaltreatments
+pcAdditionalTreatments :: Lens' PinpointCampaign (Maybe [PinpointCampaignWriteTreatmentResource])
+pcAdditionalTreatments = lens _pinpointCampaignAdditionalTreatments (\s a -> s { _pinpointCampaignAdditionalTreatments = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-applicationid
+pcApplicationId :: Lens' PinpointCampaign (Val Text)
+pcApplicationId = lens _pinpointCampaignApplicationId (\s a -> s { _pinpointCampaignApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-campaignhook
+pcCampaignHook :: Lens' PinpointCampaign (Maybe PinpointCampaignCampaignHook)
+pcCampaignHook = lens _pinpointCampaignCampaignHook (\s a -> s { _pinpointCampaignCampaignHook = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-description
+pcDescription :: Lens' PinpointCampaign (Maybe (Val Text))
+pcDescription = lens _pinpointCampaignDescription (\s a -> s { _pinpointCampaignDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-holdoutpercent
+pcHoldoutPercent :: Lens' PinpointCampaign (Maybe (Val Integer))
+pcHoldoutPercent = lens _pinpointCampaignHoldoutPercent (\s a -> s { _pinpointCampaignHoldoutPercent = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-ispaused
+pcIsPaused :: Lens' PinpointCampaign (Maybe (Val Bool))
+pcIsPaused = lens _pinpointCampaignIsPaused (\s a -> s { _pinpointCampaignIsPaused = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-limits
+pcLimits :: Lens' PinpointCampaign (Maybe PinpointCampaignLimits)
+pcLimits = lens _pinpointCampaignLimits (\s a -> s { _pinpointCampaignLimits = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-messageconfiguration
+pcMessageConfiguration :: Lens' PinpointCampaign PinpointCampaignMessageConfiguration
+pcMessageConfiguration = lens _pinpointCampaignMessageConfiguration (\s a -> s { _pinpointCampaignMessageConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-name
+pcName :: Lens' PinpointCampaign (Val Text)
+pcName = lens _pinpointCampaignName (\s a -> s { _pinpointCampaignName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-schedule
+pcSchedule :: Lens' PinpointCampaign PinpointCampaignSchedule
+pcSchedule = lens _pinpointCampaignSchedule (\s a -> s { _pinpointCampaignSchedule = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-segmentid
+pcSegmentId :: Lens' PinpointCampaign (Val Text)
+pcSegmentId = lens _pinpointCampaignSegmentId (\s a -> s { _pinpointCampaignSegmentId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-segmentversion
+pcSegmentVersion :: Lens' PinpointCampaign (Maybe (Val Integer))
+pcSegmentVersion = lens _pinpointCampaignSegmentVersion (\s a -> s { _pinpointCampaignSegmentVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-treatmentdescription
+pcTreatmentDescription :: Lens' PinpointCampaign (Maybe (Val Text))
+pcTreatmentDescription = lens _pinpointCampaignTreatmentDescription (\s a -> s { _pinpointCampaignTreatmentDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-campaign.html#cfn-pinpoint-campaign-treatmentname
+pcTreatmentName :: Lens' PinpointCampaign (Maybe (Val Text))
+pcTreatmentName = lens _pinpointCampaignTreatmentName (\s a -> s { _pinpointCampaignTreatmentName = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointEmailChannel.hs b/library-gen/Stratosphere/Resources/PinpointEmailChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointEmailChannel.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html
+
+module Stratosphere.Resources.PinpointEmailChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointEmailChannel. See
+-- 'pinpointEmailChannel' for a more convenient constructor.
+data PinpointEmailChannel =
+  PinpointEmailChannel
+  { _pinpointEmailChannelApplicationId :: Val Text
+  , _pinpointEmailChannelConfigurationSet :: Maybe (Val Text)
+  , _pinpointEmailChannelEnabled :: Maybe (Val Bool)
+  , _pinpointEmailChannelFromAddress :: Val Text
+  , _pinpointEmailChannelIdentity :: Val Text
+  , _pinpointEmailChannelRoleArn :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointEmailChannel where
+  toResourceProperties PinpointEmailChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::EmailChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointEmailChannelApplicationId
+        , fmap (("ConfigurationSet",) . toJSON) _pinpointEmailChannelConfigurationSet
+        , fmap (("Enabled",) . toJSON) _pinpointEmailChannelEnabled
+        , (Just . ("FromAddress",) . toJSON) _pinpointEmailChannelFromAddress
+        , (Just . ("Identity",) . toJSON) _pinpointEmailChannelIdentity
+        , fmap (("RoleArn",) . toJSON) _pinpointEmailChannelRoleArn
+        ]
+    }
+
+-- | Constructor for 'PinpointEmailChannel' containing required fields as
+-- arguments.
+pinpointEmailChannel
+  :: Val Text -- ^ 'pecApplicationId'
+  -> Val Text -- ^ 'pecFromAddress'
+  -> Val Text -- ^ 'pecIdentity'
+  -> PinpointEmailChannel
+pinpointEmailChannel applicationIdarg fromAddressarg identityarg =
+  PinpointEmailChannel
+  { _pinpointEmailChannelApplicationId = applicationIdarg
+  , _pinpointEmailChannelConfigurationSet = Nothing
+  , _pinpointEmailChannelEnabled = Nothing
+  , _pinpointEmailChannelFromAddress = fromAddressarg
+  , _pinpointEmailChannelIdentity = identityarg
+  , _pinpointEmailChannelRoleArn = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html#cfn-pinpoint-emailchannel-applicationid
+pecApplicationId :: Lens' PinpointEmailChannel (Val Text)
+pecApplicationId = lens _pinpointEmailChannelApplicationId (\s a -> s { _pinpointEmailChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html#cfn-pinpoint-emailchannel-configurationset
+pecConfigurationSet :: Lens' PinpointEmailChannel (Maybe (Val Text))
+pecConfigurationSet = lens _pinpointEmailChannelConfigurationSet (\s a -> s { _pinpointEmailChannelConfigurationSet = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html#cfn-pinpoint-emailchannel-enabled
+pecEnabled :: Lens' PinpointEmailChannel (Maybe (Val Bool))
+pecEnabled = lens _pinpointEmailChannelEnabled (\s a -> s { _pinpointEmailChannelEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html#cfn-pinpoint-emailchannel-fromaddress
+pecFromAddress :: Lens' PinpointEmailChannel (Val Text)
+pecFromAddress = lens _pinpointEmailChannelFromAddress (\s a -> s { _pinpointEmailChannelFromAddress = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html#cfn-pinpoint-emailchannel-identity
+pecIdentity :: Lens' PinpointEmailChannel (Val Text)
+pecIdentity = lens _pinpointEmailChannelIdentity (\s a -> s { _pinpointEmailChannelIdentity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-emailchannel.html#cfn-pinpoint-emailchannel-rolearn
+pecRoleArn :: Lens' PinpointEmailChannel (Maybe (Val Text))
+pecRoleArn = lens _pinpointEmailChannelRoleArn (\s a -> s { _pinpointEmailChannelRoleArn = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointEventStream.hs b/library-gen/Stratosphere/Resources/PinpointEventStream.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointEventStream.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-eventstream.html
+
+module Stratosphere.Resources.PinpointEventStream where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointEventStream. See
+-- 'pinpointEventStream' for a more convenient constructor.
+data PinpointEventStream =
+  PinpointEventStream
+  { _pinpointEventStreamApplicationId :: Val Text
+  , _pinpointEventStreamDestinationStreamArn :: Val Text
+  , _pinpointEventStreamRoleArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointEventStream where
+  toResourceProperties PinpointEventStream{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::EventStream"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointEventStreamApplicationId
+        , (Just . ("DestinationStreamArn",) . toJSON) _pinpointEventStreamDestinationStreamArn
+        , (Just . ("RoleArn",) . toJSON) _pinpointEventStreamRoleArn
+        ]
+    }
+
+-- | Constructor for 'PinpointEventStream' containing required fields as
+-- arguments.
+pinpointEventStream
+  :: Val Text -- ^ 'pesApplicationId'
+  -> Val Text -- ^ 'pesDestinationStreamArn'
+  -> Val Text -- ^ 'pesRoleArn'
+  -> PinpointEventStream
+pinpointEventStream applicationIdarg destinationStreamArnarg roleArnarg =
+  PinpointEventStream
+  { _pinpointEventStreamApplicationId = applicationIdarg
+  , _pinpointEventStreamDestinationStreamArn = destinationStreamArnarg
+  , _pinpointEventStreamRoleArn = roleArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-eventstream.html#cfn-pinpoint-eventstream-applicationid
+pesApplicationId :: Lens' PinpointEventStream (Val Text)
+pesApplicationId = lens _pinpointEventStreamApplicationId (\s a -> s { _pinpointEventStreamApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-eventstream.html#cfn-pinpoint-eventstream-destinationstreamarn
+pesDestinationStreamArn :: Lens' PinpointEventStream (Val Text)
+pesDestinationStreamArn = lens _pinpointEventStreamDestinationStreamArn (\s a -> s { _pinpointEventStreamDestinationStreamArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-eventstream.html#cfn-pinpoint-eventstream-rolearn
+pesRoleArn :: Lens' PinpointEventStream (Val Text)
+pesRoleArn = lens _pinpointEventStreamRoleArn (\s a -> s { _pinpointEventStreamRoleArn = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointGCMChannel.hs b/library-gen/Stratosphere/Resources/PinpointGCMChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointGCMChannel.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-gcmchannel.html
+
+module Stratosphere.Resources.PinpointGCMChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointGCMChannel. See
+-- 'pinpointGCMChannel' for a more convenient constructor.
+data PinpointGCMChannel =
+  PinpointGCMChannel
+  { _pinpointGCMChannelApiKey :: Val Text
+  , _pinpointGCMChannelApplicationId :: Val Text
+  , _pinpointGCMChannelEnabled :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointGCMChannel where
+  toResourceProperties PinpointGCMChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::GCMChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApiKey",) . toJSON) _pinpointGCMChannelApiKey
+        , (Just . ("ApplicationId",) . toJSON) _pinpointGCMChannelApplicationId
+        , fmap (("Enabled",) . toJSON) _pinpointGCMChannelEnabled
+        ]
+    }
+
+-- | Constructor for 'PinpointGCMChannel' containing required fields as
+-- arguments.
+pinpointGCMChannel
+  :: Val Text -- ^ 'pgcmcApiKey'
+  -> Val Text -- ^ 'pgcmcApplicationId'
+  -> PinpointGCMChannel
+pinpointGCMChannel apiKeyarg applicationIdarg =
+  PinpointGCMChannel
+  { _pinpointGCMChannelApiKey = apiKeyarg
+  , _pinpointGCMChannelApplicationId = applicationIdarg
+  , _pinpointGCMChannelEnabled = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-gcmchannel.html#cfn-pinpoint-gcmchannel-apikey
+pgcmcApiKey :: Lens' PinpointGCMChannel (Val Text)
+pgcmcApiKey = lens _pinpointGCMChannelApiKey (\s a -> s { _pinpointGCMChannelApiKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-gcmchannel.html#cfn-pinpoint-gcmchannel-applicationid
+pgcmcApplicationId :: Lens' PinpointGCMChannel (Val Text)
+pgcmcApplicationId = lens _pinpointGCMChannelApplicationId (\s a -> s { _pinpointGCMChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-gcmchannel.html#cfn-pinpoint-gcmchannel-enabled
+pgcmcEnabled :: Lens' PinpointGCMChannel (Maybe (Val Bool))
+pgcmcEnabled = lens _pinpointGCMChannelEnabled (\s a -> s { _pinpointGCMChannelEnabled = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointSMSChannel.hs b/library-gen/Stratosphere/Resources/PinpointSMSChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointSMSChannel.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-smschannel.html
+
+module Stratosphere.Resources.PinpointSMSChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointSMSChannel. See
+-- 'pinpointSMSChannel' for a more convenient constructor.
+data PinpointSMSChannel =
+  PinpointSMSChannel
+  { _pinpointSMSChannelApplicationId :: Val Text
+  , _pinpointSMSChannelEnabled :: Maybe (Val Bool)
+  , _pinpointSMSChannelSenderId :: Maybe (Val Text)
+  , _pinpointSMSChannelShortCode :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointSMSChannel where
+  toResourceProperties PinpointSMSChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::SMSChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointSMSChannelApplicationId
+        , fmap (("Enabled",) . toJSON) _pinpointSMSChannelEnabled
+        , fmap (("SenderId",) . toJSON) _pinpointSMSChannelSenderId
+        , fmap (("ShortCode",) . toJSON) _pinpointSMSChannelShortCode
+        ]
+    }
+
+-- | Constructor for 'PinpointSMSChannel' containing required fields as
+-- arguments.
+pinpointSMSChannel
+  :: Val Text -- ^ 'psmscApplicationId'
+  -> PinpointSMSChannel
+pinpointSMSChannel applicationIdarg =
+  PinpointSMSChannel
+  { _pinpointSMSChannelApplicationId = applicationIdarg
+  , _pinpointSMSChannelEnabled = Nothing
+  , _pinpointSMSChannelSenderId = Nothing
+  , _pinpointSMSChannelShortCode = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-smschannel.html#cfn-pinpoint-smschannel-applicationid
+psmscApplicationId :: Lens' PinpointSMSChannel (Val Text)
+psmscApplicationId = lens _pinpointSMSChannelApplicationId (\s a -> s { _pinpointSMSChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-smschannel.html#cfn-pinpoint-smschannel-enabled
+psmscEnabled :: Lens' PinpointSMSChannel (Maybe (Val Bool))
+psmscEnabled = lens _pinpointSMSChannelEnabled (\s a -> s { _pinpointSMSChannelEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-smschannel.html#cfn-pinpoint-smschannel-senderid
+psmscSenderId :: Lens' PinpointSMSChannel (Maybe (Val Text))
+psmscSenderId = lens _pinpointSMSChannelSenderId (\s a -> s { _pinpointSMSChannelSenderId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-smschannel.html#cfn-pinpoint-smschannel-shortcode
+psmscShortCode :: Lens' PinpointSMSChannel (Maybe (Val Text))
+psmscShortCode = lens _pinpointSMSChannelShortCode (\s a -> s { _pinpointSMSChannelShortCode = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointSegment.hs b/library-gen/Stratosphere/Resources/PinpointSegment.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointSegment.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-segment.html
+
+module Stratosphere.Resources.PinpointSegment where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.PinpointSegmentSegmentDimensions
+import Stratosphere.ResourceProperties.PinpointSegmentSegmentGroups
+
+-- | Full data type definition for PinpointSegment. See 'pinpointSegment' for
+-- a more convenient constructor.
+data PinpointSegment =
+  PinpointSegment
+  { _pinpointSegmentApplicationId :: Val Text
+  , _pinpointSegmentDimensions :: Maybe PinpointSegmentSegmentDimensions
+  , _pinpointSegmentName :: Val Text
+  , _pinpointSegmentSegmentGroups :: Maybe PinpointSegmentSegmentGroups
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointSegment where
+  toResourceProperties PinpointSegment{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::Segment"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointSegmentApplicationId
+        , fmap (("Dimensions",) . toJSON) _pinpointSegmentDimensions
+        , (Just . ("Name",) . toJSON) _pinpointSegmentName
+        , fmap (("SegmentGroups",) . toJSON) _pinpointSegmentSegmentGroups
+        ]
+    }
+
+-- | Constructor for 'PinpointSegment' containing required fields as
+-- arguments.
+pinpointSegment
+  :: Val Text -- ^ 'psApplicationId'
+  -> Val Text -- ^ 'psName'
+  -> PinpointSegment
+pinpointSegment applicationIdarg namearg =
+  PinpointSegment
+  { _pinpointSegmentApplicationId = applicationIdarg
+  , _pinpointSegmentDimensions = Nothing
+  , _pinpointSegmentName = namearg
+  , _pinpointSegmentSegmentGroups = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-segment.html#cfn-pinpoint-segment-applicationid
+psApplicationId :: Lens' PinpointSegment (Val Text)
+psApplicationId = lens _pinpointSegmentApplicationId (\s a -> s { _pinpointSegmentApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-segment.html#cfn-pinpoint-segment-dimensions
+psDimensions :: Lens' PinpointSegment (Maybe PinpointSegmentSegmentDimensions)
+psDimensions = lens _pinpointSegmentDimensions (\s a -> s { _pinpointSegmentDimensions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-segment.html#cfn-pinpoint-segment-name
+psName :: Lens' PinpointSegment (Val Text)
+psName = lens _pinpointSegmentName (\s a -> s { _pinpointSegmentName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-segment.html#cfn-pinpoint-segment-segmentgroups
+psSegmentGroups :: Lens' PinpointSegment (Maybe PinpointSegmentSegmentGroups)
+psSegmentGroups = lens _pinpointSegmentSegmentGroups (\s a -> s { _pinpointSegmentSegmentGroups = a })
diff --git a/library-gen/Stratosphere/Resources/PinpointVoiceChannel.hs b/library-gen/Stratosphere/Resources/PinpointVoiceChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/PinpointVoiceChannel.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-voicechannel.html
+
+module Stratosphere.Resources.PinpointVoiceChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for PinpointVoiceChannel. See
+-- 'pinpointVoiceChannel' for a more convenient constructor.
+data PinpointVoiceChannel =
+  PinpointVoiceChannel
+  { _pinpointVoiceChannelApplicationId :: Val Text
+  , _pinpointVoiceChannelEnabled :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToResourceProperties PinpointVoiceChannel where
+  toResourceProperties PinpointVoiceChannel{..} =
+    ResourceProperties
+    { resourcePropertiesType = "AWS::Pinpoint::VoiceChannel"
+    , resourcePropertiesProperties =
+        hashMapFromList $ catMaybes
+        [ (Just . ("ApplicationId",) . toJSON) _pinpointVoiceChannelApplicationId
+        , fmap (("Enabled",) . toJSON) _pinpointVoiceChannelEnabled
+        ]
+    }
+
+-- | Constructor for 'PinpointVoiceChannel' containing required fields as
+-- arguments.
+pinpointVoiceChannel
+  :: Val Text -- ^ 'pvcApplicationId'
+  -> PinpointVoiceChannel
+pinpointVoiceChannel applicationIdarg =
+  PinpointVoiceChannel
+  { _pinpointVoiceChannelApplicationId = applicationIdarg
+  , _pinpointVoiceChannelEnabled = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-voicechannel.html#cfn-pinpoint-voicechannel-applicationid
+pvcApplicationId :: Lens' PinpointVoiceChannel (Val Text)
+pvcApplicationId = lens _pinpointVoiceChannelApplicationId (\s a -> s { _pinpointVoiceChannelApplicationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pinpoint-voicechannel.html#cfn-pinpoint-voicechannel-enabled
+pvcEnabled :: Lens' PinpointVoiceChannel (Maybe (Val Bool))
+pvcEnabled = lens _pinpointVoiceChannelEnabled (\s a -> s { _pinpointVoiceChannelEnabled = a })
diff --git a/library-gen/Stratosphere/Resources/RDSDBInstance.hs b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
--- a/library-gen/Stratosphere/Resources/RDSDBInstance.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
@@ -19,7 +19,7 @@
   , _rDSDBInstanceAllowMajorVersionUpgrade :: Maybe (Val Bool)
   , _rDSDBInstanceAutoMinorVersionUpgrade :: Maybe (Val Bool)
   , _rDSDBInstanceAvailabilityZone :: Maybe (Val Text)
-  , _rDSDBInstanceBackupRetentionPeriod :: Maybe (Val Text)
+  , _rDSDBInstanceBackupRetentionPeriod :: Maybe (Val Integer)
   , _rDSDBInstanceCharacterSetName :: Maybe (Val Text)
   , _rDSDBInstanceCopyTagsToSnapshot :: Maybe (Val Bool)
   , _rDSDBInstanceDBClusterIdentifier :: Maybe (Val Text)
@@ -198,7 +198,7 @@
 rdsdbiAvailabilityZone = lens _rDSDBInstanceAvailabilityZone (\s a -> s { _rDSDBInstanceAvailabilityZone = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-backupretentionperiod
-rdsdbiBackupRetentionPeriod :: Lens' RDSDBInstance (Maybe (Val Text))
+rdsdbiBackupRetentionPeriod :: Lens' RDSDBInstance (Maybe (Val Integer))
 rdsdbiBackupRetentionPeriod = lens _rDSDBInstanceBackupRetentionPeriod (\s a -> s { _rDSDBInstanceBackupRetentionPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-charactersetname
diff --git a/library-gen/Stratosphere/Resources/S3Bucket.hs b/library-gen/Stratosphere/Resources/S3Bucket.hs
--- a/library-gen/Stratosphere/Resources/S3Bucket.hs
+++ b/library-gen/Stratosphere/Resources/S3Bucket.hs
@@ -18,6 +18,7 @@
 import Stratosphere.ResourceProperties.S3BucketLoggingConfiguration
 import Stratosphere.ResourceProperties.S3BucketMetricsConfiguration
 import Stratosphere.ResourceProperties.S3BucketNotificationConfiguration
+import Stratosphere.ResourceProperties.S3BucketObjectLockConfiguration
 import Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration
 import Stratosphere.ResourceProperties.S3BucketReplicationConfiguration
 import Stratosphere.ResourceProperties.Tag
@@ -39,6 +40,8 @@
   , _s3BucketLoggingConfiguration :: Maybe S3BucketLoggingConfiguration
   , _s3BucketMetricsConfigurations :: Maybe [S3BucketMetricsConfiguration]
   , _s3BucketNotificationConfiguration :: Maybe S3BucketNotificationConfiguration
+  , _s3BucketObjectLockConfiguration :: Maybe S3BucketObjectLockConfiguration
+  , _s3BucketObjectLockEnabled :: Maybe (Val Bool)
   , _s3BucketPublicAccessBlockConfiguration :: Maybe S3BucketPublicAccessBlockConfiguration
   , _s3BucketReplicationConfiguration :: Maybe S3BucketReplicationConfiguration
   , _s3BucketTags :: Maybe [Tag]
@@ -63,6 +66,8 @@
         , fmap (("LoggingConfiguration",) . toJSON) _s3BucketLoggingConfiguration
         , fmap (("MetricsConfigurations",) . toJSON) _s3BucketMetricsConfigurations
         , fmap (("NotificationConfiguration",) . toJSON) _s3BucketNotificationConfiguration
+        , fmap (("ObjectLockConfiguration",) . toJSON) _s3BucketObjectLockConfiguration
+        , fmap (("ObjectLockEnabled",) . toJSON) _s3BucketObjectLockEnabled
         , fmap (("PublicAccessBlockConfiguration",) . toJSON) _s3BucketPublicAccessBlockConfiguration
         , fmap (("ReplicationConfiguration",) . toJSON) _s3BucketReplicationConfiguration
         , fmap (("Tags",) . toJSON) _s3BucketTags
@@ -87,6 +92,8 @@
   , _s3BucketLoggingConfiguration = Nothing
   , _s3BucketMetricsConfigurations = Nothing
   , _s3BucketNotificationConfiguration = Nothing
+  , _s3BucketObjectLockConfiguration = Nothing
+  , _s3BucketObjectLockEnabled = Nothing
   , _s3BucketPublicAccessBlockConfiguration = Nothing
   , _s3BucketReplicationConfiguration = Nothing
   , _s3BucketTags = Nothing
@@ -137,6 +144,14 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-notification
 sbNotificationConfiguration :: Lens' S3Bucket (Maybe S3BucketNotificationConfiguration)
 sbNotificationConfiguration = lens _s3BucketNotificationConfiguration (\s a -> s { _s3BucketNotificationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-objectlockconfiguration
+sbObjectLockConfiguration :: Lens' S3Bucket (Maybe S3BucketObjectLockConfiguration)
+sbObjectLockConfiguration = lens _s3BucketObjectLockConfiguration (\s a -> s { _s3BucketObjectLockConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-objectlockenabled
+sbObjectLockEnabled :: Lens' S3Bucket (Maybe (Val Bool))
+sbObjectLockEnabled = lens _s3BucketObjectLockEnabled (\s a -> s { _s3BucketObjectLockEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-publicaccessblockconfiguration
 sbPublicAccessBlockConfiguration :: Lens' S3Bucket (Maybe S3BucketPublicAccessBlockConfiguration)
diff --git a/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs b/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
--- a/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
+++ b/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
@@ -14,7 +14,10 @@
 -- 'sageMakerNotebookInstance' for a more convenient constructor.
 data SageMakerNotebookInstance =
   SageMakerNotebookInstance
-  { _sageMakerNotebookInstanceDirectInternetAccess :: Maybe (Val Text)
+  { _sageMakerNotebookInstanceAcceleratorTypes :: Maybe (ValList Text)
+  , _sageMakerNotebookInstanceAdditionalCodeRepositories :: Maybe (ValList Text)
+  , _sageMakerNotebookInstanceDefaultCodeRepository :: Maybe (Val Text)
+  , _sageMakerNotebookInstanceDirectInternetAccess :: Maybe (Val Text)
   , _sageMakerNotebookInstanceInstanceType :: Val Text
   , _sageMakerNotebookInstanceKmsKeyId :: Maybe (Val Text)
   , _sageMakerNotebookInstanceLifecycleConfigName :: Maybe (Val Text)
@@ -33,7 +36,10 @@
     { resourcePropertiesType = "AWS::SageMaker::NotebookInstance"
     , resourcePropertiesProperties =
         hashMapFromList $ catMaybes
-        [ fmap (("DirectInternetAccess",) . toJSON) _sageMakerNotebookInstanceDirectInternetAccess
+        [ fmap (("AcceleratorTypes",) . toJSON) _sageMakerNotebookInstanceAcceleratorTypes
+        , fmap (("AdditionalCodeRepositories",) . toJSON) _sageMakerNotebookInstanceAdditionalCodeRepositories
+        , fmap (("DefaultCodeRepository",) . toJSON) _sageMakerNotebookInstanceDefaultCodeRepository
+        , fmap (("DirectInternetAccess",) . toJSON) _sageMakerNotebookInstanceDirectInternetAccess
         , (Just . ("InstanceType",) . toJSON) _sageMakerNotebookInstanceInstanceType
         , fmap (("KmsKeyId",) . toJSON) _sageMakerNotebookInstanceKmsKeyId
         , fmap (("LifecycleConfigName",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigName
@@ -55,7 +61,10 @@
   -> SageMakerNotebookInstance
 sageMakerNotebookInstance instanceTypearg roleArnarg =
   SageMakerNotebookInstance
-  { _sageMakerNotebookInstanceDirectInternetAccess = Nothing
+  { _sageMakerNotebookInstanceAcceleratorTypes = Nothing
+  , _sageMakerNotebookInstanceAdditionalCodeRepositories = Nothing
+  , _sageMakerNotebookInstanceDefaultCodeRepository = Nothing
+  , _sageMakerNotebookInstanceDirectInternetAccess = Nothing
   , _sageMakerNotebookInstanceInstanceType = instanceTypearg
   , _sageMakerNotebookInstanceKmsKeyId = Nothing
   , _sageMakerNotebookInstanceLifecycleConfigName = Nothing
@@ -67,6 +76,18 @@
   , _sageMakerNotebookInstanceTags = Nothing
   , _sageMakerNotebookInstanceVolumeSizeInGB = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-acceleratortypes
+smniAcceleratorTypes :: Lens' SageMakerNotebookInstance (Maybe (ValList Text))
+smniAcceleratorTypes = lens _sageMakerNotebookInstanceAcceleratorTypes (\s a -> s { _sageMakerNotebookInstanceAcceleratorTypes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-additionalcoderepositories
+smniAdditionalCodeRepositories :: Lens' SageMakerNotebookInstance (Maybe (ValList Text))
+smniAdditionalCodeRepositories = lens _sageMakerNotebookInstanceAdditionalCodeRepositories (\s a -> s { _sageMakerNotebookInstanceAdditionalCodeRepositories = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-defaultcoderepository
+smniDefaultCodeRepository :: Lens' SageMakerNotebookInstance (Maybe (Val Text))
+smniDefaultCodeRepository = lens _sageMakerNotebookInstanceDefaultCodeRepository (\s a -> s { _sageMakerNotebookInstanceDefaultCodeRepository = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-directinternetaccess
 smniDirectInternetAccess :: Lens' SageMakerNotebookInstance (Maybe (Val Text))
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.1.
+-- This file has been generated from package.yaml by hpack version 0.31.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 866acc984fe2a54845e7421026b6720e78e88e473125a00dd5be0a4e07c9cdef
+-- hash: 8b9ce3b7b409c9c1990a3745ec4c4d60a4f2f270e6aa9ba5f5d293ca90cfae84
 
 name:           stratosphere
-version:        0.38.0
+version:        0.39.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -56,6 +56,13 @@
       Stratosphere.ResourceProperties.AmazonMQBrokerUser
       Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId
       Stratosphere.ResourceProperties.AmazonMQConfigurationTagsEntry
+      Stratosphere.ResourceProperties.AmplifyAppBasicAuthConfig
+      Stratosphere.ResourceProperties.AmplifyAppCustomRule
+      Stratosphere.ResourceProperties.AmplifyAppEnvironmentVariable
+      Stratosphere.ResourceProperties.AmplifyAppToken
+      Stratosphere.ResourceProperties.AmplifyBranchBasicAuthConfig
+      Stratosphere.ResourceProperties.AmplifyBranchEnvironmentVariable
+      Stratosphere.ResourceProperties.AmplifyDomainSubDomainSetting
       Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey
       Stratosphere.ResourceProperties.ApiGatewayDeploymentAccessLogSetting
       Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting
@@ -307,6 +314,7 @@
       Stratosphere.ResourceProperties.DirectoryServiceMicrosoftADVpcSettings
       Stratosphere.ResourceProperties.DirectoryServiceSimpleADVpcSettings
       Stratosphere.ResourceProperties.DLMLifecyclePolicyCreateRule
+      Stratosphere.ResourceProperties.DLMLifecyclePolicyParameters
       Stratosphere.ResourceProperties.DLMLifecyclePolicyPolicyDetails
       Stratosphere.ResourceProperties.DLMLifecyclePolicyRetainRule
       Stratosphere.ResourceProperties.DLMLifecyclePolicySchedule
@@ -326,6 +334,11 @@
       Stratosphere.ResourceProperties.DynamoDBTableStreamSpecification
       Stratosphere.ResourceProperties.DynamoDBTableTimeToLiveSpecification
       Stratosphere.ResourceProperties.EC2CapacityReservationTagSpecification
+      Stratosphere.ResourceProperties.EC2ClientVpnEndpointCertificateAuthenticationRequest
+      Stratosphere.ResourceProperties.EC2ClientVpnEndpointClientAuthenticationRequest
+      Stratosphere.ResourceProperties.EC2ClientVpnEndpointConnectionLogOptions
+      Stratosphere.ResourceProperties.EC2ClientVpnEndpointDirectoryServiceAuthenticationRequest
+      Stratosphere.ResourceProperties.EC2ClientVpnEndpointTagSpecification
       Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest
       Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest
       Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest
@@ -418,12 +431,15 @@
       Stratosphere.ResourceProperties.ECSTaskDefinitionPortMapping
       Stratosphere.ResourceProperties.ECSTaskDefinitionProxyConfiguration
       Stratosphere.ResourceProperties.ECSTaskDefinitionRepositoryCredentials
+      Stratosphere.ResourceProperties.ECSTaskDefinitionResourceRequirement
+      Stratosphere.ResourceProperties.ECSTaskDefinitionSecret
       Stratosphere.ResourceProperties.ECSTaskDefinitionTaskDefinitionPlacementConstraint
       Stratosphere.ResourceProperties.ECSTaskDefinitionTmpfs
       Stratosphere.ResourceProperties.ECSTaskDefinitionUlimit
       Stratosphere.ResourceProperties.ECSTaskDefinitionVolume
       Stratosphere.ResourceProperties.ECSTaskDefinitionVolumeFrom
       Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag
+      Stratosphere.ResourceProperties.EFSFileSystemLifecyclePolicy
       Stratosphere.ResourceProperties.EKSClusterResourcesVpcConfig
       Stratosphere.ResourceProperties.ElastiCacheReplicationGroupNodeGroupConfiguration
       Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
@@ -454,8 +470,15 @@
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHostHeaderConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpHeaderConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleHttpRequestMethodConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRulePathPatternConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleQueryStringKeyValue
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleSourceIpConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupMatcher
@@ -623,17 +646,23 @@
       Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRule
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentDeliveryRuleDestination
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetGlueConfiguration
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetIotEventsDestinationConfiguration
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetS3DestinationConfiguration
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset
       Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetVersioningConfiguration
       Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod
       Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity
       Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes
@@ -647,6 +676,7 @@
       Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes
       Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes
       Stratosphere.ResourceProperties.IoTThingAttributePayload
+      Stratosphere.ResourceProperties.IoTThingsGraphFlowTemplateDefinitionDocument
       Stratosphere.ResourceProperties.IoTTopicRuleAction
       Stratosphere.ResourceProperties.IoTTopicRuleCloudwatchAlarmAction
       Stratosphere.ResourceProperties.IoTTopicRuleCloudwatchMetricAction
@@ -730,18 +760,28 @@
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamBufferingHints
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCopyCommand
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDataFormatConversionConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamDeserializer
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchBufferingHints
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamHiveJsonSerDe
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamInputFormatConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKMSEncryptionConfig
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOpenXJsonSerDe
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOrcSerDe
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamOutputFormatConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamParquetSerDe
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSchemaConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSerializer
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions
       Stratosphere.ResourceProperties.KinesisStreamStreamEncryption
@@ -755,6 +795,15 @@
       Stratosphere.ResourceProperties.LambdaLayerVersionContent
       Stratosphere.ResourceProperties.LogsMetricFilterMetricTransformation
       Stratosphere.ResourceProperties.MediaStoreContainerCorsRule
+      Stratosphere.ResourceProperties.MSKClusterBrokerNodeGroupInfo
+      Stratosphere.ResourceProperties.MSKClusterClientAuthentication
+      Stratosphere.ResourceProperties.MSKClusterConfigurationInfo
+      Stratosphere.ResourceProperties.MSKClusterEBSStorageInfo
+      Stratosphere.ResourceProperties.MSKClusterEncryptionAtRest
+      Stratosphere.ResourceProperties.MSKClusterEncryptionInfo
+      Stratosphere.ResourceProperties.MSKClusterEncryptionInTransit
+      Stratosphere.ResourceProperties.MSKClusterStorageInfo
+      Stratosphere.ResourceProperties.MSKClusterTls
       Stratosphere.ResourceProperties.OpsWorksAppDataSource
       Stratosphere.ResourceProperties.OpsWorksAppEnvironmentVariable
       Stratosphere.ResourceProperties.OpsWorksAppSource
@@ -774,6 +823,23 @@
       Stratosphere.ResourceProperties.OpsWorksStackRdsDbInstance
       Stratosphere.ResourceProperties.OpsWorksStackSource
       Stratosphere.ResourceProperties.OpsWorksStackStackConfigurationManager
+      Stratosphere.ResourceProperties.PinpointApplicationSettingsCampaignHook
+      Stratosphere.ResourceProperties.PinpointApplicationSettingsLimits
+      Stratosphere.ResourceProperties.PinpointApplicationSettingsQuietTime
+      Stratosphere.ResourceProperties.PinpointCampaignAttributeDimension
+      Stratosphere.ResourceProperties.PinpointCampaignCampaignEmailMessage
+      Stratosphere.ResourceProperties.PinpointCampaignCampaignEventFilter
+      Stratosphere.ResourceProperties.PinpointCampaignCampaignHook
+      Stratosphere.ResourceProperties.PinpointCampaignCampaignSmsMessage
+      Stratosphere.ResourceProperties.PinpointCampaignEventDimensions
+      Stratosphere.ResourceProperties.PinpointCampaignLimits
+      Stratosphere.ResourceProperties.PinpointCampaignMessage
+      Stratosphere.ResourceProperties.PinpointCampaignMessageConfiguration
+      Stratosphere.ResourceProperties.PinpointCampaignMetricDimension
+      Stratosphere.ResourceProperties.PinpointCampaignQuietTime
+      Stratosphere.ResourceProperties.PinpointCampaignSchedule
+      Stratosphere.ResourceProperties.PinpointCampaignSetDimension
+      Stratosphere.ResourceProperties.PinpointCampaignWriteTreatmentResource
       Stratosphere.ResourceProperties.PinpointEmailConfigurationSetDeliveryOptions
       Stratosphere.ResourceProperties.PinpointEmailConfigurationSetEventDestinationCloudWatchDestination
       Stratosphere.ResourceProperties.PinpointEmailConfigurationSetEventDestinationDimensionConfiguration
@@ -788,6 +854,18 @@
       Stratosphere.ResourceProperties.PinpointEmailDedicatedIpPoolTags
       Stratosphere.ResourceProperties.PinpointEmailIdentityMailFromAttributes
       Stratosphere.ResourceProperties.PinpointEmailIdentityTags
+      Stratosphere.ResourceProperties.PinpointSegmentAttributeDimension
+      Stratosphere.ResourceProperties.PinpointSegmentBehavior
+      Stratosphere.ResourceProperties.PinpointSegmentCoordinates
+      Stratosphere.ResourceProperties.PinpointSegmentDemographic
+      Stratosphere.ResourceProperties.PinpointSegmentGPSPoint
+      Stratosphere.ResourceProperties.PinpointSegmentGroups
+      Stratosphere.ResourceProperties.PinpointSegmentLocation
+      Stratosphere.ResourceProperties.PinpointSegmentRecency
+      Stratosphere.ResourceProperties.PinpointSegmentSegmentDimensions
+      Stratosphere.ResourceProperties.PinpointSegmentSegmentGroups
+      Stratosphere.ResourceProperties.PinpointSegmentSetDimension
+      Stratosphere.ResourceProperties.PinpointSegmentSourceSegments
       Stratosphere.ResourceProperties.RDSDBClusterScalingConfiguration
       Stratosphere.ResourceProperties.RDSDBInstanceProcessorFeature
       Stratosphere.ResourceProperties.RDSDBSecurityGroupIngressProperty
@@ -823,6 +901,7 @@
       Stratosphere.ResourceProperties.S3BucketCorsConfiguration
       Stratosphere.ResourceProperties.S3BucketCorsRule
       Stratosphere.ResourceProperties.S3BucketDataExport
+      Stratosphere.ResourceProperties.S3BucketDefaultRetention
       Stratosphere.ResourceProperties.S3BucketDestination
       Stratosphere.ResourceProperties.S3BucketEncryptionConfiguration
       Stratosphere.ResourceProperties.S3BucketFilterRule
@@ -834,6 +913,8 @@
       Stratosphere.ResourceProperties.S3BucketNoncurrentVersionTransition
       Stratosphere.ResourceProperties.S3BucketNotificationConfiguration
       Stratosphere.ResourceProperties.S3BucketNotificationFilter
+      Stratosphere.ResourceProperties.S3BucketObjectLockConfiguration
+      Stratosphere.ResourceProperties.S3BucketObjectLockRule
       Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration
       Stratosphere.ResourceProperties.S3BucketQueueConfiguration
       Stratosphere.ResourceProperties.S3BucketRedirectAllRequestsTo
@@ -937,6 +1018,9 @@
       Stratosphere.Resources.AmazonMQBroker
       Stratosphere.Resources.AmazonMQConfiguration
       Stratosphere.Resources.AmazonMQConfigurationAssociation
+      Stratosphere.Resources.AmplifyApp
+      Stratosphere.Resources.AmplifyBranch
+      Stratosphere.Resources.AmplifyDomain
       Stratosphere.Resources.ApiGatewayAccount
       Stratosphere.Resources.ApiGatewayApiKey
       Stratosphere.Resources.ApiGatewayAuthorizer
@@ -1051,6 +1135,10 @@
       Stratosphere.Resources.DocDBDBSubnetGroup
       Stratosphere.Resources.DynamoDBTable
       Stratosphere.Resources.EC2CapacityReservation
+      Stratosphere.Resources.EC2ClientVpnAuthorizationRule
+      Stratosphere.Resources.EC2ClientVpnEndpoint
+      Stratosphere.Resources.EC2ClientVpnRoute
+      Stratosphere.Resources.EC2ClientVpnTargetNetworkAssociation
       Stratosphere.Resources.EC2CustomerGateway
       Stratosphere.Resources.EC2DHCPOptions
       Stratosphere.Resources.EC2EC2Fleet
@@ -1191,6 +1279,7 @@
       Stratosphere.Resources.IoTPolicyPrincipalAttachment
       Stratosphere.Resources.IoTThing
       Stratosphere.Resources.IoTThingPrincipalAttachment
+      Stratosphere.Resources.IoTThingsGraphFlowTemplate
       Stratosphere.Resources.IoTTopicRule
       Stratosphere.Resources.KinesisAnalyticsApplication
       Stratosphere.Resources.KinesisAnalyticsApplicationOutput
@@ -1217,6 +1306,7 @@
       Stratosphere.Resources.LogsMetricFilter
       Stratosphere.Resources.LogsSubscriptionFilter
       Stratosphere.Resources.MediaStoreContainer
+      Stratosphere.Resources.MSKCluster
       Stratosphere.Resources.NeptuneDBCluster
       Stratosphere.Resources.NeptuneDBClusterParameterGroup
       Stratosphere.Resources.NeptuneDBInstance
@@ -1230,10 +1320,25 @@
       Stratosphere.Resources.OpsWorksStack
       Stratosphere.Resources.OpsWorksUserProfile
       Stratosphere.Resources.OpsWorksVolume
+      Stratosphere.Resources.PinpointADMChannel
+      Stratosphere.Resources.PinpointAPNSChannel
+      Stratosphere.Resources.PinpointAPNSSandboxChannel
+      Stratosphere.Resources.PinpointAPNSVoipChannel
+      Stratosphere.Resources.PinpointAPNSVoipSandboxChannel
+      Stratosphere.Resources.PinpointApp
+      Stratosphere.Resources.PinpointApplicationSettings
+      Stratosphere.Resources.PinpointBaiduChannel
+      Stratosphere.Resources.PinpointCampaign
+      Stratosphere.Resources.PinpointEmailChannel
       Stratosphere.Resources.PinpointEmailConfigurationSet
       Stratosphere.Resources.PinpointEmailConfigurationSetEventDestination
       Stratosphere.Resources.PinpointEmailDedicatedIpPool
       Stratosphere.Resources.PinpointEmailIdentity
+      Stratosphere.Resources.PinpointEventStream
+      Stratosphere.Resources.PinpointGCMChannel
+      Stratosphere.Resources.PinpointSegment
+      Stratosphere.Resources.PinpointSMSChannel
+      Stratosphere.Resources.PinpointVoiceChannel
       Stratosphere.Resources.RAMResourceShare
       Stratosphere.Resources.RDSDBCluster
       Stratosphere.Resources.RDSDBClusterParameterGroup
