diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.24.2
+
+* Update resource specification document to version 2.5.0
+
 ## 0.24.1
 
 * Update resource specification document to support EKS
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerConfigurationId.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerConfigurationId.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerConfigurationId.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-configurationid.html
+
+module Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmazonMQBrokerConfigurationId. See
+-- 'amazonMQBrokerConfigurationId' for a more convenient constructor.
+data AmazonMQBrokerConfigurationId =
+  AmazonMQBrokerConfigurationId
+  { _amazonMQBrokerConfigurationIdId :: Val Text
+  , _amazonMQBrokerConfigurationIdRevision :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON AmazonMQBrokerConfigurationId where
+  toJSON AmazonMQBrokerConfigurationId{..} =
+    object $
+    catMaybes
+    [ (Just . ("Id",) . toJSON) _amazonMQBrokerConfigurationIdId
+    , (Just . ("Revision",) . toJSON . fmap Integer') _amazonMQBrokerConfigurationIdRevision
+    ]
+
+instance FromJSON AmazonMQBrokerConfigurationId where
+  parseJSON (Object obj) =
+    AmazonMQBrokerConfigurationId <$>
+      (obj .: "Id") <*>
+      fmap (fmap unInteger') (obj .: "Revision")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AmazonMQBrokerConfigurationId' containing required
+-- fields as arguments.
+amazonMQBrokerConfigurationId
+  :: Val Text -- ^ 'amqbciId'
+  -> Val Integer -- ^ 'amqbciRevision'
+  -> AmazonMQBrokerConfigurationId
+amazonMQBrokerConfigurationId idarg revisionarg =
+  AmazonMQBrokerConfigurationId
+  { _amazonMQBrokerConfigurationIdId = idarg
+  , _amazonMQBrokerConfigurationIdRevision = revisionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-configurationid.html#cfn-amazonmq-broker-configurationid-id
+amqbciId :: Lens' AmazonMQBrokerConfigurationId (Val Text)
+amqbciId = lens _amazonMQBrokerConfigurationIdId (\s a -> s { _amazonMQBrokerConfigurationIdId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-configurationid.html#cfn-amazonmq-broker-configurationid-revision
+amqbciRevision :: Lens' AmazonMQBrokerConfigurationId (Val Integer)
+amqbciRevision = lens _amazonMQBrokerConfigurationIdRevision (\s a -> s { _amazonMQBrokerConfigurationIdRevision = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerMaintenanceWindow.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html
+
+module Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmazonMQBrokerMaintenanceWindow. See
+-- 'amazonMQBrokerMaintenanceWindow' for a more convenient constructor.
+data AmazonMQBrokerMaintenanceWindow =
+  AmazonMQBrokerMaintenanceWindow
+  { _amazonMQBrokerMaintenanceWindowDayOfWeek :: Val Text
+  , _amazonMQBrokerMaintenanceWindowTimeOfDay :: Val Text
+  , _amazonMQBrokerMaintenanceWindowTimeZone :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmazonMQBrokerMaintenanceWindow where
+  toJSON AmazonMQBrokerMaintenanceWindow{..} =
+    object $
+    catMaybes
+    [ (Just . ("DayOfWeek",) . toJSON) _amazonMQBrokerMaintenanceWindowDayOfWeek
+    , (Just . ("TimeOfDay",) . toJSON) _amazonMQBrokerMaintenanceWindowTimeOfDay
+    , (Just . ("TimeZone",) . toJSON) _amazonMQBrokerMaintenanceWindowTimeZone
+    ]
+
+instance FromJSON AmazonMQBrokerMaintenanceWindow where
+  parseJSON (Object obj) =
+    AmazonMQBrokerMaintenanceWindow <$>
+      (obj .: "DayOfWeek") <*>
+      (obj .: "TimeOfDay") <*>
+      (obj .: "TimeZone")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AmazonMQBrokerMaintenanceWindow' containing required
+-- fields as arguments.
+amazonMQBrokerMaintenanceWindow
+  :: Val Text -- ^ 'amqbmwDayOfWeek'
+  -> Val Text -- ^ 'amqbmwTimeOfDay'
+  -> Val Text -- ^ 'amqbmwTimeZone'
+  -> AmazonMQBrokerMaintenanceWindow
+amazonMQBrokerMaintenanceWindow dayOfWeekarg timeOfDayarg timeZonearg =
+  AmazonMQBrokerMaintenanceWindow
+  { _amazonMQBrokerMaintenanceWindowDayOfWeek = dayOfWeekarg
+  , _amazonMQBrokerMaintenanceWindowTimeOfDay = timeOfDayarg
+  , _amazonMQBrokerMaintenanceWindowTimeZone = timeZonearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-dayofweek
+amqbmwDayOfWeek :: Lens' AmazonMQBrokerMaintenanceWindow (Val Text)
+amqbmwDayOfWeek = lens _amazonMQBrokerMaintenanceWindowDayOfWeek (\s a -> s { _amazonMQBrokerMaintenanceWindowDayOfWeek = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-timeofday
+amqbmwTimeOfDay :: Lens' AmazonMQBrokerMaintenanceWindow (Val Text)
+amqbmwTimeOfDay = lens _amazonMQBrokerMaintenanceWindowTimeOfDay (\s a -> s { _amazonMQBrokerMaintenanceWindowTimeOfDay = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-timezone
+amqbmwTimeZone :: Lens' AmazonMQBrokerMaintenanceWindow (Val Text)
+amqbmwTimeZone = lens _amazonMQBrokerMaintenanceWindowTimeZone (\s a -> s { _amazonMQBrokerMaintenanceWindowTimeZone = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQBrokerUser.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html
+
+module Stratosphere.ResourceProperties.AmazonMQBrokerUser where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmazonMQBrokerUser. See
+-- 'amazonMQBrokerUser' for a more convenient constructor.
+data AmazonMQBrokerUser =
+  AmazonMQBrokerUser
+  { _amazonMQBrokerUserConsoleAccess :: Maybe (Val Bool)
+  , _amazonMQBrokerUserGroups :: Maybe (ValList Text)
+  , _amazonMQBrokerUserPassword :: Val Text
+  , _amazonMQBrokerUserUsername :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmazonMQBrokerUser where
+  toJSON AmazonMQBrokerUser{..} =
+    object $
+    catMaybes
+    [ fmap (("ConsoleAccess",) . toJSON . fmap Bool') _amazonMQBrokerUserConsoleAccess
+    , fmap (("Groups",) . toJSON) _amazonMQBrokerUserGroups
+    , (Just . ("Password",) . toJSON) _amazonMQBrokerUserPassword
+    , (Just . ("Username",) . toJSON) _amazonMQBrokerUserUsername
+    ]
+
+instance FromJSON AmazonMQBrokerUser where
+  parseJSON (Object obj) =
+    AmazonMQBrokerUser <$>
+      fmap (fmap (fmap unBool')) (obj .:? "ConsoleAccess") <*>
+      (obj .:? "Groups") <*>
+      (obj .: "Password") <*>
+      (obj .: "Username")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AmazonMQBrokerUser' containing required fields as
+-- arguments.
+amazonMQBrokerUser
+  :: Val Text -- ^ 'amqbuPassword'
+  -> Val Text -- ^ 'amqbuUsername'
+  -> AmazonMQBrokerUser
+amazonMQBrokerUser passwordarg usernamearg =
+  AmazonMQBrokerUser
+  { _amazonMQBrokerUserConsoleAccess = Nothing
+  , _amazonMQBrokerUserGroups = Nothing
+  , _amazonMQBrokerUserPassword = passwordarg
+  , _amazonMQBrokerUserUsername = usernamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-consoleaccess
+amqbuConsoleAccess :: Lens' AmazonMQBrokerUser (Maybe (Val Bool))
+amqbuConsoleAccess = lens _amazonMQBrokerUserConsoleAccess (\s a -> s { _amazonMQBrokerUserConsoleAccess = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-groups
+amqbuGroups :: Lens' AmazonMQBrokerUser (Maybe (ValList Text))
+amqbuGroups = lens _amazonMQBrokerUserGroups (\s a -> s { _amazonMQBrokerUserGroups = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-password
+amqbuPassword :: Lens' AmazonMQBrokerUser (Val Text)
+amqbuPassword = lens _amazonMQBrokerUserPassword (\s a -> s { _amazonMQBrokerUserPassword = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-username
+amqbuUsername :: Lens' AmazonMQBrokerUser (Val Text)
+amqbuUsername = lens _amazonMQBrokerUserUsername (\s a -> s { _amazonMQBrokerUserUsername = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-httpconfig.html
+
+module Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppSyncDataSourceHttpConfig. See
+-- 'appSyncDataSourceHttpConfig' for a more convenient constructor.
+data AppSyncDataSourceHttpConfig =
+  AppSyncDataSourceHttpConfig
+  { _appSyncDataSourceHttpConfigEndpoint :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncDataSourceHttpConfig where
+  toJSON AppSyncDataSourceHttpConfig{..} =
+    object $
+    catMaybes
+    [ (Just . ("Endpoint",) . toJSON) _appSyncDataSourceHttpConfigEndpoint
+    ]
+
+instance FromJSON AppSyncDataSourceHttpConfig where
+  parseJSON (Object obj) =
+    AppSyncDataSourceHttpConfig <$>
+      (obj .: "Endpoint")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncDataSourceHttpConfig' containing required fields
+-- as arguments.
+appSyncDataSourceHttpConfig
+  :: Val Text -- ^ 'asdshcEndpoint'
+  -> AppSyncDataSourceHttpConfig
+appSyncDataSourceHttpConfig endpointarg =
+  AppSyncDataSourceHttpConfig
+  { _appSyncDataSourceHttpConfigEndpoint = endpointarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-httpconfig.html#cfn-appsync-datasource-httpconfig-endpoint
+asdshcEndpoint :: Lens' AppSyncDataSourceHttpConfig (Val Text)
+asdshcEndpoint = lens _appSyncDataSourceHttpConfigEndpoint (\s a -> s { _appSyncDataSourceHttpConfigEndpoint = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
@@ -13,7 +13,8 @@
 -- 'codeBuildProjectEnvironment' for a more convenient constructor.
 data CodeBuildProjectEnvironment =
   CodeBuildProjectEnvironment
-  { _codeBuildProjectEnvironmentComputeType :: Val Text
+  { _codeBuildProjectEnvironmentCertificate :: Maybe (Val Text)
+  , _codeBuildProjectEnvironmentComputeType :: Val Text
   , _codeBuildProjectEnvironmentEnvironmentVariables :: Maybe [CodeBuildProjectEnvironmentVariable]
   , _codeBuildProjectEnvironmentImage :: Val Text
   , _codeBuildProjectEnvironmentPrivilegedMode :: Maybe (Val Bool)
@@ -24,7 +25,8 @@
   toJSON CodeBuildProjectEnvironment{..} =
     object $
     catMaybes
-    [ (Just . ("ComputeType",) . toJSON) _codeBuildProjectEnvironmentComputeType
+    [ fmap (("Certificate",) . toJSON) _codeBuildProjectEnvironmentCertificate
+    , (Just . ("ComputeType",) . toJSON) _codeBuildProjectEnvironmentComputeType
     , fmap (("EnvironmentVariables",) . toJSON) _codeBuildProjectEnvironmentEnvironmentVariables
     , (Just . ("Image",) . toJSON) _codeBuildProjectEnvironmentImage
     , fmap (("PrivilegedMode",) . toJSON . fmap Bool') _codeBuildProjectEnvironmentPrivilegedMode
@@ -34,6 +36,7 @@
 instance FromJSON CodeBuildProjectEnvironment where
   parseJSON (Object obj) =
     CodeBuildProjectEnvironment <$>
+      (obj .:? "Certificate") <*>
       (obj .: "ComputeType") <*>
       (obj .:? "EnvironmentVariables") <*>
       (obj .: "Image") <*>
@@ -50,12 +53,17 @@
   -> CodeBuildProjectEnvironment
 codeBuildProjectEnvironment computeTypearg imagearg typearg =
   CodeBuildProjectEnvironment
-  { _codeBuildProjectEnvironmentComputeType = computeTypearg
+  { _codeBuildProjectEnvironmentCertificate = Nothing
+  , _codeBuildProjectEnvironmentComputeType = computeTypearg
   , _codeBuildProjectEnvironmentEnvironmentVariables = Nothing
   , _codeBuildProjectEnvironmentImage = imagearg
   , _codeBuildProjectEnvironmentPrivilegedMode = Nothing
   , _codeBuildProjectEnvironmentType = typearg
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-certificate
+cbpeCertificate :: Lens' CodeBuildProjectEnvironment (Maybe (Val Text))
+cbpeCertificate = lens _codeBuildProjectEnvironmentCertificate (\s a -> s { _codeBuildProjectEnvironmentCertificate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-computetype
 cbpeComputeType :: Lens' CodeBuildProjectEnvironment (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectSource.hs
@@ -18,6 +18,7 @@
   , _codeBuildProjectSourceGitCloneDepth :: Maybe (Val Integer)
   , _codeBuildProjectSourceInsecureSsl :: Maybe (Val Bool)
   , _codeBuildProjectSourceLocation :: Maybe (Val Text)
+  , _codeBuildProjectSourceReportBuildStatus :: Maybe (Val Bool)
   , _codeBuildProjectSourceType :: Val Text
   } deriving (Show, Eq)
 
@@ -30,6 +31,7 @@
     , fmap (("GitCloneDepth",) . toJSON . fmap Integer') _codeBuildProjectSourceGitCloneDepth
     , fmap (("InsecureSsl",) . toJSON . fmap Bool') _codeBuildProjectSourceInsecureSsl
     , fmap (("Location",) . toJSON) _codeBuildProjectSourceLocation
+    , fmap (("ReportBuildStatus",) . toJSON . fmap Bool') _codeBuildProjectSourceReportBuildStatus
     , (Just . ("Type",) . toJSON) _codeBuildProjectSourceType
     ]
 
@@ -41,6 +43,7 @@
       fmap (fmap (fmap unInteger')) (obj .:? "GitCloneDepth") <*>
       fmap (fmap (fmap unBool')) (obj .:? "InsecureSsl") <*>
       (obj .:? "Location") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ReportBuildStatus") <*>
       (obj .: "Type")
   parseJSON _ = mempty
 
@@ -56,6 +59,7 @@
   , _codeBuildProjectSourceGitCloneDepth = Nothing
   , _codeBuildProjectSourceInsecureSsl = Nothing
   , _codeBuildProjectSourceLocation = Nothing
+  , _codeBuildProjectSourceReportBuildStatus = Nothing
   , _codeBuildProjectSourceType = typearg
   }
 
@@ -78,6 +82,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-location
 cbpsLocation :: Lens' CodeBuildProjectSource (Maybe (Val Text))
 cbpsLocation = lens _codeBuildProjectSourceLocation (\s a -> s { _codeBuildProjectSourceLocation = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-reportbuildstatus
+cbpsReportBuildStatus :: Lens' CodeBuildProjectSource (Maybe (Val Bool))
+cbpsReportBuildStatus = lens _codeBuildProjectSourceReportBuildStatus (\s a -> s { _codeBuildProjectSourceReportBuildStatus = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-type
 cbpsType :: Lens' CodeBuildProjectSource (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookAuthConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookAuthConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookAuthConfiguration.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html
+
+module Stratosphere.ResourceProperties.CodePipelineWebhookWebhookAuthConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- CodePipelineWebhookWebhookAuthConfiguration. See
+-- 'codePipelineWebhookWebhookAuthConfiguration' for a more convenient
+-- constructor.
+data CodePipelineWebhookWebhookAuthConfiguration =
+  CodePipelineWebhookWebhookAuthConfiguration
+  { _codePipelineWebhookWebhookAuthConfigurationAllowedIPRange :: Maybe (Val Text)
+  , _codePipelineWebhookWebhookAuthConfigurationSecretToken :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CodePipelineWebhookWebhookAuthConfiguration where
+  toJSON CodePipelineWebhookWebhookAuthConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("AllowedIPRange",) . toJSON) _codePipelineWebhookWebhookAuthConfigurationAllowedIPRange
+    , fmap (("SecretToken",) . toJSON) _codePipelineWebhookWebhookAuthConfigurationSecretToken
+    ]
+
+instance FromJSON CodePipelineWebhookWebhookAuthConfiguration where
+  parseJSON (Object obj) =
+    CodePipelineWebhookWebhookAuthConfiguration <$>
+      (obj .:? "AllowedIPRange") <*>
+      (obj .:? "SecretToken")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CodePipelineWebhookWebhookAuthConfiguration' containing
+-- required fields as arguments.
+codePipelineWebhookWebhookAuthConfiguration
+  :: CodePipelineWebhookWebhookAuthConfiguration
+codePipelineWebhookWebhookAuthConfiguration  =
+  CodePipelineWebhookWebhookAuthConfiguration
+  { _codePipelineWebhookWebhookAuthConfigurationAllowedIPRange = Nothing
+  , _codePipelineWebhookWebhookAuthConfigurationSecretToken = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html#cfn-codepipeline-webhook-webhookauthconfiguration-allowediprange
+cpwwacAllowedIPRange :: Lens' CodePipelineWebhookWebhookAuthConfiguration (Maybe (Val Text))
+cpwwacAllowedIPRange = lens _codePipelineWebhookWebhookAuthConfigurationAllowedIPRange (\s a -> s { _codePipelineWebhookWebhookAuthConfigurationAllowedIPRange = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html#cfn-codepipeline-webhook-webhookauthconfiguration-secrettoken
+cpwwacSecretToken :: Lens' CodePipelineWebhookWebhookAuthConfiguration (Maybe (Val Text))
+cpwwacSecretToken = lens _codePipelineWebhookWebhookAuthConfigurationSecretToken (\s a -> s { _codePipelineWebhookWebhookAuthConfigurationSecretToken = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookFilterRule.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookFilterRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelineWebhookWebhookFilterRule.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html
+
+module Stratosphere.ResourceProperties.CodePipelineWebhookWebhookFilterRule where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CodePipelineWebhookWebhookFilterRule. See
+-- 'codePipelineWebhookWebhookFilterRule' for a more convenient constructor.
+data CodePipelineWebhookWebhookFilterRule =
+  CodePipelineWebhookWebhookFilterRule
+  { _codePipelineWebhookWebhookFilterRuleJsonPath :: Val Text
+  , _codePipelineWebhookWebhookFilterRuleMatchEquals :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CodePipelineWebhookWebhookFilterRule where
+  toJSON CodePipelineWebhookWebhookFilterRule{..} =
+    object $
+    catMaybes
+    [ (Just . ("JsonPath",) . toJSON) _codePipelineWebhookWebhookFilterRuleJsonPath
+    , fmap (("MatchEquals",) . toJSON) _codePipelineWebhookWebhookFilterRuleMatchEquals
+    ]
+
+instance FromJSON CodePipelineWebhookWebhookFilterRule where
+  parseJSON (Object obj) =
+    CodePipelineWebhookWebhookFilterRule <$>
+      (obj .: "JsonPath") <*>
+      (obj .:? "MatchEquals")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CodePipelineWebhookWebhookFilterRule' containing
+-- required fields as arguments.
+codePipelineWebhookWebhookFilterRule
+  :: Val Text -- ^ 'cpwwfrJsonPath'
+  -> CodePipelineWebhookWebhookFilterRule
+codePipelineWebhookWebhookFilterRule jsonPatharg =
+  CodePipelineWebhookWebhookFilterRule
+  { _codePipelineWebhookWebhookFilterRuleJsonPath = jsonPatharg
+  , _codePipelineWebhookWebhookFilterRuleMatchEquals = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html#cfn-codepipeline-webhook-webhookfilterrule-jsonpath
+cpwwfrJsonPath :: Lens' CodePipelineWebhookWebhookFilterRule (Val Text)
+cpwwfrJsonPath = lens _codePipelineWebhookWebhookFilterRuleJsonPath (\s a -> s { _codePipelineWebhookWebhookFilterRuleJsonPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html#cfn-codepipeline-webhook-webhookfilterrule-matchequals
+cpwwfrMatchEquals :: Lens' CodePipelineWebhookWebhookFilterRule (Maybe (Val Text))
+cpwwfrMatchEquals = lens _codePipelineWebhookWebhookFilterRuleMatchEquals (\s a -> s { _codePipelineWebhookWebhookFilterRuleMatchEquals = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html
+
+module Stratosphere.ResourceProperties.SageMakerEndpointConfigProductionVariant where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for SageMakerEndpointConfigProductionVariant.
+-- See 'sageMakerEndpointConfigProductionVariant' for a more convenient
+-- constructor.
+data SageMakerEndpointConfigProductionVariant =
+  SageMakerEndpointConfigProductionVariant
+  { _sageMakerEndpointConfigProductionVariantInitialInstanceCount :: Val Integer
+  , _sageMakerEndpointConfigProductionVariantInitialVariantWeight :: Val Double
+  , _sageMakerEndpointConfigProductionVariantInstanceType :: Val Text
+  , _sageMakerEndpointConfigProductionVariantModelName :: Val Text
+  , _sageMakerEndpointConfigProductionVariantVariantName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerEndpointConfigProductionVariant where
+  toJSON SageMakerEndpointConfigProductionVariant{..} =
+    object $
+    catMaybes
+    [ (Just . ("InitialInstanceCount",) . toJSON . fmap Integer') _sageMakerEndpointConfigProductionVariantInitialInstanceCount
+    , (Just . ("InitialVariantWeight",) . toJSON . fmap Double') _sageMakerEndpointConfigProductionVariantInitialVariantWeight
+    , (Just . ("InstanceType",) . toJSON) _sageMakerEndpointConfigProductionVariantInstanceType
+    , (Just . ("ModelName",) . toJSON) _sageMakerEndpointConfigProductionVariantModelName
+    , (Just . ("VariantName",) . toJSON) _sageMakerEndpointConfigProductionVariantVariantName
+    ]
+
+instance FromJSON SageMakerEndpointConfigProductionVariant where
+  parseJSON (Object obj) =
+    SageMakerEndpointConfigProductionVariant <$>
+      fmap (fmap unInteger') (obj .: "InitialInstanceCount") <*>
+      fmap (fmap unDouble') (obj .: "InitialVariantWeight") <*>
+      (obj .: "InstanceType") <*>
+      (obj .: "ModelName") <*>
+      (obj .: "VariantName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerEndpointConfigProductionVariant' containing
+-- required fields as arguments.
+sageMakerEndpointConfigProductionVariant
+  :: Val Integer -- ^ 'smecpvInitialInstanceCount'
+  -> Val Double -- ^ 'smecpvInitialVariantWeight'
+  -> Val Text -- ^ 'smecpvInstanceType'
+  -> Val Text -- ^ 'smecpvModelName'
+  -> Val Text -- ^ 'smecpvVariantName'
+  -> SageMakerEndpointConfigProductionVariant
+sageMakerEndpointConfigProductionVariant initialInstanceCountarg initialVariantWeightarg instanceTypearg modelNamearg variantNamearg =
+  SageMakerEndpointConfigProductionVariant
+  { _sageMakerEndpointConfigProductionVariantInitialInstanceCount = initialInstanceCountarg
+  , _sageMakerEndpointConfigProductionVariantInitialVariantWeight = initialVariantWeightarg
+  , _sageMakerEndpointConfigProductionVariantInstanceType = instanceTypearg
+  , _sageMakerEndpointConfigProductionVariantModelName = modelNamearg
+  , _sageMakerEndpointConfigProductionVariantVariantName = variantNamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-initialinstancecount
+smecpvInitialInstanceCount :: Lens' SageMakerEndpointConfigProductionVariant (Val Integer)
+smecpvInitialInstanceCount = lens _sageMakerEndpointConfigProductionVariantInitialInstanceCount (\s a -> s { _sageMakerEndpointConfigProductionVariantInitialInstanceCount = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-initialvariantweight
+smecpvInitialVariantWeight :: Lens' SageMakerEndpointConfigProductionVariant (Val Double)
+smecpvInitialVariantWeight = lens _sageMakerEndpointConfigProductionVariantInitialVariantWeight (\s a -> s { _sageMakerEndpointConfigProductionVariantInitialVariantWeight = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-instancetype
+smecpvInstanceType :: Lens' SageMakerEndpointConfigProductionVariant (Val Text)
+smecpvInstanceType = lens _sageMakerEndpointConfigProductionVariantInstanceType (\s a -> s { _sageMakerEndpointConfigProductionVariantInstanceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-modelname
+smecpvModelName :: Lens' SageMakerEndpointConfigProductionVariant (Val Text)
+smecpvModelName = lens _sageMakerEndpointConfigProductionVariantModelName (\s a -> s { _sageMakerEndpointConfigProductionVariantModelName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-variantname
+smecpvVariantName :: Lens' SageMakerEndpointConfigProductionVariant (Val Text)
+smecpvVariantName = lens _sageMakerEndpointConfigProductionVariantVariantName (\s a -> s { _sageMakerEndpointConfigProductionVariantVariantName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerModelContainerDefinition.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html
+
+module Stratosphere.ResourceProperties.SageMakerModelContainerDefinition where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for SageMakerModelContainerDefinition. See
+-- 'sageMakerModelContainerDefinition' for a more convenient constructor.
+data SageMakerModelContainerDefinition =
+  SageMakerModelContainerDefinition
+  { _sageMakerModelContainerDefinitionContainerHostname :: Maybe (Val Text)
+  , _sageMakerModelContainerDefinitionEnvironment :: Maybe Object
+  , _sageMakerModelContainerDefinitionImage :: Val Text
+  , _sageMakerModelContainerDefinitionModelDataUrl :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerModelContainerDefinition where
+  toJSON SageMakerModelContainerDefinition{..} =
+    object $
+    catMaybes
+    [ fmap (("ContainerHostname",) . toJSON) _sageMakerModelContainerDefinitionContainerHostname
+    , fmap (("Environment",) . toJSON) _sageMakerModelContainerDefinitionEnvironment
+    , (Just . ("Image",) . toJSON) _sageMakerModelContainerDefinitionImage
+    , fmap (("ModelDataUrl",) . toJSON) _sageMakerModelContainerDefinitionModelDataUrl
+    ]
+
+instance FromJSON SageMakerModelContainerDefinition where
+  parseJSON (Object obj) =
+    SageMakerModelContainerDefinition <$>
+      (obj .:? "ContainerHostname") <*>
+      (obj .:? "Environment") <*>
+      (obj .: "Image") <*>
+      (obj .:? "ModelDataUrl")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerModelContainerDefinition' containing required
+-- fields as arguments.
+sageMakerModelContainerDefinition
+  :: Val Text -- ^ 'smmcdImage'
+  -> SageMakerModelContainerDefinition
+sageMakerModelContainerDefinition imagearg =
+  SageMakerModelContainerDefinition
+  { _sageMakerModelContainerDefinitionContainerHostname = Nothing
+  , _sageMakerModelContainerDefinitionEnvironment = Nothing
+  , _sageMakerModelContainerDefinitionImage = imagearg
+  , _sageMakerModelContainerDefinitionModelDataUrl = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-containerhostname
+smmcdContainerHostname :: Lens' SageMakerModelContainerDefinition (Maybe (Val Text))
+smmcdContainerHostname = lens _sageMakerModelContainerDefinitionContainerHostname (\s a -> s { _sageMakerModelContainerDefinitionContainerHostname = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-environment
+smmcdEnvironment :: Lens' SageMakerModelContainerDefinition (Maybe Object)
+smmcdEnvironment = lens _sageMakerModelContainerDefinitionEnvironment (\s a -> s { _sageMakerModelContainerDefinitionEnvironment = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-image
+smmcdImage :: Lens' SageMakerModelContainerDefinition (Val Text)
+smmcdImage = lens _sageMakerModelContainerDefinitionImage (\s a -> s { _sageMakerModelContainerDefinitionImage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-modeldataurl
+smmcdModelDataUrl :: Lens' SageMakerModelContainerDefinition (Maybe (Val Text))
+smmcdModelDataUrl = lens _sageMakerModelContainerDefinitionModelDataUrl (\s a -> s { _sageMakerModelContainerDefinitionModelDataUrl = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerModelVpcConfig.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerModelVpcConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerModelVpcConfig.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html
+
+module Stratosphere.ResourceProperties.SageMakerModelVpcConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for SageMakerModelVpcConfig. See
+-- 'sageMakerModelVpcConfig' for a more convenient constructor.
+data SageMakerModelVpcConfig =
+  SageMakerModelVpcConfig
+  { _sageMakerModelVpcConfigSecurityGroupIds :: ValList Text
+  , _sageMakerModelVpcConfigSubnets :: ValList Text
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerModelVpcConfig where
+  toJSON SageMakerModelVpcConfig{..} =
+    object $
+    catMaybes
+    [ (Just . ("SecurityGroupIds",) . toJSON) _sageMakerModelVpcConfigSecurityGroupIds
+    , (Just . ("Subnets",) . toJSON) _sageMakerModelVpcConfigSubnets
+    ]
+
+instance FromJSON SageMakerModelVpcConfig where
+  parseJSON (Object obj) =
+    SageMakerModelVpcConfig <$>
+      (obj .: "SecurityGroupIds") <*>
+      (obj .: "Subnets")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerModelVpcConfig' containing required fields as
+-- arguments.
+sageMakerModelVpcConfig
+  :: ValList Text -- ^ 'smmvcSecurityGroupIds'
+  -> ValList Text -- ^ 'smmvcSubnets'
+  -> SageMakerModelVpcConfig
+sageMakerModelVpcConfig securityGroupIdsarg subnetsarg =
+  SageMakerModelVpcConfig
+  { _sageMakerModelVpcConfigSecurityGroupIds = securityGroupIdsarg
+  , _sageMakerModelVpcConfigSubnets = subnetsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html#cfn-sagemaker-model-vpcconfig-securitygroupids
+smmvcSecurityGroupIds :: Lens' SageMakerModelVpcConfig (ValList Text)
+smmvcSecurityGroupIds = lens _sageMakerModelVpcConfigSecurityGroupIds (\s a -> s { _sageMakerModelVpcConfigSecurityGroupIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html#cfn-sagemaker-model-vpcconfig-subnets
+smmvcSubnets :: Lens' SageMakerModelVpcConfig (ValList Text)
+smmvcSubnets = lens _sageMakerModelVpcConfigSubnets (\s a -> s { _sageMakerModelVpcConfigSubnets = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecyclehook.html
+
+module Stratosphere.ResourceProperties.SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook.
+-- See
+-- 'sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook'
+-- for a more convenient constructor.
+data SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook =
+  SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook
+  { _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHookContent :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook where
+  toJSON SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook{..} =
+    object $
+    catMaybes
+    [ fmap (("Content",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHookContent
+    ]
+
+instance FromJSON SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook where
+  parseJSON (Object obj) =
+    SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook <$>
+      (obj .:? "Content")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook'
+-- containing required fields as arguments.
+sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook
+  :: SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook
+sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook  =
+  SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook
+  { _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHookContent = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecyclehook.html#cfn-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecyclehook-content
+smnilcnilhContent :: Lens' SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook (Maybe (Val Text))
+smnilcnilhContent = lens _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHookContent (\s a -> s { _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHookContent = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
@@ -15,6 +15,7 @@
   ServiceDiscoveryServiceDnsConfig
   { _serviceDiscoveryServiceDnsConfigDnsRecords :: [ServiceDiscoveryServiceDnsRecord]
   , _serviceDiscoveryServiceDnsConfigNamespaceId :: Val Text
+  , _serviceDiscoveryServiceDnsConfigRoutingPolicy :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON ServiceDiscoveryServiceDnsConfig where
@@ -23,13 +24,15 @@
     catMaybes
     [ (Just . ("DnsRecords",) . toJSON) _serviceDiscoveryServiceDnsConfigDnsRecords
     , (Just . ("NamespaceId",) . toJSON) _serviceDiscoveryServiceDnsConfigNamespaceId
+    , fmap (("RoutingPolicy",) . toJSON) _serviceDiscoveryServiceDnsConfigRoutingPolicy
     ]
 
 instance FromJSON ServiceDiscoveryServiceDnsConfig where
   parseJSON (Object obj) =
     ServiceDiscoveryServiceDnsConfig <$>
       (obj .: "DnsRecords") <*>
-      (obj .: "NamespaceId")
+      (obj .: "NamespaceId") <*>
+      (obj .:? "RoutingPolicy")
   parseJSON _ = mempty
 
 -- | Constructor for 'ServiceDiscoveryServiceDnsConfig' containing required
@@ -42,6 +45,7 @@
   ServiceDiscoveryServiceDnsConfig
   { _serviceDiscoveryServiceDnsConfigDnsRecords = dnsRecordsarg
   , _serviceDiscoveryServiceDnsConfigNamespaceId = namespaceIdarg
+  , _serviceDiscoveryServiceDnsConfigRoutingPolicy = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html#cfn-servicediscovery-service-dnsconfig-dnsrecords
@@ -51,3 +55,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html#cfn-servicediscovery-service-dnsconfig-namespaceid
 sdsdcNamespaceId :: Lens' ServiceDiscoveryServiceDnsConfig (Val Text)
 sdsdcNamespaceId = lens _serviceDiscoveryServiceDnsConfigNamespaceId (\s a -> s { _serviceDiscoveryServiceDnsConfigNamespaceId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html#cfn-servicediscovery-service-dnsconfig-routingpolicy
+sdsdcRoutingPolicy :: Lens' ServiceDiscoveryServiceDnsConfig (Maybe (Val Text))
+sdsdcRoutingPolicy = lens _serviceDiscoveryServiceDnsConfigRoutingPolicy (\s a -> s { _serviceDiscoveryServiceDnsConfigRoutingPolicy = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckCustomConfig.hs b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckCustomConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceHealthCheckCustomConfig.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-healthcheckcustomconfig.html
+
+module Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckCustomConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ServiceDiscoveryServiceHealthCheckCustomConfig. See
+-- 'serviceDiscoveryServiceHealthCheckCustomConfig' for a more convenient
+-- constructor.
+data ServiceDiscoveryServiceHealthCheckCustomConfig =
+  ServiceDiscoveryServiceHealthCheckCustomConfig
+  { _serviceDiscoveryServiceHealthCheckCustomConfigFailureThreshold :: Maybe (Val Double)
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceDiscoveryServiceHealthCheckCustomConfig where
+  toJSON ServiceDiscoveryServiceHealthCheckCustomConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("FailureThreshold",) . toJSON . fmap Double') _serviceDiscoveryServiceHealthCheckCustomConfigFailureThreshold
+    ]
+
+instance FromJSON ServiceDiscoveryServiceHealthCheckCustomConfig where
+  parseJSON (Object obj) =
+    ServiceDiscoveryServiceHealthCheckCustomConfig <$>
+      fmap (fmap (fmap unDouble')) (obj .:? "FailureThreshold")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceDiscoveryServiceHealthCheckCustomConfig'
+-- containing required fields as arguments.
+serviceDiscoveryServiceHealthCheckCustomConfig
+  :: ServiceDiscoveryServiceHealthCheckCustomConfig
+serviceDiscoveryServiceHealthCheckCustomConfig  =
+  ServiceDiscoveryServiceHealthCheckCustomConfig
+  { _serviceDiscoveryServiceHealthCheckCustomConfigFailureThreshold = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-healthcheckcustomconfig.html#cfn-servicediscovery-service-healthcheckcustomconfig-failurethreshold
+sdshcccFailureThreshold :: Lens' ServiceDiscoveryServiceHealthCheckCustomConfig (Maybe (Val Double))
+sdshcccFailureThreshold = lens _serviceDiscoveryServiceHealthCheckCustomConfigFailureThreshold (\s a -> s { _serviceDiscoveryServiceHealthCheckCustomConfigFailureThreshold = 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,8 @@
 import GHC.Exts (IsList(..))
 import GHC.Generics (Generic)
 
+import Stratosphere.Resources.AmazonMQBroker as X
+import Stratosphere.Resources.AmazonMQConfiguration as X
 import Stratosphere.Resources.ApiGatewayAccount as X
 import Stratosphere.Resources.ApiGatewayApiKey as X
 import Stratosphere.Resources.ApiGatewayAuthorizer as X
@@ -103,6 +105,7 @@
 import Stratosphere.Resources.CodeDeployDeploymentGroup as X
 import Stratosphere.Resources.CodePipelineCustomActionType as X
 import Stratosphere.Resources.CodePipelinePipeline as X
+import Stratosphere.Resources.CodePipelineWebhook as X
 import Stratosphere.Resources.CognitoIdentityPool as X
 import Stratosphere.Resources.CognitoIdentityPoolRoleAttachment as X
 import Stratosphere.Resources.CognitoUserPool as X
@@ -158,6 +161,7 @@
 import Stratosphere.Resources.EC2VPCCidrBlock as X
 import Stratosphere.Resources.EC2VPCDHCPOptionsAssociation as X
 import Stratosphere.Resources.EC2VPCEndpoint as X
+import Stratosphere.Resources.EC2VPCEndpointConnectionNotification as X
 import Stratosphere.Resources.EC2VPCGatewayAttachment as X
 import Stratosphere.Resources.EC2VPCPeeringConnection as X
 import Stratosphere.Resources.EC2VPNConnection as X
@@ -297,6 +301,12 @@
 import Stratosphere.Resources.SSMMaintenanceWindowTask as X
 import Stratosphere.Resources.SSMParameter as X
 import Stratosphere.Resources.SSMPatchBaseline as X
+import Stratosphere.Resources.SSMResourceDataSync as X
+import Stratosphere.Resources.SageMakerEndpoint as X
+import Stratosphere.Resources.SageMakerEndpointConfig as X
+import Stratosphere.Resources.SageMakerModel as X
+import Stratosphere.Resources.SageMakerNotebookInstance as X
+import Stratosphere.Resources.SageMakerNotebookInstanceLifecycleConfig as X
 import Stratosphere.Resources.ServiceCatalogAcceptedPortfolioShare as X
 import Stratosphere.Resources.ServiceCatalogCloudFormationProduct as X
 import Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct as X
@@ -331,6 +341,9 @@
 import Stratosphere.Resources.WAFRegionalWebACLAssociation as X
 import Stratosphere.Resources.WAFRegionalXssMatchSet as X
 import Stratosphere.Resources.WorkSpacesWorkspace as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow as X
+import Stratosphere.ResourceProperties.AmazonMQBrokerUser as X
 import Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentStageDescription as X
@@ -347,6 +360,7 @@
 import Stratosphere.ResourceProperties.ApiGatewayUsagePlanThrottleSettings as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig as X
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig as X
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig as X
@@ -455,6 +469,8 @@
 import Stratosphere.ResourceProperties.CodePipelinePipelineOutputArtifact as X
 import Stratosphere.ResourceProperties.CodePipelinePipelineStageDeclaration as X
 import Stratosphere.ResourceProperties.CodePipelinePipelineStageTransition as X
+import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookAuthConfiguration as X
+import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookFilterRule as X
 import Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoIdentityProvider as X
 import Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoStreams as X
 import Stratosphere.ResourceProperties.CognitoIdentityPoolPushSync as X
@@ -862,11 +878,16 @@
 import Stratosphere.ResourceProperties.SSMPatchBaselinePatchSource as X
 import Stratosphere.ResourceProperties.SSMPatchBaselineRule as X
 import Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup as X
+import Stratosphere.ResourceProperties.SageMakerEndpointConfigProductionVariant as X
+import Stratosphere.ResourceProperties.SageMakerModelContainerDefinition as X
+import Stratosphere.ResourceProperties.SageMakerModelVpcConfig as X
+import Stratosphere.ResourceProperties.SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook as X
 import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties as X
 import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckConfig as X
+import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckCustomConfig as X
 import Stratosphere.ResourceProperties.WAFByteMatchSetByteMatchTuple as X
 import Stratosphere.ResourceProperties.WAFByteMatchSetFieldToMatch as X
 import Stratosphere.ResourceProperties.WAFIPSetIPSetDescriptor as X
@@ -903,7 +924,9 @@
 import Stratosphere.Values
 
 data ResourceProperties
-  = ApiGatewayAccountProperties ApiGatewayAccount
+  = AmazonMQBrokerProperties AmazonMQBroker
+  | AmazonMQConfigurationProperties AmazonMQConfiguration
+  | ApiGatewayAccountProperties ApiGatewayAccount
   | ApiGatewayApiKeyProperties ApiGatewayApiKey
   | ApiGatewayAuthorizerProperties ApiGatewayAuthorizer
   | ApiGatewayBasePathMappingProperties ApiGatewayBasePathMapping
@@ -959,6 +982,7 @@
   | CodeDeployDeploymentGroupProperties CodeDeployDeploymentGroup
   | CodePipelineCustomActionTypeProperties CodePipelineCustomActionType
   | CodePipelinePipelineProperties CodePipelinePipeline
+  | CodePipelineWebhookProperties CodePipelineWebhook
   | CognitoIdentityPoolProperties CognitoIdentityPool
   | CognitoIdentityPoolRoleAttachmentProperties CognitoIdentityPoolRoleAttachment
   | CognitoUserPoolProperties CognitoUserPool
@@ -1014,6 +1038,7 @@
   | EC2VPCCidrBlockProperties EC2VPCCidrBlock
   | EC2VPCDHCPOptionsAssociationProperties EC2VPCDHCPOptionsAssociation
   | EC2VPCEndpointProperties EC2VPCEndpoint
+  | EC2VPCEndpointConnectionNotificationProperties EC2VPCEndpointConnectionNotification
   | EC2VPCGatewayAttachmentProperties EC2VPCGatewayAttachment
   | EC2VPCPeeringConnectionProperties EC2VPCPeeringConnection
   | EC2VPNConnectionProperties EC2VPNConnection
@@ -1153,6 +1178,12 @@
   | SSMMaintenanceWindowTaskProperties SSMMaintenanceWindowTask
   | SSMParameterProperties SSMParameter
   | SSMPatchBaselineProperties SSMPatchBaseline
+  | SSMResourceDataSyncProperties SSMResourceDataSync
+  | SageMakerEndpointProperties SageMakerEndpoint
+  | SageMakerEndpointConfigProperties SageMakerEndpointConfig
+  | SageMakerModelProperties SageMakerModel
+  | SageMakerNotebookInstanceProperties SageMakerNotebookInstance
+  | SageMakerNotebookInstanceLifecycleConfigProperties SageMakerNotebookInstanceLifecycleConfig
   | ServiceCatalogAcceptedPortfolioShareProperties ServiceCatalogAcceptedPortfolioShare
   | ServiceCatalogCloudFormationProductProperties ServiceCatalogCloudFormationProduct
   | ServiceCatalogCloudFormationProvisionedProductProperties ServiceCatalogCloudFormationProvisionedProduct
@@ -1242,6 +1273,10 @@
     ]
 
 resourcePropertiesJSON :: ResourceProperties -> [Pair]
+resourcePropertiesJSON (AmazonMQBrokerProperties x) =
+  [ "Type" .= ("AWS::AmazonMQ::Broker" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (AmazonMQConfigurationProperties x) =
+  [ "Type" .= ("AWS::AmazonMQ::Configuration" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayAccountProperties x) =
   [ "Type" .= ("AWS::ApiGateway::Account" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayApiKeyProperties x) =
@@ -1354,6 +1389,8 @@
   [ "Type" .= ("AWS::CodePipeline::CustomActionType" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CodePipelinePipelineProperties x) =
   [ "Type" .= ("AWS::CodePipeline::Pipeline" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (CodePipelineWebhookProperties x) =
+  [ "Type" .= ("AWS::CodePipeline::Webhook" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CognitoIdentityPoolProperties x) =
   [ "Type" .= ("AWS::Cognito::IdentityPool" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CognitoIdentityPoolRoleAttachmentProperties x) =
@@ -1464,6 +1501,8 @@
   [ "Type" .= ("AWS::EC2::VPCDHCPOptionsAssociation" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (EC2VPCEndpointProperties x) =
   [ "Type" .= ("AWS::EC2::VPCEndpoint" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (EC2VPCEndpointConnectionNotificationProperties x) =
+  [ "Type" .= ("AWS::EC2::VPCEndpointConnectionNotification" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (EC2VPCGatewayAttachmentProperties x) =
   [ "Type" .= ("AWS::EC2::VPCGatewayAttachment" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (EC2VPCPeeringConnectionProperties x) =
@@ -1742,6 +1781,18 @@
   [ "Type" .= ("AWS::SSM::Parameter" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (SSMPatchBaselineProperties x) =
   [ "Type" .= ("AWS::SSM::PatchBaseline" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SSMResourceDataSyncProperties x) =
+  [ "Type" .= ("AWS::SSM::ResourceDataSync" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SageMakerEndpointProperties x) =
+  [ "Type" .= ("AWS::SageMaker::Endpoint" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SageMakerEndpointConfigProperties x) =
+  [ "Type" .= ("AWS::SageMaker::EndpointConfig" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SageMakerModelProperties x) =
+  [ "Type" .= ("AWS::SageMaker::Model" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SageMakerNotebookInstanceProperties x) =
+  [ "Type" .= ("AWS::SageMaker::NotebookInstance" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SageMakerNotebookInstanceLifecycleConfigProperties x) =
+  [ "Type" .= ("AWS::SageMaker::NotebookInstanceLifecycleConfig" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ServiceCatalogAcceptedPortfolioShareProperties x) =
   [ "Type" .= ("AWS::ServiceCatalog::AcceptedPortfolioShare" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ServiceCatalogCloudFormationProductProperties x) =
@@ -1816,6 +1867,8 @@
 resourceFromJSON n o =
     do type' <- o .: "Type" :: Parser String
        props <- case type' of
+         "AWS::AmazonMQ::Broker" -> AmazonMQBrokerProperties <$> (o .: "Properties")
+         "AWS::AmazonMQ::Configuration" -> AmazonMQConfigurationProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Account" -> ApiGatewayAccountProperties <$> (o .: "Properties")
          "AWS::ApiGateway::ApiKey" -> ApiGatewayApiKeyProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Authorizer" -> ApiGatewayAuthorizerProperties <$> (o .: "Properties")
@@ -1872,6 +1925,7 @@
          "AWS::CodeDeploy::DeploymentGroup" -> CodeDeployDeploymentGroupProperties <$> (o .: "Properties")
          "AWS::CodePipeline::CustomActionType" -> CodePipelineCustomActionTypeProperties <$> (o .: "Properties")
          "AWS::CodePipeline::Pipeline" -> CodePipelinePipelineProperties <$> (o .: "Properties")
+         "AWS::CodePipeline::Webhook" -> CodePipelineWebhookProperties <$> (o .: "Properties")
          "AWS::Cognito::IdentityPool" -> CognitoIdentityPoolProperties <$> (o .: "Properties")
          "AWS::Cognito::IdentityPoolRoleAttachment" -> CognitoIdentityPoolRoleAttachmentProperties <$> (o .: "Properties")
          "AWS::Cognito::UserPool" -> CognitoUserPoolProperties <$> (o .: "Properties")
@@ -1927,6 +1981,7 @@
          "AWS::EC2::VPCCidrBlock" -> EC2VPCCidrBlockProperties <$> (o .: "Properties")
          "AWS::EC2::VPCDHCPOptionsAssociation" -> EC2VPCDHCPOptionsAssociationProperties <$> (o .: "Properties")
          "AWS::EC2::VPCEndpoint" -> EC2VPCEndpointProperties <$> (o .: "Properties")
+         "AWS::EC2::VPCEndpointConnectionNotification" -> EC2VPCEndpointConnectionNotificationProperties <$> (o .: "Properties")
          "AWS::EC2::VPCGatewayAttachment" -> EC2VPCGatewayAttachmentProperties <$> (o .: "Properties")
          "AWS::EC2::VPCPeeringConnection" -> EC2VPCPeeringConnectionProperties <$> (o .: "Properties")
          "AWS::EC2::VPNConnection" -> EC2VPNConnectionProperties <$> (o .: "Properties")
@@ -2066,6 +2121,12 @@
          "AWS::SSM::MaintenanceWindowTask" -> SSMMaintenanceWindowTaskProperties <$> (o .: "Properties")
          "AWS::SSM::Parameter" -> SSMParameterProperties <$> (o .: "Properties")
          "AWS::SSM::PatchBaseline" -> SSMPatchBaselineProperties <$> (o .: "Properties")
+         "AWS::SSM::ResourceDataSync" -> SSMResourceDataSyncProperties <$> (o .: "Properties")
+         "AWS::SageMaker::Endpoint" -> SageMakerEndpointProperties <$> (o .: "Properties")
+         "AWS::SageMaker::EndpointConfig" -> SageMakerEndpointConfigProperties <$> (o .: "Properties")
+         "AWS::SageMaker::Model" -> SageMakerModelProperties <$> (o .: "Properties")
+         "AWS::SageMaker::NotebookInstance" -> SageMakerNotebookInstanceProperties <$> (o .: "Properties")
+         "AWS::SageMaker::NotebookInstanceLifecycleConfig" -> SageMakerNotebookInstanceLifecycleConfigProperties <$> (o .: "Properties")
          "AWS::ServiceCatalog::AcceptedPortfolioShare" -> ServiceCatalogAcceptedPortfolioShareProperties <$> (o .: "Properties")
          "AWS::ServiceCatalog::CloudFormationProduct" -> ServiceCatalogCloudFormationProductProperties <$> (o .: "Properties")
          "AWS::ServiceCatalog::CloudFormationProvisionedProduct" -> ServiceCatalogCloudFormationProvisionedProductProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/AmazonMQBroker.hs b/library-gen/Stratosphere/Resources/AmazonMQBroker.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AmazonMQBroker.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html
+
+module Stratosphere.Resources.AmazonMQBroker where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId
+import Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow
+import Stratosphere.ResourceProperties.AmazonMQBrokerUser
+
+-- | Full data type definition for AmazonMQBroker. See 'amazonMQBroker' for a
+-- more convenient constructor.
+data AmazonMQBroker =
+  AmazonMQBroker
+  { _amazonMQBrokerAutoMinorVersionUpgrade :: Val Bool
+  , _amazonMQBrokerBrokerName :: Val Text
+  , _amazonMQBrokerConfiguration :: Maybe AmazonMQBrokerConfigurationId
+  , _amazonMQBrokerDeploymentMode :: Val Text
+  , _amazonMQBrokerEngineType :: Val Text
+  , _amazonMQBrokerEngineVersion :: Val Text
+  , _amazonMQBrokerHostInstanceType :: Val Text
+  , _amazonMQBrokerMaintenanceWindowStartTime :: Maybe AmazonMQBrokerMaintenanceWindow
+  , _amazonMQBrokerPubliclyAccessible :: Val Bool
+  , _amazonMQBrokerSecurityGroups :: Maybe (ValList Text)
+  , _amazonMQBrokerSubnetIds :: Maybe (ValList Text)
+  , _amazonMQBrokerUsers :: [AmazonMQBrokerUser]
+  } deriving (Show, Eq)
+
+instance ToJSON AmazonMQBroker where
+  toJSON AmazonMQBroker{..} =
+    object $
+    catMaybes
+    [ (Just . ("AutoMinorVersionUpgrade",) . toJSON . fmap Bool') _amazonMQBrokerAutoMinorVersionUpgrade
+    , (Just . ("BrokerName",) . toJSON) _amazonMQBrokerBrokerName
+    , fmap (("Configuration",) . toJSON) _amazonMQBrokerConfiguration
+    , (Just . ("DeploymentMode",) . toJSON) _amazonMQBrokerDeploymentMode
+    , (Just . ("EngineType",) . toJSON) _amazonMQBrokerEngineType
+    , (Just . ("EngineVersion",) . toJSON) _amazonMQBrokerEngineVersion
+    , (Just . ("HostInstanceType",) . toJSON) _amazonMQBrokerHostInstanceType
+    , fmap (("MaintenanceWindowStartTime",) . toJSON) _amazonMQBrokerMaintenanceWindowStartTime
+    , (Just . ("PubliclyAccessible",) . toJSON . fmap Bool') _amazonMQBrokerPubliclyAccessible
+    , fmap (("SecurityGroups",) . toJSON) _amazonMQBrokerSecurityGroups
+    , fmap (("SubnetIds",) . toJSON) _amazonMQBrokerSubnetIds
+    , (Just . ("Users",) . toJSON) _amazonMQBrokerUsers
+    ]
+
+instance FromJSON AmazonMQBroker where
+  parseJSON (Object obj) =
+    AmazonMQBroker <$>
+      fmap (fmap unBool') (obj .: "AutoMinorVersionUpgrade") <*>
+      (obj .: "BrokerName") <*>
+      (obj .:? "Configuration") <*>
+      (obj .: "DeploymentMode") <*>
+      (obj .: "EngineType") <*>
+      (obj .: "EngineVersion") <*>
+      (obj .: "HostInstanceType") <*>
+      (obj .:? "MaintenanceWindowStartTime") <*>
+      fmap (fmap unBool') (obj .: "PubliclyAccessible") <*>
+      (obj .:? "SecurityGroups") <*>
+      (obj .:? "SubnetIds") <*>
+      (obj .: "Users")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AmazonMQBroker' containing required fields as arguments.
+amazonMQBroker
+  :: Val Bool -- ^ 'amqbAutoMinorVersionUpgrade'
+  -> Val Text -- ^ 'amqbBrokerName'
+  -> Val Text -- ^ 'amqbDeploymentMode'
+  -> Val Text -- ^ 'amqbEngineType'
+  -> Val Text -- ^ 'amqbEngineVersion'
+  -> Val Text -- ^ 'amqbHostInstanceType'
+  -> Val Bool -- ^ 'amqbPubliclyAccessible'
+  -> [AmazonMQBrokerUser] -- ^ 'amqbUsers'
+  -> AmazonMQBroker
+amazonMQBroker autoMinorVersionUpgradearg brokerNamearg deploymentModearg engineTypearg engineVersionarg hostInstanceTypearg publiclyAccessiblearg usersarg =
+  AmazonMQBroker
+  { _amazonMQBrokerAutoMinorVersionUpgrade = autoMinorVersionUpgradearg
+  , _amazonMQBrokerBrokerName = brokerNamearg
+  , _amazonMQBrokerConfiguration = Nothing
+  , _amazonMQBrokerDeploymentMode = deploymentModearg
+  , _amazonMQBrokerEngineType = engineTypearg
+  , _amazonMQBrokerEngineVersion = engineVersionarg
+  , _amazonMQBrokerHostInstanceType = hostInstanceTypearg
+  , _amazonMQBrokerMaintenanceWindowStartTime = Nothing
+  , _amazonMQBrokerPubliclyAccessible = publiclyAccessiblearg
+  , _amazonMQBrokerSecurityGroups = Nothing
+  , _amazonMQBrokerSubnetIds = Nothing
+  , _amazonMQBrokerUsers = usersarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-autominorversionupgrade
+amqbAutoMinorVersionUpgrade :: Lens' AmazonMQBroker (Val Bool)
+amqbAutoMinorVersionUpgrade = lens _amazonMQBrokerAutoMinorVersionUpgrade (\s a -> s { _amazonMQBrokerAutoMinorVersionUpgrade = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-brokername
+amqbBrokerName :: Lens' AmazonMQBroker (Val Text)
+amqbBrokerName = lens _amazonMQBrokerBrokerName (\s a -> s { _amazonMQBrokerBrokerName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-configuration
+amqbConfiguration :: Lens' AmazonMQBroker (Maybe AmazonMQBrokerConfigurationId)
+amqbConfiguration = lens _amazonMQBrokerConfiguration (\s a -> s { _amazonMQBrokerConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-deploymentmode
+amqbDeploymentMode :: Lens' AmazonMQBroker (Val Text)
+amqbDeploymentMode = lens _amazonMQBrokerDeploymentMode (\s a -> s { _amazonMQBrokerDeploymentMode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-enginetype
+amqbEngineType :: Lens' AmazonMQBroker (Val Text)
+amqbEngineType = lens _amazonMQBrokerEngineType (\s a -> s { _amazonMQBrokerEngineType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-engineversion
+amqbEngineVersion :: Lens' AmazonMQBroker (Val Text)
+amqbEngineVersion = lens _amazonMQBrokerEngineVersion (\s a -> s { _amazonMQBrokerEngineVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-hostinstancetype
+amqbHostInstanceType :: Lens' AmazonMQBroker (Val Text)
+amqbHostInstanceType = lens _amazonMQBrokerHostInstanceType (\s a -> s { _amazonMQBrokerHostInstanceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-maintenancewindowstarttime
+amqbMaintenanceWindowStartTime :: Lens' AmazonMQBroker (Maybe AmazonMQBrokerMaintenanceWindow)
+amqbMaintenanceWindowStartTime = lens _amazonMQBrokerMaintenanceWindowStartTime (\s a -> s { _amazonMQBrokerMaintenanceWindowStartTime = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-publiclyaccessible
+amqbPubliclyAccessible :: Lens' AmazonMQBroker (Val Bool)
+amqbPubliclyAccessible = lens _amazonMQBrokerPubliclyAccessible (\s a -> s { _amazonMQBrokerPubliclyAccessible = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-securitygroups
+amqbSecurityGroups :: Lens' AmazonMQBroker (Maybe (ValList Text))
+amqbSecurityGroups = lens _amazonMQBrokerSecurityGroups (\s a -> s { _amazonMQBrokerSecurityGroups = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-subnetids
+amqbSubnetIds :: Lens' AmazonMQBroker (Maybe (ValList Text))
+amqbSubnetIds = lens _amazonMQBrokerSubnetIds (\s a -> s { _amazonMQBrokerSubnetIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-users
+amqbUsers :: Lens' AmazonMQBroker [AmazonMQBrokerUser]
+amqbUsers = lens _amazonMQBrokerUsers (\s a -> s { _amazonMQBrokerUsers = a })
diff --git a/library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs b/library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AmazonMQConfiguration.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html
+
+module Stratosphere.Resources.AmazonMQConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AmazonMQConfiguration. See
+-- 'amazonMQConfiguration' for a more convenient constructor.
+data AmazonMQConfiguration =
+  AmazonMQConfiguration
+  { _amazonMQConfigurationData :: Val Text
+  , _amazonMQConfigurationDescription :: Maybe (Val Text)
+  , _amazonMQConfigurationEngineType :: Val Text
+  , _amazonMQConfigurationEngineVersion :: Val Text
+  , _amazonMQConfigurationName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AmazonMQConfiguration where
+  toJSON AmazonMQConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Data",) . toJSON) _amazonMQConfigurationData
+    , fmap (("Description",) . toJSON) _amazonMQConfigurationDescription
+    , (Just . ("EngineType",) . toJSON) _amazonMQConfigurationEngineType
+    , (Just . ("EngineVersion",) . toJSON) _amazonMQConfigurationEngineVersion
+    , (Just . ("Name",) . toJSON) _amazonMQConfigurationName
+    ]
+
+instance FromJSON AmazonMQConfiguration where
+  parseJSON (Object obj) =
+    AmazonMQConfiguration <$>
+      (obj .: "Data") <*>
+      (obj .:? "Description") <*>
+      (obj .: "EngineType") <*>
+      (obj .: "EngineVersion") <*>
+      (obj .: "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AmazonMQConfiguration' containing required fields as
+-- arguments.
+amazonMQConfiguration
+  :: Val Text -- ^ 'amqcData'
+  -> Val Text -- ^ 'amqcEngineType'
+  -> Val Text -- ^ 'amqcEngineVersion'
+  -> Val Text -- ^ 'amqcName'
+  -> AmazonMQConfiguration
+amazonMQConfiguration dataarg engineTypearg engineVersionarg namearg =
+  AmazonMQConfiguration
+  { _amazonMQConfigurationData = dataarg
+  , _amazonMQConfigurationDescription = Nothing
+  , _amazonMQConfigurationEngineType = engineTypearg
+  , _amazonMQConfigurationEngineVersion = engineVersionarg
+  , _amazonMQConfigurationName = namearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-data
+amqcData :: Lens' AmazonMQConfiguration (Val Text)
+amqcData = lens _amazonMQConfigurationData (\s a -> s { _amazonMQConfigurationData = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-description
+amqcDescription :: Lens' AmazonMQConfiguration (Maybe (Val Text))
+amqcDescription = lens _amazonMQConfigurationDescription (\s a -> s { _amazonMQConfigurationDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-enginetype
+amqcEngineType :: Lens' AmazonMQConfiguration (Val Text)
+amqcEngineType = lens _amazonMQConfigurationEngineType (\s a -> s { _amazonMQConfigurationEngineType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-engineversion
+amqcEngineVersion :: Lens' AmazonMQConfiguration (Val Text)
+amqcEngineVersion = lens _amazonMQConfigurationEngineVersion (\s a -> s { _amazonMQConfigurationEngineVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-name
+amqcName :: Lens' AmazonMQConfiguration (Val Text)
+amqcName = lens _amazonMQConfigurationName (\s a -> s { _amazonMQConfigurationName = a })
diff --git a/library-gen/Stratosphere/Resources/AppSyncDataSource.hs b/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
--- a/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
@@ -9,6 +9,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig
 import Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig
+import Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig
 import Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig
 
 -- | Full data type definition for AppSyncDataSource. See 'appSyncDataSource'
@@ -19,6 +20,7 @@
   , _appSyncDataSourceDescription :: Maybe (Val Text)
   , _appSyncDataSourceDynamoDBConfig :: Maybe AppSyncDataSourceDynamoDBConfig
   , _appSyncDataSourceElasticsearchConfig :: Maybe AppSyncDataSourceElasticsearchConfig
+  , _appSyncDataSourceHttpConfig :: Maybe AppSyncDataSourceHttpConfig
   , _appSyncDataSourceLambdaConfig :: Maybe AppSyncDataSourceLambdaConfig
   , _appSyncDataSourceName :: Val Text
   , _appSyncDataSourceServiceRoleArn :: Maybe (Val Text)
@@ -33,6 +35,7 @@
     , fmap (("Description",) . toJSON) _appSyncDataSourceDescription
     , fmap (("DynamoDBConfig",) . toJSON) _appSyncDataSourceDynamoDBConfig
     , fmap (("ElasticsearchConfig",) . toJSON) _appSyncDataSourceElasticsearchConfig
+    , fmap (("HttpConfig",) . toJSON) _appSyncDataSourceHttpConfig
     , fmap (("LambdaConfig",) . toJSON) _appSyncDataSourceLambdaConfig
     , (Just . ("Name",) . toJSON) _appSyncDataSourceName
     , fmap (("ServiceRoleArn",) . toJSON) _appSyncDataSourceServiceRoleArn
@@ -46,6 +49,7 @@
       (obj .:? "Description") <*>
       (obj .:? "DynamoDBConfig") <*>
       (obj .:? "ElasticsearchConfig") <*>
+      (obj .:? "HttpConfig") <*>
       (obj .:? "LambdaConfig") <*>
       (obj .: "Name") <*>
       (obj .:? "ServiceRoleArn") <*>
@@ -65,6 +69,7 @@
   , _appSyncDataSourceDescription = Nothing
   , _appSyncDataSourceDynamoDBConfig = Nothing
   , _appSyncDataSourceElasticsearchConfig = Nothing
+  , _appSyncDataSourceHttpConfig = Nothing
   , _appSyncDataSourceLambdaConfig = Nothing
   , _appSyncDataSourceName = namearg
   , _appSyncDataSourceServiceRoleArn = Nothing
@@ -86,6 +91,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-elasticsearchconfig
 asdsElasticsearchConfig :: Lens' AppSyncDataSource (Maybe AppSyncDataSourceElasticsearchConfig)
 asdsElasticsearchConfig = lens _appSyncDataSourceElasticsearchConfig (\s a -> s { _appSyncDataSourceElasticsearchConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-httpconfig
+asdsHttpConfig :: Lens' AppSyncDataSource (Maybe AppSyncDataSourceHttpConfig)
+asdsHttpConfig = lens _appSyncDataSourceHttpConfig (\s a -> s { _appSyncDataSourceHttpConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-lambdaconfig
 asdsLambdaConfig :: Lens' AppSyncDataSource (Maybe AppSyncDataSourceLambdaConfig)
diff --git a/library-gen/Stratosphere/Resources/CodePipelineWebhook.hs b/library-gen/Stratosphere/Resources/CodePipelineWebhook.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/CodePipelineWebhook.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html
+
+module Stratosphere.Resources.CodePipelineWebhook where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookAuthConfiguration
+import Stratosphere.ResourceProperties.CodePipelineWebhookWebhookFilterRule
+
+-- | Full data type definition for CodePipelineWebhook. See
+-- 'codePipelineWebhook' for a more convenient constructor.
+data CodePipelineWebhook =
+  CodePipelineWebhook
+  { _codePipelineWebhookAuthentication :: Val Text
+  , _codePipelineWebhookAuthenticationConfiguration :: CodePipelineWebhookWebhookAuthConfiguration
+  , _codePipelineWebhookFilters :: [CodePipelineWebhookWebhookFilterRule]
+  , _codePipelineWebhookName :: Maybe (Val Text)
+  , _codePipelineWebhookRegisterWithThirdParty :: Maybe (Val Bool)
+  , _codePipelineWebhookTargetAction :: Val Text
+  , _codePipelineWebhookTargetPipeline :: Val Text
+  , _codePipelineWebhookTargetPipelineVersion :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON CodePipelineWebhook where
+  toJSON CodePipelineWebhook{..} =
+    object $
+    catMaybes
+    [ (Just . ("Authentication",) . toJSON) _codePipelineWebhookAuthentication
+    , (Just . ("AuthenticationConfiguration",) . toJSON) _codePipelineWebhookAuthenticationConfiguration
+    , (Just . ("Filters",) . toJSON) _codePipelineWebhookFilters
+    , fmap (("Name",) . toJSON) _codePipelineWebhookName
+    , fmap (("RegisterWithThirdParty",) . toJSON . fmap Bool') _codePipelineWebhookRegisterWithThirdParty
+    , (Just . ("TargetAction",) . toJSON) _codePipelineWebhookTargetAction
+    , (Just . ("TargetPipeline",) . toJSON) _codePipelineWebhookTargetPipeline
+    , (Just . ("TargetPipelineVersion",) . toJSON . fmap Integer') _codePipelineWebhookTargetPipelineVersion
+    ]
+
+instance FromJSON CodePipelineWebhook where
+  parseJSON (Object obj) =
+    CodePipelineWebhook <$>
+      (obj .: "Authentication") <*>
+      (obj .: "AuthenticationConfiguration") <*>
+      (obj .: "Filters") <*>
+      (obj .:? "Name") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RegisterWithThirdParty") <*>
+      (obj .: "TargetAction") <*>
+      (obj .: "TargetPipeline") <*>
+      fmap (fmap unInteger') (obj .: "TargetPipelineVersion")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CodePipelineWebhook' containing required fields as
+-- arguments.
+codePipelineWebhook
+  :: Val Text -- ^ 'cpwAuthentication'
+  -> CodePipelineWebhookWebhookAuthConfiguration -- ^ 'cpwAuthenticationConfiguration'
+  -> [CodePipelineWebhookWebhookFilterRule] -- ^ 'cpwFilters'
+  -> Val Text -- ^ 'cpwTargetAction'
+  -> Val Text -- ^ 'cpwTargetPipeline'
+  -> Val Integer -- ^ 'cpwTargetPipelineVersion'
+  -> CodePipelineWebhook
+codePipelineWebhook authenticationarg authenticationConfigurationarg filtersarg targetActionarg targetPipelinearg targetPipelineVersionarg =
+  CodePipelineWebhook
+  { _codePipelineWebhookAuthentication = authenticationarg
+  , _codePipelineWebhookAuthenticationConfiguration = authenticationConfigurationarg
+  , _codePipelineWebhookFilters = filtersarg
+  , _codePipelineWebhookName = Nothing
+  , _codePipelineWebhookRegisterWithThirdParty = Nothing
+  , _codePipelineWebhookTargetAction = targetActionarg
+  , _codePipelineWebhookTargetPipeline = targetPipelinearg
+  , _codePipelineWebhookTargetPipelineVersion = targetPipelineVersionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-authentication
+cpwAuthentication :: Lens' CodePipelineWebhook (Val Text)
+cpwAuthentication = lens _codePipelineWebhookAuthentication (\s a -> s { _codePipelineWebhookAuthentication = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-authenticationconfiguration
+cpwAuthenticationConfiguration :: Lens' CodePipelineWebhook CodePipelineWebhookWebhookAuthConfiguration
+cpwAuthenticationConfiguration = lens _codePipelineWebhookAuthenticationConfiguration (\s a -> s { _codePipelineWebhookAuthenticationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-filters
+cpwFilters :: Lens' CodePipelineWebhook [CodePipelineWebhookWebhookFilterRule]
+cpwFilters = lens _codePipelineWebhookFilters (\s a -> s { _codePipelineWebhookFilters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-name
+cpwName :: Lens' CodePipelineWebhook (Maybe (Val Text))
+cpwName = lens _codePipelineWebhookName (\s a -> s { _codePipelineWebhookName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-registerwiththirdparty
+cpwRegisterWithThirdParty :: Lens' CodePipelineWebhook (Maybe (Val Bool))
+cpwRegisterWithThirdParty = lens _codePipelineWebhookRegisterWithThirdParty (\s a -> s { _codePipelineWebhookRegisterWithThirdParty = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetaction
+cpwTargetAction :: Lens' CodePipelineWebhook (Val Text)
+cpwTargetAction = lens _codePipelineWebhookTargetAction (\s a -> s { _codePipelineWebhookTargetAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetpipeline
+cpwTargetPipeline :: Lens' CodePipelineWebhook (Val Text)
+cpwTargetPipeline = lens _codePipelineWebhookTargetPipeline (\s a -> s { _codePipelineWebhookTargetPipeline = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetpipelineversion
+cpwTargetPipelineVersion :: Lens' CodePipelineWebhook (Val Integer)
+cpwTargetPipelineVersion = lens _codePipelineWebhookTargetPipelineVersion (\s a -> s { _codePipelineWebhookTargetPipelineVersion = a })
diff --git a/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs b/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
--- a/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPCEndpoint.hs
@@ -13,9 +13,13 @@
 -- more convenient constructor.
 data EC2VPCEndpoint =
   EC2VPCEndpoint
-  { _eC2VPCEndpointPolicyDocument :: Maybe Object
+  { _eC2VPCEndpointIsPrivateDnsEnabled :: Maybe (Val Bool)
+  , _eC2VPCEndpointPolicyDocument :: Maybe Object
   , _eC2VPCEndpointRouteTableIds :: Maybe (ValList Text)
+  , _eC2VPCEndpointSecurityGroupIds :: Maybe (ValList Text)
   , _eC2VPCEndpointServiceName :: Val Text
+  , _eC2VPCEndpointSubnetIds :: Maybe (ValList Text)
+  , _eC2VPCEndpointVPCEndpointType :: Maybe (Val Text)
   , _eC2VPCEndpointVpcId :: Val Text
   } deriving (Show, Eq)
 
@@ -23,18 +27,26 @@
   toJSON EC2VPCEndpoint{..} =
     object $
     catMaybes
-    [ fmap (("PolicyDocument",) . toJSON) _eC2VPCEndpointPolicyDocument
+    [ fmap (("IsPrivateDnsEnabled",) . toJSON . fmap Bool') _eC2VPCEndpointIsPrivateDnsEnabled
+    , fmap (("PolicyDocument",) . toJSON) _eC2VPCEndpointPolicyDocument
     , fmap (("RouteTableIds",) . toJSON) _eC2VPCEndpointRouteTableIds
+    , fmap (("SecurityGroupIds",) . toJSON) _eC2VPCEndpointSecurityGroupIds
     , (Just . ("ServiceName",) . toJSON) _eC2VPCEndpointServiceName
+    , fmap (("SubnetIds",) . toJSON) _eC2VPCEndpointSubnetIds
+    , fmap (("VPCEndpointType",) . toJSON) _eC2VPCEndpointVPCEndpointType
     , (Just . ("VpcId",) . toJSON) _eC2VPCEndpointVpcId
     ]
 
 instance FromJSON EC2VPCEndpoint where
   parseJSON (Object obj) =
     EC2VPCEndpoint <$>
+      fmap (fmap (fmap unBool')) (obj .:? "IsPrivateDnsEnabled") <*>
       (obj .:? "PolicyDocument") <*>
       (obj .:? "RouteTableIds") <*>
+      (obj .:? "SecurityGroupIds") <*>
       (obj .: "ServiceName") <*>
+      (obj .:? "SubnetIds") <*>
+      (obj .:? "VPCEndpointType") <*>
       (obj .: "VpcId")
   parseJSON _ = mempty
 
@@ -45,12 +57,20 @@
   -> EC2VPCEndpoint
 ec2VPCEndpoint serviceNamearg vpcIdarg =
   EC2VPCEndpoint
-  { _eC2VPCEndpointPolicyDocument = Nothing
+  { _eC2VPCEndpointIsPrivateDnsEnabled = Nothing
+  , _eC2VPCEndpointPolicyDocument = Nothing
   , _eC2VPCEndpointRouteTableIds = Nothing
+  , _eC2VPCEndpointSecurityGroupIds = Nothing
   , _eC2VPCEndpointServiceName = serviceNamearg
+  , _eC2VPCEndpointSubnetIds = Nothing
+  , _eC2VPCEndpointVPCEndpointType = Nothing
   , _eC2VPCEndpointVpcId = vpcIdarg
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-isprivatednsenabled
+ecvpceIsPrivateDnsEnabled :: Lens' EC2VPCEndpoint (Maybe (Val Bool))
+ecvpceIsPrivateDnsEnabled = lens _eC2VPCEndpointIsPrivateDnsEnabled (\s a -> s { _eC2VPCEndpointIsPrivateDnsEnabled = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-policydocument
 ecvpcePolicyDocument :: Lens' EC2VPCEndpoint (Maybe Object)
 ecvpcePolicyDocument = lens _eC2VPCEndpointPolicyDocument (\s a -> s { _eC2VPCEndpointPolicyDocument = a })
@@ -59,9 +79,21 @@
 ecvpceRouteTableIds :: Lens' EC2VPCEndpoint (Maybe (ValList Text))
 ecvpceRouteTableIds = lens _eC2VPCEndpointRouteTableIds (\s a -> s { _eC2VPCEndpointRouteTableIds = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-securitygroupids
+ecvpceSecurityGroupIds :: Lens' EC2VPCEndpoint (Maybe (ValList Text))
+ecvpceSecurityGroupIds = lens _eC2VPCEndpointSecurityGroupIds (\s a -> s { _eC2VPCEndpointSecurityGroupIds = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-servicename
 ecvpceServiceName :: Lens' EC2VPCEndpoint (Val Text)
 ecvpceServiceName = lens _eC2VPCEndpointServiceName (\s a -> s { _eC2VPCEndpointServiceName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-subnetids
+ecvpceSubnetIds :: Lens' EC2VPCEndpoint (Maybe (ValList Text))
+ecvpceSubnetIds = lens _eC2VPCEndpointSubnetIds (\s a -> s { _eC2VPCEndpointSubnetIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-vpcendpointtype
+ecvpceVPCEndpointType :: Lens' EC2VPCEndpoint (Maybe (Val Text))
+ecvpceVPCEndpointType = lens _eC2VPCEndpointVPCEndpointType (\s a -> s { _eC2VPCEndpointVPCEndpointType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-vpcid
 ecvpceVpcId :: Lens' EC2VPCEndpoint (Val Text)
diff --git a/library-gen/Stratosphere/Resources/EC2VPCEndpointConnectionNotification.hs b/library-gen/Stratosphere/Resources/EC2VPCEndpointConnectionNotification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2VPCEndpointConnectionNotification.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html
+
+module Stratosphere.Resources.EC2VPCEndpointConnectionNotification where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2VPCEndpointConnectionNotification. See
+-- 'ec2VPCEndpointConnectionNotification' for a more convenient constructor.
+data EC2VPCEndpointConnectionNotification =
+  EC2VPCEndpointConnectionNotification
+  { _eC2VPCEndpointConnectionNotificationConnectionEvents :: ValList Text
+  , _eC2VPCEndpointConnectionNotificationConnectionNotificationArn :: Val Text
+  , _eC2VPCEndpointConnectionNotificationServiceId :: Maybe (Val Text)
+  , _eC2VPCEndpointConnectionNotificationVPCEndpointId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2VPCEndpointConnectionNotification where
+  toJSON EC2VPCEndpointConnectionNotification{..} =
+    object $
+    catMaybes
+    [ (Just . ("ConnectionEvents",) . toJSON) _eC2VPCEndpointConnectionNotificationConnectionEvents
+    , (Just . ("ConnectionNotificationArn",) . toJSON) _eC2VPCEndpointConnectionNotificationConnectionNotificationArn
+    , fmap (("ServiceId",) . toJSON) _eC2VPCEndpointConnectionNotificationServiceId
+    , fmap (("VPCEndpointId",) . toJSON) _eC2VPCEndpointConnectionNotificationVPCEndpointId
+    ]
+
+instance FromJSON EC2VPCEndpointConnectionNotification where
+  parseJSON (Object obj) =
+    EC2VPCEndpointConnectionNotification <$>
+      (obj .: "ConnectionEvents") <*>
+      (obj .: "ConnectionNotificationArn") <*>
+      (obj .:? "ServiceId") <*>
+      (obj .:? "VPCEndpointId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2VPCEndpointConnectionNotification' containing
+-- required fields as arguments.
+ec2VPCEndpointConnectionNotification
+  :: ValList Text -- ^ 'ecvpcecnConnectionEvents'
+  -> Val Text -- ^ 'ecvpcecnConnectionNotificationArn'
+  -> EC2VPCEndpointConnectionNotification
+ec2VPCEndpointConnectionNotification connectionEventsarg connectionNotificationArnarg =
+  EC2VPCEndpointConnectionNotification
+  { _eC2VPCEndpointConnectionNotificationConnectionEvents = connectionEventsarg
+  , _eC2VPCEndpointConnectionNotificationConnectionNotificationArn = connectionNotificationArnarg
+  , _eC2VPCEndpointConnectionNotificationServiceId = Nothing
+  , _eC2VPCEndpointConnectionNotificationVPCEndpointId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-connectionevents
+ecvpcecnConnectionEvents :: Lens' EC2VPCEndpointConnectionNotification (ValList Text)
+ecvpcecnConnectionEvents = lens _eC2VPCEndpointConnectionNotificationConnectionEvents (\s a -> s { _eC2VPCEndpointConnectionNotificationConnectionEvents = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-connectionnotificationarn
+ecvpcecnConnectionNotificationArn :: Lens' EC2VPCEndpointConnectionNotification (Val Text)
+ecvpcecnConnectionNotificationArn = lens _eC2VPCEndpointConnectionNotificationConnectionNotificationArn (\s a -> s { _eC2VPCEndpointConnectionNotificationConnectionNotificationArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-serviceid
+ecvpcecnServiceId :: Lens' EC2VPCEndpointConnectionNotification (Maybe (Val Text))
+ecvpcecnServiceId = lens _eC2VPCEndpointConnectionNotificationServiceId (\s a -> s { _eC2VPCEndpointConnectionNotificationServiceId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-vpcendpointid
+ecvpcecnVPCEndpointId :: Lens' EC2VPCEndpointConnectionNotification (Maybe (Val Text))
+ecvpcecnVPCEndpointId = lens _eC2VPCEndpointConnectionNotificationVPCEndpointId (\s a -> s { _eC2VPCEndpointConnectionNotificationVPCEndpointId = a })
diff --git a/library-gen/Stratosphere/Resources/SSMResourceDataSync.hs b/library-gen/Stratosphere/Resources/SSMResourceDataSync.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SSMResourceDataSync.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html
+
+module Stratosphere.Resources.SSMResourceDataSync where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for SSMResourceDataSync. See
+-- 'ssmResourceDataSync' for a more convenient constructor.
+data SSMResourceDataSync =
+  SSMResourceDataSync
+  { _sSMResourceDataSyncBucketName :: Val Text
+  , _sSMResourceDataSyncBucketPrefix :: Maybe (Val Text)
+  , _sSMResourceDataSyncBucketRegion :: Val Text
+  , _sSMResourceDataSyncKMSKeyArn :: Maybe (Val Text)
+  , _sSMResourceDataSyncSyncFormat :: Val Text
+  , _sSMResourceDataSyncSyncName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON SSMResourceDataSync where
+  toJSON SSMResourceDataSync{..} =
+    object $
+    catMaybes
+    [ (Just . ("BucketName",) . toJSON) _sSMResourceDataSyncBucketName
+    , fmap (("BucketPrefix",) . toJSON) _sSMResourceDataSyncBucketPrefix
+    , (Just . ("BucketRegion",) . toJSON) _sSMResourceDataSyncBucketRegion
+    , fmap (("KMSKeyArn",) . toJSON) _sSMResourceDataSyncKMSKeyArn
+    , (Just . ("SyncFormat",) . toJSON) _sSMResourceDataSyncSyncFormat
+    , (Just . ("SyncName",) . toJSON) _sSMResourceDataSyncSyncName
+    ]
+
+instance FromJSON SSMResourceDataSync where
+  parseJSON (Object obj) =
+    SSMResourceDataSync <$>
+      (obj .: "BucketName") <*>
+      (obj .:? "BucketPrefix") <*>
+      (obj .: "BucketRegion") <*>
+      (obj .:? "KMSKeyArn") <*>
+      (obj .: "SyncFormat") <*>
+      (obj .: "SyncName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMResourceDataSync' containing required fields as
+-- arguments.
+ssmResourceDataSync
+  :: Val Text -- ^ 'ssmrdsBucketName'
+  -> Val Text -- ^ 'ssmrdsBucketRegion'
+  -> Val Text -- ^ 'ssmrdsSyncFormat'
+  -> Val Text -- ^ 'ssmrdsSyncName'
+  -> SSMResourceDataSync
+ssmResourceDataSync bucketNamearg bucketRegionarg syncFormatarg syncNamearg =
+  SSMResourceDataSync
+  { _sSMResourceDataSyncBucketName = bucketNamearg
+  , _sSMResourceDataSyncBucketPrefix = Nothing
+  , _sSMResourceDataSyncBucketRegion = bucketRegionarg
+  , _sSMResourceDataSyncKMSKeyArn = Nothing
+  , _sSMResourceDataSyncSyncFormat = syncFormatarg
+  , _sSMResourceDataSyncSyncName = syncNamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketname
+ssmrdsBucketName :: Lens' SSMResourceDataSync (Val Text)
+ssmrdsBucketName = lens _sSMResourceDataSyncBucketName (\s a -> s { _sSMResourceDataSyncBucketName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketprefix
+ssmrdsBucketPrefix :: Lens' SSMResourceDataSync (Maybe (Val Text))
+ssmrdsBucketPrefix = lens _sSMResourceDataSyncBucketPrefix (\s a -> s { _sSMResourceDataSyncBucketPrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketregion
+ssmrdsBucketRegion :: Lens' SSMResourceDataSync (Val Text)
+ssmrdsBucketRegion = lens _sSMResourceDataSyncBucketRegion (\s a -> s { _sSMResourceDataSyncBucketRegion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-kmskeyarn
+ssmrdsKMSKeyArn :: Lens' SSMResourceDataSync (Maybe (Val Text))
+ssmrdsKMSKeyArn = lens _sSMResourceDataSyncKMSKeyArn (\s a -> s { _sSMResourceDataSyncKMSKeyArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-syncformat
+ssmrdsSyncFormat :: Lens' SSMResourceDataSync (Val Text)
+ssmrdsSyncFormat = lens _sSMResourceDataSyncSyncFormat (\s a -> s { _sSMResourceDataSyncSyncFormat = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-syncname
+ssmrdsSyncName :: Lens' SSMResourceDataSync (Val Text)
+ssmrdsSyncName = lens _sSMResourceDataSyncSyncName (\s a -> s { _sSMResourceDataSyncSyncName = a })
diff --git a/library-gen/Stratosphere/Resources/SageMakerEndpoint.hs b/library-gen/Stratosphere/Resources/SageMakerEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SageMakerEndpoint.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html
+
+module Stratosphere.Resources.SageMakerEndpoint where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for SageMakerEndpoint. See 'sageMakerEndpoint'
+-- for a more convenient constructor.
+data SageMakerEndpoint =
+  SageMakerEndpoint
+  { _sageMakerEndpointEndpointConfigName :: Val Text
+  , _sageMakerEndpointEndpointName :: Maybe (Val Text)
+  , _sageMakerEndpointTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerEndpoint where
+  toJSON SageMakerEndpoint{..} =
+    object $
+    catMaybes
+    [ (Just . ("EndpointConfigName",) . toJSON) _sageMakerEndpointEndpointConfigName
+    , fmap (("EndpointName",) . toJSON) _sageMakerEndpointEndpointName
+    , fmap (("Tags",) . toJSON) _sageMakerEndpointTags
+    ]
+
+instance FromJSON SageMakerEndpoint where
+  parseJSON (Object obj) =
+    SageMakerEndpoint <$>
+      (obj .: "EndpointConfigName") <*>
+      (obj .:? "EndpointName") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerEndpoint' containing required fields as
+-- arguments.
+sageMakerEndpoint
+  :: Val Text -- ^ 'smeEndpointConfigName'
+  -> SageMakerEndpoint
+sageMakerEndpoint endpointConfigNamearg =
+  SageMakerEndpoint
+  { _sageMakerEndpointEndpointConfigName = endpointConfigNamearg
+  , _sageMakerEndpointEndpointName = Nothing
+  , _sageMakerEndpointTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html#cfn-sagemaker-endpoint-endpointconfigname
+smeEndpointConfigName :: Lens' SageMakerEndpoint (Val Text)
+smeEndpointConfigName = lens _sageMakerEndpointEndpointConfigName (\s a -> s { _sageMakerEndpointEndpointConfigName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html#cfn-sagemaker-endpoint-endpointname
+smeEndpointName :: Lens' SageMakerEndpoint (Maybe (Val Text))
+smeEndpointName = lens _sageMakerEndpointEndpointName (\s a -> s { _sageMakerEndpointEndpointName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html#cfn-sagemaker-endpoint-tags
+smeTags :: Lens' SageMakerEndpoint (Maybe [Tag])
+smeTags = lens _sageMakerEndpointTags (\s a -> s { _sageMakerEndpointTags = a })
diff --git a/library-gen/Stratosphere/Resources/SageMakerEndpointConfig.hs b/library-gen/Stratosphere/Resources/SageMakerEndpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SageMakerEndpointConfig.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html
+
+module Stratosphere.Resources.SageMakerEndpointConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.SageMakerEndpointConfigProductionVariant
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for SageMakerEndpointConfig. See
+-- 'sageMakerEndpointConfig' for a more convenient constructor.
+data SageMakerEndpointConfig =
+  SageMakerEndpointConfig
+  { _sageMakerEndpointConfigEndpointConfigName :: Maybe (Val Text)
+  , _sageMakerEndpointConfigKmsKeyId :: Maybe (Val Text)
+  , _sageMakerEndpointConfigProductionVariants :: [SageMakerEndpointConfigProductionVariant]
+  , _sageMakerEndpointConfigTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerEndpointConfig where
+  toJSON SageMakerEndpointConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("EndpointConfigName",) . toJSON) _sageMakerEndpointConfigEndpointConfigName
+    , fmap (("KmsKeyId",) . toJSON) _sageMakerEndpointConfigKmsKeyId
+    , (Just . ("ProductionVariants",) . toJSON) _sageMakerEndpointConfigProductionVariants
+    , fmap (("Tags",) . toJSON) _sageMakerEndpointConfigTags
+    ]
+
+instance FromJSON SageMakerEndpointConfig where
+  parseJSON (Object obj) =
+    SageMakerEndpointConfig <$>
+      (obj .:? "EndpointConfigName") <*>
+      (obj .:? "KmsKeyId") <*>
+      (obj .: "ProductionVariants") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerEndpointConfig' containing required fields as
+-- arguments.
+sageMakerEndpointConfig
+  :: [SageMakerEndpointConfigProductionVariant] -- ^ 'smecProductionVariants'
+  -> SageMakerEndpointConfig
+sageMakerEndpointConfig productionVariantsarg =
+  SageMakerEndpointConfig
+  { _sageMakerEndpointConfigEndpointConfigName = Nothing
+  , _sageMakerEndpointConfigKmsKeyId = Nothing
+  , _sageMakerEndpointConfigProductionVariants = productionVariantsarg
+  , _sageMakerEndpointConfigTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-endpointconfigname
+smecEndpointConfigName :: Lens' SageMakerEndpointConfig (Maybe (Val Text))
+smecEndpointConfigName = lens _sageMakerEndpointConfigEndpointConfigName (\s a -> s { _sageMakerEndpointConfigEndpointConfigName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-kmskeyid
+smecKmsKeyId :: Lens' SageMakerEndpointConfig (Maybe (Val Text))
+smecKmsKeyId = lens _sageMakerEndpointConfigKmsKeyId (\s a -> s { _sageMakerEndpointConfigKmsKeyId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-productionvariants
+smecProductionVariants :: Lens' SageMakerEndpointConfig [SageMakerEndpointConfigProductionVariant]
+smecProductionVariants = lens _sageMakerEndpointConfigProductionVariants (\s a -> s { _sageMakerEndpointConfigProductionVariants = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-tags
+smecTags :: Lens' SageMakerEndpointConfig (Maybe [Tag])
+smecTags = lens _sageMakerEndpointConfigTags (\s a -> s { _sageMakerEndpointConfigTags = a })
diff --git a/library-gen/Stratosphere/Resources/SageMakerModel.hs b/library-gen/Stratosphere/Resources/SageMakerModel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SageMakerModel.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html
+
+module Stratosphere.Resources.SageMakerModel where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.SageMakerModelContainerDefinition
+import Stratosphere.ResourceProperties.Tag
+import Stratosphere.ResourceProperties.SageMakerModelVpcConfig
+
+-- | Full data type definition for SageMakerModel. See 'sageMakerModel' for a
+-- more convenient constructor.
+data SageMakerModel =
+  SageMakerModel
+  { _sageMakerModelExecutionRoleArn :: Val Text
+  , _sageMakerModelModelName :: Maybe (Val Text)
+  , _sageMakerModelPrimaryContainer :: SageMakerModelContainerDefinition
+  , _sageMakerModelTags :: Maybe [Tag]
+  , _sageMakerModelVpcConfig :: Maybe SageMakerModelVpcConfig
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerModel where
+  toJSON SageMakerModel{..} =
+    object $
+    catMaybes
+    [ (Just . ("ExecutionRoleArn",) . toJSON) _sageMakerModelExecutionRoleArn
+    , fmap (("ModelName",) . toJSON) _sageMakerModelModelName
+    , (Just . ("PrimaryContainer",) . toJSON) _sageMakerModelPrimaryContainer
+    , fmap (("Tags",) . toJSON) _sageMakerModelTags
+    , fmap (("VpcConfig",) . toJSON) _sageMakerModelVpcConfig
+    ]
+
+instance FromJSON SageMakerModel where
+  parseJSON (Object obj) =
+    SageMakerModel <$>
+      (obj .: "ExecutionRoleArn") <*>
+      (obj .:? "ModelName") <*>
+      (obj .: "PrimaryContainer") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "VpcConfig")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerModel' containing required fields as arguments.
+sageMakerModel
+  :: Val Text -- ^ 'smmExecutionRoleArn'
+  -> SageMakerModelContainerDefinition -- ^ 'smmPrimaryContainer'
+  -> SageMakerModel
+sageMakerModel executionRoleArnarg primaryContainerarg =
+  SageMakerModel
+  { _sageMakerModelExecutionRoleArn = executionRoleArnarg
+  , _sageMakerModelModelName = Nothing
+  , _sageMakerModelPrimaryContainer = primaryContainerarg
+  , _sageMakerModelTags = Nothing
+  , _sageMakerModelVpcConfig = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-executionrolearn
+smmExecutionRoleArn :: Lens' SageMakerModel (Val Text)
+smmExecutionRoleArn = lens _sageMakerModelExecutionRoleArn (\s a -> s { _sageMakerModelExecutionRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-modelname
+smmModelName :: Lens' SageMakerModel (Maybe (Val Text))
+smmModelName = lens _sageMakerModelModelName (\s a -> s { _sageMakerModelModelName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-primarycontainer
+smmPrimaryContainer :: Lens' SageMakerModel SageMakerModelContainerDefinition
+smmPrimaryContainer = lens _sageMakerModelPrimaryContainer (\s a -> s { _sageMakerModelPrimaryContainer = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-tags
+smmTags :: Lens' SageMakerModel (Maybe [Tag])
+smmTags = lens _sageMakerModelTags (\s a -> s { _sageMakerModelTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-vpcconfig
+smmVpcConfig :: Lens' SageMakerModel (Maybe SageMakerModelVpcConfig)
+smmVpcConfig = lens _sageMakerModelVpcConfig (\s a -> s { _sageMakerModelVpcConfig = a })
diff --git a/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs b/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SageMakerNotebookInstance.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html
+
+module Stratosphere.Resources.SageMakerNotebookInstance where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for SageMakerNotebookInstance. See
+-- 'sageMakerNotebookInstance' for a more convenient constructor.
+data SageMakerNotebookInstance =
+  SageMakerNotebookInstance
+  { _sageMakerNotebookInstanceDirectInternetAccess :: Maybe (Val Text)
+  , _sageMakerNotebookInstanceInstanceType :: Val Text
+  , _sageMakerNotebookInstanceKmsKeyId :: Maybe (Val Text)
+  , _sageMakerNotebookInstanceLifecycleConfigName :: Maybe (Val Text)
+  , _sageMakerNotebookInstanceNotebookInstanceName :: Maybe (Val Text)
+  , _sageMakerNotebookInstanceRoleArn :: Val Text
+  , _sageMakerNotebookInstanceSecurityGroupIds :: Maybe (ValList Text)
+  , _sageMakerNotebookInstanceSubnetId :: Maybe (Val Text)
+  , _sageMakerNotebookInstanceTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerNotebookInstance where
+  toJSON SageMakerNotebookInstance{..} =
+    object $
+    catMaybes
+    [ fmap (("DirectInternetAccess",) . toJSON) _sageMakerNotebookInstanceDirectInternetAccess
+    , (Just . ("InstanceType",) . toJSON) _sageMakerNotebookInstanceInstanceType
+    , fmap (("KmsKeyId",) . toJSON) _sageMakerNotebookInstanceKmsKeyId
+    , fmap (("LifecycleConfigName",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigName
+    , fmap (("NotebookInstanceName",) . toJSON) _sageMakerNotebookInstanceNotebookInstanceName
+    , (Just . ("RoleArn",) . toJSON) _sageMakerNotebookInstanceRoleArn
+    , fmap (("SecurityGroupIds",) . toJSON) _sageMakerNotebookInstanceSecurityGroupIds
+    , fmap (("SubnetId",) . toJSON) _sageMakerNotebookInstanceSubnetId
+    , fmap (("Tags",) . toJSON) _sageMakerNotebookInstanceTags
+    ]
+
+instance FromJSON SageMakerNotebookInstance where
+  parseJSON (Object obj) =
+    SageMakerNotebookInstance <$>
+      (obj .:? "DirectInternetAccess") <*>
+      (obj .: "InstanceType") <*>
+      (obj .:? "KmsKeyId") <*>
+      (obj .:? "LifecycleConfigName") <*>
+      (obj .:? "NotebookInstanceName") <*>
+      (obj .: "RoleArn") <*>
+      (obj .:? "SecurityGroupIds") <*>
+      (obj .:? "SubnetId") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerNotebookInstance' containing required fields as
+-- arguments.
+sageMakerNotebookInstance
+  :: Val Text -- ^ 'smniInstanceType'
+  -> Val Text -- ^ 'smniRoleArn'
+  -> SageMakerNotebookInstance
+sageMakerNotebookInstance instanceTypearg roleArnarg =
+  SageMakerNotebookInstance
+  { _sageMakerNotebookInstanceDirectInternetAccess = Nothing
+  , _sageMakerNotebookInstanceInstanceType = instanceTypearg
+  , _sageMakerNotebookInstanceKmsKeyId = Nothing
+  , _sageMakerNotebookInstanceLifecycleConfigName = Nothing
+  , _sageMakerNotebookInstanceNotebookInstanceName = Nothing
+  , _sageMakerNotebookInstanceRoleArn = roleArnarg
+  , _sageMakerNotebookInstanceSecurityGroupIds = Nothing
+  , _sageMakerNotebookInstanceSubnetId = Nothing
+  , _sageMakerNotebookInstanceTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-directinternetaccess
+smniDirectInternetAccess :: Lens' SageMakerNotebookInstance (Maybe (Val Text))
+smniDirectInternetAccess = lens _sageMakerNotebookInstanceDirectInternetAccess (\s a -> s { _sageMakerNotebookInstanceDirectInternetAccess = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-instancetype
+smniInstanceType :: Lens' SageMakerNotebookInstance (Val Text)
+smniInstanceType = lens _sageMakerNotebookInstanceInstanceType (\s a -> s { _sageMakerNotebookInstanceInstanceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-kmskeyid
+smniKmsKeyId :: Lens' SageMakerNotebookInstance (Maybe (Val Text))
+smniKmsKeyId = lens _sageMakerNotebookInstanceKmsKeyId (\s a -> s { _sageMakerNotebookInstanceKmsKeyId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-lifecycleconfigname
+smniLifecycleConfigName :: Lens' SageMakerNotebookInstance (Maybe (Val Text))
+smniLifecycleConfigName = lens _sageMakerNotebookInstanceLifecycleConfigName (\s a -> s { _sageMakerNotebookInstanceLifecycleConfigName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-notebookinstancename
+smniNotebookInstanceName :: Lens' SageMakerNotebookInstance (Maybe (Val Text))
+smniNotebookInstanceName = lens _sageMakerNotebookInstanceNotebookInstanceName (\s a -> s { _sageMakerNotebookInstanceNotebookInstanceName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-rolearn
+smniRoleArn :: Lens' SageMakerNotebookInstance (Val Text)
+smniRoleArn = lens _sageMakerNotebookInstanceRoleArn (\s a -> s { _sageMakerNotebookInstanceRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-securitygroupids
+smniSecurityGroupIds :: Lens' SageMakerNotebookInstance (Maybe (ValList Text))
+smniSecurityGroupIds = lens _sageMakerNotebookInstanceSecurityGroupIds (\s a -> s { _sageMakerNotebookInstanceSecurityGroupIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-subnetid
+smniSubnetId :: Lens' SageMakerNotebookInstance (Maybe (Val Text))
+smniSubnetId = lens _sageMakerNotebookInstanceSubnetId (\s a -> s { _sageMakerNotebookInstanceSubnetId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-tags
+smniTags :: Lens' SageMakerNotebookInstance (Maybe [Tag])
+smniTags = lens _sageMakerNotebookInstanceTags (\s a -> s { _sageMakerNotebookInstanceTags = a })
diff --git a/library-gen/Stratosphere/Resources/SageMakerNotebookInstanceLifecycleConfig.hs b/library-gen/Stratosphere/Resources/SageMakerNotebookInstanceLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SageMakerNotebookInstanceLifecycleConfig.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html
+
+module Stratosphere.Resources.SageMakerNotebookInstanceLifecycleConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook
+
+-- | Full data type definition for SageMakerNotebookInstanceLifecycleConfig.
+-- See 'sageMakerNotebookInstanceLifecycleConfig' for a more convenient
+-- constructor.
+data SageMakerNotebookInstanceLifecycleConfig =
+  SageMakerNotebookInstanceLifecycleConfig
+  { _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleConfigName :: Maybe (Val Text)
+  , _sageMakerNotebookInstanceLifecycleConfigOnCreate :: Maybe [SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook]
+  , _sageMakerNotebookInstanceLifecycleConfigOnStart :: Maybe [SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook]
+  } deriving (Show, Eq)
+
+instance ToJSON SageMakerNotebookInstanceLifecycleConfig where
+  toJSON SageMakerNotebookInstanceLifecycleConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("NotebookInstanceLifecycleConfigName",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleConfigName
+    , fmap (("OnCreate",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigOnCreate
+    , fmap (("OnStart",) . toJSON) _sageMakerNotebookInstanceLifecycleConfigOnStart
+    ]
+
+instance FromJSON SageMakerNotebookInstanceLifecycleConfig where
+  parseJSON (Object obj) =
+    SageMakerNotebookInstanceLifecycleConfig <$>
+      (obj .:? "NotebookInstanceLifecycleConfigName") <*>
+      (obj .:? "OnCreate") <*>
+      (obj .:? "OnStart")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SageMakerNotebookInstanceLifecycleConfig' containing
+-- required fields as arguments.
+sageMakerNotebookInstanceLifecycleConfig
+  :: SageMakerNotebookInstanceLifecycleConfig
+sageMakerNotebookInstanceLifecycleConfig  =
+  SageMakerNotebookInstanceLifecycleConfig
+  { _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleConfigName = Nothing
+  , _sageMakerNotebookInstanceLifecycleConfigOnCreate = Nothing
+  , _sageMakerNotebookInstanceLifecycleConfigOnStart = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html#cfn-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecycleconfigname
+smnilcNotebookInstanceLifecycleConfigName :: Lens' SageMakerNotebookInstanceLifecycleConfig (Maybe (Val Text))
+smnilcNotebookInstanceLifecycleConfigName = lens _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleConfigName (\s a -> s { _sageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleConfigName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html#cfn-sagemaker-notebookinstancelifecycleconfig-oncreate
+smnilcOnCreate :: Lens' SageMakerNotebookInstanceLifecycleConfig (Maybe [SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook])
+smnilcOnCreate = lens _sageMakerNotebookInstanceLifecycleConfigOnCreate (\s a -> s { _sageMakerNotebookInstanceLifecycleConfigOnCreate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html#cfn-sagemaker-notebookinstancelifecycleconfig-onstart
+smnilcOnStart :: Lens' SageMakerNotebookInstanceLifecycleConfig (Maybe [SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook])
+smnilcOnStart = lens _sageMakerNotebookInstanceLifecycleConfigOnStart (\s a -> s { _sageMakerNotebookInstanceLifecycleConfigOnStart = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs b/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
--- a/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
+++ b/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
@@ -9,6 +9,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckConfig
+import Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckCustomConfig
 
 -- | Full data type definition for ServiceDiscoveryService. See
 -- 'serviceDiscoveryService' for a more convenient constructor.
@@ -17,6 +18,7 @@
   { _serviceDiscoveryServiceDescription :: Maybe (Val Text)
   , _serviceDiscoveryServiceDnsConfig :: ServiceDiscoveryServiceDnsConfig
   , _serviceDiscoveryServiceHealthCheckConfig :: Maybe ServiceDiscoveryServiceHealthCheckConfig
+  , _serviceDiscoveryServiceHealthCheckCustomConfig :: Maybe ServiceDiscoveryServiceHealthCheckCustomConfig
   , _serviceDiscoveryServiceName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -27,6 +29,7 @@
     [ fmap (("Description",) . toJSON) _serviceDiscoveryServiceDescription
     , (Just . ("DnsConfig",) . toJSON) _serviceDiscoveryServiceDnsConfig
     , fmap (("HealthCheckConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckConfig
+    , fmap (("HealthCheckCustomConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckCustomConfig
     , fmap (("Name",) . toJSON) _serviceDiscoveryServiceName
     ]
 
@@ -36,6 +39,7 @@
       (obj .:? "Description") <*>
       (obj .: "DnsConfig") <*>
       (obj .:? "HealthCheckConfig") <*>
+      (obj .:? "HealthCheckCustomConfig") <*>
       (obj .:? "Name")
   parseJSON _ = mempty
 
@@ -49,6 +53,7 @@
   { _serviceDiscoveryServiceDescription = Nothing
   , _serviceDiscoveryServiceDnsConfig = dnsConfigarg
   , _serviceDiscoveryServiceHealthCheckConfig = Nothing
+  , _serviceDiscoveryServiceHealthCheckCustomConfig = Nothing
   , _serviceDiscoveryServiceName = Nothing
   }
 
@@ -63,6 +68,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-healthcheckconfig
 sdsHealthCheckConfig :: Lens' ServiceDiscoveryService (Maybe ServiceDiscoveryServiceHealthCheckConfig)
 sdsHealthCheckConfig = lens _serviceDiscoveryServiceHealthCheckConfig (\s a -> s { _serviceDiscoveryServiceHealthCheckConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-healthcheckcustomconfig
+sdsHealthCheckCustomConfig :: Lens' ServiceDiscoveryService (Maybe ServiceDiscoveryServiceHealthCheckCustomConfig)
+sdsHealthCheckCustomConfig = lens _serviceDiscoveryServiceHealthCheckCustomConfig (\s a -> s { _serviceDiscoveryServiceHealthCheckCustomConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-name
 sdsName :: Lens' ServiceDiscoveryService (Maybe (Val Text))
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 327d2d239b5f7eb6db4c43d0f6b9e8acf9f150bb492aa64b7fc3375d385a517b
+-- hash: d5cf6557d3fdc2c2df5c984ed31ff17e69db62fec5d9fb6f07a916d051517ea1
 
 name:           stratosphere
-version:        0.24.1
+version:        0.24.2
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -31,21 +31,6 @@
   default: True
 
 library
-  hs-source-dirs:
-      library
-      library-gen
-  ghc-options: -Wall
-  build-depends:
-      aeson >=0.11
-    , aeson-pretty >=0.8
-    , base >=4.8 && <5
-    , bytestring
-    , containers
-    , hashable
-    , lens >=4.5
-    , template-haskell >=2.0
-    , text >=1.1
-    , unordered-containers >=0.2
   exposed-modules:
       Stratosphere
       Stratosphere.Check
@@ -62,6 +47,9 @@
       Stratosphere.Template
       Stratosphere.Types
       Stratosphere.Values
+      Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId
+      Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow
+      Stratosphere.ResourceProperties.AmazonMQBrokerUser
       Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey
       Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting
       Stratosphere.ResourceProperties.ApiGatewayDeploymentStageDescription
@@ -86,6 +74,7 @@
       Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
       Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig
       Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig
+      Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig
       Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig
       Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig
       Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig
@@ -186,6 +175,8 @@
       Stratosphere.ResourceProperties.CodePipelinePipelineOutputArtifact
       Stratosphere.ResourceProperties.CodePipelinePipelineStageDeclaration
       Stratosphere.ResourceProperties.CodePipelinePipelineStageTransition
+      Stratosphere.ResourceProperties.CodePipelineWebhookWebhookAuthConfiguration
+      Stratosphere.ResourceProperties.CodePipelineWebhookWebhookFilterRule
       Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoIdentityProvider
       Stratosphere.ResourceProperties.CognitoIdentityPoolCognitoStreams
       Stratosphere.ResourceProperties.CognitoIdentityPoolPushSync
@@ -559,11 +550,16 @@
       Stratosphere.ResourceProperties.S3BucketTransition
       Stratosphere.ResourceProperties.S3BucketVersioningConfiguration
       Stratosphere.ResourceProperties.S3BucketWebsiteConfiguration
+      Stratosphere.ResourceProperties.SageMakerEndpointConfigProductionVariant
+      Stratosphere.ResourceProperties.SageMakerModelContainerDefinition
+      Stratosphere.ResourceProperties.SageMakerModelVpcConfig
+      Stratosphere.ResourceProperties.SageMakerNotebookInstanceLifecycleConfigNotebookInstanceLifecycleHook
       Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties
       Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckConfig
+      Stratosphere.ResourceProperties.ServiceDiscoveryServiceHealthCheckCustomConfig
       Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationCloudWatchDestination
       Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationDimensionConfiguration
       Stratosphere.ResourceProperties.SESConfigurationSetEventDestinationEventDestination
@@ -624,6 +620,8 @@
       Stratosphere.ResourceProperties.WAFXssMatchSetFieldToMatch
       Stratosphere.ResourceProperties.WAFXssMatchSetXssMatchTuple
       Stratosphere.Resources
+      Stratosphere.Resources.AmazonMQBroker
+      Stratosphere.Resources.AmazonMQConfiguration
       Stratosphere.Resources.ApiGatewayAccount
       Stratosphere.Resources.ApiGatewayApiKey
       Stratosphere.Resources.ApiGatewayAuthorizer
@@ -680,6 +678,7 @@
       Stratosphere.Resources.CodeDeployDeploymentGroup
       Stratosphere.Resources.CodePipelineCustomActionType
       Stratosphere.Resources.CodePipelinePipeline
+      Stratosphere.Resources.CodePipelineWebhook
       Stratosphere.Resources.CognitoIdentityPool
       Stratosphere.Resources.CognitoIdentityPoolRoleAttachment
       Stratosphere.Resources.CognitoUserPool
@@ -737,6 +736,7 @@
       Stratosphere.Resources.EC2VPCCidrBlock
       Stratosphere.Resources.EC2VPCDHCPOptionsAssociation
       Stratosphere.Resources.EC2VPCEndpoint
+      Stratosphere.Resources.EC2VPCEndpointConnectionNotification
       Stratosphere.Resources.EC2VPCGatewayAttachment
       Stratosphere.Resources.EC2VPCPeeringConnection
       Stratosphere.Resources.EC2VPNConnection
@@ -857,6 +857,11 @@
       Stratosphere.Resources.Route53RecordSetGroup
       Stratosphere.Resources.S3Bucket
       Stratosphere.Resources.S3BucketPolicy
+      Stratosphere.Resources.SageMakerEndpoint
+      Stratosphere.Resources.SageMakerEndpointConfig
+      Stratosphere.Resources.SageMakerModel
+      Stratosphere.Resources.SageMakerNotebookInstance
+      Stratosphere.Resources.SageMakerNotebookInstanceLifecycleConfig
       Stratosphere.Resources.SDBDomain
       Stratosphere.Resources.ServiceCatalogAcceptedPortfolioShare
       Stratosphere.Resources.ServiceCatalogCloudFormationProduct
@@ -890,6 +895,7 @@
       Stratosphere.Resources.SSMMaintenanceWindowTask
       Stratosphere.Resources.SSMParameter
       Stratosphere.Resources.SSMPatchBaseline
+      Stratosphere.Resources.SSMResourceDataSync
       Stratosphere.Resources.StepFunctionsActivity
       Stratosphere.Resources.StepFunctionsStateMachine
       Stratosphere.Resources.WAFByteMatchSet
@@ -910,10 +916,27 @@
       Stratosphere.Resources.WorkSpacesWorkspace
   other-modules:
       Paths_stratosphere
+  hs-source-dirs:
+      library
+      library-gen
+  ghc-options: -Wall
+  build-depends:
+      aeson >=0.11
+    , aeson-pretty >=0.8
+    , base >=4.8 && <5
+    , bytestring
+    , containers
+    , hashable
+    , lens >=4.5
+    , template-haskell >=2.0
+    , text >=1.1
+    , unordered-containers >=0.2
   default-language: Haskell2010
 
 executable apigw-lambda-dynamodb
   main-is: apigw-lambda-dynamodb.hs
+  other-modules:
+      Paths_stratosphere
   hs-source-dirs:
       examples
   ghc-options: -Wall
@@ -931,12 +954,12 @@
     , unordered-containers >=0.2
   if flag(library-only)
     buildable: False
-  other-modules:
-      Paths_stratosphere
   default-language: Haskell2010
 
 executable auto-scaling-group
   main-is: auto-scaling-group.hs
+  other-modules:
+      Paths_stratosphere
   hs-source-dirs:
       examples
   ghc-options: -Wall
@@ -954,12 +977,12 @@
     , unordered-containers >=0.2
   if flag(library-only)
     buildable: False
-  other-modules:
-      Paths_stratosphere
   default-language: Haskell2010
 
 executable ec2-with-eip
   main-is: ec2-with-eip.hs
+  other-modules:
+      Paths_stratosphere
   hs-source-dirs:
       examples
   ghc-options: -Wall
@@ -978,12 +1001,12 @@
     , unordered-containers >=0.2
   if flag(library-only)
     buildable: False
-  other-modules:
-      Paths_stratosphere
   default-language: Haskell2010
 
 executable rds-master-replica
   main-is: rds-master-replica.hs
+  other-modules:
+      Paths_stratosphere
   hs-source-dirs:
       examples
   ghc-options: -Wall
@@ -1001,12 +1024,12 @@
     , unordered-containers >=0.2
   if flag(library-only)
     buildable: False
-  other-modules:
-      Paths_stratosphere
   default-language: Haskell2010
 
 executable s3-copy
   main-is: s3-copy.hs
+  other-modules:
+      Paths_stratosphere
   hs-source-dirs:
       examples
   ghc-options: -Wall
@@ -1024,12 +1047,12 @@
     , unordered-containers >=0.2
   if flag(library-only)
     buildable: False
-  other-modules:
-      Paths_stratosphere
   default-language: Haskell2010
 
 executable simple-lambda
   main-is: simple-lambda.hs
+  other-modules:
+      Paths_stratosphere
   hs-source-dirs:
       examples
   ghc-options: -Wall
@@ -1047,13 +1070,14 @@
     , unordered-containers >=0.2
   if flag(library-only)
     buildable: False
-  other-modules:
-      Paths_stratosphere
   default-language: Haskell2010
 
 test-suite spec
   type: exitcode-stdio-1.0
   main-is: Spec.hs
+  other-modules:
+      Stratosphere.ValuesSpec
+      Paths_stratosphere
   hs-source-dirs:
       tests
   build-depends:
@@ -1070,7 +1094,4 @@
     , template-haskell >=2.0
     , text >=1.1
     , unordered-containers >=0.2
-  other-modules:
-      Stratosphere.ValuesSpec
-      Paths_stratosphere
   default-language: Haskell2010
