diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.29.0
+
+* Update resource specification document to version 2.18.0
+
 ## 0.28.1
 
 * Update resource specification document to version 2.16.0
diff --git a/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationAssociationConfigurationId.hs b/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationAssociationConfigurationId.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AmazonMQConfigurationAssociationConfigurationId.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-configurationassociation-configurationid.html
+
+module Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AmazonMQConfigurationAssociationConfigurationId. See
+-- 'amazonMQConfigurationAssociationConfigurationId' for a more convenient
+-- constructor.
+data AmazonMQConfigurationAssociationConfigurationId =
+  AmazonMQConfigurationAssociationConfigurationId
+  { _amazonMQConfigurationAssociationConfigurationIdId :: Val Text
+  , _amazonMQConfigurationAssociationConfigurationIdRevision :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON AmazonMQConfigurationAssociationConfigurationId where
+  toJSON AmazonMQConfigurationAssociationConfigurationId{..} =
+    object $
+    catMaybes
+    [ (Just . ("Id",) . toJSON) _amazonMQConfigurationAssociationConfigurationIdId
+    , (Just . ("Revision",) . toJSON . fmap Integer') _amazonMQConfigurationAssociationConfigurationIdRevision
+    ]
+
+instance FromJSON AmazonMQConfigurationAssociationConfigurationId where
+  parseJSON (Object obj) =
+    AmazonMQConfigurationAssociationConfigurationId <$>
+      (obj .: "Id") <*>
+      fmap (fmap unInteger') (obj .: "Revision")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AmazonMQConfigurationAssociationConfigurationId'
+-- containing required fields as arguments.
+amazonMQConfigurationAssociationConfigurationId
+  :: Val Text -- ^ 'amqcaciId'
+  -> Val Integer -- ^ 'amqcaciRevision'
+  -> AmazonMQConfigurationAssociationConfigurationId
+amazonMQConfigurationAssociationConfigurationId idarg revisionarg =
+  AmazonMQConfigurationAssociationConfigurationId
+  { _amazonMQConfigurationAssociationConfigurationIdId = idarg
+  , _amazonMQConfigurationAssociationConfigurationIdRevision = revisionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-configurationassociation-configurationid.html#cfn-amazonmq-configurationassociation-configurationid-id
+amqcaciId :: Lens' AmazonMQConfigurationAssociationConfigurationId (Val Text)
+amqcaciId = lens _amazonMQConfigurationAssociationConfigurationIdId (\s a -> s { _amazonMQConfigurationAssociationConfigurationIdId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-configurationassociation-configurationid.html#cfn-amazonmq-configurationassociation-configurationid-revision
+amqcaciRevision :: Lens' AmazonMQConfigurationAssociationConfigurationId (Val Integer)
+amqcaciRevision = lens _amazonMQConfigurationAssociationConfigurationIdRevision (\s a -> s { _amazonMQConfigurationAssociationConfigurationIdRevision = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsChannelRetentionPeriod.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsChannelRetentionPeriod.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsChannelRetentionPeriod.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-channel-retentionperiod.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsChannelRetentionPeriod. See
+-- 'ioTAnalyticsChannelRetentionPeriod' for a more convenient constructor.
+data IoTAnalyticsChannelRetentionPeriod =
+  IoTAnalyticsChannelRetentionPeriod
+  { _ioTAnalyticsChannelRetentionPeriodNumberOfDays :: Maybe (Val Integer)
+  , _ioTAnalyticsChannelRetentionPeriodUnlimited :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsChannelRetentionPeriod where
+  toJSON IoTAnalyticsChannelRetentionPeriod{..} =
+    object $
+    catMaybes
+    [ fmap (("NumberOfDays",) . toJSON . fmap Integer') _ioTAnalyticsChannelRetentionPeriodNumberOfDays
+    , fmap (("Unlimited",) . toJSON . fmap Bool') _ioTAnalyticsChannelRetentionPeriodUnlimited
+    ]
+
+instance FromJSON IoTAnalyticsChannelRetentionPeriod where
+  parseJSON (Object obj) =
+    IoTAnalyticsChannelRetentionPeriod <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumberOfDays") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Unlimited")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsChannelRetentionPeriod' containing required
+-- fields as arguments.
+ioTAnalyticsChannelRetentionPeriod
+  :: IoTAnalyticsChannelRetentionPeriod
+ioTAnalyticsChannelRetentionPeriod  =
+  IoTAnalyticsChannelRetentionPeriod
+  { _ioTAnalyticsChannelRetentionPeriodNumberOfDays = Nothing
+  , _ioTAnalyticsChannelRetentionPeriodUnlimited = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-channel-retentionperiod.html#cfn-iotanalytics-channel-retentionperiod-numberofdays
+itacrpNumberOfDays :: Lens' IoTAnalyticsChannelRetentionPeriod (Maybe (Val Integer))
+itacrpNumberOfDays = lens _ioTAnalyticsChannelRetentionPeriodNumberOfDays (\s a -> s { _ioTAnalyticsChannelRetentionPeriodNumberOfDays = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-channel-retentionperiod.html#cfn-iotanalytics-channel-retentionperiod-unlimited
+itacrpUnlimited :: Lens' IoTAnalyticsChannelRetentionPeriod (Maybe (Val Bool))
+itacrpUnlimited = lens _ioTAnalyticsChannelRetentionPeriodUnlimited (\s a -> s { _ioTAnalyticsChannelRetentionPeriodUnlimited = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetAction.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-action.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction
+
+-- | Full data type definition for IoTAnalyticsDatasetAction. See
+-- 'ioTAnalyticsDatasetAction' for a more convenient constructor.
+data IoTAnalyticsDatasetAction =
+  IoTAnalyticsDatasetAction
+  { _ioTAnalyticsDatasetActionActionName :: Val Text
+  , _ioTAnalyticsDatasetActionContainerAction :: Maybe IoTAnalyticsDatasetContainerAction
+  , _ioTAnalyticsDatasetActionQueryAction :: Maybe IoTAnalyticsDatasetQueryAction
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetAction where
+  toJSON IoTAnalyticsDatasetAction{..} =
+    object $
+    catMaybes
+    [ (Just . ("ActionName",) . toJSON) _ioTAnalyticsDatasetActionActionName
+    , fmap (("ContainerAction",) . toJSON) _ioTAnalyticsDatasetActionContainerAction
+    , fmap (("QueryAction",) . toJSON) _ioTAnalyticsDatasetActionQueryAction
+    ]
+
+instance FromJSON IoTAnalyticsDatasetAction where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetAction <$>
+      (obj .: "ActionName") <*>
+      (obj .:? "ContainerAction") <*>
+      (obj .:? "QueryAction")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetAction' containing required fields as
+-- arguments.
+ioTAnalyticsDatasetAction
+  :: Val Text -- ^ 'itadaActionName'
+  -> IoTAnalyticsDatasetAction
+ioTAnalyticsDatasetAction actionNamearg =
+  IoTAnalyticsDatasetAction
+  { _ioTAnalyticsDatasetActionActionName = actionNamearg
+  , _ioTAnalyticsDatasetActionContainerAction = Nothing
+  , _ioTAnalyticsDatasetActionQueryAction = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-action.html#cfn-iotanalytics-dataset-action-actionname
+itadaActionName :: Lens' IoTAnalyticsDatasetAction (Val Text)
+itadaActionName = lens _ioTAnalyticsDatasetActionActionName (\s a -> s { _ioTAnalyticsDatasetActionActionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-action.html#cfn-iotanalytics-dataset-action-containeraction
+itadaContainerAction :: Lens' IoTAnalyticsDatasetAction (Maybe IoTAnalyticsDatasetContainerAction)
+itadaContainerAction = lens _ioTAnalyticsDatasetActionContainerAction (\s a -> s { _ioTAnalyticsDatasetActionContainerAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-action.html#cfn-iotanalytics-dataset-action-queryaction
+itadaQueryAction :: Lens' IoTAnalyticsDatasetAction (Maybe IoTAnalyticsDatasetQueryAction)
+itadaQueryAction = lens _ioTAnalyticsDatasetActionQueryAction (\s a -> s { _ioTAnalyticsDatasetActionQueryAction = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetContainerAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetContainerAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetContainerAction.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-containeraction.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable
+
+-- | Full data type definition for IoTAnalyticsDatasetContainerAction. See
+-- 'ioTAnalyticsDatasetContainerAction' for a more convenient constructor.
+data IoTAnalyticsDatasetContainerAction =
+  IoTAnalyticsDatasetContainerAction
+  { _ioTAnalyticsDatasetContainerActionExecutionRoleArn :: Val Text
+  , _ioTAnalyticsDatasetContainerActionImage :: Val Text
+  , _ioTAnalyticsDatasetContainerActionResourceConfiguration :: IoTAnalyticsDatasetResourceConfiguration
+  , _ioTAnalyticsDatasetContainerActionVariables :: Maybe [IoTAnalyticsDatasetVariable]
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetContainerAction where
+  toJSON IoTAnalyticsDatasetContainerAction{..} =
+    object $
+    catMaybes
+    [ (Just . ("ExecutionRoleArn",) . toJSON) _ioTAnalyticsDatasetContainerActionExecutionRoleArn
+    , (Just . ("Image",) . toJSON) _ioTAnalyticsDatasetContainerActionImage
+    , (Just . ("ResourceConfiguration",) . toJSON) _ioTAnalyticsDatasetContainerActionResourceConfiguration
+    , fmap (("Variables",) . toJSON) _ioTAnalyticsDatasetContainerActionVariables
+    ]
+
+instance FromJSON IoTAnalyticsDatasetContainerAction where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetContainerAction <$>
+      (obj .: "ExecutionRoleArn") <*>
+      (obj .: "Image") <*>
+      (obj .: "ResourceConfiguration") <*>
+      (obj .:? "Variables")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetContainerAction' containing required
+-- fields as arguments.
+ioTAnalyticsDatasetContainerAction
+  :: Val Text -- ^ 'itadcaExecutionRoleArn'
+  -> Val Text -- ^ 'itadcaImage'
+  -> IoTAnalyticsDatasetResourceConfiguration -- ^ 'itadcaResourceConfiguration'
+  -> IoTAnalyticsDatasetContainerAction
+ioTAnalyticsDatasetContainerAction executionRoleArnarg imagearg resourceConfigurationarg =
+  IoTAnalyticsDatasetContainerAction
+  { _ioTAnalyticsDatasetContainerActionExecutionRoleArn = executionRoleArnarg
+  , _ioTAnalyticsDatasetContainerActionImage = imagearg
+  , _ioTAnalyticsDatasetContainerActionResourceConfiguration = resourceConfigurationarg
+  , _ioTAnalyticsDatasetContainerActionVariables = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-containeraction.html#cfn-iotanalytics-dataset-containeraction-executionrolearn
+itadcaExecutionRoleArn :: Lens' IoTAnalyticsDatasetContainerAction (Val Text)
+itadcaExecutionRoleArn = lens _ioTAnalyticsDatasetContainerActionExecutionRoleArn (\s a -> s { _ioTAnalyticsDatasetContainerActionExecutionRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-containeraction.html#cfn-iotanalytics-dataset-containeraction-image
+itadcaImage :: Lens' IoTAnalyticsDatasetContainerAction (Val Text)
+itadcaImage = lens _ioTAnalyticsDatasetContainerActionImage (\s a -> s { _ioTAnalyticsDatasetContainerActionImage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-containeraction.html#cfn-iotanalytics-dataset-containeraction-resourceconfiguration
+itadcaResourceConfiguration :: Lens' IoTAnalyticsDatasetContainerAction IoTAnalyticsDatasetResourceConfiguration
+itadcaResourceConfiguration = lens _ioTAnalyticsDatasetContainerActionResourceConfiguration (\s a -> s { _ioTAnalyticsDatasetContainerActionResourceConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-containeraction.html#cfn-iotanalytics-dataset-containeraction-variables
+itadcaVariables :: Lens' IoTAnalyticsDatasetContainerAction (Maybe [IoTAnalyticsDatasetVariable])
+itadcaVariables = lens _ioTAnalyticsDatasetContainerActionVariables (\s a -> s { _ioTAnalyticsDatasetContainerActionVariables = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentVersionValue.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentVersionValue.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDatasetContentVersionValue.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-datasetcontentversionvalue.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- IoTAnalyticsDatasetDatasetContentVersionValue. See
+-- 'ioTAnalyticsDatasetDatasetContentVersionValue' for a more convenient
+-- constructor.
+data IoTAnalyticsDatasetDatasetContentVersionValue =
+  IoTAnalyticsDatasetDatasetContentVersionValue
+  { _ioTAnalyticsDatasetDatasetContentVersionValueDatasetName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetDatasetContentVersionValue where
+  toJSON IoTAnalyticsDatasetDatasetContentVersionValue{..} =
+    object $
+    catMaybes
+    [ fmap (("DatasetName",) . toJSON) _ioTAnalyticsDatasetDatasetContentVersionValueDatasetName
+    ]
+
+instance FromJSON IoTAnalyticsDatasetDatasetContentVersionValue where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetDatasetContentVersionValue <$>
+      (obj .:? "DatasetName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetDatasetContentVersionValue'
+-- containing required fields as arguments.
+ioTAnalyticsDatasetDatasetContentVersionValue
+  :: IoTAnalyticsDatasetDatasetContentVersionValue
+ioTAnalyticsDatasetDatasetContentVersionValue  =
+  IoTAnalyticsDatasetDatasetContentVersionValue
+  { _ioTAnalyticsDatasetDatasetContentVersionValueDatasetName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-datasetcontentversionvalue.html#cfn-iotanalytics-dataset-variable-datasetcontentversionvalue-datasetname
+itaddcvvDatasetName :: Lens' IoTAnalyticsDatasetDatasetContentVersionValue (Maybe (Val Text))
+itaddcvvDatasetName = lens _ioTAnalyticsDatasetDatasetContentVersionValueDatasetName (\s a -> s { _ioTAnalyticsDatasetDatasetContentVersionValueDatasetName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDeltaTime.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDeltaTime.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetDeltaTime.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-deltatime.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetDeltaTime. See
+-- 'ioTAnalyticsDatasetDeltaTime' for a more convenient constructor.
+data IoTAnalyticsDatasetDeltaTime =
+  IoTAnalyticsDatasetDeltaTime
+  { _ioTAnalyticsDatasetDeltaTimeOffsetSeconds :: Val Integer
+  , _ioTAnalyticsDatasetDeltaTimeTimeExpression :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetDeltaTime where
+  toJSON IoTAnalyticsDatasetDeltaTime{..} =
+    object $
+    catMaybes
+    [ (Just . ("OffsetSeconds",) . toJSON . fmap Integer') _ioTAnalyticsDatasetDeltaTimeOffsetSeconds
+    , (Just . ("TimeExpression",) . toJSON) _ioTAnalyticsDatasetDeltaTimeTimeExpression
+    ]
+
+instance FromJSON IoTAnalyticsDatasetDeltaTime where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetDeltaTime <$>
+      fmap (fmap unInteger') (obj .: "OffsetSeconds") <*>
+      (obj .: "TimeExpression")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetDeltaTime' containing required fields
+-- as arguments.
+ioTAnalyticsDatasetDeltaTime
+  :: Val Integer -- ^ 'itaddtOffsetSeconds'
+  -> Val Text -- ^ 'itaddtTimeExpression'
+  -> IoTAnalyticsDatasetDeltaTime
+ioTAnalyticsDatasetDeltaTime offsetSecondsarg timeExpressionarg =
+  IoTAnalyticsDatasetDeltaTime
+  { _ioTAnalyticsDatasetDeltaTimeOffsetSeconds = offsetSecondsarg
+  , _ioTAnalyticsDatasetDeltaTimeTimeExpression = timeExpressionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-deltatime.html#cfn-iotanalytics-dataset-deltatime-offsetseconds
+itaddtOffsetSeconds :: Lens' IoTAnalyticsDatasetDeltaTime (Val Integer)
+itaddtOffsetSeconds = lens _ioTAnalyticsDatasetDeltaTimeOffsetSeconds (\s a -> s { _ioTAnalyticsDatasetDeltaTimeOffsetSeconds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-deltatime.html#cfn-iotanalytics-dataset-deltatime-timeexpression
+itaddtTimeExpression :: Lens' IoTAnalyticsDatasetDeltaTime (Val Text)
+itaddtTimeExpression = lens _ioTAnalyticsDatasetDeltaTimeTimeExpression (\s a -> s { _ioTAnalyticsDatasetDeltaTimeTimeExpression = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetFilter.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetFilter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetFilter.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-filter.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime
+
+-- | Full data type definition for IoTAnalyticsDatasetFilter. See
+-- 'ioTAnalyticsDatasetFilter' for a more convenient constructor.
+data IoTAnalyticsDatasetFilter =
+  IoTAnalyticsDatasetFilter
+  { _ioTAnalyticsDatasetFilterDeltaTime :: Maybe IoTAnalyticsDatasetDeltaTime
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetFilter where
+  toJSON IoTAnalyticsDatasetFilter{..} =
+    object $
+    catMaybes
+    [ fmap (("DeltaTime",) . toJSON) _ioTAnalyticsDatasetFilterDeltaTime
+    ]
+
+instance FromJSON IoTAnalyticsDatasetFilter where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetFilter <$>
+      (obj .:? "DeltaTime")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetFilter' containing required fields as
+-- arguments.
+ioTAnalyticsDatasetFilter
+  :: IoTAnalyticsDatasetFilter
+ioTAnalyticsDatasetFilter  =
+  IoTAnalyticsDatasetFilter
+  { _ioTAnalyticsDatasetFilterDeltaTime = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-filter.html#cfn-iotanalytics-dataset-filter-deltatime
+itadfDeltaTime :: Lens' IoTAnalyticsDatasetFilter (Maybe IoTAnalyticsDatasetDeltaTime)
+itadfDeltaTime = lens _ioTAnalyticsDatasetFilterDeltaTime (\s a -> s { _ioTAnalyticsDatasetFilterDeltaTime = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetOutputFileUriValue.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetOutputFileUriValue.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetOutputFileUriValue.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-outputfileurivalue.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetOutputFileUriValue. See
+-- 'ioTAnalyticsDatasetOutputFileUriValue' for a more convenient
+-- constructor.
+data IoTAnalyticsDatasetOutputFileUriValue =
+  IoTAnalyticsDatasetOutputFileUriValue
+  { _ioTAnalyticsDatasetOutputFileUriValueFileName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetOutputFileUriValue where
+  toJSON IoTAnalyticsDatasetOutputFileUriValue{..} =
+    object $
+    catMaybes
+    [ fmap (("FileName",) . toJSON) _ioTAnalyticsDatasetOutputFileUriValueFileName
+    ]
+
+instance FromJSON IoTAnalyticsDatasetOutputFileUriValue where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetOutputFileUriValue <$>
+      (obj .:? "FileName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetOutputFileUriValue' containing
+-- required fields as arguments.
+ioTAnalyticsDatasetOutputFileUriValue
+  :: IoTAnalyticsDatasetOutputFileUriValue
+ioTAnalyticsDatasetOutputFileUriValue  =
+  IoTAnalyticsDatasetOutputFileUriValue
+  { _ioTAnalyticsDatasetOutputFileUriValueFileName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-outputfileurivalue.html#cfn-iotanalytics-dataset-variable-outputfileurivalue-filename
+itadofuvFileName :: Lens' IoTAnalyticsDatasetOutputFileUriValue (Maybe (Val Text))
+itadofuvFileName = lens _ioTAnalyticsDatasetOutputFileUriValueFileName (\s a -> s { _ioTAnalyticsDatasetOutputFileUriValueFileName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetQueryAction.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetQueryAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetQueryAction.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-queryaction.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter
+
+-- | Full data type definition for IoTAnalyticsDatasetQueryAction. See
+-- 'ioTAnalyticsDatasetQueryAction' for a more convenient constructor.
+data IoTAnalyticsDatasetQueryAction =
+  IoTAnalyticsDatasetQueryAction
+  { _ioTAnalyticsDatasetQueryActionFilters :: Maybe [IoTAnalyticsDatasetFilter]
+  , _ioTAnalyticsDatasetQueryActionSqlQuery :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetQueryAction where
+  toJSON IoTAnalyticsDatasetQueryAction{..} =
+    object $
+    catMaybes
+    [ fmap (("Filters",) . toJSON) _ioTAnalyticsDatasetQueryActionFilters
+    , (Just . ("SqlQuery",) . toJSON) _ioTAnalyticsDatasetQueryActionSqlQuery
+    ]
+
+instance FromJSON IoTAnalyticsDatasetQueryAction where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetQueryAction <$>
+      (obj .:? "Filters") <*>
+      (obj .: "SqlQuery")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetQueryAction' containing required
+-- fields as arguments.
+ioTAnalyticsDatasetQueryAction
+  :: Val Text -- ^ 'itadqaSqlQuery'
+  -> IoTAnalyticsDatasetQueryAction
+ioTAnalyticsDatasetQueryAction sqlQueryarg =
+  IoTAnalyticsDatasetQueryAction
+  { _ioTAnalyticsDatasetQueryActionFilters = Nothing
+  , _ioTAnalyticsDatasetQueryActionSqlQuery = sqlQueryarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-queryaction.html#cfn-iotanalytics-dataset-queryaction-filters
+itadqaFilters :: Lens' IoTAnalyticsDatasetQueryAction (Maybe [IoTAnalyticsDatasetFilter])
+itadqaFilters = lens _ioTAnalyticsDatasetQueryActionFilters (\s a -> s { _ioTAnalyticsDatasetQueryActionFilters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-queryaction.html#cfn-iotanalytics-dataset-queryaction-sqlquery
+itadqaSqlQuery :: Lens' IoTAnalyticsDatasetQueryAction (Val Text)
+itadqaSqlQuery = lens _ioTAnalyticsDatasetQueryActionSqlQuery (\s a -> s { _ioTAnalyticsDatasetQueryActionSqlQuery = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetResourceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetResourceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetResourceConfiguration.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-resourceconfiguration.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetResourceConfiguration.
+-- See 'ioTAnalyticsDatasetResourceConfiguration' for a more convenient
+-- constructor.
+data IoTAnalyticsDatasetResourceConfiguration =
+  IoTAnalyticsDatasetResourceConfiguration
+  { _ioTAnalyticsDatasetResourceConfigurationComputeType :: Val Text
+  , _ioTAnalyticsDatasetResourceConfigurationVolumeSizeInGB :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetResourceConfiguration where
+  toJSON IoTAnalyticsDatasetResourceConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("ComputeType",) . toJSON) _ioTAnalyticsDatasetResourceConfigurationComputeType
+    , (Just . ("VolumeSizeInGB",) . toJSON . fmap Integer') _ioTAnalyticsDatasetResourceConfigurationVolumeSizeInGB
+    ]
+
+instance FromJSON IoTAnalyticsDatasetResourceConfiguration where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetResourceConfiguration <$>
+      (obj .: "ComputeType") <*>
+      fmap (fmap unInteger') (obj .: "VolumeSizeInGB")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetResourceConfiguration' containing
+-- required fields as arguments.
+ioTAnalyticsDatasetResourceConfiguration
+  :: Val Text -- ^ 'itadrcComputeType'
+  -> Val Integer -- ^ 'itadrcVolumeSizeInGB'
+  -> IoTAnalyticsDatasetResourceConfiguration
+ioTAnalyticsDatasetResourceConfiguration computeTypearg volumeSizeInGBarg =
+  IoTAnalyticsDatasetResourceConfiguration
+  { _ioTAnalyticsDatasetResourceConfigurationComputeType = computeTypearg
+  , _ioTAnalyticsDatasetResourceConfigurationVolumeSizeInGB = volumeSizeInGBarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-resourceconfiguration.html#cfn-iotanalytics-dataset-resourceconfiguration-computetype
+itadrcComputeType :: Lens' IoTAnalyticsDatasetResourceConfiguration (Val Text)
+itadrcComputeType = lens _ioTAnalyticsDatasetResourceConfigurationComputeType (\s a -> s { _ioTAnalyticsDatasetResourceConfigurationComputeType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-resourceconfiguration.html#cfn-iotanalytics-dataset-resourceconfiguration-volumesizeingb
+itadrcVolumeSizeInGB :: Lens' IoTAnalyticsDatasetResourceConfiguration (Val Integer)
+itadrcVolumeSizeInGB = lens _ioTAnalyticsDatasetResourceConfigurationVolumeSizeInGB (\s a -> s { _ioTAnalyticsDatasetResourceConfigurationVolumeSizeInGB = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetRetentionPeriod.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetRetentionPeriod.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetRetentionPeriod.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-retentionperiod.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetRetentionPeriod. See
+-- 'ioTAnalyticsDatasetRetentionPeriod' for a more convenient constructor.
+data IoTAnalyticsDatasetRetentionPeriod =
+  IoTAnalyticsDatasetRetentionPeriod
+  { _ioTAnalyticsDatasetRetentionPeriodNumberOfDays :: Val Integer
+  , _ioTAnalyticsDatasetRetentionPeriodUnlimited :: Val Bool
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetRetentionPeriod where
+  toJSON IoTAnalyticsDatasetRetentionPeriod{..} =
+    object $
+    catMaybes
+    [ (Just . ("NumberOfDays",) . toJSON . fmap Integer') _ioTAnalyticsDatasetRetentionPeriodNumberOfDays
+    , (Just . ("Unlimited",) . toJSON . fmap Bool') _ioTAnalyticsDatasetRetentionPeriodUnlimited
+    ]
+
+instance FromJSON IoTAnalyticsDatasetRetentionPeriod where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetRetentionPeriod <$>
+      fmap (fmap unInteger') (obj .: "NumberOfDays") <*>
+      fmap (fmap unBool') (obj .: "Unlimited")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetRetentionPeriod' containing required
+-- fields as arguments.
+ioTAnalyticsDatasetRetentionPeriod
+  :: Val Integer -- ^ 'itadsrpNumberOfDays'
+  -> Val Bool -- ^ 'itadsrpUnlimited'
+  -> IoTAnalyticsDatasetRetentionPeriod
+ioTAnalyticsDatasetRetentionPeriod numberOfDaysarg unlimitedarg =
+  IoTAnalyticsDatasetRetentionPeriod
+  { _ioTAnalyticsDatasetRetentionPeriodNumberOfDays = numberOfDaysarg
+  , _ioTAnalyticsDatasetRetentionPeriodUnlimited = unlimitedarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-retentionperiod.html#cfn-iotanalytics-dataset-retentionperiod-numberofdays
+itadsrpNumberOfDays :: Lens' IoTAnalyticsDatasetRetentionPeriod (Val Integer)
+itadsrpNumberOfDays = lens _ioTAnalyticsDatasetRetentionPeriodNumberOfDays (\s a -> s { _ioTAnalyticsDatasetRetentionPeriodNumberOfDays = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-retentionperiod.html#cfn-iotanalytics-dataset-retentionperiod-unlimited
+itadsrpUnlimited :: Lens' IoTAnalyticsDatasetRetentionPeriod (Val Bool)
+itadsrpUnlimited = lens _ioTAnalyticsDatasetRetentionPeriodUnlimited (\s a -> s { _ioTAnalyticsDatasetRetentionPeriodUnlimited = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetSchedule.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetSchedule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetSchedule.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger-schedule.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetSchedule. See
+-- 'ioTAnalyticsDatasetSchedule' for a more convenient constructor.
+data IoTAnalyticsDatasetSchedule =
+  IoTAnalyticsDatasetSchedule
+  { _ioTAnalyticsDatasetScheduleScheduleExpression :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetSchedule where
+  toJSON IoTAnalyticsDatasetSchedule{..} =
+    object $
+    catMaybes
+    [ (Just . ("ScheduleExpression",) . toJSON) _ioTAnalyticsDatasetScheduleScheduleExpression
+    ]
+
+instance FromJSON IoTAnalyticsDatasetSchedule where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetSchedule <$>
+      (obj .: "ScheduleExpression")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetSchedule' containing required fields
+-- as arguments.
+ioTAnalyticsDatasetSchedule
+  :: Val Text -- ^ 'itadsScheduleExpression'
+  -> IoTAnalyticsDatasetSchedule
+ioTAnalyticsDatasetSchedule scheduleExpressionarg =
+  IoTAnalyticsDatasetSchedule
+  { _ioTAnalyticsDatasetScheduleScheduleExpression = scheduleExpressionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger-schedule.html#cfn-iotanalytics-dataset-trigger-schedule-scheduleexpression
+itadsScheduleExpression :: Lens' IoTAnalyticsDatasetSchedule (Val Text)
+itadsScheduleExpression = lens _ioTAnalyticsDatasetScheduleScheduleExpression (\s a -> s { _ioTAnalyticsDatasetScheduleScheduleExpression = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTrigger.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTrigger.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTrigger.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset
+
+-- | Full data type definition for IoTAnalyticsDatasetTrigger. See
+-- 'ioTAnalyticsDatasetTrigger' for a more convenient constructor.
+data IoTAnalyticsDatasetTrigger =
+  IoTAnalyticsDatasetTrigger
+  { _ioTAnalyticsDatasetTriggerSchedule :: Maybe IoTAnalyticsDatasetSchedule
+  , _ioTAnalyticsDatasetTriggerTriggeringDataset :: Maybe IoTAnalyticsDatasetTriggeringDataset
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetTrigger where
+  toJSON IoTAnalyticsDatasetTrigger{..} =
+    object $
+    catMaybes
+    [ fmap (("Schedule",) . toJSON) _ioTAnalyticsDatasetTriggerSchedule
+    , fmap (("TriggeringDataset",) . toJSON) _ioTAnalyticsDatasetTriggerTriggeringDataset
+    ]
+
+instance FromJSON IoTAnalyticsDatasetTrigger where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetTrigger <$>
+      (obj .:? "Schedule") <*>
+      (obj .:? "TriggeringDataset")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetTrigger' containing required fields
+-- as arguments.
+ioTAnalyticsDatasetTrigger
+  :: IoTAnalyticsDatasetTrigger
+ioTAnalyticsDatasetTrigger  =
+  IoTAnalyticsDatasetTrigger
+  { _ioTAnalyticsDatasetTriggerSchedule = Nothing
+  , _ioTAnalyticsDatasetTriggerTriggeringDataset = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger.html#cfn-iotanalytics-dataset-trigger-schedule
+itadtSchedule :: Lens' IoTAnalyticsDatasetTrigger (Maybe IoTAnalyticsDatasetSchedule)
+itadtSchedule = lens _ioTAnalyticsDatasetTriggerSchedule (\s a -> s { _ioTAnalyticsDatasetTriggerSchedule = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger.html#cfn-iotanalytics-dataset-trigger-triggeringdataset
+itadtTriggeringDataset :: Lens' IoTAnalyticsDatasetTrigger (Maybe IoTAnalyticsDatasetTriggeringDataset)
+itadtTriggeringDataset = lens _ioTAnalyticsDatasetTriggerTriggeringDataset (\s a -> s { _ioTAnalyticsDatasetTriggerTriggeringDataset = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTriggeringDataset.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTriggeringDataset.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetTriggeringDataset.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-triggeringdataset.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatasetTriggeringDataset. See
+-- 'ioTAnalyticsDatasetTriggeringDataset' for a more convenient constructor.
+data IoTAnalyticsDatasetTriggeringDataset =
+  IoTAnalyticsDatasetTriggeringDataset
+  { _ioTAnalyticsDatasetTriggeringDatasetDatasetName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetTriggeringDataset where
+  toJSON IoTAnalyticsDatasetTriggeringDataset{..} =
+    object $
+    catMaybes
+    [ (Just . ("DatasetName",) . toJSON) _ioTAnalyticsDatasetTriggeringDatasetDatasetName
+    ]
+
+instance FromJSON IoTAnalyticsDatasetTriggeringDataset where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetTriggeringDataset <$>
+      (obj .: "DatasetName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetTriggeringDataset' containing
+-- required fields as arguments.
+ioTAnalyticsDatasetTriggeringDataset
+  :: Val Text -- ^ 'itadtdDatasetName'
+  -> IoTAnalyticsDatasetTriggeringDataset
+ioTAnalyticsDatasetTriggeringDataset datasetNamearg =
+  IoTAnalyticsDatasetTriggeringDataset
+  { _ioTAnalyticsDatasetTriggeringDatasetDatasetName = datasetNamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-triggeringdataset.html#cfn-iotanalytics-dataset-triggeringdataset-datasetname
+itadtdDatasetName :: Lens' IoTAnalyticsDatasetTriggeringDataset (Val Text)
+itadtdDatasetName = lens _ioTAnalyticsDatasetTriggeringDatasetDatasetName (\s a -> s { _ioTAnalyticsDatasetTriggeringDatasetDatasetName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVariable.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVariable.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatasetVariable.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue
+
+-- | Full data type definition for IoTAnalyticsDatasetVariable. See
+-- 'ioTAnalyticsDatasetVariable' for a more convenient constructor.
+data IoTAnalyticsDatasetVariable =
+  IoTAnalyticsDatasetVariable
+  { _ioTAnalyticsDatasetVariableDatasetContentVersionValue :: Maybe IoTAnalyticsDatasetDatasetContentVersionValue
+  , _ioTAnalyticsDatasetVariableDoubleValue :: Maybe (Val Double)
+  , _ioTAnalyticsDatasetVariableOutputFileUriValue :: Maybe IoTAnalyticsDatasetOutputFileUriValue
+  , _ioTAnalyticsDatasetVariableStringValue :: Maybe (Val Text)
+  , _ioTAnalyticsDatasetVariableVariableName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatasetVariable where
+  toJSON IoTAnalyticsDatasetVariable{..} =
+    object $
+    catMaybes
+    [ fmap (("DatasetContentVersionValue",) . toJSON) _ioTAnalyticsDatasetVariableDatasetContentVersionValue
+    , fmap (("DoubleValue",) . toJSON . fmap Double') _ioTAnalyticsDatasetVariableDoubleValue
+    , fmap (("OutputFileUriValue",) . toJSON) _ioTAnalyticsDatasetVariableOutputFileUriValue
+    , fmap (("StringValue",) . toJSON) _ioTAnalyticsDatasetVariableStringValue
+    , (Just . ("VariableName",) . toJSON) _ioTAnalyticsDatasetVariableVariableName
+    ]
+
+instance FromJSON IoTAnalyticsDatasetVariable where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatasetVariable <$>
+      (obj .:? "DatasetContentVersionValue") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "DoubleValue") <*>
+      (obj .:? "OutputFileUriValue") <*>
+      (obj .:? "StringValue") <*>
+      (obj .: "VariableName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatasetVariable' containing required fields
+-- as arguments.
+ioTAnalyticsDatasetVariable
+  :: Val Text -- ^ 'itadvVariableName'
+  -> IoTAnalyticsDatasetVariable
+ioTAnalyticsDatasetVariable variableNamearg =
+  IoTAnalyticsDatasetVariable
+  { _ioTAnalyticsDatasetVariableDatasetContentVersionValue = Nothing
+  , _ioTAnalyticsDatasetVariableDoubleValue = Nothing
+  , _ioTAnalyticsDatasetVariableOutputFileUriValue = Nothing
+  , _ioTAnalyticsDatasetVariableStringValue = Nothing
+  , _ioTAnalyticsDatasetVariableVariableName = variableNamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable.html#cfn-iotanalytics-dataset-variable-datasetcontentversionvalue
+itadvDatasetContentVersionValue :: Lens' IoTAnalyticsDatasetVariable (Maybe IoTAnalyticsDatasetDatasetContentVersionValue)
+itadvDatasetContentVersionValue = lens _ioTAnalyticsDatasetVariableDatasetContentVersionValue (\s a -> s { _ioTAnalyticsDatasetVariableDatasetContentVersionValue = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable.html#cfn-iotanalytics-dataset-variable-doublevalue
+itadvDoubleValue :: Lens' IoTAnalyticsDatasetVariable (Maybe (Val Double))
+itadvDoubleValue = lens _ioTAnalyticsDatasetVariableDoubleValue (\s a -> s { _ioTAnalyticsDatasetVariableDoubleValue = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable.html#cfn-iotanalytics-dataset-variable-outputfileurivalue
+itadvOutputFileUriValue :: Lens' IoTAnalyticsDatasetVariable (Maybe IoTAnalyticsDatasetOutputFileUriValue)
+itadvOutputFileUriValue = lens _ioTAnalyticsDatasetVariableOutputFileUriValue (\s a -> s { _ioTAnalyticsDatasetVariableOutputFileUriValue = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable.html#cfn-iotanalytics-dataset-variable-stringvalue
+itadvStringValue :: Lens' IoTAnalyticsDatasetVariable (Maybe (Val Text))
+itadvStringValue = lens _ioTAnalyticsDatasetVariableStringValue (\s a -> s { _ioTAnalyticsDatasetVariableStringValue = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable.html#cfn-iotanalytics-dataset-variable-variablename
+itadvVariableName :: Lens' IoTAnalyticsDatasetVariable (Val Text)
+itadvVariableName = lens _ioTAnalyticsDatasetVariableVariableName (\s a -> s { _ioTAnalyticsDatasetVariableVariableName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatastoreRetentionPeriod.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatastoreRetentionPeriod.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsDatastoreRetentionPeriod.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-datastore-retentionperiod.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsDatastoreRetentionPeriod. See
+-- 'ioTAnalyticsDatastoreRetentionPeriod' for a more convenient constructor.
+data IoTAnalyticsDatastoreRetentionPeriod =
+  IoTAnalyticsDatastoreRetentionPeriod
+  { _ioTAnalyticsDatastoreRetentionPeriodNumberOfDays :: Maybe (Val Integer)
+  , _ioTAnalyticsDatastoreRetentionPeriodUnlimited :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatastoreRetentionPeriod where
+  toJSON IoTAnalyticsDatastoreRetentionPeriod{..} =
+    object $
+    catMaybes
+    [ fmap (("NumberOfDays",) . toJSON . fmap Integer') _ioTAnalyticsDatastoreRetentionPeriodNumberOfDays
+    , fmap (("Unlimited",) . toJSON . fmap Bool') _ioTAnalyticsDatastoreRetentionPeriodUnlimited
+    ]
+
+instance FromJSON IoTAnalyticsDatastoreRetentionPeriod where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatastoreRetentionPeriod <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumberOfDays") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Unlimited")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatastoreRetentionPeriod' containing
+-- required fields as arguments.
+ioTAnalyticsDatastoreRetentionPeriod
+  :: IoTAnalyticsDatastoreRetentionPeriod
+ioTAnalyticsDatastoreRetentionPeriod  =
+  IoTAnalyticsDatastoreRetentionPeriod
+  { _ioTAnalyticsDatastoreRetentionPeriodNumberOfDays = Nothing
+  , _ioTAnalyticsDatastoreRetentionPeriodUnlimited = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-datastore-retentionperiod.html#cfn-iotanalytics-datastore-retentionperiod-numberofdays
+itadstrpNumberOfDays :: Lens' IoTAnalyticsDatastoreRetentionPeriod (Maybe (Val Integer))
+itadstrpNumberOfDays = lens _ioTAnalyticsDatastoreRetentionPeriodNumberOfDays (\s a -> s { _ioTAnalyticsDatastoreRetentionPeriodNumberOfDays = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-datastore-retentionperiod.html#cfn-iotanalytics-datastore-retentionperiod-unlimited
+itadstrpUnlimited :: Lens' IoTAnalyticsDatastoreRetentionPeriod (Maybe (Val Bool))
+itadstrpUnlimited = lens _ioTAnalyticsDatastoreRetentionPeriodUnlimited (\s a -> s { _ioTAnalyticsDatastoreRetentionPeriodUnlimited = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineActivity.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineActivity.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineActivity.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineChannel
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDatastore
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceRegistryEnrich
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceShadowEnrich
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineFilter
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineLambda
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineMath
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes
+
+-- | Full data type definition for IoTAnalyticsPipelineActivity. See
+-- 'ioTAnalyticsPipelineActivity' for a more convenient constructor.
+data IoTAnalyticsPipelineActivity =
+  IoTAnalyticsPipelineActivity
+  { _ioTAnalyticsPipelineActivityAddAttributes :: Maybe IoTAnalyticsPipelineAddAttributes
+  , _ioTAnalyticsPipelineActivityChannel :: Maybe IoTAnalyticsPipelineChannel
+  , _ioTAnalyticsPipelineActivityDatastore :: Maybe IoTAnalyticsPipelineDatastore
+  , _ioTAnalyticsPipelineActivityDeviceRegistryEnrich :: Maybe IoTAnalyticsPipelineDeviceRegistryEnrich
+  , _ioTAnalyticsPipelineActivityDeviceShadowEnrich :: Maybe IoTAnalyticsPipelineDeviceShadowEnrich
+  , _ioTAnalyticsPipelineActivityFilter :: Maybe IoTAnalyticsPipelineFilter
+  , _ioTAnalyticsPipelineActivityLambda :: Maybe IoTAnalyticsPipelineLambda
+  , _ioTAnalyticsPipelineActivityMath :: Maybe IoTAnalyticsPipelineMath
+  , _ioTAnalyticsPipelineActivityRemoveAttributes :: Maybe IoTAnalyticsPipelineRemoveAttributes
+  , _ioTAnalyticsPipelineActivitySelectAttributes :: Maybe IoTAnalyticsPipelineSelectAttributes
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineActivity where
+  toJSON IoTAnalyticsPipelineActivity{..} =
+    object $
+    catMaybes
+    [ fmap (("AddAttributes",) . toJSON) _ioTAnalyticsPipelineActivityAddAttributes
+    , fmap (("Channel",) . toJSON) _ioTAnalyticsPipelineActivityChannel
+    , fmap (("Datastore",) . toJSON) _ioTAnalyticsPipelineActivityDatastore
+    , fmap (("DeviceRegistryEnrich",) . toJSON) _ioTAnalyticsPipelineActivityDeviceRegistryEnrich
+    , fmap (("DeviceShadowEnrich",) . toJSON) _ioTAnalyticsPipelineActivityDeviceShadowEnrich
+    , fmap (("Filter",) . toJSON) _ioTAnalyticsPipelineActivityFilter
+    , fmap (("Lambda",) . toJSON) _ioTAnalyticsPipelineActivityLambda
+    , fmap (("Math",) . toJSON) _ioTAnalyticsPipelineActivityMath
+    , fmap (("RemoveAttributes",) . toJSON) _ioTAnalyticsPipelineActivityRemoveAttributes
+    , fmap (("SelectAttributes",) . toJSON) _ioTAnalyticsPipelineActivitySelectAttributes
+    ]
+
+instance FromJSON IoTAnalyticsPipelineActivity where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineActivity <$>
+      (obj .:? "AddAttributes") <*>
+      (obj .:? "Channel") <*>
+      (obj .:? "Datastore") <*>
+      (obj .:? "DeviceRegistryEnrich") <*>
+      (obj .:? "DeviceShadowEnrich") <*>
+      (obj .:? "Filter") <*>
+      (obj .:? "Lambda") <*>
+      (obj .:? "Math") <*>
+      (obj .:? "RemoveAttributes") <*>
+      (obj .:? "SelectAttributes")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineActivity' containing required fields
+-- as arguments.
+ioTAnalyticsPipelineActivity
+  :: IoTAnalyticsPipelineActivity
+ioTAnalyticsPipelineActivity  =
+  IoTAnalyticsPipelineActivity
+  { _ioTAnalyticsPipelineActivityAddAttributes = Nothing
+  , _ioTAnalyticsPipelineActivityChannel = Nothing
+  , _ioTAnalyticsPipelineActivityDatastore = Nothing
+  , _ioTAnalyticsPipelineActivityDeviceRegistryEnrich = Nothing
+  , _ioTAnalyticsPipelineActivityDeviceShadowEnrich = Nothing
+  , _ioTAnalyticsPipelineActivityFilter = Nothing
+  , _ioTAnalyticsPipelineActivityLambda = Nothing
+  , _ioTAnalyticsPipelineActivityMath = Nothing
+  , _ioTAnalyticsPipelineActivityRemoveAttributes = Nothing
+  , _ioTAnalyticsPipelineActivitySelectAttributes = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-addattributes
+itapaAddAttributes :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineAddAttributes)
+itapaAddAttributes = lens _ioTAnalyticsPipelineActivityAddAttributes (\s a -> s { _ioTAnalyticsPipelineActivityAddAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-channel
+itapaChannel :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineChannel)
+itapaChannel = lens _ioTAnalyticsPipelineActivityChannel (\s a -> s { _ioTAnalyticsPipelineActivityChannel = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-datastore
+itapaDatastore :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineDatastore)
+itapaDatastore = lens _ioTAnalyticsPipelineActivityDatastore (\s a -> s { _ioTAnalyticsPipelineActivityDatastore = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-deviceregistryenrich
+itapaDeviceRegistryEnrich :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineDeviceRegistryEnrich)
+itapaDeviceRegistryEnrich = lens _ioTAnalyticsPipelineActivityDeviceRegistryEnrich (\s a -> s { _ioTAnalyticsPipelineActivityDeviceRegistryEnrich = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-deviceshadowenrich
+itapaDeviceShadowEnrich :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineDeviceShadowEnrich)
+itapaDeviceShadowEnrich = lens _ioTAnalyticsPipelineActivityDeviceShadowEnrich (\s a -> s { _ioTAnalyticsPipelineActivityDeviceShadowEnrich = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-filter
+itapaFilter :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineFilter)
+itapaFilter = lens _ioTAnalyticsPipelineActivityFilter (\s a -> s { _ioTAnalyticsPipelineActivityFilter = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-lambda
+itapaLambda :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineLambda)
+itapaLambda = lens _ioTAnalyticsPipelineActivityLambda (\s a -> s { _ioTAnalyticsPipelineActivityLambda = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-math
+itapaMath :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineMath)
+itapaMath = lens _ioTAnalyticsPipelineActivityMath (\s a -> s { _ioTAnalyticsPipelineActivityMath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-removeattributes
+itapaRemoveAttributes :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineRemoveAttributes)
+itapaRemoveAttributes = lens _ioTAnalyticsPipelineActivityRemoveAttributes (\s a -> s { _ioTAnalyticsPipelineActivityRemoveAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-activity.html#cfn-iotanalytics-pipeline-activity-selectattributes
+itapaSelectAttributes :: Lens' IoTAnalyticsPipelineActivity (Maybe IoTAnalyticsPipelineSelectAttributes)
+itapaSelectAttributes = lens _ioTAnalyticsPipelineActivitySelectAttributes (\s a -> s { _ioTAnalyticsPipelineActivitySelectAttributes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineAddAttributes.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineAddAttributes.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineAddAttributes.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-addattributes.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineAddAttributes. See
+-- 'ioTAnalyticsPipelineAddAttributes' for a more convenient constructor.
+data IoTAnalyticsPipelineAddAttributes =
+  IoTAnalyticsPipelineAddAttributes
+  { _ioTAnalyticsPipelineAddAttributesAttributes :: Maybe Object
+  , _ioTAnalyticsPipelineAddAttributesName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineAddAttributesNext :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineAddAttributes where
+  toJSON IoTAnalyticsPipelineAddAttributes{..} =
+    object $
+    catMaybes
+    [ fmap (("Attributes",) . toJSON) _ioTAnalyticsPipelineAddAttributesAttributes
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineAddAttributesName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineAddAttributesNext
+    ]
+
+instance FromJSON IoTAnalyticsPipelineAddAttributes where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineAddAttributes <$>
+      (obj .:? "Attributes") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineAddAttributes' containing required
+-- fields as arguments.
+ioTAnalyticsPipelineAddAttributes
+  :: IoTAnalyticsPipelineAddAttributes
+ioTAnalyticsPipelineAddAttributes  =
+  IoTAnalyticsPipelineAddAttributes
+  { _ioTAnalyticsPipelineAddAttributesAttributes = Nothing
+  , _ioTAnalyticsPipelineAddAttributesName = Nothing
+  , _ioTAnalyticsPipelineAddAttributesNext = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-addattributes.html#cfn-iotanalytics-pipeline-addattributes-attributes
+itapaaAttributes :: Lens' IoTAnalyticsPipelineAddAttributes (Maybe Object)
+itapaaAttributes = lens _ioTAnalyticsPipelineAddAttributesAttributes (\s a -> s { _ioTAnalyticsPipelineAddAttributesAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-addattributes.html#cfn-iotanalytics-pipeline-addattributes-name
+itapaaName :: Lens' IoTAnalyticsPipelineAddAttributes (Maybe (Val Text))
+itapaaName = lens _ioTAnalyticsPipelineAddAttributesName (\s a -> s { _ioTAnalyticsPipelineAddAttributesName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-addattributes.html#cfn-iotanalytics-pipeline-addattributes-next
+itapaaNext :: Lens' IoTAnalyticsPipelineAddAttributes (Maybe (Val Text))
+itapaaNext = lens _ioTAnalyticsPipelineAddAttributesNext (\s a -> s { _ioTAnalyticsPipelineAddAttributesNext = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineChannel.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineChannel.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-channel.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineChannel where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineChannel. See
+-- 'ioTAnalyticsPipelineChannel' for a more convenient constructor.
+data IoTAnalyticsPipelineChannel =
+  IoTAnalyticsPipelineChannel
+  { _ioTAnalyticsPipelineChannelChannelName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineChannelName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineChannelNext :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineChannel where
+  toJSON IoTAnalyticsPipelineChannel{..} =
+    object $
+    catMaybes
+    [ fmap (("ChannelName",) . toJSON) _ioTAnalyticsPipelineChannelChannelName
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineChannelName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineChannelNext
+    ]
+
+instance FromJSON IoTAnalyticsPipelineChannel where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineChannel <$>
+      (obj .:? "ChannelName") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineChannel' containing required fields
+-- as arguments.
+ioTAnalyticsPipelineChannel
+  :: IoTAnalyticsPipelineChannel
+ioTAnalyticsPipelineChannel  =
+  IoTAnalyticsPipelineChannel
+  { _ioTAnalyticsPipelineChannelChannelName = Nothing
+  , _ioTAnalyticsPipelineChannelName = Nothing
+  , _ioTAnalyticsPipelineChannelNext = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-channel.html#cfn-iotanalytics-pipeline-channel-channelname
+itapcChannelName :: Lens' IoTAnalyticsPipelineChannel (Maybe (Val Text))
+itapcChannelName = lens _ioTAnalyticsPipelineChannelChannelName (\s a -> s { _ioTAnalyticsPipelineChannelChannelName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-channel.html#cfn-iotanalytics-pipeline-channel-name
+itapcName :: Lens' IoTAnalyticsPipelineChannel (Maybe (Val Text))
+itapcName = lens _ioTAnalyticsPipelineChannelName (\s a -> s { _ioTAnalyticsPipelineChannelName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-channel.html#cfn-iotanalytics-pipeline-channel-next
+itapcNext :: Lens' IoTAnalyticsPipelineChannel (Maybe (Val Text))
+itapcNext = lens _ioTAnalyticsPipelineChannelNext (\s a -> s { _ioTAnalyticsPipelineChannelNext = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDatastore.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDatastore.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDatastore.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-datastore.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineDatastore where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineDatastore. See
+-- 'ioTAnalyticsPipelineDatastore' for a more convenient constructor.
+data IoTAnalyticsPipelineDatastore =
+  IoTAnalyticsPipelineDatastore
+  { _ioTAnalyticsPipelineDatastoreDatastoreName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDatastoreName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineDatastore where
+  toJSON IoTAnalyticsPipelineDatastore{..} =
+    object $
+    catMaybes
+    [ fmap (("DatastoreName",) . toJSON) _ioTAnalyticsPipelineDatastoreDatastoreName
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineDatastoreName
+    ]
+
+instance FromJSON IoTAnalyticsPipelineDatastore where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineDatastore <$>
+      (obj .:? "DatastoreName") <*>
+      (obj .:? "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineDatastore' containing required
+-- fields as arguments.
+ioTAnalyticsPipelineDatastore
+  :: IoTAnalyticsPipelineDatastore
+ioTAnalyticsPipelineDatastore  =
+  IoTAnalyticsPipelineDatastore
+  { _ioTAnalyticsPipelineDatastoreDatastoreName = Nothing
+  , _ioTAnalyticsPipelineDatastoreName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-datastore.html#cfn-iotanalytics-pipeline-datastore-datastorename
+itapdDatastoreName :: Lens' IoTAnalyticsPipelineDatastore (Maybe (Val Text))
+itapdDatastoreName = lens _ioTAnalyticsPipelineDatastoreDatastoreName (\s a -> s { _ioTAnalyticsPipelineDatastoreDatastoreName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-datastore.html#cfn-iotanalytics-pipeline-datastore-name
+itapdName :: Lens' IoTAnalyticsPipelineDatastore (Maybe (Val Text))
+itapdName = lens _ioTAnalyticsPipelineDatastoreName (\s a -> s { _ioTAnalyticsPipelineDatastoreName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceRegistryEnrich.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceRegistryEnrich.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceRegistryEnrich.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceregistryenrich.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceRegistryEnrich where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineDeviceRegistryEnrich.
+-- See 'ioTAnalyticsPipelineDeviceRegistryEnrich' for a more convenient
+-- constructor.
+data IoTAnalyticsPipelineDeviceRegistryEnrich =
+  IoTAnalyticsPipelineDeviceRegistryEnrich
+  { _ioTAnalyticsPipelineDeviceRegistryEnrichAttribute :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichNext :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichRoleArn :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichThingName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineDeviceRegistryEnrich where
+  toJSON IoTAnalyticsPipelineDeviceRegistryEnrich{..} =
+    object $
+    catMaybes
+    [ fmap (("Attribute",) . toJSON) _ioTAnalyticsPipelineDeviceRegistryEnrichAttribute
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineDeviceRegistryEnrichName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineDeviceRegistryEnrichNext
+    , fmap (("RoleArn",) . toJSON) _ioTAnalyticsPipelineDeviceRegistryEnrichRoleArn
+    , fmap (("ThingName",) . toJSON) _ioTAnalyticsPipelineDeviceRegistryEnrichThingName
+    ]
+
+instance FromJSON IoTAnalyticsPipelineDeviceRegistryEnrich where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineDeviceRegistryEnrich <$>
+      (obj .:? "Attribute") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next") <*>
+      (obj .:? "RoleArn") <*>
+      (obj .:? "ThingName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineDeviceRegistryEnrich' containing
+-- required fields as arguments.
+ioTAnalyticsPipelineDeviceRegistryEnrich
+  :: IoTAnalyticsPipelineDeviceRegistryEnrich
+ioTAnalyticsPipelineDeviceRegistryEnrich  =
+  IoTAnalyticsPipelineDeviceRegistryEnrich
+  { _ioTAnalyticsPipelineDeviceRegistryEnrichAttribute = Nothing
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichName = Nothing
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichNext = Nothing
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichRoleArn = Nothing
+  , _ioTAnalyticsPipelineDeviceRegistryEnrichThingName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceregistryenrich.html#cfn-iotanalytics-pipeline-deviceregistryenrich-attribute
+itapdreAttribute :: Lens' IoTAnalyticsPipelineDeviceRegistryEnrich (Maybe (Val Text))
+itapdreAttribute = lens _ioTAnalyticsPipelineDeviceRegistryEnrichAttribute (\s a -> s { _ioTAnalyticsPipelineDeviceRegistryEnrichAttribute = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceregistryenrich.html#cfn-iotanalytics-pipeline-deviceregistryenrich-name
+itapdreName :: Lens' IoTAnalyticsPipelineDeviceRegistryEnrich (Maybe (Val Text))
+itapdreName = lens _ioTAnalyticsPipelineDeviceRegistryEnrichName (\s a -> s { _ioTAnalyticsPipelineDeviceRegistryEnrichName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceregistryenrich.html#cfn-iotanalytics-pipeline-deviceregistryenrich-next
+itapdreNext :: Lens' IoTAnalyticsPipelineDeviceRegistryEnrich (Maybe (Val Text))
+itapdreNext = lens _ioTAnalyticsPipelineDeviceRegistryEnrichNext (\s a -> s { _ioTAnalyticsPipelineDeviceRegistryEnrichNext = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceregistryenrich.html#cfn-iotanalytics-pipeline-deviceregistryenrich-rolearn
+itapdreRoleArn :: Lens' IoTAnalyticsPipelineDeviceRegistryEnrich (Maybe (Val Text))
+itapdreRoleArn = lens _ioTAnalyticsPipelineDeviceRegistryEnrichRoleArn (\s a -> s { _ioTAnalyticsPipelineDeviceRegistryEnrichRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceregistryenrich.html#cfn-iotanalytics-pipeline-deviceregistryenrich-thingname
+itapdreThingName :: Lens' IoTAnalyticsPipelineDeviceRegistryEnrich (Maybe (Val Text))
+itapdreThingName = lens _ioTAnalyticsPipelineDeviceRegistryEnrichThingName (\s a -> s { _ioTAnalyticsPipelineDeviceRegistryEnrichThingName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceShadowEnrich.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceShadowEnrich.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineDeviceShadowEnrich.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceshadowenrich.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceShadowEnrich where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineDeviceShadowEnrich. See
+-- 'ioTAnalyticsPipelineDeviceShadowEnrich' for a more convenient
+-- constructor.
+data IoTAnalyticsPipelineDeviceShadowEnrich =
+  IoTAnalyticsPipelineDeviceShadowEnrich
+  { _ioTAnalyticsPipelineDeviceShadowEnrichAttribute :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceShadowEnrichName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceShadowEnrichNext :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceShadowEnrichRoleArn :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineDeviceShadowEnrichThingName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineDeviceShadowEnrich where
+  toJSON IoTAnalyticsPipelineDeviceShadowEnrich{..} =
+    object $
+    catMaybes
+    [ fmap (("Attribute",) . toJSON) _ioTAnalyticsPipelineDeviceShadowEnrichAttribute
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineDeviceShadowEnrichName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineDeviceShadowEnrichNext
+    , fmap (("RoleArn",) . toJSON) _ioTAnalyticsPipelineDeviceShadowEnrichRoleArn
+    , fmap (("ThingName",) . toJSON) _ioTAnalyticsPipelineDeviceShadowEnrichThingName
+    ]
+
+instance FromJSON IoTAnalyticsPipelineDeviceShadowEnrich where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineDeviceShadowEnrich <$>
+      (obj .:? "Attribute") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next") <*>
+      (obj .:? "RoleArn") <*>
+      (obj .:? "ThingName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineDeviceShadowEnrich' containing
+-- required fields as arguments.
+ioTAnalyticsPipelineDeviceShadowEnrich
+  :: IoTAnalyticsPipelineDeviceShadowEnrich
+ioTAnalyticsPipelineDeviceShadowEnrich  =
+  IoTAnalyticsPipelineDeviceShadowEnrich
+  { _ioTAnalyticsPipelineDeviceShadowEnrichAttribute = Nothing
+  , _ioTAnalyticsPipelineDeviceShadowEnrichName = Nothing
+  , _ioTAnalyticsPipelineDeviceShadowEnrichNext = Nothing
+  , _ioTAnalyticsPipelineDeviceShadowEnrichRoleArn = Nothing
+  , _ioTAnalyticsPipelineDeviceShadowEnrichThingName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceshadowenrich.html#cfn-iotanalytics-pipeline-deviceshadowenrich-attribute
+itapdseAttribute :: Lens' IoTAnalyticsPipelineDeviceShadowEnrich (Maybe (Val Text))
+itapdseAttribute = lens _ioTAnalyticsPipelineDeviceShadowEnrichAttribute (\s a -> s { _ioTAnalyticsPipelineDeviceShadowEnrichAttribute = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceshadowenrich.html#cfn-iotanalytics-pipeline-deviceshadowenrich-name
+itapdseName :: Lens' IoTAnalyticsPipelineDeviceShadowEnrich (Maybe (Val Text))
+itapdseName = lens _ioTAnalyticsPipelineDeviceShadowEnrichName (\s a -> s { _ioTAnalyticsPipelineDeviceShadowEnrichName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceshadowenrich.html#cfn-iotanalytics-pipeline-deviceshadowenrich-next
+itapdseNext :: Lens' IoTAnalyticsPipelineDeviceShadowEnrich (Maybe (Val Text))
+itapdseNext = lens _ioTAnalyticsPipelineDeviceShadowEnrichNext (\s a -> s { _ioTAnalyticsPipelineDeviceShadowEnrichNext = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceshadowenrich.html#cfn-iotanalytics-pipeline-deviceshadowenrich-rolearn
+itapdseRoleArn :: Lens' IoTAnalyticsPipelineDeviceShadowEnrich (Maybe (Val Text))
+itapdseRoleArn = lens _ioTAnalyticsPipelineDeviceShadowEnrichRoleArn (\s a -> s { _ioTAnalyticsPipelineDeviceShadowEnrichRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-deviceshadowenrich.html#cfn-iotanalytics-pipeline-deviceshadowenrich-thingname
+itapdseThingName :: Lens' IoTAnalyticsPipelineDeviceShadowEnrich (Maybe (Val Text))
+itapdseThingName = lens _ioTAnalyticsPipelineDeviceShadowEnrichThingName (\s a -> s { _ioTAnalyticsPipelineDeviceShadowEnrichThingName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineFilter.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineFilter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineFilter.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-filter.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineFilter where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineFilter. See
+-- 'ioTAnalyticsPipelineFilter' for a more convenient constructor.
+data IoTAnalyticsPipelineFilter =
+  IoTAnalyticsPipelineFilter
+  { _ioTAnalyticsPipelineFilterFilter :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineFilterName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineFilterNext :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineFilter where
+  toJSON IoTAnalyticsPipelineFilter{..} =
+    object $
+    catMaybes
+    [ fmap (("Filter",) . toJSON) _ioTAnalyticsPipelineFilterFilter
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineFilterName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineFilterNext
+    ]
+
+instance FromJSON IoTAnalyticsPipelineFilter where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineFilter <$>
+      (obj .:? "Filter") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineFilter' containing required fields
+-- as arguments.
+ioTAnalyticsPipelineFilter
+  :: IoTAnalyticsPipelineFilter
+ioTAnalyticsPipelineFilter  =
+  IoTAnalyticsPipelineFilter
+  { _ioTAnalyticsPipelineFilterFilter = Nothing
+  , _ioTAnalyticsPipelineFilterName = Nothing
+  , _ioTAnalyticsPipelineFilterNext = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-filter.html#cfn-iotanalytics-pipeline-filter-filter
+itapfFilter :: Lens' IoTAnalyticsPipelineFilter (Maybe (Val Text))
+itapfFilter = lens _ioTAnalyticsPipelineFilterFilter (\s a -> s { _ioTAnalyticsPipelineFilterFilter = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-filter.html#cfn-iotanalytics-pipeline-filter-name
+itapfName :: Lens' IoTAnalyticsPipelineFilter (Maybe (Val Text))
+itapfName = lens _ioTAnalyticsPipelineFilterName (\s a -> s { _ioTAnalyticsPipelineFilterName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-filter.html#cfn-iotanalytics-pipeline-filter-next
+itapfNext :: Lens' IoTAnalyticsPipelineFilter (Maybe (Val Text))
+itapfNext = lens _ioTAnalyticsPipelineFilterNext (\s a -> s { _ioTAnalyticsPipelineFilterNext = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineLambda.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineLambda.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineLambda.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-lambda.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineLambda where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineLambda. See
+-- 'ioTAnalyticsPipelineLambda' for a more convenient constructor.
+data IoTAnalyticsPipelineLambda =
+  IoTAnalyticsPipelineLambda
+  { _ioTAnalyticsPipelineLambdaBatchSize :: Maybe (Val Integer)
+  , _ioTAnalyticsPipelineLambdaLambdaName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineLambdaName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineLambdaNext :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineLambda where
+  toJSON IoTAnalyticsPipelineLambda{..} =
+    object $
+    catMaybes
+    [ fmap (("BatchSize",) . toJSON . fmap Integer') _ioTAnalyticsPipelineLambdaBatchSize
+    , fmap (("LambdaName",) . toJSON) _ioTAnalyticsPipelineLambdaLambdaName
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineLambdaName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineLambdaNext
+    ]
+
+instance FromJSON IoTAnalyticsPipelineLambda where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineLambda <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "BatchSize") <*>
+      (obj .:? "LambdaName") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineLambda' containing required fields
+-- as arguments.
+ioTAnalyticsPipelineLambda
+  :: IoTAnalyticsPipelineLambda
+ioTAnalyticsPipelineLambda  =
+  IoTAnalyticsPipelineLambda
+  { _ioTAnalyticsPipelineLambdaBatchSize = Nothing
+  , _ioTAnalyticsPipelineLambdaLambdaName = Nothing
+  , _ioTAnalyticsPipelineLambdaName = Nothing
+  , _ioTAnalyticsPipelineLambdaNext = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-lambda.html#cfn-iotanalytics-pipeline-lambda-batchsize
+itaplBatchSize :: Lens' IoTAnalyticsPipelineLambda (Maybe (Val Integer))
+itaplBatchSize = lens _ioTAnalyticsPipelineLambdaBatchSize (\s a -> s { _ioTAnalyticsPipelineLambdaBatchSize = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-lambda.html#cfn-iotanalytics-pipeline-lambda-lambdaname
+itaplLambdaName :: Lens' IoTAnalyticsPipelineLambda (Maybe (Val Text))
+itaplLambdaName = lens _ioTAnalyticsPipelineLambdaLambdaName (\s a -> s { _ioTAnalyticsPipelineLambdaLambdaName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-lambda.html#cfn-iotanalytics-pipeline-lambda-name
+itaplName :: Lens' IoTAnalyticsPipelineLambda (Maybe (Val Text))
+itaplName = lens _ioTAnalyticsPipelineLambdaName (\s a -> s { _ioTAnalyticsPipelineLambdaName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-lambda.html#cfn-iotanalytics-pipeline-lambda-next
+itaplNext :: Lens' IoTAnalyticsPipelineLambda (Maybe (Val Text))
+itaplNext = lens _ioTAnalyticsPipelineLambdaNext (\s a -> s { _ioTAnalyticsPipelineLambdaNext = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineMath.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineMath.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineMath.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-math.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineMath where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineMath. See
+-- 'ioTAnalyticsPipelineMath' for a more convenient constructor.
+data IoTAnalyticsPipelineMath =
+  IoTAnalyticsPipelineMath
+  { _ioTAnalyticsPipelineMathAttribute :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineMathMath :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineMathName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineMathNext :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineMath where
+  toJSON IoTAnalyticsPipelineMath{..} =
+    object $
+    catMaybes
+    [ fmap (("Attribute",) . toJSON) _ioTAnalyticsPipelineMathAttribute
+    , fmap (("Math",) . toJSON) _ioTAnalyticsPipelineMathMath
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineMathName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineMathNext
+    ]
+
+instance FromJSON IoTAnalyticsPipelineMath where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineMath <$>
+      (obj .:? "Attribute") <*>
+      (obj .:? "Math") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineMath' containing required fields as
+-- arguments.
+ioTAnalyticsPipelineMath
+  :: IoTAnalyticsPipelineMath
+ioTAnalyticsPipelineMath  =
+  IoTAnalyticsPipelineMath
+  { _ioTAnalyticsPipelineMathAttribute = Nothing
+  , _ioTAnalyticsPipelineMathMath = Nothing
+  , _ioTAnalyticsPipelineMathName = Nothing
+  , _ioTAnalyticsPipelineMathNext = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-math.html#cfn-iotanalytics-pipeline-math-attribute
+itapmAttribute :: Lens' IoTAnalyticsPipelineMath (Maybe (Val Text))
+itapmAttribute = lens _ioTAnalyticsPipelineMathAttribute (\s a -> s { _ioTAnalyticsPipelineMathAttribute = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-math.html#cfn-iotanalytics-pipeline-math-math
+itapmMath :: Lens' IoTAnalyticsPipelineMath (Maybe (Val Text))
+itapmMath = lens _ioTAnalyticsPipelineMathMath (\s a -> s { _ioTAnalyticsPipelineMathMath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-math.html#cfn-iotanalytics-pipeline-math-name
+itapmName :: Lens' IoTAnalyticsPipelineMath (Maybe (Val Text))
+itapmName = lens _ioTAnalyticsPipelineMathName (\s a -> s { _ioTAnalyticsPipelineMathName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-math.html#cfn-iotanalytics-pipeline-math-next
+itapmNext :: Lens' IoTAnalyticsPipelineMath (Maybe (Val Text))
+itapmNext = lens _ioTAnalyticsPipelineMathNext (\s a -> s { _ioTAnalyticsPipelineMathNext = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineRemoveAttributes.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineRemoveAttributes.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineRemoveAttributes.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-removeattributes.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineRemoveAttributes. See
+-- 'ioTAnalyticsPipelineRemoveAttributes' for a more convenient constructor.
+data IoTAnalyticsPipelineRemoveAttributes =
+  IoTAnalyticsPipelineRemoveAttributes
+  { _ioTAnalyticsPipelineRemoveAttributesAttributes :: Maybe (ValList Text)
+  , _ioTAnalyticsPipelineRemoveAttributesName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineRemoveAttributesNext :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineRemoveAttributes where
+  toJSON IoTAnalyticsPipelineRemoveAttributes{..} =
+    object $
+    catMaybes
+    [ fmap (("Attributes",) . toJSON) _ioTAnalyticsPipelineRemoveAttributesAttributes
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineRemoveAttributesName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineRemoveAttributesNext
+    ]
+
+instance FromJSON IoTAnalyticsPipelineRemoveAttributes where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineRemoveAttributes <$>
+      (obj .:? "Attributes") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineRemoveAttributes' containing
+-- required fields as arguments.
+ioTAnalyticsPipelineRemoveAttributes
+  :: IoTAnalyticsPipelineRemoveAttributes
+ioTAnalyticsPipelineRemoveAttributes  =
+  IoTAnalyticsPipelineRemoveAttributes
+  { _ioTAnalyticsPipelineRemoveAttributesAttributes = Nothing
+  , _ioTAnalyticsPipelineRemoveAttributesName = Nothing
+  , _ioTAnalyticsPipelineRemoveAttributesNext = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-removeattributes.html#cfn-iotanalytics-pipeline-removeattributes-attributes
+itapraAttributes :: Lens' IoTAnalyticsPipelineRemoveAttributes (Maybe (ValList Text))
+itapraAttributes = lens _ioTAnalyticsPipelineRemoveAttributesAttributes (\s a -> s { _ioTAnalyticsPipelineRemoveAttributesAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-removeattributes.html#cfn-iotanalytics-pipeline-removeattributes-name
+itapraName :: Lens' IoTAnalyticsPipelineRemoveAttributes (Maybe (Val Text))
+itapraName = lens _ioTAnalyticsPipelineRemoveAttributesName (\s a -> s { _ioTAnalyticsPipelineRemoveAttributesName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-removeattributes.html#cfn-iotanalytics-pipeline-removeattributes-next
+itapraNext :: Lens' IoTAnalyticsPipelineRemoveAttributes (Maybe (Val Text))
+itapraNext = lens _ioTAnalyticsPipelineRemoveAttributesNext (\s a -> s { _ioTAnalyticsPipelineRemoveAttributesNext = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineSelectAttributes.hs b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineSelectAttributes.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/IoTAnalyticsPipelineSelectAttributes.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-selectattributes.html
+
+module Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for IoTAnalyticsPipelineSelectAttributes. See
+-- 'ioTAnalyticsPipelineSelectAttributes' for a more convenient constructor.
+data IoTAnalyticsPipelineSelectAttributes =
+  IoTAnalyticsPipelineSelectAttributes
+  { _ioTAnalyticsPipelineSelectAttributesAttributes :: Maybe (ValList Text)
+  , _ioTAnalyticsPipelineSelectAttributesName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineSelectAttributesNext :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipelineSelectAttributes where
+  toJSON IoTAnalyticsPipelineSelectAttributes{..} =
+    object $
+    catMaybes
+    [ fmap (("Attributes",) . toJSON) _ioTAnalyticsPipelineSelectAttributesAttributes
+    , fmap (("Name",) . toJSON) _ioTAnalyticsPipelineSelectAttributesName
+    , fmap (("Next",) . toJSON) _ioTAnalyticsPipelineSelectAttributesNext
+    ]
+
+instance FromJSON IoTAnalyticsPipelineSelectAttributes where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipelineSelectAttributes <$>
+      (obj .:? "Attributes") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Next")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipelineSelectAttributes' containing
+-- required fields as arguments.
+ioTAnalyticsPipelineSelectAttributes
+  :: IoTAnalyticsPipelineSelectAttributes
+ioTAnalyticsPipelineSelectAttributes  =
+  IoTAnalyticsPipelineSelectAttributes
+  { _ioTAnalyticsPipelineSelectAttributesAttributes = Nothing
+  , _ioTAnalyticsPipelineSelectAttributesName = Nothing
+  , _ioTAnalyticsPipelineSelectAttributesNext = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-selectattributes.html#cfn-iotanalytics-pipeline-selectattributes-attributes
+itapsaAttributes :: Lens' IoTAnalyticsPipelineSelectAttributes (Maybe (ValList Text))
+itapsaAttributes = lens _ioTAnalyticsPipelineSelectAttributesAttributes (\s a -> s { _ioTAnalyticsPipelineSelectAttributesAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-selectattributes.html#cfn-iotanalytics-pipeline-selectattributes-name
+itapsaName :: Lens' IoTAnalyticsPipelineSelectAttributes (Maybe (Val Text))
+itapsaName = lens _ioTAnalyticsPipelineSelectAttributesName (\s a -> s { _ioTAnalyticsPipelineSelectAttributesName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-pipeline-selectattributes.html#cfn-iotanalytics-pipeline-selectattributes-next
+itapsaNext :: Lens' IoTAnalyticsPipelineSelectAttributes (Maybe (Val Text))
+itapsaNext = lens _ioTAnalyticsPipelineSelectAttributesNext (\s a -> s { _ioTAnalyticsPipelineSelectAttributesNext = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs b/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
--- a/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
+++ b/library-gen/Stratosphere/ResourceProperties/SageMakerEndpointConfigProductionVariant.hs
@@ -14,7 +14,8 @@
 -- constructor.
 data SageMakerEndpointConfigProductionVariant =
   SageMakerEndpointConfigProductionVariant
-  { _sageMakerEndpointConfigProductionVariantInitialInstanceCount :: Val Integer
+  { _sageMakerEndpointConfigProductionVariantAcceleratorType :: Maybe (Val Text)
+  , _sageMakerEndpointConfigProductionVariantInitialInstanceCount :: Val Integer
   , _sageMakerEndpointConfigProductionVariantInitialVariantWeight :: Val Double
   , _sageMakerEndpointConfigProductionVariantInstanceType :: Val Text
   , _sageMakerEndpointConfigProductionVariantModelName :: Val Text
@@ -25,7 +26,8 @@
   toJSON SageMakerEndpointConfigProductionVariant{..} =
     object $
     catMaybes
-    [ (Just . ("InitialInstanceCount",) . toJSON . fmap Integer') _sageMakerEndpointConfigProductionVariantInitialInstanceCount
+    [ fmap (("AcceleratorType",) . toJSON) _sageMakerEndpointConfigProductionVariantAcceleratorType
+    , (Just . ("InitialInstanceCount",) . toJSON . fmap Integer') _sageMakerEndpointConfigProductionVariantInitialInstanceCount
     , (Just . ("InitialVariantWeight",) . toJSON . fmap Double') _sageMakerEndpointConfigProductionVariantInitialVariantWeight
     , (Just . ("InstanceType",) . toJSON) _sageMakerEndpointConfigProductionVariantInstanceType
     , (Just . ("ModelName",) . toJSON) _sageMakerEndpointConfigProductionVariantModelName
@@ -35,6 +37,7 @@
 instance FromJSON SageMakerEndpointConfigProductionVariant where
   parseJSON (Object obj) =
     SageMakerEndpointConfigProductionVariant <$>
+      (obj .:? "AcceleratorType") <*>
       fmap (fmap unInteger') (obj .: "InitialInstanceCount") <*>
       fmap (fmap unDouble') (obj .: "InitialVariantWeight") <*>
       (obj .: "InstanceType") <*>
@@ -53,12 +56,17 @@
   -> SageMakerEndpointConfigProductionVariant
 sageMakerEndpointConfigProductionVariant initialInstanceCountarg initialVariantWeightarg instanceTypearg modelNamearg variantNamearg =
   SageMakerEndpointConfigProductionVariant
-  { _sageMakerEndpointConfigProductionVariantInitialInstanceCount = initialInstanceCountarg
+  { _sageMakerEndpointConfigProductionVariantAcceleratorType = Nothing
+  , _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-acceleratortype
+smecpvAcceleratorType :: Lens' SageMakerEndpointConfigProductionVariant (Maybe (Val Text))
+smecpvAcceleratorType = lens _sageMakerEndpointConfigProductionVariantAcceleratorType (\s a -> s { _sageMakerEndpointConfigProductionVariantAcceleratorType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-initialinstancecount
 smecpvInitialInstanceCount :: Lens' SageMakerEndpointConfigProductionVariant (Val Integer)
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
@@ -49,6 +49,7 @@
 
 import Stratosphere.Resources.AmazonMQBroker as X
 import Stratosphere.Resources.AmazonMQConfiguration as X
+import Stratosphere.Resources.AmazonMQConfigurationAssociation as X
 import Stratosphere.Resources.ApiGatewayAccount as X
 import Stratosphere.Resources.ApiGatewayApiKey as X
 import Stratosphere.Resources.ApiGatewayAuthorizer as X
@@ -260,6 +261,10 @@
 import Stratosphere.Resources.IoTThing as X
 import Stratosphere.Resources.IoTThingPrincipalAttachment as X
 import Stratosphere.Resources.IoTTopicRule as X
+import Stratosphere.Resources.IoTAnalyticsChannel as X
+import Stratosphere.Resources.IoTAnalyticsDataset as X
+import Stratosphere.Resources.IoTAnalyticsDatastore as X
+import Stratosphere.Resources.IoTAnalyticsPipeline as X
 import Stratosphere.Resources.KMSAlias as X
 import Stratosphere.Resources.KMSKey as X
 import Stratosphere.Resources.KinesisStream as X
@@ -380,6 +385,7 @@
 import Stratosphere.ResourceProperties.AmazonMQBrokerLogList as X
 import Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow as X
 import Stratosphere.ResourceProperties.AmazonMQBrokerUser as X
+import Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId as X
 import Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentAccessLogSetting as X
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting as X
@@ -840,6 +846,32 @@
 import Stratosphere.ResourceProperties.IoTTopicRuleSqsAction as X
 import Stratosphere.ResourceProperties.IoTTopicRuleStepFunctionsAction as X
 import Stratosphere.ResourceProperties.IoTTopicRuleTopicRulePayload as X
+import Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable as X
+import Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineChannel as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDatastore as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceRegistryEnrich as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceShadowEnrich as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineFilter as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineLambda as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineMath as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes as X
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes as X
 import Stratosphere.ResourceProperties.KinesisStreamStreamEncryption as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput as X
@@ -1058,6 +1090,7 @@
 data ResourceProperties
   = AmazonMQBrokerProperties AmazonMQBroker
   | AmazonMQConfigurationProperties AmazonMQConfiguration
+  | AmazonMQConfigurationAssociationProperties AmazonMQConfigurationAssociation
   | ApiGatewayAccountProperties ApiGatewayAccount
   | ApiGatewayApiKeyProperties ApiGatewayApiKey
   | ApiGatewayAuthorizerProperties ApiGatewayAuthorizer
@@ -1269,6 +1302,10 @@
   | IoTThingProperties IoTThing
   | IoTThingPrincipalAttachmentProperties IoTThingPrincipalAttachment
   | IoTTopicRuleProperties IoTTopicRule
+  | IoTAnalyticsChannelProperties IoTAnalyticsChannel
+  | IoTAnalyticsDatasetProperties IoTAnalyticsDataset
+  | IoTAnalyticsDatastoreProperties IoTAnalyticsDatastore
+  | IoTAnalyticsPipelineProperties IoTAnalyticsPipeline
   | KMSAliasProperties KMSAlias
   | KMSKeyProperties KMSKey
   | KinesisStreamProperties KinesisStream
@@ -1444,6 +1481,8 @@
   [ "Type" .= ("AWS::AmazonMQ::Broker" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (AmazonMQConfigurationProperties x) =
   [ "Type" .= ("AWS::AmazonMQ::Configuration" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (AmazonMQConfigurationAssociationProperties x) =
+  [ "Type" .= ("AWS::AmazonMQ::ConfigurationAssociation" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayAccountProperties x) =
   [ "Type" .= ("AWS::ApiGateway::Account" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApiGatewayApiKeyProperties x) =
@@ -1866,6 +1905,14 @@
   [ "Type" .= ("AWS::IoT::ThingPrincipalAttachment" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (IoTTopicRuleProperties x) =
   [ "Type" .= ("AWS::IoT::TopicRule" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (IoTAnalyticsChannelProperties x) =
+  [ "Type" .= ("AWS::IoTAnalytics::Channel" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (IoTAnalyticsDatasetProperties x) =
+  [ "Type" .= ("AWS::IoTAnalytics::Dataset" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (IoTAnalyticsDatastoreProperties x) =
+  [ "Type" .= ("AWS::IoTAnalytics::Datastore" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (IoTAnalyticsPipelineProperties x) =
+  [ "Type" .= ("AWS::IoTAnalytics::Pipeline" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (KMSAliasProperties x) =
   [ "Type" .= ("AWS::KMS::Alias" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (KMSKeyProperties x) =
@@ -2106,6 +2153,7 @@
        props <- case type' of
          "AWS::AmazonMQ::Broker" -> AmazonMQBrokerProperties <$> (o .: "Properties")
          "AWS::AmazonMQ::Configuration" -> AmazonMQConfigurationProperties <$> (o .: "Properties")
+         "AWS::AmazonMQ::ConfigurationAssociation" -> AmazonMQConfigurationAssociationProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Account" -> ApiGatewayAccountProperties <$> (o .: "Properties")
          "AWS::ApiGateway::ApiKey" -> ApiGatewayApiKeyProperties <$> (o .: "Properties")
          "AWS::ApiGateway::Authorizer" -> ApiGatewayAuthorizerProperties <$> (o .: "Properties")
@@ -2317,6 +2365,10 @@
          "AWS::IoT::Thing" -> IoTThingProperties <$> (o .: "Properties")
          "AWS::IoT::ThingPrincipalAttachment" -> IoTThingPrincipalAttachmentProperties <$> (o .: "Properties")
          "AWS::IoT::TopicRule" -> IoTTopicRuleProperties <$> (o .: "Properties")
+         "AWS::IoTAnalytics::Channel" -> IoTAnalyticsChannelProperties <$> (o .: "Properties")
+         "AWS::IoTAnalytics::Dataset" -> IoTAnalyticsDatasetProperties <$> (o .: "Properties")
+         "AWS::IoTAnalytics::Datastore" -> IoTAnalyticsDatastoreProperties <$> (o .: "Properties")
+         "AWS::IoTAnalytics::Pipeline" -> IoTAnalyticsPipelineProperties <$> (o .: "Properties")
          "AWS::KMS::Alias" -> KMSAliasProperties <$> (o .: "Properties")
          "AWS::KMS::Key" -> KMSKeyProperties <$> (o .: "Properties")
          "AWS::Kinesis::Stream" -> KinesisStreamProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/AmazonMQConfigurationAssociation.hs b/library-gen/Stratosphere/Resources/AmazonMQConfigurationAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AmazonMQConfigurationAssociation.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configurationassociation.html
+
+module Stratosphere.Resources.AmazonMQConfigurationAssociation where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId
+
+-- | Full data type definition for AmazonMQConfigurationAssociation. See
+-- 'amazonMQConfigurationAssociation' for a more convenient constructor.
+data AmazonMQConfigurationAssociation =
+  AmazonMQConfigurationAssociation
+  { _amazonMQConfigurationAssociationBroker :: Val Text
+  , _amazonMQConfigurationAssociationConfiguration :: AmazonMQConfigurationAssociationConfigurationId
+  } deriving (Show, Eq)
+
+instance ToJSON AmazonMQConfigurationAssociation where
+  toJSON AmazonMQConfigurationAssociation{..} =
+    object $
+    catMaybes
+    [ (Just . ("Broker",) . toJSON) _amazonMQConfigurationAssociationBroker
+    , (Just . ("Configuration",) . toJSON) _amazonMQConfigurationAssociationConfiguration
+    ]
+
+instance FromJSON AmazonMQConfigurationAssociation where
+  parseJSON (Object obj) =
+    AmazonMQConfigurationAssociation <$>
+      (obj .: "Broker") <*>
+      (obj .: "Configuration")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AmazonMQConfigurationAssociation' containing required
+-- fields as arguments.
+amazonMQConfigurationAssociation
+  :: Val Text -- ^ 'amqcaBroker'
+  -> AmazonMQConfigurationAssociationConfigurationId -- ^ 'amqcaConfiguration'
+  -> AmazonMQConfigurationAssociation
+amazonMQConfigurationAssociation brokerarg configurationarg =
+  AmazonMQConfigurationAssociation
+  { _amazonMQConfigurationAssociationBroker = brokerarg
+  , _amazonMQConfigurationAssociationConfiguration = configurationarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configurationassociation.html#cfn-amazonmq-configurationassociation-broker
+amqcaBroker :: Lens' AmazonMQConfigurationAssociation (Val Text)
+amqcaBroker = lens _amazonMQConfigurationAssociationBroker (\s a -> s { _amazonMQConfigurationAssociationBroker = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configurationassociation.html#cfn-amazonmq-configurationassociation-configuration
+amqcaConfiguration :: Lens' AmazonMQConfigurationAssociation AmazonMQConfigurationAssociationConfigurationId
+amqcaConfiguration = lens _amazonMQConfigurationAssociationConfiguration (\s a -> s { _amazonMQConfigurationAssociationConfiguration = a })
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsChannel.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsChannel.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsChannel.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-channel.html
+
+module Stratosphere.Resources.IoTAnalyticsChannel where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for IoTAnalyticsChannel. See
+-- 'ioTAnalyticsChannel' for a more convenient constructor.
+data IoTAnalyticsChannel =
+  IoTAnalyticsChannel
+  { _ioTAnalyticsChannelChannelName :: Maybe (Val Text)
+  , _ioTAnalyticsChannelRetentionPeriod :: Maybe IoTAnalyticsChannelRetentionPeriod
+  , _ioTAnalyticsChannelTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsChannel where
+  toJSON IoTAnalyticsChannel{..} =
+    object $
+    catMaybes
+    [ fmap (("ChannelName",) . toJSON) _ioTAnalyticsChannelChannelName
+    , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsChannelRetentionPeriod
+    , fmap (("Tags",) . toJSON) _ioTAnalyticsChannelTags
+    ]
+
+instance FromJSON IoTAnalyticsChannel where
+  parseJSON (Object obj) =
+    IoTAnalyticsChannel <$>
+      (obj .:? "ChannelName") <*>
+      (obj .:? "RetentionPeriod") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsChannel' containing required fields as
+-- arguments.
+ioTAnalyticsChannel
+  :: IoTAnalyticsChannel
+ioTAnalyticsChannel  =
+  IoTAnalyticsChannel
+  { _ioTAnalyticsChannelChannelName = Nothing
+  , _ioTAnalyticsChannelRetentionPeriod = Nothing
+  , _ioTAnalyticsChannelTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-channel.html#cfn-iotanalytics-channel-channelname
+itacChannelName :: Lens' IoTAnalyticsChannel (Maybe (Val Text))
+itacChannelName = lens _ioTAnalyticsChannelChannelName (\s a -> s { _ioTAnalyticsChannelChannelName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-channel.html#cfn-iotanalytics-channel-retentionperiod
+itacRetentionPeriod :: Lens' IoTAnalyticsChannel (Maybe IoTAnalyticsChannelRetentionPeriod)
+itacRetentionPeriod = lens _ioTAnalyticsChannelRetentionPeriod (\s a -> s { _ioTAnalyticsChannelRetentionPeriod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-channel.html#cfn-iotanalytics-channel-tags
+itacTags :: Lens' IoTAnalyticsChannel (Maybe [Tag])
+itacTags = lens _ioTAnalyticsChannelTags (\s a -> s { _ioTAnalyticsChannelTags = a })
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsDataset.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html
+
+module Stratosphere.Resources.IoTAnalyticsDataset where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod
+import Stratosphere.ResourceProperties.Tag
+import Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger
+
+-- | Full data type definition for IoTAnalyticsDataset. See
+-- 'ioTAnalyticsDataset' for a more convenient constructor.
+data IoTAnalyticsDataset =
+  IoTAnalyticsDataset
+  { _ioTAnalyticsDatasetActions :: [IoTAnalyticsDatasetAction]
+  , _ioTAnalyticsDatasetDatasetName :: Maybe (Val Text)
+  , _ioTAnalyticsDatasetRetentionPeriod :: Maybe IoTAnalyticsDatasetRetentionPeriod
+  , _ioTAnalyticsDatasetTags :: Maybe [Tag]
+  , _ioTAnalyticsDatasetTriggers :: Maybe [IoTAnalyticsDatasetTrigger]
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDataset where
+  toJSON IoTAnalyticsDataset{..} =
+    object $
+    catMaybes
+    [ (Just . ("Actions",) . toJSON) _ioTAnalyticsDatasetActions
+    , fmap (("DatasetName",) . toJSON) _ioTAnalyticsDatasetDatasetName
+    , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsDatasetRetentionPeriod
+    , fmap (("Tags",) . toJSON) _ioTAnalyticsDatasetTags
+    , fmap (("Triggers",) . toJSON) _ioTAnalyticsDatasetTriggers
+    ]
+
+instance FromJSON IoTAnalyticsDataset where
+  parseJSON (Object obj) =
+    IoTAnalyticsDataset <$>
+      (obj .: "Actions") <*>
+      (obj .:? "DatasetName") <*>
+      (obj .:? "RetentionPeriod") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "Triggers")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDataset' containing required fields as
+-- arguments.
+ioTAnalyticsDataset
+  :: [IoTAnalyticsDatasetAction] -- ^ 'itadsActions'
+  -> IoTAnalyticsDataset
+ioTAnalyticsDataset actionsarg =
+  IoTAnalyticsDataset
+  { _ioTAnalyticsDatasetActions = actionsarg
+  , _ioTAnalyticsDatasetDatasetName = Nothing
+  , _ioTAnalyticsDatasetRetentionPeriod = Nothing
+  , _ioTAnalyticsDatasetTags = Nothing
+  , _ioTAnalyticsDatasetTriggers = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-actions
+itadsActions :: Lens' IoTAnalyticsDataset [IoTAnalyticsDatasetAction]
+itadsActions = lens _ioTAnalyticsDatasetActions (\s a -> s { _ioTAnalyticsDatasetActions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-datasetname
+itadsDatasetName :: Lens' IoTAnalyticsDataset (Maybe (Val Text))
+itadsDatasetName = lens _ioTAnalyticsDatasetDatasetName (\s a -> s { _ioTAnalyticsDatasetDatasetName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-retentionperiod
+itadsRetentionPeriod :: Lens' IoTAnalyticsDataset (Maybe IoTAnalyticsDatasetRetentionPeriod)
+itadsRetentionPeriod = lens _ioTAnalyticsDatasetRetentionPeriod (\s a -> s { _ioTAnalyticsDatasetRetentionPeriod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-tags
+itadsTags :: Lens' IoTAnalyticsDataset (Maybe [Tag])
+itadsTags = lens _ioTAnalyticsDatasetTags (\s a -> s { _ioTAnalyticsDatasetTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-dataset.html#cfn-iotanalytics-dataset-triggers
+itadsTriggers :: Lens' IoTAnalyticsDataset (Maybe [IoTAnalyticsDatasetTrigger])
+itadsTriggers = lens _ioTAnalyticsDatasetTriggers (\s a -> s { _ioTAnalyticsDatasetTriggers = a })
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsDatastore.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsDatastore.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsDatastore.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-datastore.html
+
+module Stratosphere.Resources.IoTAnalyticsDatastore where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for IoTAnalyticsDatastore. See
+-- 'ioTAnalyticsDatastore' for a more convenient constructor.
+data IoTAnalyticsDatastore =
+  IoTAnalyticsDatastore
+  { _ioTAnalyticsDatastoreDatastoreName :: Maybe (Val Text)
+  , _ioTAnalyticsDatastoreRetentionPeriod :: Maybe IoTAnalyticsDatastoreRetentionPeriod
+  , _ioTAnalyticsDatastoreTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsDatastore where
+  toJSON IoTAnalyticsDatastore{..} =
+    object $
+    catMaybes
+    [ fmap (("DatastoreName",) . toJSON) _ioTAnalyticsDatastoreDatastoreName
+    , fmap (("RetentionPeriod",) . toJSON) _ioTAnalyticsDatastoreRetentionPeriod
+    , fmap (("Tags",) . toJSON) _ioTAnalyticsDatastoreTags
+    ]
+
+instance FromJSON IoTAnalyticsDatastore where
+  parseJSON (Object obj) =
+    IoTAnalyticsDatastore <$>
+      (obj .:? "DatastoreName") <*>
+      (obj .:? "RetentionPeriod") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsDatastore' containing required fields as
+-- arguments.
+ioTAnalyticsDatastore
+  :: IoTAnalyticsDatastore
+ioTAnalyticsDatastore  =
+  IoTAnalyticsDatastore
+  { _ioTAnalyticsDatastoreDatastoreName = Nothing
+  , _ioTAnalyticsDatastoreRetentionPeriod = Nothing
+  , _ioTAnalyticsDatastoreTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-datastore.html#cfn-iotanalytics-datastore-datastorename
+itadstDatastoreName :: Lens' IoTAnalyticsDatastore (Maybe (Val Text))
+itadstDatastoreName = lens _ioTAnalyticsDatastoreDatastoreName (\s a -> s { _ioTAnalyticsDatastoreDatastoreName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-datastore.html#cfn-iotanalytics-datastore-retentionperiod
+itadstRetentionPeriod :: Lens' IoTAnalyticsDatastore (Maybe IoTAnalyticsDatastoreRetentionPeriod)
+itadstRetentionPeriod = lens _ioTAnalyticsDatastoreRetentionPeriod (\s a -> s { _ioTAnalyticsDatastoreRetentionPeriod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-datastore.html#cfn-iotanalytics-datastore-tags
+itadstTags :: Lens' IoTAnalyticsDatastore (Maybe [Tag])
+itadstTags = lens _ioTAnalyticsDatastoreTags (\s a -> s { _ioTAnalyticsDatastoreTags = a })
diff --git a/library-gen/Stratosphere/Resources/IoTAnalyticsPipeline.hs b/library-gen/Stratosphere/Resources/IoTAnalyticsPipeline.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/IoTAnalyticsPipeline.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-pipeline.html
+
+module Stratosphere.Resources.IoTAnalyticsPipeline where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for IoTAnalyticsPipeline. See
+-- 'ioTAnalyticsPipeline' for a more convenient constructor.
+data IoTAnalyticsPipeline =
+  IoTAnalyticsPipeline
+  { _ioTAnalyticsPipelinePipelineActivities :: [IoTAnalyticsPipelineActivity]
+  , _ioTAnalyticsPipelinePipelineName :: Maybe (Val Text)
+  , _ioTAnalyticsPipelineTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON IoTAnalyticsPipeline where
+  toJSON IoTAnalyticsPipeline{..} =
+    object $
+    catMaybes
+    [ (Just . ("PipelineActivities",) . toJSON) _ioTAnalyticsPipelinePipelineActivities
+    , fmap (("PipelineName",) . toJSON) _ioTAnalyticsPipelinePipelineName
+    , fmap (("Tags",) . toJSON) _ioTAnalyticsPipelineTags
+    ]
+
+instance FromJSON IoTAnalyticsPipeline where
+  parseJSON (Object obj) =
+    IoTAnalyticsPipeline <$>
+      (obj .: "PipelineActivities") <*>
+      (obj .:? "PipelineName") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'IoTAnalyticsPipeline' containing required fields as
+-- arguments.
+ioTAnalyticsPipeline
+  :: [IoTAnalyticsPipelineActivity] -- ^ 'itapPipelineActivities'
+  -> IoTAnalyticsPipeline
+ioTAnalyticsPipeline pipelineActivitiesarg =
+  IoTAnalyticsPipeline
+  { _ioTAnalyticsPipelinePipelineActivities = pipelineActivitiesarg
+  , _ioTAnalyticsPipelinePipelineName = Nothing
+  , _ioTAnalyticsPipelineTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-pipeline.html#cfn-iotanalytics-pipeline-pipelineactivities
+itapPipelineActivities :: Lens' IoTAnalyticsPipeline [IoTAnalyticsPipelineActivity]
+itapPipelineActivities = lens _ioTAnalyticsPipelinePipelineActivities (\s a -> s { _ioTAnalyticsPipelinePipelineActivities = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-pipeline.html#cfn-iotanalytics-pipeline-pipelinename
+itapPipelineName :: Lens' IoTAnalyticsPipeline (Maybe (Val Text))
+itapPipelineName = lens _ioTAnalyticsPipelinePipelineName (\s a -> s { _ioTAnalyticsPipelinePipelineName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-pipeline.html#cfn-iotanalytics-pipeline-tags
+itapTags :: Lens' IoTAnalyticsPipeline (Maybe [Tag])
+itapTags = lens _ioTAnalyticsPipelineTags (\s a -> s { _ioTAnalyticsPipelineTags = a })
diff --git a/library-gen/Stratosphere/Resources/SageMakerModel.hs b/library-gen/Stratosphere/Resources/SageMakerModel.hs
--- a/library-gen/Stratosphere/Resources/SageMakerModel.hs
+++ b/library-gen/Stratosphere/Resources/SageMakerModel.hs
@@ -15,9 +15,10 @@
 -- more convenient constructor.
 data SageMakerModel =
   SageMakerModel
-  { _sageMakerModelExecutionRoleArn :: Val Text
+  { _sageMakerModelContainers :: Maybe [SageMakerModelContainerDefinition]
+  , _sageMakerModelExecutionRoleArn :: Val Text
   , _sageMakerModelModelName :: Maybe (Val Text)
-  , _sageMakerModelPrimaryContainer :: SageMakerModelContainerDefinition
+  , _sageMakerModelPrimaryContainer :: Maybe SageMakerModelContainerDefinition
   , _sageMakerModelTags :: Maybe [Tag]
   , _sageMakerModelVpcConfig :: Maybe SageMakerModelVpcConfig
   } deriving (Show, Eq)
@@ -26,9 +27,10 @@
   toJSON SageMakerModel{..} =
     object $
     catMaybes
-    [ (Just . ("ExecutionRoleArn",) . toJSON) _sageMakerModelExecutionRoleArn
+    [ fmap (("Containers",) . toJSON) _sageMakerModelContainers
+    , (Just . ("ExecutionRoleArn",) . toJSON) _sageMakerModelExecutionRoleArn
     , fmap (("ModelName",) . toJSON) _sageMakerModelModelName
-    , (Just . ("PrimaryContainer",) . toJSON) _sageMakerModelPrimaryContainer
+    , fmap (("PrimaryContainer",) . toJSON) _sageMakerModelPrimaryContainer
     , fmap (("Tags",) . toJSON) _sageMakerModelTags
     , fmap (("VpcConfig",) . toJSON) _sageMakerModelVpcConfig
     ]
@@ -36,9 +38,10 @@
 instance FromJSON SageMakerModel where
   parseJSON (Object obj) =
     SageMakerModel <$>
+      (obj .:? "Containers") <*>
       (obj .: "ExecutionRoleArn") <*>
       (obj .:? "ModelName") <*>
-      (obj .: "PrimaryContainer") <*>
+      (obj .:? "PrimaryContainer") <*>
       (obj .:? "Tags") <*>
       (obj .:? "VpcConfig")
   parseJSON _ = mempty
@@ -46,17 +49,21 @@
 -- | Constructor for 'SageMakerModel' containing required fields as arguments.
 sageMakerModel
   :: Val Text -- ^ 'smmExecutionRoleArn'
-  -> SageMakerModelContainerDefinition -- ^ 'smmPrimaryContainer'
   -> SageMakerModel
-sageMakerModel executionRoleArnarg primaryContainerarg =
+sageMakerModel executionRoleArnarg =
   SageMakerModel
-  { _sageMakerModelExecutionRoleArn = executionRoleArnarg
+  { _sageMakerModelContainers = Nothing
+  , _sageMakerModelExecutionRoleArn = executionRoleArnarg
   , _sageMakerModelModelName = Nothing
-  , _sageMakerModelPrimaryContainer = primaryContainerarg
+  , _sageMakerModelPrimaryContainer = Nothing
   , _sageMakerModelTags = Nothing
   , _sageMakerModelVpcConfig = Nothing
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-containers
+smmContainers :: Lens' SageMakerModel (Maybe [SageMakerModelContainerDefinition])
+smmContainers = lens _sageMakerModelContainers (\s a -> s { _sageMakerModelContainers = a })
+
 -- | 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 })
@@ -66,7 +73,7 @@
 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' SageMakerModel (Maybe 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
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.0.
+-- This file has been generated from package.yaml by hpack version 0.31.1.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: f077db9d7208f051341b88e7a12bceaddd86dd6e30b2e2622d024f3846d50c76
+-- hash: 21bf3f2778753313b49ca4168fe54a34c218d3df7ee3654fe7edfba3e44d3cde
 
 name:           stratosphere
-version:        0.28.1
+version:        0.29.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -52,6 +52,7 @@
       Stratosphere.ResourceProperties.AmazonMQBrokerLogList
       Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow
       Stratosphere.ResourceProperties.AmazonMQBrokerUser
+      Stratosphere.ResourceProperties.AmazonMQConfigurationAssociationConfigurationId
       Stratosphere.ResourceProperties.ApiGatewayApiKeyStageKey
       Stratosphere.ResourceProperties.ApiGatewayDeploymentAccessLogSetting
       Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting
@@ -497,6 +498,32 @@
       Stratosphere.ResourceProperties.IAMUserPolicy
       Stratosphere.ResourceProperties.IoT1ClickProjectDeviceTemplate
       Stratosphere.ResourceProperties.IoT1ClickProjectPlacementTemplate
+      Stratosphere.ResourceProperties.IoTAnalyticsChannelRetentionPeriod
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetAction
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetContainerAction
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetDatasetContentVersionValue
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetDeltaTime
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetFilter
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetOutputFileUriValue
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetQueryAction
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetResourceConfiguration
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetRetentionPeriod
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetSchedule
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetTrigger
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetTriggeringDataset
+      Stratosphere.ResourceProperties.IoTAnalyticsDatasetVariable
+      Stratosphere.ResourceProperties.IoTAnalyticsDatastoreRetentionPeriod
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineActivity
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineAddAttributes
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineChannel
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineDatastore
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceRegistryEnrich
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineDeviceShadowEnrich
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineFilter
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineLambda
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineMath
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineRemoveAttributes
+      Stratosphere.ResourceProperties.IoTAnalyticsPipelineSelectAttributes
       Stratosphere.ResourceProperties.IoTThingAttributePayload
       Stratosphere.ResourceProperties.IoTTopicRuleAction
       Stratosphere.ResourceProperties.IoTTopicRuleCloudwatchAlarmAction
@@ -720,6 +747,7 @@
       Stratosphere.Resources
       Stratosphere.Resources.AmazonMQBroker
       Stratosphere.Resources.AmazonMQConfiguration
+      Stratosphere.Resources.AmazonMQConfigurationAssociation
       Stratosphere.Resources.ApiGatewayAccount
       Stratosphere.Resources.ApiGatewayApiKey
       Stratosphere.Resources.ApiGatewayAuthorizer
@@ -926,6 +954,10 @@
       Stratosphere.Resources.IoT1ClickDevice
       Stratosphere.Resources.IoT1ClickPlacement
       Stratosphere.Resources.IoT1ClickProject
+      Stratosphere.Resources.IoTAnalyticsChannel
+      Stratosphere.Resources.IoTAnalyticsDataset
+      Stratosphere.Resources.IoTAnalyticsDatastore
+      Stratosphere.Resources.IoTAnalyticsPipeline
       Stratosphere.Resources.IoTCertificate
       Stratosphere.Resources.IoTPolicy
       Stratosphere.Resources.IoTPolicyPrincipalAttachment
