diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.23.0
+
+* Update resource specification document to version 2.3.0
+
 ## 0.22.3
 
 * Update resource specification document to new unspecified version
diff --git a/examples/ec2-with-eip.hs b/examples/ec2-with-eip.hs
--- a/examples/ec2-with-eip.hs
+++ b/examples/ec2-with-eip.hs
@@ -25,7 +25,7 @@
   [ resource "EC2Instance" (
       EC2InstanceProperties $
       ec2Instance
-      "ami-22111148"
+      & eciImageId ?~ "ami-22111148"
       & eciInstanceType ?~ toRef instanceTypeParam
       & eciKeyName ?~ toRef keyParam
       & eciUserData ?~ Base64 (Join "" ["IPAddress=", toRef sshParam])
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionTimeout.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionTimeout.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionTimeout.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-timeout.html
+
+module Stratosphere.ResourceProperties.BatchJobDefinitionTimeout where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for BatchJobDefinitionTimeout. See
+-- 'batchJobDefinitionTimeout' for a more convenient constructor.
+data BatchJobDefinitionTimeout =
+  BatchJobDefinitionTimeout
+  { _batchJobDefinitionTimeoutAttemptDurationSeconds :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON BatchJobDefinitionTimeout where
+  toJSON BatchJobDefinitionTimeout{..} =
+    object $
+    catMaybes
+    [ fmap (("AttemptDurationSeconds",) . toJSON . fmap Integer') _batchJobDefinitionTimeoutAttemptDurationSeconds
+    ]
+
+instance FromJSON BatchJobDefinitionTimeout where
+  parseJSON (Object obj) =
+    BatchJobDefinitionTimeout <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "AttemptDurationSeconds")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BatchJobDefinitionTimeout' containing required fields as
+-- arguments.
+batchJobDefinitionTimeout
+  :: BatchJobDefinitionTimeout
+batchJobDefinitionTimeout  =
+  BatchJobDefinitionTimeout
+  { _batchJobDefinitionTimeoutAttemptDurationSeconds = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-timeout.html#cfn-batch-jobdefinition-timeout-attemptdurationseconds
+bjdtAttemptDurationSeconds :: Lens' BatchJobDefinitionTimeout (Maybe (Val Integer))
+bjdtAttemptDurationSeconds = lens _batchJobDefinitionTimeoutAttemptDurationSeconds (\s a -> s { _batchJobDefinitionTimeoutAttemptDurationSeconds = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetBudgetData.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html
+
+module Stratosphere.ResourceProperties.BudgetsBudgetBudgetData where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.BudgetsBudgetSpend
+import Stratosphere.ResourceProperties.BudgetsBudgetCostTypes
+import Stratosphere.ResourceProperties.BudgetsBudgetTimePeriod
+
+-- | Full data type definition for BudgetsBudgetBudgetData. See
+-- 'budgetsBudgetBudgetData' for a more convenient constructor.
+data BudgetsBudgetBudgetData =
+  BudgetsBudgetBudgetData
+  { _budgetsBudgetBudgetDataBudgetLimit :: Maybe BudgetsBudgetSpend
+  , _budgetsBudgetBudgetDataBudgetName :: Maybe (Val Text)
+  , _budgetsBudgetBudgetDataBudgetType :: Val Text
+  , _budgetsBudgetBudgetDataCostFilters :: Maybe Object
+  , _budgetsBudgetBudgetDataCostTypes :: Maybe BudgetsBudgetCostTypes
+  , _budgetsBudgetBudgetDataTimePeriod :: Maybe BudgetsBudgetTimePeriod
+  , _budgetsBudgetBudgetDataTimeUnit :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudgetBudgetData where
+  toJSON BudgetsBudgetBudgetData{..} =
+    object $
+    catMaybes
+    [ fmap (("BudgetLimit",) . toJSON) _budgetsBudgetBudgetDataBudgetLimit
+    , fmap (("BudgetName",) . toJSON) _budgetsBudgetBudgetDataBudgetName
+    , (Just . ("BudgetType",) . toJSON) _budgetsBudgetBudgetDataBudgetType
+    , fmap (("CostFilters",) . toJSON) _budgetsBudgetBudgetDataCostFilters
+    , fmap (("CostTypes",) . toJSON) _budgetsBudgetBudgetDataCostTypes
+    , fmap (("TimePeriod",) . toJSON) _budgetsBudgetBudgetDataTimePeriod
+    , (Just . ("TimeUnit",) . toJSON) _budgetsBudgetBudgetDataTimeUnit
+    ]
+
+instance FromJSON BudgetsBudgetBudgetData where
+  parseJSON (Object obj) =
+    BudgetsBudgetBudgetData <$>
+      (obj .:? "BudgetLimit") <*>
+      (obj .:? "BudgetName") <*>
+      (obj .: "BudgetType") <*>
+      (obj .:? "CostFilters") <*>
+      (obj .:? "CostTypes") <*>
+      (obj .:? "TimePeriod") <*>
+      (obj .: "TimeUnit")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudgetBudgetData' containing required fields as
+-- arguments.
+budgetsBudgetBudgetData
+  :: Val Text -- ^ 'bbbdBudgetType'
+  -> Val Text -- ^ 'bbbdTimeUnit'
+  -> BudgetsBudgetBudgetData
+budgetsBudgetBudgetData budgetTypearg timeUnitarg =
+  BudgetsBudgetBudgetData
+  { _budgetsBudgetBudgetDataBudgetLimit = Nothing
+  , _budgetsBudgetBudgetDataBudgetName = Nothing
+  , _budgetsBudgetBudgetDataBudgetType = budgetTypearg
+  , _budgetsBudgetBudgetDataCostFilters = Nothing
+  , _budgetsBudgetBudgetDataCostTypes = Nothing
+  , _budgetsBudgetBudgetDataTimePeriod = Nothing
+  , _budgetsBudgetBudgetDataTimeUnit = timeUnitarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgetlimit
+bbbdBudgetLimit :: Lens' BudgetsBudgetBudgetData (Maybe BudgetsBudgetSpend)
+bbbdBudgetLimit = lens _budgetsBudgetBudgetDataBudgetLimit (\s a -> s { _budgetsBudgetBudgetDataBudgetLimit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgetname
+bbbdBudgetName :: Lens' BudgetsBudgetBudgetData (Maybe (Val Text))
+bbbdBudgetName = lens _budgetsBudgetBudgetDataBudgetName (\s a -> s { _budgetsBudgetBudgetDataBudgetName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-budgettype
+bbbdBudgetType :: Lens' BudgetsBudgetBudgetData (Val Text)
+bbbdBudgetType = lens _budgetsBudgetBudgetDataBudgetType (\s a -> s { _budgetsBudgetBudgetDataBudgetType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-costfilters
+bbbdCostFilters :: Lens' BudgetsBudgetBudgetData (Maybe Object)
+bbbdCostFilters = lens _budgetsBudgetBudgetDataCostFilters (\s a -> s { _budgetsBudgetBudgetDataCostFilters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-costtypes
+bbbdCostTypes :: Lens' BudgetsBudgetBudgetData (Maybe BudgetsBudgetCostTypes)
+bbbdCostTypes = lens _budgetsBudgetBudgetDataCostTypes (\s a -> s { _budgetsBudgetBudgetDataCostTypes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-timeperiod
+bbbdTimePeriod :: Lens' BudgetsBudgetBudgetData (Maybe BudgetsBudgetTimePeriod)
+bbbdTimePeriod = lens _budgetsBudgetBudgetDataTimePeriod (\s a -> s { _budgetsBudgetBudgetDataTimePeriod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-budgetdata.html#cfn-budgets-budget-budgetdata-timeunit
+bbbdTimeUnit :: Lens' BudgetsBudgetBudgetData (Val Text)
+bbbdTimeUnit = lens _budgetsBudgetBudgetDataTimeUnit (\s a -> s { _budgetsBudgetBudgetDataTimeUnit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetCostTypes.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetCostTypes.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetCostTypes.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html
+
+module Stratosphere.ResourceProperties.BudgetsBudgetCostTypes where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for BudgetsBudgetCostTypes. See
+-- 'budgetsBudgetCostTypes' for a more convenient constructor.
+data BudgetsBudgetCostTypes =
+  BudgetsBudgetCostTypes
+  { _budgetsBudgetCostTypesIncludeCredit :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeDiscount :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeOtherSubscription :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeRecurring :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeRefund :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeSubscription :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeSupport :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeTax :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesIncludeUpfront :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesUseAmortized :: Maybe (Val Bool)
+  , _budgetsBudgetCostTypesUseBlended :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudgetCostTypes where
+  toJSON BudgetsBudgetCostTypes{..} =
+    object $
+    catMaybes
+    [ fmap (("IncludeCredit",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeCredit
+    , fmap (("IncludeDiscount",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeDiscount
+    , fmap (("IncludeOtherSubscription",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeOtherSubscription
+    , fmap (("IncludeRecurring",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeRecurring
+    , fmap (("IncludeRefund",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeRefund
+    , fmap (("IncludeSubscription",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeSubscription
+    , fmap (("IncludeSupport",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeSupport
+    , fmap (("IncludeTax",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeTax
+    , fmap (("IncludeUpfront",) . toJSON . fmap Bool') _budgetsBudgetCostTypesIncludeUpfront
+    , fmap (("UseAmortized",) . toJSON . fmap Bool') _budgetsBudgetCostTypesUseAmortized
+    , fmap (("UseBlended",) . toJSON . fmap Bool') _budgetsBudgetCostTypesUseBlended
+    ]
+
+instance FromJSON BudgetsBudgetCostTypes where
+  parseJSON (Object obj) =
+    BudgetsBudgetCostTypes <$>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeCredit") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeDiscount") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeOtherSubscription") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeRecurring") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeRefund") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeSubscription") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeSupport") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeTax") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IncludeUpfront") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "UseAmortized") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "UseBlended")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudgetCostTypes' containing required fields as
+-- arguments.
+budgetsBudgetCostTypes
+  :: BudgetsBudgetCostTypes
+budgetsBudgetCostTypes  =
+  BudgetsBudgetCostTypes
+  { _budgetsBudgetCostTypesIncludeCredit = Nothing
+  , _budgetsBudgetCostTypesIncludeDiscount = Nothing
+  , _budgetsBudgetCostTypesIncludeOtherSubscription = Nothing
+  , _budgetsBudgetCostTypesIncludeRecurring = Nothing
+  , _budgetsBudgetCostTypesIncludeRefund = Nothing
+  , _budgetsBudgetCostTypesIncludeSubscription = Nothing
+  , _budgetsBudgetCostTypesIncludeSupport = Nothing
+  , _budgetsBudgetCostTypesIncludeTax = Nothing
+  , _budgetsBudgetCostTypesIncludeUpfront = Nothing
+  , _budgetsBudgetCostTypesUseAmortized = Nothing
+  , _budgetsBudgetCostTypesUseBlended = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includecredit
+bbctIncludeCredit :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeCredit = lens _budgetsBudgetCostTypesIncludeCredit (\s a -> s { _budgetsBudgetCostTypesIncludeCredit = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includediscount
+bbctIncludeDiscount :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeDiscount = lens _budgetsBudgetCostTypesIncludeDiscount (\s a -> s { _budgetsBudgetCostTypesIncludeDiscount = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includeothersubscription
+bbctIncludeOtherSubscription :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeOtherSubscription = lens _budgetsBudgetCostTypesIncludeOtherSubscription (\s a -> s { _budgetsBudgetCostTypesIncludeOtherSubscription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includerecurring
+bbctIncludeRecurring :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeRecurring = lens _budgetsBudgetCostTypesIncludeRecurring (\s a -> s { _budgetsBudgetCostTypesIncludeRecurring = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includerefund
+bbctIncludeRefund :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeRefund = lens _budgetsBudgetCostTypesIncludeRefund (\s a -> s { _budgetsBudgetCostTypesIncludeRefund = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includesubscription
+bbctIncludeSubscription :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeSubscription = lens _budgetsBudgetCostTypesIncludeSubscription (\s a -> s { _budgetsBudgetCostTypesIncludeSubscription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includesupport
+bbctIncludeSupport :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeSupport = lens _budgetsBudgetCostTypesIncludeSupport (\s a -> s { _budgetsBudgetCostTypesIncludeSupport = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includetax
+bbctIncludeTax :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeTax = lens _budgetsBudgetCostTypesIncludeTax (\s a -> s { _budgetsBudgetCostTypesIncludeTax = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-includeupfront
+bbctIncludeUpfront :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctIncludeUpfront = lens _budgetsBudgetCostTypesIncludeUpfront (\s a -> s { _budgetsBudgetCostTypesIncludeUpfront = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-useamortized
+bbctUseAmortized :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctUseAmortized = lens _budgetsBudgetCostTypesUseAmortized (\s a -> s { _budgetsBudgetCostTypesUseAmortized = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-costtypes.html#cfn-budgets-budget-costtypes-useblended
+bbctUseBlended :: Lens' BudgetsBudgetCostTypes (Maybe (Val Bool))
+bbctUseBlended = lens _budgetsBudgetCostTypesUseBlended (\s a -> s { _budgetsBudgetCostTypesUseBlended = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotification.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html
+
+module Stratosphere.ResourceProperties.BudgetsBudgetNotification where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for BudgetsBudgetNotification. See
+-- 'budgetsBudgetNotification' for a more convenient constructor.
+data BudgetsBudgetNotification =
+  BudgetsBudgetNotification
+  { _budgetsBudgetNotificationComparisonOperator :: Val Text
+  , _budgetsBudgetNotificationNotificationType :: Val Text
+  , _budgetsBudgetNotificationThreshold :: Val Double
+  , _budgetsBudgetNotificationThresholdType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudgetNotification where
+  toJSON BudgetsBudgetNotification{..} =
+    object $
+    catMaybes
+    [ (Just . ("ComparisonOperator",) . toJSON) _budgetsBudgetNotificationComparisonOperator
+    , (Just . ("NotificationType",) . toJSON) _budgetsBudgetNotificationNotificationType
+    , (Just . ("Threshold",) . toJSON . fmap Double') _budgetsBudgetNotificationThreshold
+    , fmap (("ThresholdType",) . toJSON) _budgetsBudgetNotificationThresholdType
+    ]
+
+instance FromJSON BudgetsBudgetNotification where
+  parseJSON (Object obj) =
+    BudgetsBudgetNotification <$>
+      (obj .: "ComparisonOperator") <*>
+      (obj .: "NotificationType") <*>
+      fmap (fmap unDouble') (obj .: "Threshold") <*>
+      (obj .:? "ThresholdType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudgetNotification' containing required fields as
+-- arguments.
+budgetsBudgetNotification
+  :: Val Text -- ^ 'bbnComparisonOperator'
+  -> Val Text -- ^ 'bbnNotificationType'
+  -> Val Double -- ^ 'bbnThreshold'
+  -> BudgetsBudgetNotification
+budgetsBudgetNotification comparisonOperatorarg notificationTypearg thresholdarg =
+  BudgetsBudgetNotification
+  { _budgetsBudgetNotificationComparisonOperator = comparisonOperatorarg
+  , _budgetsBudgetNotificationNotificationType = notificationTypearg
+  , _budgetsBudgetNotificationThreshold = thresholdarg
+  , _budgetsBudgetNotificationThresholdType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-comparisonoperator
+bbnComparisonOperator :: Lens' BudgetsBudgetNotification (Val Text)
+bbnComparisonOperator = lens _budgetsBudgetNotificationComparisonOperator (\s a -> s { _budgetsBudgetNotificationComparisonOperator = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-notificationtype
+bbnNotificationType :: Lens' BudgetsBudgetNotification (Val Text)
+bbnNotificationType = lens _budgetsBudgetNotificationNotificationType (\s a -> s { _budgetsBudgetNotificationNotificationType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-threshold
+bbnThreshold :: Lens' BudgetsBudgetNotification (Val Double)
+bbnThreshold = lens _budgetsBudgetNotificationThreshold (\s a -> s { _budgetsBudgetNotificationThreshold = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notification.html#cfn-budgets-budget-notification-thresholdtype
+bbnThresholdType :: Lens' BudgetsBudgetNotification (Maybe (Val Text))
+bbnThresholdType = lens _budgetsBudgetNotificationThresholdType (\s a -> s { _budgetsBudgetNotificationThresholdType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetNotificationWithSubscribers.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notificationwithsubscribers.html
+
+module Stratosphere.ResourceProperties.BudgetsBudgetNotificationWithSubscribers where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.BudgetsBudgetNotification
+import Stratosphere.ResourceProperties.BudgetsBudgetSubscriber
+
+-- | Full data type definition for BudgetsBudgetNotificationWithSubscribers.
+-- See 'budgetsBudgetNotificationWithSubscribers' for a more convenient
+-- constructor.
+data BudgetsBudgetNotificationWithSubscribers =
+  BudgetsBudgetNotificationWithSubscribers
+  { _budgetsBudgetNotificationWithSubscribersNotification :: BudgetsBudgetNotification
+  , _budgetsBudgetNotificationWithSubscribersSubscribers :: [BudgetsBudgetSubscriber]
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudgetNotificationWithSubscribers where
+  toJSON BudgetsBudgetNotificationWithSubscribers{..} =
+    object $
+    catMaybes
+    [ (Just . ("Notification",) . toJSON) _budgetsBudgetNotificationWithSubscribersNotification
+    , (Just . ("Subscribers",) . toJSON) _budgetsBudgetNotificationWithSubscribersSubscribers
+    ]
+
+instance FromJSON BudgetsBudgetNotificationWithSubscribers where
+  parseJSON (Object obj) =
+    BudgetsBudgetNotificationWithSubscribers <$>
+      (obj .: "Notification") <*>
+      (obj .: "Subscribers")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudgetNotificationWithSubscribers' containing
+-- required fields as arguments.
+budgetsBudgetNotificationWithSubscribers
+  :: BudgetsBudgetNotification -- ^ 'bbnwsNotification'
+  -> [BudgetsBudgetSubscriber] -- ^ 'bbnwsSubscribers'
+  -> BudgetsBudgetNotificationWithSubscribers
+budgetsBudgetNotificationWithSubscribers notificationarg subscribersarg =
+  BudgetsBudgetNotificationWithSubscribers
+  { _budgetsBudgetNotificationWithSubscribersNotification = notificationarg
+  , _budgetsBudgetNotificationWithSubscribersSubscribers = subscribersarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notificationwithsubscribers.html#cfn-budgets-budget-notificationwithsubscribers-notification
+bbnwsNotification :: Lens' BudgetsBudgetNotificationWithSubscribers BudgetsBudgetNotification
+bbnwsNotification = lens _budgetsBudgetNotificationWithSubscribersNotification (\s a -> s { _budgetsBudgetNotificationWithSubscribersNotification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-notificationwithsubscribers.html#cfn-budgets-budget-notificationwithsubscribers-subscribers
+bbnwsSubscribers :: Lens' BudgetsBudgetNotificationWithSubscribers [BudgetsBudgetSubscriber]
+bbnwsSubscribers = lens _budgetsBudgetNotificationWithSubscribersSubscribers (\s a -> s { _budgetsBudgetNotificationWithSubscribersSubscribers = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSpend.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSpend.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSpend.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-spend.html
+
+module Stratosphere.ResourceProperties.BudgetsBudgetSpend where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for BudgetsBudgetSpend. See
+-- 'budgetsBudgetSpend' for a more convenient constructor.
+data BudgetsBudgetSpend =
+  BudgetsBudgetSpend
+  { _budgetsBudgetSpendAmount :: Val Double
+  , _budgetsBudgetSpendUnit :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudgetSpend where
+  toJSON BudgetsBudgetSpend{..} =
+    object $
+    catMaybes
+    [ (Just . ("Amount",) . toJSON . fmap Double') _budgetsBudgetSpendAmount
+    , (Just . ("Unit",) . toJSON) _budgetsBudgetSpendUnit
+    ]
+
+instance FromJSON BudgetsBudgetSpend where
+  parseJSON (Object obj) =
+    BudgetsBudgetSpend <$>
+      fmap (fmap unDouble') (obj .: "Amount") <*>
+      (obj .: "Unit")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudgetSpend' containing required fields as
+-- arguments.
+budgetsBudgetSpend
+  :: Val Double -- ^ 'bbsAmount'
+  -> Val Text -- ^ 'bbsUnit'
+  -> BudgetsBudgetSpend
+budgetsBudgetSpend amountarg unitarg =
+  BudgetsBudgetSpend
+  { _budgetsBudgetSpendAmount = amountarg
+  , _budgetsBudgetSpendUnit = unitarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-spend.html#cfn-budgets-budget-spend-amount
+bbsAmount :: Lens' BudgetsBudgetSpend (Val Double)
+bbsAmount = lens _budgetsBudgetSpendAmount (\s a -> s { _budgetsBudgetSpendAmount = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-spend.html#cfn-budgets-budget-spend-unit
+bbsUnit :: Lens' BudgetsBudgetSpend (Val Text)
+bbsUnit = lens _budgetsBudgetSpendUnit (\s a -> s { _budgetsBudgetSpendUnit = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSubscriber.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSubscriber.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetSubscriber.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-subscriber.html
+
+module Stratosphere.ResourceProperties.BudgetsBudgetSubscriber where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for BudgetsBudgetSubscriber. See
+-- 'budgetsBudgetSubscriber' for a more convenient constructor.
+data BudgetsBudgetSubscriber =
+  BudgetsBudgetSubscriber
+  { _budgetsBudgetSubscriberAddress :: Val Text
+  , _budgetsBudgetSubscriberSubscriptionType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudgetSubscriber where
+  toJSON BudgetsBudgetSubscriber{..} =
+    object $
+    catMaybes
+    [ (Just . ("Address",) . toJSON) _budgetsBudgetSubscriberAddress
+    , (Just . ("SubscriptionType",) . toJSON) _budgetsBudgetSubscriberSubscriptionType
+    ]
+
+instance FromJSON BudgetsBudgetSubscriber where
+  parseJSON (Object obj) =
+    BudgetsBudgetSubscriber <$>
+      (obj .: "Address") <*>
+      (obj .: "SubscriptionType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudgetSubscriber' containing required fields as
+-- arguments.
+budgetsBudgetSubscriber
+  :: Val Text -- ^ 'bbsAddress'
+  -> Val Text -- ^ 'bbsSubscriptionType'
+  -> BudgetsBudgetSubscriber
+budgetsBudgetSubscriber addressarg subscriptionTypearg =
+  BudgetsBudgetSubscriber
+  { _budgetsBudgetSubscriberAddress = addressarg
+  , _budgetsBudgetSubscriberSubscriptionType = subscriptionTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-subscriber.html#cfn-budgets-budget-subscriber-address
+bbsAddress :: Lens' BudgetsBudgetSubscriber (Val Text)
+bbsAddress = lens _budgetsBudgetSubscriberAddress (\s a -> s { _budgetsBudgetSubscriberAddress = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-subscriber.html#cfn-budgets-budget-subscriber-subscriptiontype
+bbsSubscriptionType :: Lens' BudgetsBudgetSubscriber (Val Text)
+bbsSubscriptionType = lens _budgetsBudgetSubscriberSubscriptionType (\s a -> s { _budgetsBudgetSubscriberSubscriptionType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetTimePeriod.hs b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetTimePeriod.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BudgetsBudgetTimePeriod.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-timeperiod.html
+
+module Stratosphere.ResourceProperties.BudgetsBudgetTimePeriod where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for BudgetsBudgetTimePeriod. See
+-- 'budgetsBudgetTimePeriod' for a more convenient constructor.
+data BudgetsBudgetTimePeriod =
+  BudgetsBudgetTimePeriod
+  { _budgetsBudgetTimePeriodEnd :: Maybe (Val Text)
+  , _budgetsBudgetTimePeriodStart :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudgetTimePeriod where
+  toJSON BudgetsBudgetTimePeriod{..} =
+    object $
+    catMaybes
+    [ fmap (("End",) . toJSON) _budgetsBudgetTimePeriodEnd
+    , fmap (("Start",) . toJSON) _budgetsBudgetTimePeriodStart
+    ]
+
+instance FromJSON BudgetsBudgetTimePeriod where
+  parseJSON (Object obj) =
+    BudgetsBudgetTimePeriod <$>
+      (obj .:? "End") <*>
+      (obj .:? "Start")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudgetTimePeriod' containing required fields as
+-- arguments.
+budgetsBudgetTimePeriod
+  :: BudgetsBudgetTimePeriod
+budgetsBudgetTimePeriod  =
+  BudgetsBudgetTimePeriod
+  { _budgetsBudgetTimePeriodEnd = Nothing
+  , _budgetsBudgetTimePeriodStart = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-timeperiod.html#cfn-budgets-budget-timeperiod-end
+bbtpEnd :: Lens' BudgetsBudgetTimePeriod (Maybe (Val Text))
+bbtpEnd = lens _budgetsBudgetTimePeriodEnd (\s a -> s { _budgetsBudgetTimePeriodEnd = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-timeperiod.html#cfn-budgets-budget-timeperiod-start
+bbtpStart :: Lens' BudgetsBudgetTimePeriod (Maybe (Val Text))
+bbtpStart = lens _budgetsBudgetTimePeriodStart (\s a -> s { _budgetsBudgetTimePeriodStart = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTablePointInTimeRecoverySpecification.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTablePointInTimeRecoverySpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTablePointInTimeRecoverySpecification.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html
+
+module Stratosphere.ResourceProperties.DynamoDBTablePointInTimeRecoverySpecification where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- DynamoDBTablePointInTimeRecoverySpecification. See
+-- 'dynamoDBTablePointInTimeRecoverySpecification' for a more convenient
+-- constructor.
+data DynamoDBTablePointInTimeRecoverySpecification =
+  DynamoDBTablePointInTimeRecoverySpecification
+  { _dynamoDBTablePointInTimeRecoverySpecificationPointInTimeRecoveryEnabled :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON DynamoDBTablePointInTimeRecoverySpecification where
+  toJSON DynamoDBTablePointInTimeRecoverySpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("PointInTimeRecoveryEnabled",) . toJSON . fmap Bool') _dynamoDBTablePointInTimeRecoverySpecificationPointInTimeRecoveryEnabled
+    ]
+
+instance FromJSON DynamoDBTablePointInTimeRecoverySpecification where
+  parseJSON (Object obj) =
+    DynamoDBTablePointInTimeRecoverySpecification <$>
+      fmap (fmap (fmap unBool')) (obj .:? "PointInTimeRecoveryEnabled")
+  parseJSON _ = mempty
+
+-- | Constructor for 'DynamoDBTablePointInTimeRecoverySpecification'
+-- containing required fields as arguments.
+dynamoDBTablePointInTimeRecoverySpecification
+  :: DynamoDBTablePointInTimeRecoverySpecification
+dynamoDBTablePointInTimeRecoverySpecification  =
+  DynamoDBTablePointInTimeRecoverySpecification
+  { _dynamoDBTablePointInTimeRecoverySpecificationPointInTimeRecoveryEnabled = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html#cfn-dynamodb-table-pointintimerecoveryspecification-pointintimerecoveryenabled
+ddbtpitrsPointInTimeRecoveryEnabled :: Lens' DynamoDBTablePointInTimeRecoverySpecification (Maybe (Val Bool))
+ddbtpitrsPointInTimeRecoveryEnabled = lens _dynamoDBTablePointInTimeRecoverySpecificationPointInTimeRecoveryEnabled (\s a -> s { _dynamoDBTablePointInTimeRecoverySpecificationPointInTimeRecoveryEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceLaunchTemplateSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceLaunchTemplateSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceLaunchTemplateSpecification.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html
+
+module Stratosphere.ResourceProperties.EC2InstanceLaunchTemplateSpecification where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2InstanceLaunchTemplateSpecification. See
+-- 'ec2InstanceLaunchTemplateSpecification' for a more convenient
+-- constructor.
+data EC2InstanceLaunchTemplateSpecification =
+  EC2InstanceLaunchTemplateSpecification
+  { _eC2InstanceLaunchTemplateSpecificationLaunchTemplateId :: Maybe (Val Text)
+  , _eC2InstanceLaunchTemplateSpecificationLaunchTemplateName :: Maybe (Val Text)
+  , _eC2InstanceLaunchTemplateSpecificationVersion :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON EC2InstanceLaunchTemplateSpecification where
+  toJSON EC2InstanceLaunchTemplateSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("LaunchTemplateId",) . toJSON) _eC2InstanceLaunchTemplateSpecificationLaunchTemplateId
+    , fmap (("LaunchTemplateName",) . toJSON) _eC2InstanceLaunchTemplateSpecificationLaunchTemplateName
+    , (Just . ("Version",) . toJSON) _eC2InstanceLaunchTemplateSpecificationVersion
+    ]
+
+instance FromJSON EC2InstanceLaunchTemplateSpecification where
+  parseJSON (Object obj) =
+    EC2InstanceLaunchTemplateSpecification <$>
+      (obj .:? "LaunchTemplateId") <*>
+      (obj .:? "LaunchTemplateName") <*>
+      (obj .: "Version")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2InstanceLaunchTemplateSpecification' containing
+-- required fields as arguments.
+ec2InstanceLaunchTemplateSpecification
+  :: Val Text -- ^ 'eciltsVersion'
+  -> EC2InstanceLaunchTemplateSpecification
+ec2InstanceLaunchTemplateSpecification versionarg =
+  EC2InstanceLaunchTemplateSpecification
+  { _eC2InstanceLaunchTemplateSpecificationLaunchTemplateId = Nothing
+  , _eC2InstanceLaunchTemplateSpecificationLaunchTemplateName = Nothing
+  , _eC2InstanceLaunchTemplateSpecificationVersion = versionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplateid
+eciltsLaunchTemplateId :: Lens' EC2InstanceLaunchTemplateSpecification (Maybe (Val Text))
+eciltsLaunchTemplateId = lens _eC2InstanceLaunchTemplateSpecificationLaunchTemplateId (\s a -> s { _eC2InstanceLaunchTemplateSpecificationLaunchTemplateId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplatename
+eciltsLaunchTemplateName :: Lens' EC2InstanceLaunchTemplateSpecification (Maybe (Val Text))
+eciltsLaunchTemplateName = lens _eC2InstanceLaunchTemplateSpecificationLaunchTemplateName (\s a -> s { _eC2InstanceLaunchTemplateSpecificationLaunchTemplateName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-version
+eciltsVersion :: Lens' EC2InstanceLaunchTemplateSpecification (Val Text)
+eciltsVersion = lens _eC2InstanceLaunchTemplateSpecificationVersion (\s a -> s { _eC2InstanceLaunchTemplateSpecificationVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetFleetLaunchTemplateSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetFleetLaunchTemplateSpecification.hs
deleted file mode 100644
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetFleetLaunchTemplateSpecification.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE TupleSections #-}
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-fleetlaunchtemplatespecification.html
-
-module Stratosphere.ResourceProperties.EC2SpotFleetFleetLaunchTemplateSpecification where
-
-import Stratosphere.ResourceImports
-
-
--- | Full data type definition for
--- EC2SpotFleetFleetLaunchTemplateSpecification. See
--- 'ec2SpotFleetFleetLaunchTemplateSpecification' for a more convenient
--- constructor.
-data EC2SpotFleetFleetLaunchTemplateSpecification =
-  EC2SpotFleetFleetLaunchTemplateSpecification
-  { _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateId :: Maybe (Val Text)
-  , _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateName :: Maybe (Val Text)
-  , _eC2SpotFleetFleetLaunchTemplateSpecificationVersion :: Maybe (Val Text)
-  } deriving (Show, Eq)
-
-instance ToJSON EC2SpotFleetFleetLaunchTemplateSpecification where
-  toJSON EC2SpotFleetFleetLaunchTemplateSpecification{..} =
-    object $
-    catMaybes
-    [ fmap (("LaunchTemplateId",) . toJSON) _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateId
-    , fmap (("LaunchTemplateName",) . toJSON) _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateName
-    , fmap (("Version",) . toJSON) _eC2SpotFleetFleetLaunchTemplateSpecificationVersion
-    ]
-
-instance FromJSON EC2SpotFleetFleetLaunchTemplateSpecification where
-  parseJSON (Object obj) =
-    EC2SpotFleetFleetLaunchTemplateSpecification <$>
-      (obj .:? "LaunchTemplateId") <*>
-      (obj .:? "LaunchTemplateName") <*>
-      (obj .:? "Version")
-  parseJSON _ = mempty
-
--- | Constructor for 'EC2SpotFleetFleetLaunchTemplateSpecification' containing
--- required fields as arguments.
-ec2SpotFleetFleetLaunchTemplateSpecification
-  :: EC2SpotFleetFleetLaunchTemplateSpecification
-ec2SpotFleetFleetLaunchTemplateSpecification  =
-  EC2SpotFleetFleetLaunchTemplateSpecification
-  { _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateId = Nothing
-  , _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateName = Nothing
-  , _eC2SpotFleetFleetLaunchTemplateSpecificationVersion = Nothing
-  }
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-fleetlaunchtemplatespecification.html#cfn-ec2-spotfleet-fleetlaunchtemplatespecification-launchtemplateid
-ecsffltsLaunchTemplateId :: Lens' EC2SpotFleetFleetLaunchTemplateSpecification (Maybe (Val Text))
-ecsffltsLaunchTemplateId = lens _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateId (\s a -> s { _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateId = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-fleetlaunchtemplatespecification.html#cfn-ec2-spotfleet-fleetlaunchtemplatespecification-launchtemplatename
-ecsffltsLaunchTemplateName :: Lens' EC2SpotFleetFleetLaunchTemplateSpecification (Maybe (Val Text))
-ecsffltsLaunchTemplateName = lens _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateName (\s a -> s { _eC2SpotFleetFleetLaunchTemplateSpecificationLaunchTemplateName = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-fleetlaunchtemplatespecification.html#cfn-ec2-spotfleet-fleetlaunchtemplatespecification-version
-ecsffltsVersion :: Lens' EC2SpotFleetFleetLaunchTemplateSpecification (Maybe (Val Text))
-ecsffltsVersion = lens _eC2SpotFleetFleetLaunchTemplateSpecificationVersion (\s a -> s { _eC2SpotFleetFleetLaunchTemplateSpecificationVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateConfig.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateConfig.hs
deleted file mode 100644
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateConfig.hs
+++ /dev/null
@@ -1,52 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE TupleSections #-}
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateconfig.html
-
-module Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateConfig where
-
-import Stratosphere.ResourceImports
-import Stratosphere.ResourceProperties.EC2SpotFleetFleetLaunchTemplateSpecification
-import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateOverrides
-
--- | Full data type definition for EC2SpotFleetLaunchTemplateConfig. See
--- 'ec2SpotFleetLaunchTemplateConfig' for a more convenient constructor.
-data EC2SpotFleetLaunchTemplateConfig =
-  EC2SpotFleetLaunchTemplateConfig
-  { _eC2SpotFleetLaunchTemplateConfigLaunchTemplateSpecification :: Maybe EC2SpotFleetFleetLaunchTemplateSpecification
-  , _eC2SpotFleetLaunchTemplateConfigOverrides :: Maybe [EC2SpotFleetLaunchTemplateOverrides]
-  } deriving (Show, Eq)
-
-instance ToJSON EC2SpotFleetLaunchTemplateConfig where
-  toJSON EC2SpotFleetLaunchTemplateConfig{..} =
-    object $
-    catMaybes
-    [ fmap (("LaunchTemplateSpecification",) . toJSON) _eC2SpotFleetLaunchTemplateConfigLaunchTemplateSpecification
-    , fmap (("Overrides",) . toJSON) _eC2SpotFleetLaunchTemplateConfigOverrides
-    ]
-
-instance FromJSON EC2SpotFleetLaunchTemplateConfig where
-  parseJSON (Object obj) =
-    EC2SpotFleetLaunchTemplateConfig <$>
-      (obj .:? "LaunchTemplateSpecification") <*>
-      (obj .:? "Overrides")
-  parseJSON _ = mempty
-
--- | Constructor for 'EC2SpotFleetLaunchTemplateConfig' containing required
--- fields as arguments.
-ec2SpotFleetLaunchTemplateConfig
-  :: EC2SpotFleetLaunchTemplateConfig
-ec2SpotFleetLaunchTemplateConfig  =
-  EC2SpotFleetLaunchTemplateConfig
-  { _eC2SpotFleetLaunchTemplateConfigLaunchTemplateSpecification = Nothing
-  , _eC2SpotFleetLaunchTemplateConfigOverrides = Nothing
-  }
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateconfig.html#cfn-ec2-spotfleet-launchtemplateconfig-launchtemplatespecification
-ecsfltcLaunchTemplateSpecification :: Lens' EC2SpotFleetLaunchTemplateConfig (Maybe EC2SpotFleetFleetLaunchTemplateSpecification)
-ecsfltcLaunchTemplateSpecification = lens _eC2SpotFleetLaunchTemplateConfigLaunchTemplateSpecification (\s a -> s { _eC2SpotFleetLaunchTemplateConfigLaunchTemplateSpecification = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateconfig.html#cfn-ec2-spotfleet-launchtemplateconfig-overrides
-ecsfltcOverrides :: Lens' EC2SpotFleetLaunchTemplateConfig (Maybe [EC2SpotFleetLaunchTemplateOverrides])
-ecsfltcOverrides = lens _eC2SpotFleetLaunchTemplateConfigOverrides (\s a -> s { _eC2SpotFleetLaunchTemplateConfigOverrides = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs
deleted file mode 100644
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs
+++ /dev/null
@@ -1,75 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE TupleSections #-}
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html
-
-module Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateOverrides where
-
-import Stratosphere.ResourceImports
-
-
--- | Full data type definition for EC2SpotFleetLaunchTemplateOverrides. See
--- 'ec2SpotFleetLaunchTemplateOverrides' for a more convenient constructor.
-data EC2SpotFleetLaunchTemplateOverrides =
-  EC2SpotFleetLaunchTemplateOverrides
-  { _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone :: Maybe (Val Text)
-  , _eC2SpotFleetLaunchTemplateOverridesInstanceType :: Maybe (Val Text)
-  , _eC2SpotFleetLaunchTemplateOverridesSpotPrice :: Maybe (Val Text)
-  , _eC2SpotFleetLaunchTemplateOverridesSubnetId :: Maybe (Val Text)
-  , _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity :: Maybe (Val Double)
-  } deriving (Show, Eq)
-
-instance ToJSON EC2SpotFleetLaunchTemplateOverrides where
-  toJSON EC2SpotFleetLaunchTemplateOverrides{..} =
-    object $
-    catMaybes
-    [ fmap (("AvailabilityZone",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone
-    , fmap (("InstanceType",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesInstanceType
-    , fmap (("SpotPrice",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesSpotPrice
-    , fmap (("SubnetId",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesSubnetId
-    , fmap (("WeightedCapacity",) . toJSON . fmap Double') _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity
-    ]
-
-instance FromJSON EC2SpotFleetLaunchTemplateOverrides where
-  parseJSON (Object obj) =
-    EC2SpotFleetLaunchTemplateOverrides <$>
-      (obj .:? "AvailabilityZone") <*>
-      (obj .:? "InstanceType") <*>
-      (obj .:? "SpotPrice") <*>
-      (obj .:? "SubnetId") <*>
-      fmap (fmap (fmap unDouble')) (obj .:? "WeightedCapacity")
-  parseJSON _ = mempty
-
--- | Constructor for 'EC2SpotFleetLaunchTemplateOverrides' containing required
--- fields as arguments.
-ec2SpotFleetLaunchTemplateOverrides
-  :: EC2SpotFleetLaunchTemplateOverrides
-ec2SpotFleetLaunchTemplateOverrides  =
-  EC2SpotFleetLaunchTemplateOverrides
-  { _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone = Nothing
-  , _eC2SpotFleetLaunchTemplateOverridesInstanceType = Nothing
-  , _eC2SpotFleetLaunchTemplateOverridesSpotPrice = Nothing
-  , _eC2SpotFleetLaunchTemplateOverridesSubnetId = Nothing
-  , _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity = Nothing
-  }
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-availabilityzone
-ecsfltoAvailabilityZone :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
-ecsfltoAvailabilityZone = lens _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-instancetype
-ecsfltoInstanceType :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
-ecsfltoInstanceType = lens _eC2SpotFleetLaunchTemplateOverridesInstanceType (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesInstanceType = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-spotprice
-ecsfltoSpotPrice :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
-ecsfltoSpotPrice = lens _eC2SpotFleetLaunchTemplateOverridesSpotPrice (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesSpotPrice = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-subnetid
-ecsfltoSubnetId :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
-ecsfltoSubnetId = lens _eC2SpotFleetLaunchTemplateOverridesSubnetId (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesSubnetId = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-weightedcapacity
-ecsfltoWeightedCapacity :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Double))
-ecsfltoWeightedCapacity = lens _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SpotFleetSpotFleetRequestConfigData.hs
@@ -8,7 +8,6 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetLaunchSpecification
-import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateConfig
 
 -- | Full data type definition for EC2SpotFleetSpotFleetRequestConfigData. See
 -- 'ec2SpotFleetSpotFleetRequestConfigData' for a more convenient
@@ -19,7 +18,6 @@
   , _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole :: Val Text
   , _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications :: Maybe [EC2SpotFleetSpotFleetLaunchSpecification]
-  , _eC2SpotFleetSpotFleetRequestConfigDataLaunchTemplateConfigs :: Maybe [EC2SpotFleetLaunchTemplateConfig]
   , _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances :: Maybe (Val Bool)
   , _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice :: Maybe (Val Text)
   , _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity :: Val Integer
@@ -37,7 +35,6 @@
     , fmap (("ExcessCapacityTerminationPolicy",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy
     , (Just . ("IamFleetRole",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole
     , fmap (("LaunchSpecifications",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications
-    , fmap (("LaunchTemplateConfigs",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataLaunchTemplateConfigs
     , fmap (("ReplaceUnhealthyInstances",) . toJSON . fmap Bool') _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances
     , fmap (("SpotPrice",) . toJSON) _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice
     , (Just . ("TargetCapacity",) . toJSON . fmap Integer') _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity
@@ -54,7 +51,6 @@
       (obj .:? "ExcessCapacityTerminationPolicy") <*>
       (obj .: "IamFleetRole") <*>
       (obj .:? "LaunchSpecifications") <*>
-      (obj .:? "LaunchTemplateConfigs") <*>
       fmap (fmap (fmap unBool')) (obj .:? "ReplaceUnhealthyInstances") <*>
       (obj .:? "SpotPrice") <*>
       fmap (fmap unInteger') (obj .: "TargetCapacity") <*>
@@ -76,7 +72,6 @@
   , _eC2SpotFleetSpotFleetRequestConfigDataExcessCapacityTerminationPolicy = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataIamFleetRole = iamFleetRolearg
   , _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications = Nothing
-  , _eC2SpotFleetSpotFleetRequestConfigDataLaunchTemplateConfigs = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataReplaceUnhealthyInstances = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataSpotPrice = Nothing
   , _eC2SpotFleetSpotFleetRequestConfigDataTargetCapacity = targetCapacityarg
@@ -101,10 +96,6 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-launchspecifications
 ecsfsfrcdLaunchSpecifications :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe [EC2SpotFleetSpotFleetLaunchSpecification])
 ecsfsfrcdLaunchSpecifications = lens _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataLaunchSpecifications = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-launchtemplateconfigs
-ecsfsfrcdLaunchTemplateConfigs :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe [EC2SpotFleetLaunchTemplateConfig])
-ecsfsfrcdLaunchTemplateConfigs = lens _eC2SpotFleetSpotFleetRequestConfigDataLaunchTemplateConfigs (\s a -> s { _eC2SpotFleetSpotFleetRequestConfigDataLaunchTemplateConfigs = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-spotfleetrequestconfigdata.html#cfn-ec2-spotfleet-spotfleetrequestconfigdata-replaceunhealthyinstances
 ecsfsfrcdReplaceUnhealthyInstances :: Lens' EC2SpotFleetSpotFleetRequestConfigData (Maybe (Val Bool))
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSServiceServiceRegistry.hs b/library-gen/Stratosphere/ResourceProperties/ECSServiceServiceRegistry.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ECSServiceServiceRegistry.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceregistry.html
+
+module Stratosphere.ResourceProperties.ECSServiceServiceRegistry where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ECSServiceServiceRegistry. See
+-- 'ecsServiceServiceRegistry' for a more convenient constructor.
+data ECSServiceServiceRegistry =
+  ECSServiceServiceRegistry
+  { _eCSServiceServiceRegistryPort :: Maybe (Val Integer)
+  , _eCSServiceServiceRegistryRegistryArn :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ECSServiceServiceRegistry where
+  toJSON ECSServiceServiceRegistry{..} =
+    object $
+    catMaybes
+    [ fmap (("Port",) . toJSON . fmap Integer') _eCSServiceServiceRegistryPort
+    , fmap (("RegistryArn",) . toJSON) _eCSServiceServiceRegistryRegistryArn
+    ]
+
+instance FromJSON ECSServiceServiceRegistry where
+  parseJSON (Object obj) =
+    ECSServiceServiceRegistry <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
+      (obj .:? "RegistryArn")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ECSServiceServiceRegistry' containing required fields as
+-- arguments.
+ecsServiceServiceRegistry
+  :: ECSServiceServiceRegistry
+ecsServiceServiceRegistry  =
+  ECSServiceServiceRegistry
+  { _eCSServiceServiceRegistryPort = Nothing
+  , _eCSServiceServiceRegistryRegistryArn = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceregistry.html#cfn-ecs-service-serviceregistry-port
+ecsssrPort :: Lens' ECSServiceServiceRegistry (Maybe (Val Integer))
+ecsssrPort = lens _eCSServiceServiceRegistryPort (\s a -> s { _eCSServiceServiceRegistryPort = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceregistry.html#cfn-ecs-service-serviceregistry-registryarn
+ecsssrRegistryArn :: Lens' ECSServiceServiceRegistry (Maybe (Val Text))
+ecsssrRegistryArn = lens _eCSServiceServiceRegistryRegistryArn (\s a -> s { _eCSServiceServiceRegistryRegistryArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
--- a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionContainerDefinition.hs
@@ -9,6 +9,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.ECSTaskDefinitionKeyValuePair
 import Stratosphere.ResourceProperties.ECSTaskDefinitionHostEntry
+import Stratosphere.ResourceProperties.ECSTaskDefinitionHealthCheck
 import Stratosphere.ResourceProperties.ECSTaskDefinitionLinuxParameters
 import Stratosphere.ResourceProperties.ECSTaskDefinitionLogConfiguration
 import Stratosphere.ResourceProperties.ECSTaskDefinitionMountPoint
@@ -31,6 +32,7 @@
   , _eCSTaskDefinitionContainerDefinitionEnvironment :: Maybe [ECSTaskDefinitionKeyValuePair]
   , _eCSTaskDefinitionContainerDefinitionEssential :: Maybe (Val Bool)
   , _eCSTaskDefinitionContainerDefinitionExtraHosts :: Maybe [ECSTaskDefinitionHostEntry]
+  , _eCSTaskDefinitionContainerDefinitionHealthCheck :: Maybe ECSTaskDefinitionHealthCheck
   , _eCSTaskDefinitionContainerDefinitionHostname :: Maybe (Val Text)
   , _eCSTaskDefinitionContainerDefinitionImage :: Val Text
   , _eCSTaskDefinitionContainerDefinitionLinks :: Maybe (ValList Text)
@@ -64,6 +66,7 @@
     , fmap (("Environment",) . toJSON) _eCSTaskDefinitionContainerDefinitionEnvironment
     , fmap (("Essential",) . toJSON . fmap Bool') _eCSTaskDefinitionContainerDefinitionEssential
     , fmap (("ExtraHosts",) . toJSON) _eCSTaskDefinitionContainerDefinitionExtraHosts
+    , fmap (("HealthCheck",) . toJSON) _eCSTaskDefinitionContainerDefinitionHealthCheck
     , fmap (("Hostname",) . toJSON) _eCSTaskDefinitionContainerDefinitionHostname
     , (Just . ("Image",) . toJSON) _eCSTaskDefinitionContainerDefinitionImage
     , fmap (("Links",) . toJSON) _eCSTaskDefinitionContainerDefinitionLinks
@@ -96,6 +99,7 @@
       (obj .:? "Environment") <*>
       fmap (fmap (fmap unBool')) (obj .:? "Essential") <*>
       (obj .:? "ExtraHosts") <*>
+      (obj .:? "HealthCheck") <*>
       (obj .:? "Hostname") <*>
       (obj .: "Image") <*>
       (obj .:? "Links") <*>
@@ -133,6 +137,7 @@
   , _eCSTaskDefinitionContainerDefinitionEnvironment = Nothing
   , _eCSTaskDefinitionContainerDefinitionEssential = Nothing
   , _eCSTaskDefinitionContainerDefinitionExtraHosts = Nothing
+  , _eCSTaskDefinitionContainerDefinitionHealthCheck = Nothing
   , _eCSTaskDefinitionContainerDefinitionHostname = Nothing
   , _eCSTaskDefinitionContainerDefinitionImage = imagearg
   , _eCSTaskDefinitionContainerDefinitionLinks = Nothing
@@ -194,6 +199,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-extrahosts
 ecstdcdExtraHosts :: Lens' ECSTaskDefinitionContainerDefinition (Maybe [ECSTaskDefinitionHostEntry])
 ecstdcdExtraHosts = lens _eCSTaskDefinitionContainerDefinitionExtraHosts (\s a -> s { _eCSTaskDefinitionContainerDefinitionExtraHosts = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-healthcheck
+ecstdcdHealthCheck :: Lens' ECSTaskDefinitionContainerDefinition (Maybe ECSTaskDefinitionHealthCheck)
+ecstdcdHealthCheck = lens _eCSTaskDefinitionContainerDefinitionHealthCheck (\s a -> s { _eCSTaskDefinitionContainerDefinitionHealthCheck = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions.html#cfn-ecs-taskdefinition-containerdefinition-hostname
 ecstdcdHostname :: Lens' ECSTaskDefinitionContainerDefinition (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHealthCheck.hs b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHealthCheck.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ECSTaskDefinitionHealthCheck.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html
+
+module Stratosphere.ResourceProperties.ECSTaskDefinitionHealthCheck where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ECSTaskDefinitionHealthCheck. See
+-- 'ecsTaskDefinitionHealthCheck' for a more convenient constructor.
+data ECSTaskDefinitionHealthCheck =
+  ECSTaskDefinitionHealthCheck
+  { _eCSTaskDefinitionHealthCheckCommand :: ValList Text
+  , _eCSTaskDefinitionHealthCheckInterval :: Maybe (Val Integer)
+  , _eCSTaskDefinitionHealthCheckRetries :: Maybe (Val Integer)
+  , _eCSTaskDefinitionHealthCheckStartPeriod :: Maybe (Val Integer)
+  , _eCSTaskDefinitionHealthCheckTimeout :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON ECSTaskDefinitionHealthCheck where
+  toJSON ECSTaskDefinitionHealthCheck{..} =
+    object $
+    catMaybes
+    [ (Just . ("Command",) . toJSON) _eCSTaskDefinitionHealthCheckCommand
+    , fmap (("Interval",) . toJSON . fmap Integer') _eCSTaskDefinitionHealthCheckInterval
+    , fmap (("Retries",) . toJSON . fmap Integer') _eCSTaskDefinitionHealthCheckRetries
+    , fmap (("StartPeriod",) . toJSON . fmap Integer') _eCSTaskDefinitionHealthCheckStartPeriod
+    , fmap (("Timeout",) . toJSON . fmap Integer') _eCSTaskDefinitionHealthCheckTimeout
+    ]
+
+instance FromJSON ECSTaskDefinitionHealthCheck where
+  parseJSON (Object obj) =
+    ECSTaskDefinitionHealthCheck <$>
+      (obj .: "Command") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Interval") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Retries") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "StartPeriod") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Timeout")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ECSTaskDefinitionHealthCheck' containing required fields
+-- as arguments.
+ecsTaskDefinitionHealthCheck
+  :: ValList Text -- ^ 'ecstdhcCommand'
+  -> ECSTaskDefinitionHealthCheck
+ecsTaskDefinitionHealthCheck commandarg =
+  ECSTaskDefinitionHealthCheck
+  { _eCSTaskDefinitionHealthCheckCommand = commandarg
+  , _eCSTaskDefinitionHealthCheckInterval = Nothing
+  , _eCSTaskDefinitionHealthCheckRetries = Nothing
+  , _eCSTaskDefinitionHealthCheckStartPeriod = Nothing
+  , _eCSTaskDefinitionHealthCheckTimeout = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html#cfn-ecs-taskdefinition-healthcheck-command
+ecstdhcCommand :: Lens' ECSTaskDefinitionHealthCheck (ValList Text)
+ecstdhcCommand = lens _eCSTaskDefinitionHealthCheckCommand (\s a -> s { _eCSTaskDefinitionHealthCheckCommand = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html#cfn-ecs-taskdefinition-healthcheck-interval
+ecstdhcInterval :: Lens' ECSTaskDefinitionHealthCheck (Maybe (Val Integer))
+ecstdhcInterval = lens _eCSTaskDefinitionHealthCheckInterval (\s a -> s { _eCSTaskDefinitionHealthCheckInterval = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html#cfn-ecs-taskdefinition-healthcheck-retries
+ecstdhcRetries :: Lens' ECSTaskDefinitionHealthCheck (Maybe (Val Integer))
+ecstdhcRetries = lens _eCSTaskDefinitionHealthCheckRetries (\s a -> s { _eCSTaskDefinitionHealthCheckRetries = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html#cfn-ecs-taskdefinition-healthcheck-startperiod
+ecstdhcStartPeriod :: Lens' ECSTaskDefinitionHealthCheck (Maybe (Val Integer))
+ecstdhcStartPeriod = lens _eCSTaskDefinitionHealthCheckStartPeriod (\s a -> s { _eCSTaskDefinitionHealthCheckStartPeriod = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-healthcheck.html#cfn-ecs-taskdefinition-healthcheck-timeout
+ecstdhcTimeout :: Lens' ECSTaskDefinitionHealthCheck (Maybe (Val Integer))
+ecstdhcTimeout = lens _eCSTaskDefinitionHealthCheckTimeout (\s a -> s { _eCSTaskDefinitionHealthCheckTimeout = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEncryptionAtRestOptions.hs b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEncryptionAtRestOptions.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticsearchDomainEncryptionAtRestOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-encryptionatrestoptions.html
+
+module Stratosphere.ResourceProperties.ElasticsearchDomainEncryptionAtRestOptions where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ElasticsearchDomainEncryptionAtRestOptions.
+-- See 'elasticsearchDomainEncryptionAtRestOptions' for a more convenient
+-- constructor.
+data ElasticsearchDomainEncryptionAtRestOptions =
+  ElasticsearchDomainEncryptionAtRestOptions
+  { _elasticsearchDomainEncryptionAtRestOptionsEnabled :: Maybe (Val Bool)
+  , _elasticsearchDomainEncryptionAtRestOptionsKmsKeyId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticsearchDomainEncryptionAtRestOptions where
+  toJSON ElasticsearchDomainEncryptionAtRestOptions{..} =
+    object $
+    catMaybes
+    [ fmap (("Enabled",) . toJSON . fmap Bool') _elasticsearchDomainEncryptionAtRestOptionsEnabled
+    , fmap (("KmsKeyId",) . toJSON) _elasticsearchDomainEncryptionAtRestOptionsKmsKeyId
+    ]
+
+instance FromJSON ElasticsearchDomainEncryptionAtRestOptions where
+  parseJSON (Object obj) =
+    ElasticsearchDomainEncryptionAtRestOptions <$>
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .:? "KmsKeyId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticsearchDomainEncryptionAtRestOptions' containing
+-- required fields as arguments.
+elasticsearchDomainEncryptionAtRestOptions
+  :: ElasticsearchDomainEncryptionAtRestOptions
+elasticsearchDomainEncryptionAtRestOptions  =
+  ElasticsearchDomainEncryptionAtRestOptions
+  { _elasticsearchDomainEncryptionAtRestOptionsEnabled = Nothing
+  , _elasticsearchDomainEncryptionAtRestOptionsKmsKeyId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-encryptionatrestoptions.html#cfn-elasticsearch-domain-encryptionatrestoptions-enabled
+edearoEnabled :: Lens' ElasticsearchDomainEncryptionAtRestOptions (Maybe (Val Bool))
+edearoEnabled = lens _elasticsearchDomainEncryptionAtRestOptionsEnabled (\s a -> s { _elasticsearchDomainEncryptionAtRestOptionsEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-encryptionatrestoptions.html#cfn-elasticsearch-domain-encryptionatrestoptions-kmskeyid
+edearoKmsKeyId :: Lens' ElasticsearchDomainEncryptionAtRestOptions (Maybe (Val Text))
+edearoKmsKeyId = lens _elasticsearchDomainEncryptionAtRestOptionsKmsKeyId (\s a -> s { _elasticsearchDomainEncryptionAtRestOptionsKmsKeyId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamProcessingConfiguration.hs
@@ -15,41 +15,39 @@
 -- convenient constructor.
 data KinesisFirehoseDeliveryStreamProcessingConfiguration =
   KinesisFirehoseDeliveryStreamProcessingConfiguration
-  { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled :: Val Bool
-  , _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors :: [KinesisFirehoseDeliveryStreamProcessor]
+  { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled :: Maybe (Val Bool)
+  , _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors :: Maybe [KinesisFirehoseDeliveryStreamProcessor]
   } deriving (Show, Eq)
 
 instance ToJSON KinesisFirehoseDeliveryStreamProcessingConfiguration where
   toJSON KinesisFirehoseDeliveryStreamProcessingConfiguration{..} =
     object $
     catMaybes
-    [ (Just . ("Enabled",) . toJSON . fmap Bool') _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled
-    , (Just . ("Processors",) . toJSON) _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors
+    [ fmap (("Enabled",) . toJSON . fmap Bool') _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled
+    , fmap (("Processors",) . toJSON) _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStreamProcessingConfiguration where
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStreamProcessingConfiguration <$>
-      fmap (fmap unBool') (obj .: "Enabled") <*>
-      (obj .: "Processors")
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      (obj .:? "Processors")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStreamProcessingConfiguration'
 -- containing required fields as arguments.
 kinesisFirehoseDeliveryStreamProcessingConfiguration
-  :: Val Bool -- ^ 'kfdspcEnabled'
-  -> [KinesisFirehoseDeliveryStreamProcessor] -- ^ 'kfdspcProcessors'
-  -> KinesisFirehoseDeliveryStreamProcessingConfiguration
-kinesisFirehoseDeliveryStreamProcessingConfiguration enabledarg processorsarg =
+  :: KinesisFirehoseDeliveryStreamProcessingConfiguration
+kinesisFirehoseDeliveryStreamProcessingConfiguration  =
   KinesisFirehoseDeliveryStreamProcessingConfiguration
-  { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled = enabledarg
-  , _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors = processorsarg
+  { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled = Nothing
+  , _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processingconfiguration.html#cfn-kinesisfirehose-deliverystream-processingconfiguration-enabled
-kfdspcEnabled :: Lens' KinesisFirehoseDeliveryStreamProcessingConfiguration (Val Bool)
+kfdspcEnabled :: Lens' KinesisFirehoseDeliveryStreamProcessingConfiguration (Maybe (Val Bool))
 kfdspcEnabled = lens _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled (\s a -> s { _kinesisFirehoseDeliveryStreamProcessingConfigurationEnabled = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-processingconfiguration.html#cfn-kinesisfirehose-deliverystream-processingconfiguration-processors
-kfdspcProcessors :: Lens' KinesisFirehoseDeliveryStreamProcessingConfiguration [KinesisFirehoseDeliveryStreamProcessor]
+kfdspcProcessors :: Lens' KinesisFirehoseDeliveryStreamProcessingConfiguration (Maybe [KinesisFirehoseDeliveryStreamProcessor])
 kfdspcProcessors = lens _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors (\s a -> s { _kinesisFirehoseDeliveryStreamProcessingConfigurationProcessors = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration' for a more
+-- convenient constructor.
+data KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration =
+  KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
+  { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationCloudWatchLoggingOptions :: Maybe KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECAcknowledgmentTimeoutInSeconds :: Maybe (Val Integer)
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpoint :: Val Text
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpointType :: Val Text
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECToken :: Val Text
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationProcessingConfiguration :: Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationRetryOptions :: Maybe KinesisFirehoseDeliveryStreamSplunkRetryOptions
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3BackupMode :: Maybe (Val Text)
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3Configuration :: KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationCloudWatchLoggingOptions
+    , fmap (("HECAcknowledgmentTimeoutInSeconds",) . toJSON . fmap Integer') _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECAcknowledgmentTimeoutInSeconds
+    , (Just . ("HECEndpoint",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpoint
+    , (Just . ("HECEndpointType",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpointType
+    , (Just . ("HECToken",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECToken
+    , fmap (("ProcessingConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationProcessingConfiguration
+    , fmap (("RetryOptions",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationRetryOptions
+    , fmap (("S3BackupMode",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3BackupMode
+    , (Just . ("S3Configuration",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3Configuration
+    ]
+
+instance FromJSON KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration where
+  parseJSON (Object obj) =
+    KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration <$>
+      (obj .:? "CloudWatchLoggingOptions") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HECAcknowledgmentTimeoutInSeconds") <*>
+      (obj .: "HECEndpoint") <*>
+      (obj .: "HECEndpointType") <*>
+      (obj .: "HECToken") <*>
+      (obj .:? "ProcessingConfiguration") <*>
+      (obj .:? "RetryOptions") <*>
+      (obj .:? "S3BackupMode") <*>
+      (obj .: "S3Configuration")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration' containing
+-- required fields as arguments.
+kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
+  :: Val Text -- ^ 'kfdsspdcHECEndpoint'
+  -> Val Text -- ^ 'kfdsspdcHECEndpointType'
+  -> Val Text -- ^ 'kfdsspdcHECToken'
+  -> KinesisFirehoseDeliveryStreamS3DestinationConfiguration -- ^ 'kfdsspdcS3Configuration'
+  -> KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
+kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration hECEndpointarg hECEndpointTypearg hECTokenarg s3Configurationarg =
+  KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
+  { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationCloudWatchLoggingOptions = Nothing
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECAcknowledgmentTimeoutInSeconds = Nothing
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpoint = hECEndpointarg
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpointType = hECEndpointTypearg
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECToken = hECTokenarg
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationProcessingConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationRetryOptions = Nothing
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3BackupMode = Nothing
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3Configuration = s3Configurationarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-cloudwatchloggingoptions
+kfdsspdcCloudWatchLoggingOptions :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions)
+kfdsspdcCloudWatchLoggingOptions = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationCloudWatchLoggingOptions (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationCloudWatchLoggingOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-hecacknowledgmenttimeoutinseconds
+kfdsspdcHECAcknowledgmentTimeoutInSeconds :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Maybe (Val Integer))
+kfdsspdcHECAcknowledgmentTimeoutInSeconds = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECAcknowledgmentTimeoutInSeconds (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECAcknowledgmentTimeoutInSeconds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-hecendpoint
+kfdsspdcHECEndpoint :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Val Text)
+kfdsspdcHECEndpoint = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpoint (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpoint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-hecendpointtype
+kfdsspdcHECEndpointType :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Val Text)
+kfdsspdcHECEndpointType = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpointType (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECEndpointType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-hectoken
+kfdsspdcHECToken :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Val Text)
+kfdsspdcHECToken = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECToken (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECToken = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-processingconfiguration
+kfdsspdcProcessingConfiguration :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamProcessingConfiguration)
+kfdsspdcProcessingConfiguration = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationProcessingConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationProcessingConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-retryoptions
+kfdsspdcRetryOptions :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Maybe KinesisFirehoseDeliveryStreamSplunkRetryOptions)
+kfdsspdcRetryOptions = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationRetryOptions (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationRetryOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-s3backupmode
+kfdsspdcS3BackupMode :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (Maybe (Val Text))
+kfdsspdcS3BackupMode = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3BackupMode (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3BackupMode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkdestinationconfiguration.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration-s3configuration
+kfdsspdcS3Configuration :: Lens' KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+kfdsspdcS3Configuration = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3Configuration (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfigurationS3Configuration = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkRetryOptions.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkRetryOptions.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamSplunkRetryOptions.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkretryoptions.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamSplunkRetryOptions. See
+-- 'kinesisFirehoseDeliveryStreamSplunkRetryOptions' for a more convenient
+-- constructor.
+data KinesisFirehoseDeliveryStreamSplunkRetryOptions =
+  KinesisFirehoseDeliveryStreamSplunkRetryOptions
+  { _kinesisFirehoseDeliveryStreamSplunkRetryOptionsDurationInSeconds :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamSplunkRetryOptions where
+  toJSON KinesisFirehoseDeliveryStreamSplunkRetryOptions{..} =
+    object $
+    catMaybes
+    [ (Just . ("DurationInSeconds",) . toJSON . fmap Integer') _kinesisFirehoseDeliveryStreamSplunkRetryOptionsDurationInSeconds
+    ]
+
+instance FromJSON KinesisFirehoseDeliveryStreamSplunkRetryOptions where
+  parseJSON (Object obj) =
+    KinesisFirehoseDeliveryStreamSplunkRetryOptions <$>
+      fmap (fmap unInteger') (obj .: "DurationInSeconds")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisFirehoseDeliveryStreamSplunkRetryOptions'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamSplunkRetryOptions
+  :: Val Integer -- ^ 'kfdssroDurationInSeconds'
+  -> KinesisFirehoseDeliveryStreamSplunkRetryOptions
+kinesisFirehoseDeliveryStreamSplunkRetryOptions durationInSecondsarg =
+  KinesisFirehoseDeliveryStreamSplunkRetryOptions
+  { _kinesisFirehoseDeliveryStreamSplunkRetryOptionsDurationInSeconds = durationInSecondsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-splunkretryoptions.html#cfn-kinesisfirehose-deliverystream-splunkretryoptions-durationinseconds
+kfdssroDurationInSeconds :: Lens' KinesisFirehoseDeliveryStreamSplunkRetryOptions (Val Integer)
+kfdssroDurationInSeconds = lens _kinesisFirehoseDeliveryStreamSplunkRetryOptionsDurationInSeconds (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkRetryOptionsDurationInSeconds = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs b/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
--- a/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
+++ b/library-gen/Stratosphere/ResourceProperties/LogsMetricFilterMetricTransformation.hs
@@ -13,7 +13,8 @@
 -- 'logsMetricFilterMetricTransformation' for a more convenient constructor.
 data LogsMetricFilterMetricTransformation =
   LogsMetricFilterMetricTransformation
-  { _logsMetricFilterMetricTransformationMetricName :: Val Text
+  { _logsMetricFilterMetricTransformationDefaultValue :: Maybe (Val Double)
+  , _logsMetricFilterMetricTransformationMetricName :: Val Text
   , _logsMetricFilterMetricTransformationMetricNamespace :: Val Text
   , _logsMetricFilterMetricTransformationMetricValue :: Val Text
   } deriving (Show, Eq)
@@ -22,7 +23,8 @@
   toJSON LogsMetricFilterMetricTransformation{..} =
     object $
     catMaybes
-    [ (Just . ("MetricName",) . toJSON) _logsMetricFilterMetricTransformationMetricName
+    [ fmap (("DefaultValue",) . toJSON . fmap Double') _logsMetricFilterMetricTransformationDefaultValue
+    , (Just . ("MetricName",) . toJSON) _logsMetricFilterMetricTransformationMetricName
     , (Just . ("MetricNamespace",) . toJSON) _logsMetricFilterMetricTransformationMetricNamespace
     , (Just . ("MetricValue",) . toJSON) _logsMetricFilterMetricTransformationMetricValue
     ]
@@ -30,6 +32,7 @@
 instance FromJSON LogsMetricFilterMetricTransformation where
   parseJSON (Object obj) =
     LogsMetricFilterMetricTransformation <$>
+      fmap (fmap (fmap unDouble')) (obj .:? "DefaultValue") <*>
       (obj .: "MetricName") <*>
       (obj .: "MetricNamespace") <*>
       (obj .: "MetricValue")
@@ -44,10 +47,15 @@
   -> LogsMetricFilterMetricTransformation
 logsMetricFilterMetricTransformation metricNamearg metricNamespacearg metricValuearg =
   LogsMetricFilterMetricTransformation
-  { _logsMetricFilterMetricTransformationMetricName = metricNamearg
+  { _logsMetricFilterMetricTransformationDefaultValue = Nothing
+  , _logsMetricFilterMetricTransformationMetricName = metricNamearg
   , _logsMetricFilterMetricTransformationMetricNamespace = metricNamespacearg
   , _logsMetricFilterMetricTransformationMetricValue = metricValuearg
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html#cfn-cwl-metricfilter-metrictransformation-defaultvalue
+lmfmtDefaultValue :: Lens' LogsMetricFilterMetricTransformation (Maybe (Val Double))
+lmfmtDefaultValue = lens _logsMetricFilterMetricTransformationDefaultValue (\s a -> s { _logsMetricFilterMetricTransformationDefaultValue = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html#cfn-cwl-metricfilter-metrictransformation-metricname
 lmfmtMetricName :: Lens' LogsMetricFilterMetricTransformation (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationInstanceAssociationOutputLocation.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationInstanceAssociationOutputLocation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationInstanceAssociationOutputLocation.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-instanceassociationoutputlocation.html
+
+module Stratosphere.ResourceProperties.SSMAssociationInstanceAssociationOutputLocation where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.SSMAssociationS3OutputLocation
+
+-- | Full data type definition for
+-- SSMAssociationInstanceAssociationOutputLocation. See
+-- 'ssmAssociationInstanceAssociationOutputLocation' for a more convenient
+-- constructor.
+data SSMAssociationInstanceAssociationOutputLocation =
+  SSMAssociationInstanceAssociationOutputLocation
+  { _sSMAssociationInstanceAssociationOutputLocationS3Location :: Maybe SSMAssociationS3OutputLocation
+  } deriving (Show, Eq)
+
+instance ToJSON SSMAssociationInstanceAssociationOutputLocation where
+  toJSON SSMAssociationInstanceAssociationOutputLocation{..} =
+    object $
+    catMaybes
+    [ fmap (("S3Location",) . toJSON) _sSMAssociationInstanceAssociationOutputLocationS3Location
+    ]
+
+instance FromJSON SSMAssociationInstanceAssociationOutputLocation where
+  parseJSON (Object obj) =
+    SSMAssociationInstanceAssociationOutputLocation <$>
+      (obj .:? "S3Location")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMAssociationInstanceAssociationOutputLocation'
+-- containing required fields as arguments.
+ssmAssociationInstanceAssociationOutputLocation
+  :: SSMAssociationInstanceAssociationOutputLocation
+ssmAssociationInstanceAssociationOutputLocation  =
+  SSMAssociationInstanceAssociationOutputLocation
+  { _sSMAssociationInstanceAssociationOutputLocationS3Location = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-instanceassociationoutputlocation.html#cfn-ssm-association-instanceassociationoutputlocation-s3location
+ssmaiaolS3Location :: Lens' SSMAssociationInstanceAssociationOutputLocation (Maybe SSMAssociationS3OutputLocation)
+ssmaiaolS3Location = lens _sSMAssociationInstanceAssociationOutputLocationS3Location (\s a -> s { _sSMAssociationInstanceAssociationOutputLocationS3Location = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMAssociationS3OutputLocation.hs b/library-gen/Stratosphere/ResourceProperties/SSMAssociationS3OutputLocation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMAssociationS3OutputLocation.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-s3outputlocation.html
+
+module Stratosphere.ResourceProperties.SSMAssociationS3OutputLocation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for SSMAssociationS3OutputLocation. See
+-- 'ssmAssociationS3OutputLocation' for a more convenient constructor.
+data SSMAssociationS3OutputLocation =
+  SSMAssociationS3OutputLocation
+  { _sSMAssociationS3OutputLocationOutputS3BucketName :: Maybe (Val Text)
+  , _sSMAssociationS3OutputLocationOutputS3KeyPrefix :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMAssociationS3OutputLocation where
+  toJSON SSMAssociationS3OutputLocation{..} =
+    object $
+    catMaybes
+    [ fmap (("OutputS3BucketName",) . toJSON) _sSMAssociationS3OutputLocationOutputS3BucketName
+    , fmap (("OutputS3KeyPrefix",) . toJSON) _sSMAssociationS3OutputLocationOutputS3KeyPrefix
+    ]
+
+instance FromJSON SSMAssociationS3OutputLocation where
+  parseJSON (Object obj) =
+    SSMAssociationS3OutputLocation <$>
+      (obj .:? "OutputS3BucketName") <*>
+      (obj .:? "OutputS3KeyPrefix")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMAssociationS3OutputLocation' containing required
+-- fields as arguments.
+ssmAssociationS3OutputLocation
+  :: SSMAssociationS3OutputLocation
+ssmAssociationS3OutputLocation  =
+  SSMAssociationS3OutputLocation
+  { _sSMAssociationS3OutputLocationOutputS3BucketName = Nothing
+  , _sSMAssociationS3OutputLocationOutputS3KeyPrefix = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-s3outputlocation.html#cfn-ssm-association-s3outputlocation-outputs3bucketname
+ssmasolOutputS3BucketName :: Lens' SSMAssociationS3OutputLocation (Maybe (Val Text))
+ssmasolOutputS3BucketName = lens _sSMAssociationS3OutputLocationOutputS3BucketName (\s a -> s { _sSMAssociationS3OutputLocationOutputS3BucketName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-association-s3outputlocation.html#cfn-ssm-association-s3outputlocation-outputs3keyprefix
+ssmasolOutputS3KeyPrefix :: Lens' SSMAssociationS3OutputLocation (Maybe (Val Text))
+ssmasolOutputS3KeyPrefix = lens _sSMAssociationS3OutputLocationOutputS3KeyPrefix (\s a -> s { _sSMAssociationS3OutputLocationOutputS3KeyPrefix = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProductProvisioningArtifactProperties.hs b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProductProvisioningArtifactProperties.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceCatalogCloudFormationProductProvisioningArtifactProperties.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html
+
+module Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ServiceCatalogCloudFormationProductProvisioningArtifactProperties. See
+-- 'serviceCatalogCloudFormationProductProvisioningArtifactProperties' for a
+-- more convenient constructor.
+data ServiceCatalogCloudFormationProductProvisioningArtifactProperties =
+  ServiceCatalogCloudFormationProductProvisioningArtifactProperties
+  { _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesDescription :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesInfo :: Object
+  , _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogCloudFormationProductProvisioningArtifactProperties where
+  toJSON ServiceCatalogCloudFormationProductProvisioningArtifactProperties{..} =
+    object $
+    catMaybes
+    [ fmap (("Description",) . toJSON) _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesDescription
+    , (Just . ("Info",) . toJSON) _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesInfo
+    , fmap (("Name",) . toJSON) _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesName
+    ]
+
+instance FromJSON ServiceCatalogCloudFormationProductProvisioningArtifactProperties where
+  parseJSON (Object obj) =
+    ServiceCatalogCloudFormationProductProvisioningArtifactProperties <$>
+      (obj .:? "Description") <*>
+      (obj .: "Info") <*>
+      (obj .:? "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'ServiceCatalogCloudFormationProductProvisioningArtifactProperties'
+-- containing required fields as arguments.
+serviceCatalogCloudFormationProductProvisioningArtifactProperties
+  :: Object -- ^ 'sccfppapInfo'
+  -> ServiceCatalogCloudFormationProductProvisioningArtifactProperties
+serviceCatalogCloudFormationProductProvisioningArtifactProperties infoarg =
+  ServiceCatalogCloudFormationProductProvisioningArtifactProperties
+  { _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesDescription = Nothing
+  , _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesInfo = infoarg
+  , _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-description
+sccfppapDescription :: Lens' ServiceCatalogCloudFormationProductProvisioningArtifactProperties (Maybe (Val Text))
+sccfppapDescription = lens _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesDescription (\s a -> s { _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-info
+sccfppapInfo :: Lens' ServiceCatalogCloudFormationProductProvisioningArtifactProperties Object
+sccfppapInfo = lens _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesInfo (\s a -> s { _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-name
+sccfppapName :: Lens' ServiceCatalogCloudFormationProductProvisioningArtifactProperties (Maybe (Val Text))
+sccfppapName = lens _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesName (\s a -> s { _serviceCatalogCloudFormationProductProvisioningArtifactPropertiesName = a })
diff --git a/library-gen/Stratosphere/Resources.hs b/library-gen/Stratosphere/Resources.hs
--- a/library-gen/Stratosphere/Resources.hs
+++ b/library-gen/Stratosphere/Resources.hs
@@ -83,6 +83,7 @@
 import Stratosphere.Resources.BatchComputeEnvironment as X
 import Stratosphere.Resources.BatchJobDefinition as X
 import Stratosphere.Resources.BatchJobQueue as X
+import Stratosphere.Resources.BudgetsBudget as X
 import Stratosphere.Resources.CertificateManagerCertificate as X
 import Stratosphere.Resources.Cloud9EnvironmentEC2 as X
 import Stratosphere.Resources.CloudFormationCustomResource as X
@@ -290,7 +291,18 @@
 import Stratosphere.Resources.SSMMaintenanceWindowTask as X
 import Stratosphere.Resources.SSMParameter as X
 import Stratosphere.Resources.SSMPatchBaseline as X
+import Stratosphere.Resources.ServiceCatalogAcceptedPortfolioShare as X
+import Stratosphere.Resources.ServiceCatalogCloudFormationProduct as X
 import Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct as X
+import Stratosphere.Resources.ServiceCatalogLaunchNotificationConstraint as X
+import Stratosphere.Resources.ServiceCatalogLaunchRoleConstraint as X
+import Stratosphere.Resources.ServiceCatalogLaunchTemplateConstraint as X
+import Stratosphere.Resources.ServiceCatalogPortfolio as X
+import Stratosphere.Resources.ServiceCatalogPortfolioPrincipalAssociation as X
+import Stratosphere.Resources.ServiceCatalogPortfolioProductAssociation as X
+import Stratosphere.Resources.ServiceCatalogPortfolioShare as X
+import Stratosphere.Resources.ServiceCatalogTagOption as X
+import Stratosphere.Resources.ServiceCatalogTagOptionAssociation as X
 import Stratosphere.Resources.ServiceDiscoveryInstance as X
 import Stratosphere.Resources.ServiceDiscoveryPrivateDnsNamespace as X
 import Stratosphere.Resources.ServiceDiscoveryPublicDnsNamespace as X
@@ -364,10 +376,18 @@
 import Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionMountPoints as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionTimeout as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionUlimit as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionVolumes as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionVolumesHost as X
 import Stratosphere.ResourceProperties.BatchJobQueueComputeEnvironmentOrder as X
+import Stratosphere.ResourceProperties.BudgetsBudgetBudgetData as X
+import Stratosphere.ResourceProperties.BudgetsBudgetCostTypes as X
+import Stratosphere.ResourceProperties.BudgetsBudgetNotification as X
+import Stratosphere.ResourceProperties.BudgetsBudgetNotificationWithSubscribers as X
+import Stratosphere.ResourceProperties.BudgetsBudgetSpend as X
+import Stratosphere.ResourceProperties.BudgetsBudgetSubscriber as X
+import Stratosphere.ResourceProperties.BudgetsBudgetTimePeriod as X
 import Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption as X
 import Stratosphere.ResourceProperties.Cloud9EnvironmentEC2Repository as X
 import Stratosphere.ResourceProperties.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig as X
@@ -467,6 +487,7 @@
 import Stratosphere.ResourceProperties.DynamoDBTableGlobalSecondaryIndex as X
 import Stratosphere.ResourceProperties.DynamoDBTableKeySchema as X
 import Stratosphere.ResourceProperties.DynamoDBTableLocalSecondaryIndex as X
+import Stratosphere.ResourceProperties.DynamoDBTablePointInTimeRecoverySpecification as X
 import Stratosphere.ResourceProperties.DynamoDBTableProjection as X
 import Stratosphere.ResourceProperties.DynamoDBTableProvisionedThroughput as X
 import Stratosphere.ResourceProperties.DynamoDBTableSSESpecification as X
@@ -478,6 +499,7 @@
 import Stratosphere.ResourceProperties.EC2InstanceEbs as X
 import Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification as X
 import Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address as X
+import Stratosphere.ResourceProperties.EC2InstanceLaunchTemplateSpecification as X
 import Stratosphere.ResourceProperties.EC2InstanceNetworkInterface as X
 import Stratosphere.ResourceProperties.EC2InstanceNoDevice as X
 import Stratosphere.ResourceProperties.EC2InstancePrivateIpAddressSpecification as X
@@ -505,13 +527,10 @@
 import Stratosphere.ResourceProperties.EC2SecurityGroupIngressProperty as X
 import Stratosphere.ResourceProperties.EC2SpotFleetBlockDeviceMapping as X
 import Stratosphere.ResourceProperties.EC2SpotFleetEbsBlockDevice as X
-import Stratosphere.ResourceProperties.EC2SpotFleetFleetLaunchTemplateSpecification as X
 import Stratosphere.ResourceProperties.EC2SpotFleetGroupIdentifier as X
 import Stratosphere.ResourceProperties.EC2SpotFleetIamInstanceProfileSpecification as X
 import Stratosphere.ResourceProperties.EC2SpotFleetInstanceIpv6Address as X
 import Stratosphere.ResourceProperties.EC2SpotFleetInstanceNetworkInterfaceSpecification as X
-import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateConfig as X
-import Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateOverrides as X
 import Stratosphere.ResourceProperties.EC2SpotFleetPrivateIpAddressSpecification as X
 import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetLaunchSpecification as X
 import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetMonitoring as X
@@ -526,8 +545,10 @@
 import Stratosphere.ResourceProperties.ECSServiceNetworkConfiguration as X
 import Stratosphere.ResourceProperties.ECSServicePlacementConstraint as X
 import Stratosphere.ResourceProperties.ECSServicePlacementStrategy as X
+import Stratosphere.ResourceProperties.ECSServiceServiceRegistry as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionContainerDefinition as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionDevice as X
+import Stratosphere.ResourceProperties.ECSTaskDefinitionHealthCheck as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionHostEntry as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionHostVolumeProperties as X
 import Stratosphere.ResourceProperties.ECSTaskDefinitionKernelCapabilities as X
@@ -614,6 +635,7 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupTargetGroupAttribute as X
 import Stratosphere.ResourceProperties.ElasticsearchDomainEBSOptions as X
 import Stratosphere.ResourceProperties.ElasticsearchDomainElasticsearchClusterConfig as X
+import Stratosphere.ResourceProperties.ElasticsearchDomainEncryptionAtRestOptions as X
 import Stratosphere.ResourceProperties.ElasticsearchDomainSnapshotOptions as X
 import Stratosphere.ResourceProperties.ElasticsearchDomainVPCOptions as X
 import Stratosphere.ResourceProperties.EventsRuleEcsParameters as X
@@ -715,6 +737,8 @@
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions as X
 import Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration as X
 import Stratosphere.ResourceProperties.LambdaAliasVersionWeight as X
 import Stratosphere.ResourceProperties.LambdaFunctionCode as X
@@ -814,7 +838,9 @@
 import Stratosphere.ResourceProperties.SESReceiptRuleWorkmailAction as X
 import Stratosphere.ResourceProperties.SESTemplateTemplate as X
 import Stratosphere.ResourceProperties.SNSTopicSubscription as X
+import Stratosphere.ResourceProperties.SSMAssociationInstanceAssociationOutputLocation as X
 import Stratosphere.ResourceProperties.SSMAssociationParameterValues as X
+import Stratosphere.ResourceProperties.SSMAssociationS3OutputLocation as X
 import Stratosphere.ResourceProperties.SSMAssociationTarget as X
 import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskLoggingInfo as X
 import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters as X
@@ -829,6 +855,7 @@
 import Stratosphere.ResourceProperties.SSMPatchBaselinePatchSource as X
 import Stratosphere.ResourceProperties.SSMPatchBaselineRule as X
 import Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup as X
+import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties as X
 import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig as X
 import Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord as X
@@ -905,6 +932,7 @@
   | BatchComputeEnvironmentProperties BatchComputeEnvironment
   | BatchJobDefinitionProperties BatchJobDefinition
   | BatchJobQueueProperties BatchJobQueue
+  | BudgetsBudgetProperties BudgetsBudget
   | CertificateManagerCertificateProperties CertificateManagerCertificate
   | Cloud9EnvironmentEC2Properties Cloud9EnvironmentEC2
   | CloudFormationCustomResourceProperties CloudFormationCustomResource
@@ -1112,7 +1140,18 @@
   | SSMMaintenanceWindowTaskProperties SSMMaintenanceWindowTask
   | SSMParameterProperties SSMParameter
   | SSMPatchBaselineProperties SSMPatchBaseline
+  | ServiceCatalogAcceptedPortfolioShareProperties ServiceCatalogAcceptedPortfolioShare
+  | ServiceCatalogCloudFormationProductProperties ServiceCatalogCloudFormationProduct
   | ServiceCatalogCloudFormationProvisionedProductProperties ServiceCatalogCloudFormationProvisionedProduct
+  | ServiceCatalogLaunchNotificationConstraintProperties ServiceCatalogLaunchNotificationConstraint
+  | ServiceCatalogLaunchRoleConstraintProperties ServiceCatalogLaunchRoleConstraint
+  | ServiceCatalogLaunchTemplateConstraintProperties ServiceCatalogLaunchTemplateConstraint
+  | ServiceCatalogPortfolioProperties ServiceCatalogPortfolio
+  | ServiceCatalogPortfolioPrincipalAssociationProperties ServiceCatalogPortfolioPrincipalAssociation
+  | ServiceCatalogPortfolioProductAssociationProperties ServiceCatalogPortfolioProductAssociation
+  | ServiceCatalogPortfolioShareProperties ServiceCatalogPortfolioShare
+  | ServiceCatalogTagOptionProperties ServiceCatalogTagOption
+  | ServiceCatalogTagOptionAssociationProperties ServiceCatalogTagOptionAssociation
   | ServiceDiscoveryInstanceProperties ServiceDiscoveryInstance
   | ServiceDiscoveryPrivateDnsNamespaceProperties ServiceDiscoveryPrivateDnsNamespace
   | ServiceDiscoveryPublicDnsNamespaceProperties ServiceDiscoveryPublicDnsNamespace
@@ -1262,6 +1301,8 @@
   [ "Type" .= ("AWS::Batch::JobDefinition" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (BatchJobQueueProperties x) =
   [ "Type" .= ("AWS::Batch::JobQueue" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (BudgetsBudgetProperties x) =
+  [ "Type" .= ("AWS::Budgets::Budget" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CertificateManagerCertificateProperties x) =
   [ "Type" .= ("AWS::CertificateManager::Certificate" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (Cloud9EnvironmentEC2Properties x) =
@@ -1676,8 +1717,30 @@
   [ "Type" .= ("AWS::SSM::Parameter" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (SSMPatchBaselineProperties x) =
   [ "Type" .= ("AWS::SSM::PatchBaseline" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogAcceptedPortfolioShareProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::AcceptedPortfolioShare" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogCloudFormationProductProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::CloudFormationProduct" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ServiceCatalogCloudFormationProvisionedProductProperties x) =
   [ "Type" .= ("AWS::ServiceCatalog::CloudFormationProvisionedProduct" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogLaunchNotificationConstraintProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::LaunchNotificationConstraint" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogLaunchRoleConstraintProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::LaunchRoleConstraint" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogLaunchTemplateConstraintProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::LaunchTemplateConstraint" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogPortfolioProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::Portfolio" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogPortfolioPrincipalAssociationProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::PortfolioPrincipalAssociation" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogPortfolioProductAssociationProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::PortfolioProductAssociation" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogPortfolioShareProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::PortfolioShare" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogTagOptionProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::TagOption" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ServiceCatalogTagOptionAssociationProperties x) =
+  [ "Type" .= ("AWS::ServiceCatalog::TagOptionAssociation" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ServiceDiscoveryInstanceProperties x) =
   [ "Type" .= ("AWS::ServiceDiscovery::Instance" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ServiceDiscoveryPrivateDnsNamespaceProperties x) =
@@ -1764,6 +1827,7 @@
          "AWS::Batch::ComputeEnvironment" -> BatchComputeEnvironmentProperties <$> (o .: "Properties")
          "AWS::Batch::JobDefinition" -> BatchJobDefinitionProperties <$> (o .: "Properties")
          "AWS::Batch::JobQueue" -> BatchJobQueueProperties <$> (o .: "Properties")
+         "AWS::Budgets::Budget" -> BudgetsBudgetProperties <$> (o .: "Properties")
          "AWS::CertificateManager::Certificate" -> CertificateManagerCertificateProperties <$> (o .: "Properties")
          "AWS::Cloud9::EnvironmentEC2" -> Cloud9EnvironmentEC2Properties <$> (o .: "Properties")
          "AWS::CloudFormation::CustomResource" -> CloudFormationCustomResourceProperties <$> (o .: "Properties")
@@ -1971,7 +2035,18 @@
          "AWS::SSM::MaintenanceWindowTask" -> SSMMaintenanceWindowTaskProperties <$> (o .: "Properties")
          "AWS::SSM::Parameter" -> SSMParameterProperties <$> (o .: "Properties")
          "AWS::SSM::PatchBaseline" -> SSMPatchBaselineProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::AcceptedPortfolioShare" -> ServiceCatalogAcceptedPortfolioShareProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::CloudFormationProduct" -> ServiceCatalogCloudFormationProductProperties <$> (o .: "Properties")
          "AWS::ServiceCatalog::CloudFormationProvisionedProduct" -> ServiceCatalogCloudFormationProvisionedProductProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::LaunchNotificationConstraint" -> ServiceCatalogLaunchNotificationConstraintProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::LaunchRoleConstraint" -> ServiceCatalogLaunchRoleConstraintProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::LaunchTemplateConstraint" -> ServiceCatalogLaunchTemplateConstraintProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::Portfolio" -> ServiceCatalogPortfolioProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::PortfolioPrincipalAssociation" -> ServiceCatalogPortfolioPrincipalAssociationProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::PortfolioProductAssociation" -> ServiceCatalogPortfolioProductAssociationProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::PortfolioShare" -> ServiceCatalogPortfolioShareProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::TagOption" -> ServiceCatalogTagOptionProperties <$> (o .: "Properties")
+         "AWS::ServiceCatalog::TagOptionAssociation" -> ServiceCatalogTagOptionAssociationProperties <$> (o .: "Properties")
          "AWS::ServiceDiscovery::Instance" -> ServiceDiscoveryInstanceProperties <$> (o .: "Properties")
          "AWS::ServiceDiscovery::PrivateDnsNamespace" -> ServiceDiscoveryPrivateDnsNamespaceProperties <$> (o .: "Properties")
          "AWS::ServiceDiscovery::PublicDnsNamespace" -> ServiceDiscoveryPublicDnsNamespaceProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs b/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayRestApi.hs
@@ -25,6 +25,7 @@
   , _apiGatewayRestApiMinimumCompressionSize :: Maybe (Val Integer)
   , _apiGatewayRestApiName :: Maybe (Val Text)
   , _apiGatewayRestApiParameters :: Maybe Object
+  , _apiGatewayRestApiPolicy :: Maybe Object
   } deriving (Show, Eq)
 
 instance ToJSON ApiGatewayRestApi where
@@ -42,6 +43,7 @@
     , fmap (("MinimumCompressionSize",) . toJSON . fmap Integer') _apiGatewayRestApiMinimumCompressionSize
     , fmap (("Name",) . toJSON) _apiGatewayRestApiName
     , fmap (("Parameters",) . toJSON) _apiGatewayRestApiParameters
+    , fmap (("Policy",) . toJSON) _apiGatewayRestApiPolicy
     ]
 
 instance FromJSON ApiGatewayRestApi where
@@ -57,7 +59,8 @@
       fmap (fmap (fmap unBool')) (obj .:? "FailOnWarnings") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "MinimumCompressionSize") <*>
       (obj .:? "Name") <*>
-      (obj .:? "Parameters")
+      (obj .:? "Parameters") <*>
+      (obj .:? "Policy")
   parseJSON _ = mempty
 
 -- | Constructor for 'ApiGatewayRestApi' containing required fields as
@@ -77,6 +80,7 @@
   , _apiGatewayRestApiMinimumCompressionSize = Nothing
   , _apiGatewayRestApiName = Nothing
   , _apiGatewayRestApiParameters = Nothing
+  , _apiGatewayRestApiPolicy = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-apikeysourcetype
@@ -122,3 +126,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-parameters
 agraParameters :: Lens' ApiGatewayRestApi (Maybe Object)
 agraParameters = lens _apiGatewayRestApiParameters (\s a -> s { _apiGatewayRestApiParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html#cfn-apigateway-restapi-policy
+agraPolicy :: Lens' ApiGatewayRestApi (Maybe Object)
+agraPolicy = lens _apiGatewayRestApiPolicy (\s a -> s { _apiGatewayRestApiPolicy = a })
diff --git a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
@@ -31,6 +31,7 @@
   , _autoScalingAutoScalingGroupMinSize :: Val Text
   , _autoScalingAutoScalingGroupNotificationConfigurations :: Maybe [AutoScalingAutoScalingGroupNotificationConfiguration]
   , _autoScalingAutoScalingGroupPlacementGroup :: Maybe (Val Text)
+  , _autoScalingAutoScalingGroupServiceLinkedRoleARN :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupTags :: Maybe [AutoScalingAutoScalingGroupTagProperty]
   , _autoScalingAutoScalingGroupTargetGroupARNs :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupTerminationPolicies :: Maybe (ValList Text)
@@ -56,6 +57,7 @@
     , (Just . ("MinSize",) . toJSON) _autoScalingAutoScalingGroupMinSize
     , fmap (("NotificationConfigurations",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurations
     , fmap (("PlacementGroup",) . toJSON) _autoScalingAutoScalingGroupPlacementGroup
+    , fmap (("ServiceLinkedRoleARN",) . toJSON) _autoScalingAutoScalingGroupServiceLinkedRoleARN
     , fmap (("Tags",) . toJSON) _autoScalingAutoScalingGroupTags
     , fmap (("TargetGroupARNs",) . toJSON) _autoScalingAutoScalingGroupTargetGroupARNs
     , fmap (("TerminationPolicies",) . toJSON) _autoScalingAutoScalingGroupTerminationPolicies
@@ -80,6 +82,7 @@
       (obj .: "MinSize") <*>
       (obj .:? "NotificationConfigurations") <*>
       (obj .:? "PlacementGroup") <*>
+      (obj .:? "ServiceLinkedRoleARN") <*>
       (obj .:? "Tags") <*>
       (obj .:? "TargetGroupARNs") <*>
       (obj .:? "TerminationPolicies") <*>
@@ -109,6 +112,7 @@
   , _autoScalingAutoScalingGroupMinSize = minSizearg
   , _autoScalingAutoScalingGroupNotificationConfigurations = Nothing
   , _autoScalingAutoScalingGroupPlacementGroup = Nothing
+  , _autoScalingAutoScalingGroupServiceLinkedRoleARN = Nothing
   , _autoScalingAutoScalingGroupTags = Nothing
   , _autoScalingAutoScalingGroupTargetGroupARNs = Nothing
   , _autoScalingAutoScalingGroupTerminationPolicies = Nothing
@@ -174,6 +178,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-placementgroup
 asasgPlacementGroup :: Lens' AutoScalingAutoScalingGroup (Maybe (Val Text))
 asasgPlacementGroup = lens _autoScalingAutoScalingGroupPlacementGroup (\s a -> s { _autoScalingAutoScalingGroupPlacementGroup = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-autoscaling-autoscalinggroup-servicelinkedrolearn
+asasgServiceLinkedRoleARN :: Lens' AutoScalingAutoScalingGroup (Maybe (Val Text))
+asasgServiceLinkedRoleARN = lens _autoScalingAutoScalingGroupServiceLinkedRoleARN (\s a -> s { _autoScalingAutoScalingGroupServiceLinkedRoleARN = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-tags
 asasgTags :: Lens' AutoScalingAutoScalingGroup (Maybe [AutoScalingAutoScalingGroupTagProperty])
diff --git a/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs b/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingLaunchConfiguration.hs
@@ -25,6 +25,7 @@
   , _autoScalingLaunchConfigurationInstanceType :: Val Text
   , _autoScalingLaunchConfigurationKernelId :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationKeyName :: Maybe (Val Text)
+  , _autoScalingLaunchConfigurationLaunchConfigurationName :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationPlacementTenancy :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationRamDiskId :: Maybe (Val Text)
   , _autoScalingLaunchConfigurationSecurityGroups :: Maybe (ValList Text)
@@ -48,6 +49,7 @@
     , (Just . ("InstanceType",) . toJSON) _autoScalingLaunchConfigurationInstanceType
     , fmap (("KernelId",) . toJSON) _autoScalingLaunchConfigurationKernelId
     , fmap (("KeyName",) . toJSON) _autoScalingLaunchConfigurationKeyName
+    , fmap (("LaunchConfigurationName",) . toJSON) _autoScalingLaunchConfigurationLaunchConfigurationName
     , fmap (("PlacementTenancy",) . toJSON) _autoScalingLaunchConfigurationPlacementTenancy
     , fmap (("RamDiskId",) . toJSON) _autoScalingLaunchConfigurationRamDiskId
     , fmap (("SecurityGroups",) . toJSON) _autoScalingLaunchConfigurationSecurityGroups
@@ -70,6 +72,7 @@
       (obj .: "InstanceType") <*>
       (obj .:? "KernelId") <*>
       (obj .:? "KeyName") <*>
+      (obj .:? "LaunchConfigurationName") <*>
       (obj .:? "PlacementTenancy") <*>
       (obj .:? "RamDiskId") <*>
       (obj .:? "SecurityGroups") <*>
@@ -97,6 +100,7 @@
   , _autoScalingLaunchConfigurationInstanceType = instanceTypearg
   , _autoScalingLaunchConfigurationKernelId = Nothing
   , _autoScalingLaunchConfigurationKeyName = Nothing
+  , _autoScalingLaunchConfigurationLaunchConfigurationName = Nothing
   , _autoScalingLaunchConfigurationPlacementTenancy = Nothing
   , _autoScalingLaunchConfigurationRamDiskId = Nothing
   , _autoScalingLaunchConfigurationSecurityGroups = Nothing
@@ -151,6 +155,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-keyname
 aslcKeyName :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Text))
 aslcKeyName = lens _autoScalingLaunchConfigurationKeyName (\s a -> s { _autoScalingLaunchConfigurationKeyName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-autoscaling-launchconfig-launchconfigurationname
+aslcLaunchConfigurationName :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Text))
+aslcLaunchConfigurationName = lens _autoScalingLaunchConfigurationLaunchConfigurationName (\s a -> s { _autoScalingLaunchConfigurationLaunchConfigurationName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-placementtenancy
 aslcPlacementTenancy :: Lens' AutoScalingLaunchConfiguration (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs b/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs
--- a/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs
+++ b/library-gen/Stratosphere/Resources/BatchComputeEnvironment.hs
@@ -14,7 +14,7 @@
 data BatchComputeEnvironment =
   BatchComputeEnvironment
   { _batchComputeEnvironmentComputeEnvironmentName :: Maybe (Val Text)
-  , _batchComputeEnvironmentComputeResources :: BatchComputeEnvironmentComputeResources
+  , _batchComputeEnvironmentComputeResources :: Maybe BatchComputeEnvironmentComputeResources
   , _batchComputeEnvironmentServiceRole :: Val Text
   , _batchComputeEnvironmentState :: Maybe (Val Text)
   , _batchComputeEnvironmentType :: Val Text
@@ -25,7 +25,7 @@
     object $
     catMaybes
     [ fmap (("ComputeEnvironmentName",) . toJSON) _batchComputeEnvironmentComputeEnvironmentName
-    , (Just . ("ComputeResources",) . toJSON) _batchComputeEnvironmentComputeResources
+    , fmap (("ComputeResources",) . toJSON) _batchComputeEnvironmentComputeResources
     , (Just . ("ServiceRole",) . toJSON) _batchComputeEnvironmentServiceRole
     , fmap (("State",) . toJSON) _batchComputeEnvironmentState
     , (Just . ("Type",) . toJSON) _batchComputeEnvironmentType
@@ -35,7 +35,7 @@
   parseJSON (Object obj) =
     BatchComputeEnvironment <$>
       (obj .:? "ComputeEnvironmentName") <*>
-      (obj .: "ComputeResources") <*>
+      (obj .:? "ComputeResources") <*>
       (obj .: "ServiceRole") <*>
       (obj .:? "State") <*>
       (obj .: "Type")
@@ -44,14 +44,13 @@
 -- | Constructor for 'BatchComputeEnvironment' containing required fields as
 -- arguments.
 batchComputeEnvironment
-  :: BatchComputeEnvironmentComputeResources -- ^ 'bceComputeResources'
-  -> Val Text -- ^ 'bceServiceRole'
+  :: Val Text -- ^ 'bceServiceRole'
   -> Val Text -- ^ 'bceType'
   -> BatchComputeEnvironment
-batchComputeEnvironment computeResourcesarg serviceRolearg typearg =
+batchComputeEnvironment serviceRolearg typearg =
   BatchComputeEnvironment
   { _batchComputeEnvironmentComputeEnvironmentName = Nothing
-  , _batchComputeEnvironmentComputeResources = computeResourcesarg
+  , _batchComputeEnvironmentComputeResources = Nothing
   , _batchComputeEnvironmentServiceRole = serviceRolearg
   , _batchComputeEnvironmentState = Nothing
   , _batchComputeEnvironmentType = typearg
@@ -62,7 +61,7 @@
 bceComputeEnvironmentName = lens _batchComputeEnvironmentComputeEnvironmentName (\s a -> s { _batchComputeEnvironmentComputeEnvironmentName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html#cfn-batch-computeenvironment-computeresources
-bceComputeResources :: Lens' BatchComputeEnvironment BatchComputeEnvironmentComputeResources
+bceComputeResources :: Lens' BatchComputeEnvironment (Maybe BatchComputeEnvironmentComputeResources)
 bceComputeResources = lens _batchComputeEnvironmentComputeResources (\s a -> s { _batchComputeEnvironmentComputeResources = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-computeenvironment.html#cfn-batch-computeenvironment-servicerole
diff --git a/library-gen/Stratosphere/Resources/BatchJobDefinition.hs b/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
--- a/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
+++ b/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
@@ -9,6 +9,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties
 import Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy
+import Stratosphere.ResourceProperties.BatchJobDefinitionTimeout
 
 -- | Full data type definition for BatchJobDefinition. See
 -- 'batchJobDefinition' for a more convenient constructor.
@@ -18,6 +19,7 @@
   , _batchJobDefinitionJobDefinitionName :: Maybe (Val Text)
   , _batchJobDefinitionParameters :: Maybe Object
   , _batchJobDefinitionRetryStrategy :: Maybe BatchJobDefinitionRetryStrategy
+  , _batchJobDefinitionTimeout :: Maybe BatchJobDefinitionTimeout
   , _batchJobDefinitionType :: Val Text
   } deriving (Show, Eq)
 
@@ -29,6 +31,7 @@
     , fmap (("JobDefinitionName",) . toJSON) _batchJobDefinitionJobDefinitionName
     , fmap (("Parameters",) . toJSON) _batchJobDefinitionParameters
     , fmap (("RetryStrategy",) . toJSON) _batchJobDefinitionRetryStrategy
+    , fmap (("Timeout",) . toJSON) _batchJobDefinitionTimeout
     , (Just . ("Type",) . toJSON) _batchJobDefinitionType
     ]
 
@@ -39,6 +42,7 @@
       (obj .:? "JobDefinitionName") <*>
       (obj .:? "Parameters") <*>
       (obj .:? "RetryStrategy") <*>
+      (obj .:? "Timeout") <*>
       (obj .: "Type")
   parseJSON _ = mempty
 
@@ -54,6 +58,7 @@
   , _batchJobDefinitionJobDefinitionName = Nothing
   , _batchJobDefinitionParameters = Nothing
   , _batchJobDefinitionRetryStrategy = Nothing
+  , _batchJobDefinitionTimeout = Nothing
   , _batchJobDefinitionType = typearg
   }
 
@@ -72,6 +77,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-retrystrategy
 bjdRetryStrategy :: Lens' BatchJobDefinition (Maybe BatchJobDefinitionRetryStrategy)
 bjdRetryStrategy = lens _batchJobDefinitionRetryStrategy (\s a -> s { _batchJobDefinitionRetryStrategy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-timeout
+bjdTimeout :: Lens' BatchJobDefinition (Maybe BatchJobDefinitionTimeout)
+bjdTimeout = lens _batchJobDefinitionTimeout (\s a -> s { _batchJobDefinitionTimeout = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-type
 bjdType :: Lens' BatchJobDefinition (Val Text)
diff --git a/library-gen/Stratosphere/Resources/BudgetsBudget.hs b/library-gen/Stratosphere/Resources/BudgetsBudget.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/BudgetsBudget.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-budgets-budget.html
+
+module Stratosphere.Resources.BudgetsBudget where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.BudgetsBudgetBudgetData
+import Stratosphere.ResourceProperties.BudgetsBudgetNotificationWithSubscribers
+
+-- | Full data type definition for BudgetsBudget. See 'budgetsBudget' for a
+-- more convenient constructor.
+data BudgetsBudget =
+  BudgetsBudget
+  { _budgetsBudgetBudget :: BudgetsBudgetBudgetData
+  , _budgetsBudgetNotificationsWithSubscribers :: Maybe [BudgetsBudgetNotificationWithSubscribers]
+  } deriving (Show, Eq)
+
+instance ToJSON BudgetsBudget where
+  toJSON BudgetsBudget{..} =
+    object $
+    catMaybes
+    [ (Just . ("Budget",) . toJSON) _budgetsBudgetBudget
+    , fmap (("NotificationsWithSubscribers",) . toJSON) _budgetsBudgetNotificationsWithSubscribers
+    ]
+
+instance FromJSON BudgetsBudget where
+  parseJSON (Object obj) =
+    BudgetsBudget <$>
+      (obj .: "Budget") <*>
+      (obj .:? "NotificationsWithSubscribers")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BudgetsBudget' containing required fields as arguments.
+budgetsBudget
+  :: BudgetsBudgetBudgetData -- ^ 'bbBudget'
+  -> BudgetsBudget
+budgetsBudget budgetarg =
+  BudgetsBudget
+  { _budgetsBudgetBudget = budgetarg
+  , _budgetsBudgetNotificationsWithSubscribers = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-budgets-budget.html#cfn-budgets-budget-budget
+bbBudget :: Lens' BudgetsBudget BudgetsBudgetBudgetData
+bbBudget = lens _budgetsBudgetBudget (\s a -> s { _budgetsBudgetBudget = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-budgets-budget.html#cfn-budgets-budget-notificationswithsubscribers
+bbNotificationsWithSubscribers :: Lens' BudgetsBudget (Maybe [BudgetsBudgetNotificationWithSubscribers])
+bbNotificationsWithSubscribers = lens _budgetsBudgetNotificationsWithSubscribers (\s a -> s { _budgetsBudgetNotificationsWithSubscribers = a })
diff --git a/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs b/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
--- a/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
+++ b/library-gen/Stratosphere/Resources/CertificateManagerCertificate.hs
@@ -18,6 +18,7 @@
   , _certificateManagerCertificateDomainValidationOptions :: Maybe [CertificateManagerCertificateDomainValidationOption]
   , _certificateManagerCertificateSubjectAlternativeNames :: Maybe (ValList Text)
   , _certificateManagerCertificateTags :: Maybe [Tag]
+  , _certificateManagerCertificateValidationMethod :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON CertificateManagerCertificate where
@@ -28,6 +29,7 @@
     , fmap (("DomainValidationOptions",) . toJSON) _certificateManagerCertificateDomainValidationOptions
     , fmap (("SubjectAlternativeNames",) . toJSON) _certificateManagerCertificateSubjectAlternativeNames
     , fmap (("Tags",) . toJSON) _certificateManagerCertificateTags
+    , fmap (("ValidationMethod",) . toJSON) _certificateManagerCertificateValidationMethod
     ]
 
 instance FromJSON CertificateManagerCertificate where
@@ -36,7 +38,8 @@
       (obj .: "DomainName") <*>
       (obj .:? "DomainValidationOptions") <*>
       (obj .:? "SubjectAlternativeNames") <*>
-      (obj .:? "Tags")
+      (obj .:? "Tags") <*>
+      (obj .:? "ValidationMethod")
   parseJSON _ = mempty
 
 -- | Constructor for 'CertificateManagerCertificate' containing required
@@ -50,6 +53,7 @@
   , _certificateManagerCertificateDomainValidationOptions = Nothing
   , _certificateManagerCertificateSubjectAlternativeNames = Nothing
   , _certificateManagerCertificateTags = Nothing
+  , _certificateManagerCertificateValidationMethod = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-domainname
@@ -67,3 +71,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-tags
 cmcTags :: Lens' CertificateManagerCertificate (Maybe [Tag])
 cmcTags = lens _certificateManagerCertificateTags (\s a -> s { _certificateManagerCertificateTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-certificatemanager-certificate.html#cfn-certificatemanager-certificate-validationmethod
+cmcValidationMethod :: Lens' CertificateManagerCertificate (Maybe (Val Text))
+cmcValidationMethod = lens _certificateManagerCertificateValidationMethod (\s a -> s { _certificateManagerCertificateValidationMethod = a })
diff --git a/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs b/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
--- a/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
+++ b/library-gen/Stratosphere/Resources/DirectoryServiceMicrosoftAD.hs
@@ -14,6 +14,7 @@
 data DirectoryServiceMicrosoftAD =
   DirectoryServiceMicrosoftAD
   { _directoryServiceMicrosoftADCreateAlias :: Maybe (Val Bool)
+  , _directoryServiceMicrosoftADEdition :: Maybe (Val Text)
   , _directoryServiceMicrosoftADEnableSso :: Maybe (Val Bool)
   , _directoryServiceMicrosoftADName :: Val Text
   , _directoryServiceMicrosoftADPassword :: Val Text
@@ -26,6 +27,7 @@
     object $
     catMaybes
     [ fmap (("CreateAlias",) . toJSON . fmap Bool') _directoryServiceMicrosoftADCreateAlias
+    , fmap (("Edition",) . toJSON) _directoryServiceMicrosoftADEdition
     , fmap (("EnableSso",) . toJSON . fmap Bool') _directoryServiceMicrosoftADEnableSso
     , (Just . ("Name",) . toJSON) _directoryServiceMicrosoftADName
     , (Just . ("Password",) . toJSON) _directoryServiceMicrosoftADPassword
@@ -37,6 +39,7 @@
   parseJSON (Object obj) =
     DirectoryServiceMicrosoftAD <$>
       fmap (fmap (fmap unBool')) (obj .:? "CreateAlias") <*>
+      (obj .:? "Edition") <*>
       fmap (fmap (fmap unBool')) (obj .:? "EnableSso") <*>
       (obj .: "Name") <*>
       (obj .: "Password") <*>
@@ -54,6 +57,7 @@
 directoryServiceMicrosoftAD namearg passwordarg vpcSettingsarg =
   DirectoryServiceMicrosoftAD
   { _directoryServiceMicrosoftADCreateAlias = Nothing
+  , _directoryServiceMicrosoftADEdition = Nothing
   , _directoryServiceMicrosoftADEnableSso = Nothing
   , _directoryServiceMicrosoftADName = namearg
   , _directoryServiceMicrosoftADPassword = passwordarg
@@ -64,6 +68,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-createalias
 dsmadCreateAlias :: Lens' DirectoryServiceMicrosoftAD (Maybe (Val Bool))
 dsmadCreateAlias = lens _directoryServiceMicrosoftADCreateAlias (\s a -> s { _directoryServiceMicrosoftADCreateAlias = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-edition
+dsmadEdition :: Lens' DirectoryServiceMicrosoftAD (Maybe (Val Text))
+dsmadEdition = lens _directoryServiceMicrosoftADEdition (\s a -> s { _directoryServiceMicrosoftADEdition = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-directoryservice-microsoftad.html#cfn-directoryservice-microsoftad-enablesso
 dsmadEnableSso :: Lens' DirectoryServiceMicrosoftAD (Maybe (Val Bool))
diff --git a/library-gen/Stratosphere/Resources/DynamoDBTable.hs b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
--- a/library-gen/Stratosphere/Resources/DynamoDBTable.hs
+++ b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.DynamoDBTableGlobalSecondaryIndex
 import Stratosphere.ResourceProperties.DynamoDBTableKeySchema
 import Stratosphere.ResourceProperties.DynamoDBTableLocalSecondaryIndex
+import Stratosphere.ResourceProperties.DynamoDBTablePointInTimeRecoverySpecification
 import Stratosphere.ResourceProperties.DynamoDBTableProvisionedThroughput
 import Stratosphere.ResourceProperties.DynamoDBTableSSESpecification
 import Stratosphere.ResourceProperties.DynamoDBTableStreamSpecification
@@ -25,6 +26,7 @@
   , _dynamoDBTableGlobalSecondaryIndexes :: Maybe [DynamoDBTableGlobalSecondaryIndex]
   , _dynamoDBTableKeySchema :: [DynamoDBTableKeySchema]
   , _dynamoDBTableLocalSecondaryIndexes :: Maybe [DynamoDBTableLocalSecondaryIndex]
+  , _dynamoDBTablePointInTimeRecoverySpecification :: Maybe DynamoDBTablePointInTimeRecoverySpecification
   , _dynamoDBTableProvisionedThroughput :: DynamoDBTableProvisionedThroughput
   , _dynamoDBTableSSESpecification :: Maybe DynamoDBTableSSESpecification
   , _dynamoDBTableStreamSpecification :: Maybe DynamoDBTableStreamSpecification
@@ -41,6 +43,7 @@
     , fmap (("GlobalSecondaryIndexes",) . toJSON) _dynamoDBTableGlobalSecondaryIndexes
     , (Just . ("KeySchema",) . toJSON) _dynamoDBTableKeySchema
     , fmap (("LocalSecondaryIndexes",) . toJSON) _dynamoDBTableLocalSecondaryIndexes
+    , fmap (("PointInTimeRecoverySpecification",) . toJSON) _dynamoDBTablePointInTimeRecoverySpecification
     , (Just . ("ProvisionedThroughput",) . toJSON) _dynamoDBTableProvisionedThroughput
     , fmap (("SSESpecification",) . toJSON) _dynamoDBTableSSESpecification
     , fmap (("StreamSpecification",) . toJSON) _dynamoDBTableStreamSpecification
@@ -56,6 +59,7 @@
       (obj .:? "GlobalSecondaryIndexes") <*>
       (obj .: "KeySchema") <*>
       (obj .:? "LocalSecondaryIndexes") <*>
+      (obj .:? "PointInTimeRecoverySpecification") <*>
       (obj .: "ProvisionedThroughput") <*>
       (obj .:? "SSESpecification") <*>
       (obj .:? "StreamSpecification") <*>
@@ -75,6 +79,7 @@
   , _dynamoDBTableGlobalSecondaryIndexes = Nothing
   , _dynamoDBTableKeySchema = keySchemaarg
   , _dynamoDBTableLocalSecondaryIndexes = Nothing
+  , _dynamoDBTablePointInTimeRecoverySpecification = Nothing
   , _dynamoDBTableProvisionedThroughput = provisionedThroughputarg
   , _dynamoDBTableSSESpecification = Nothing
   , _dynamoDBTableStreamSpecification = Nothing
@@ -98,6 +103,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-lsi
 ddbtLocalSecondaryIndexes :: Lens' DynamoDBTable (Maybe [DynamoDBTableLocalSecondaryIndex])
 ddbtLocalSecondaryIndexes = lens _dynamoDBTableLocalSecondaryIndexes (\s a -> s { _dynamoDBTableLocalSecondaryIndexes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-pointintimerecoveryspecification
+ddbtPointInTimeRecoverySpecification :: Lens' DynamoDBTable (Maybe DynamoDBTablePointInTimeRecoverySpecification)
+ddbtPointInTimeRecoverySpecification = lens _dynamoDBTablePointInTimeRecoverySpecification (\s a -> s { _dynamoDBTablePointInTimeRecoverySpecification = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-provisionedthroughput
 ddbtProvisionedThroughput :: Lens' DynamoDBTable DynamoDBTableProvisionedThroughput
diff --git a/library-gen/Stratosphere/Resources/EC2Instance.hs b/library-gen/Stratosphere/Resources/EC2Instance.hs
--- a/library-gen/Stratosphere/Resources/EC2Instance.hs
+++ b/library-gen/Stratosphere/Resources/EC2Instance.hs
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.EC2InstanceCreditSpecification
 import Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification
 import Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address
+import Stratosphere.ResourceProperties.EC2InstanceLaunchTemplateSpecification
 import Stratosphere.ResourceProperties.EC2InstanceNetworkInterface
 import Stratosphere.ResourceProperties.EC2InstanceSsmAssociation
 import Stratosphere.ResourceProperties.Tag
@@ -30,13 +31,14 @@
   , _eC2InstanceElasticGpuSpecifications :: Maybe [EC2InstanceElasticGpuSpecification]
   , _eC2InstanceHostId :: Maybe (Val Text)
   , _eC2InstanceIamInstanceProfile :: Maybe (Val Text)
-  , _eC2InstanceImageId :: Val Text
+  , _eC2InstanceImageId :: Maybe (Val Text)
   , _eC2InstanceInstanceInitiatedShutdownBehavior :: Maybe (Val Text)
   , _eC2InstanceInstanceType :: Maybe (Val Text)
   , _eC2InstanceIpv6AddressCount :: Maybe (Val Integer)
   , _eC2InstanceIpv6Addresses :: Maybe [EC2InstanceInstanceIpv6Address]
   , _eC2InstanceKernelId :: Maybe (Val Text)
   , _eC2InstanceKeyName :: Maybe (Val Text)
+  , _eC2InstanceLaunchTemplate :: Maybe EC2InstanceLaunchTemplateSpecification
   , _eC2InstanceMonitoring :: Maybe (Val Bool)
   , _eC2InstanceNetworkInterfaces :: Maybe [EC2InstanceNetworkInterface]
   , _eC2InstancePlacementGroupName :: Maybe (Val Text)
@@ -67,13 +69,14 @@
     , fmap (("ElasticGpuSpecifications",) . toJSON) _eC2InstanceElasticGpuSpecifications
     , fmap (("HostId",) . toJSON) _eC2InstanceHostId
     , fmap (("IamInstanceProfile",) . toJSON) _eC2InstanceIamInstanceProfile
-    , (Just . ("ImageId",) . toJSON) _eC2InstanceImageId
+    , fmap (("ImageId",) . toJSON) _eC2InstanceImageId
     , fmap (("InstanceInitiatedShutdownBehavior",) . toJSON) _eC2InstanceInstanceInitiatedShutdownBehavior
     , fmap (("InstanceType",) . toJSON) _eC2InstanceInstanceType
     , fmap (("Ipv6AddressCount",) . toJSON . fmap Integer') _eC2InstanceIpv6AddressCount
     , fmap (("Ipv6Addresses",) . toJSON) _eC2InstanceIpv6Addresses
     , fmap (("KernelId",) . toJSON) _eC2InstanceKernelId
     , fmap (("KeyName",) . toJSON) _eC2InstanceKeyName
+    , fmap (("LaunchTemplate",) . toJSON) _eC2InstanceLaunchTemplate
     , fmap (("Monitoring",) . toJSON . fmap Bool') _eC2InstanceMonitoring
     , fmap (("NetworkInterfaces",) . toJSON) _eC2InstanceNetworkInterfaces
     , fmap (("PlacementGroupName",) . toJSON) _eC2InstancePlacementGroupName
@@ -103,13 +106,14 @@
       (obj .:? "ElasticGpuSpecifications") <*>
       (obj .:? "HostId") <*>
       (obj .:? "IamInstanceProfile") <*>
-      (obj .: "ImageId") <*>
+      (obj .:? "ImageId") <*>
       (obj .:? "InstanceInitiatedShutdownBehavior") <*>
       (obj .:? "InstanceType") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "Ipv6AddressCount") <*>
       (obj .:? "Ipv6Addresses") <*>
       (obj .:? "KernelId") <*>
       (obj .:? "KeyName") <*>
+      (obj .:? "LaunchTemplate") <*>
       fmap (fmap (fmap unBool')) (obj .:? "Monitoring") <*>
       (obj .:? "NetworkInterfaces") <*>
       (obj .:? "PlacementGroupName") <*>
@@ -128,9 +132,8 @@
 
 -- | Constructor for 'EC2Instance' containing required fields as arguments.
 ec2Instance
-  :: Val Text -- ^ 'eciImageId'
-  -> EC2Instance
-ec2Instance imageIdarg =
+  :: EC2Instance
+ec2Instance  =
   EC2Instance
   { _eC2InstanceAdditionalInfo = Nothing
   , _eC2InstanceAffinity = Nothing
@@ -142,13 +145,14 @@
   , _eC2InstanceElasticGpuSpecifications = Nothing
   , _eC2InstanceHostId = Nothing
   , _eC2InstanceIamInstanceProfile = Nothing
-  , _eC2InstanceImageId = imageIdarg
+  , _eC2InstanceImageId = Nothing
   , _eC2InstanceInstanceInitiatedShutdownBehavior = Nothing
   , _eC2InstanceInstanceType = Nothing
   , _eC2InstanceIpv6AddressCount = Nothing
   , _eC2InstanceIpv6Addresses = Nothing
   , _eC2InstanceKernelId = Nothing
   , _eC2InstanceKeyName = Nothing
+  , _eC2InstanceLaunchTemplate = Nothing
   , _eC2InstanceMonitoring = Nothing
   , _eC2InstanceNetworkInterfaces = Nothing
   , _eC2InstancePlacementGroupName = Nothing
@@ -206,7 +210,7 @@
 eciIamInstanceProfile = lens _eC2InstanceIamInstanceProfile (\s a -> s { _eC2InstanceIamInstanceProfile = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-imageid
-eciImageId :: Lens' EC2Instance (Val Text)
+eciImageId :: Lens' EC2Instance (Maybe (Val Text))
 eciImageId = lens _eC2InstanceImageId (\s a -> s { _eC2InstanceImageId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-instanceinitiatedshutdownbehavior
@@ -232,6 +236,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-keyname
 eciKeyName :: Lens' EC2Instance (Maybe (Val Text))
 eciKeyName = lens _eC2InstanceKeyName (\s a -> s { _eC2InstanceKeyName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-launchtemplate
+eciLaunchTemplate :: Lens' EC2Instance (Maybe EC2InstanceLaunchTemplateSpecification)
+eciLaunchTemplate = lens _eC2InstanceLaunchTemplate (\s a -> s { _eC2InstanceLaunchTemplate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-monitoring
 eciMonitoring :: Lens' EC2Instance (Maybe (Val Bool))
diff --git a/library-gen/Stratosphere/Resources/ECSService.hs b/library-gen/Stratosphere/Resources/ECSService.hs
--- a/library-gen/Stratosphere/Resources/ECSService.hs
+++ b/library-gen/Stratosphere/Resources/ECSService.hs
@@ -12,6 +12,7 @@
 import Stratosphere.ResourceProperties.ECSServiceNetworkConfiguration
 import Stratosphere.ResourceProperties.ECSServicePlacementConstraint
 import Stratosphere.ResourceProperties.ECSServicePlacementStrategy
+import Stratosphere.ResourceProperties.ECSServiceServiceRegistry
 
 -- | Full data type definition for ECSService. See 'ecsService' for a more
 -- convenient constructor.
@@ -29,6 +30,7 @@
   , _eCSServicePlatformVersion :: Maybe (Val Text)
   , _eCSServiceRole :: Maybe (Val Text)
   , _eCSServiceServiceName :: Maybe (Val Text)
+  , _eCSServiceServiceRegistries :: Maybe [ECSServiceServiceRegistry]
   , _eCSServiceTaskDefinition :: Val Text
   } deriving (Show, Eq)
 
@@ -48,6 +50,7 @@
     , fmap (("PlatformVersion",) . toJSON) _eCSServicePlatformVersion
     , fmap (("Role",) . toJSON) _eCSServiceRole
     , fmap (("ServiceName",) . toJSON) _eCSServiceServiceName
+    , fmap (("ServiceRegistries",) . toJSON) _eCSServiceServiceRegistries
     , (Just . ("TaskDefinition",) . toJSON) _eCSServiceTaskDefinition
     ]
 
@@ -66,6 +69,7 @@
       (obj .:? "PlatformVersion") <*>
       (obj .:? "Role") <*>
       (obj .:? "ServiceName") <*>
+      (obj .:? "ServiceRegistries") <*>
       (obj .: "TaskDefinition")
   parseJSON _ = mempty
 
@@ -87,6 +91,7 @@
   , _eCSServicePlatformVersion = Nothing
   , _eCSServiceRole = Nothing
   , _eCSServiceServiceName = Nothing
+  , _eCSServiceServiceRegistries = Nothing
   , _eCSServiceTaskDefinition = taskDefinitionarg
   }
 
@@ -137,6 +142,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-servicename
 ecssServiceName :: Lens' ECSService (Maybe (Val Text))
 ecssServiceName = lens _eCSServiceServiceName (\s a -> s { _eCSServiceServiceName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-serviceregistries
+ecssServiceRegistries :: Lens' ECSService (Maybe [ECSServiceServiceRegistry])
+ecssServiceRegistries = lens _eCSServiceServiceRegistries (\s a -> s { _eCSServiceServiceRegistries = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-taskdefinition
 ecssTaskDefinition :: Lens' ECSService (Val Text)
diff --git a/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs b/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
--- a/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
+++ b/library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
@@ -9,6 +9,7 @@
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.ElasticsearchDomainEBSOptions
 import Stratosphere.ResourceProperties.ElasticsearchDomainElasticsearchClusterConfig
+import Stratosphere.ResourceProperties.ElasticsearchDomainEncryptionAtRestOptions
 import Stratosphere.ResourceProperties.ElasticsearchDomainSnapshotOptions
 import Stratosphere.ResourceProperties.Tag
 import Stratosphere.ResourceProperties.ElasticsearchDomainVPCOptions
@@ -23,6 +24,7 @@
   , _elasticsearchDomainEBSOptions :: Maybe ElasticsearchDomainEBSOptions
   , _elasticsearchDomainElasticsearchClusterConfig :: Maybe ElasticsearchDomainElasticsearchClusterConfig
   , _elasticsearchDomainElasticsearchVersion :: Maybe (Val Text)
+  , _elasticsearchDomainEncryptionAtRestOptions :: Maybe ElasticsearchDomainEncryptionAtRestOptions
   , _elasticsearchDomainSnapshotOptions :: Maybe ElasticsearchDomainSnapshotOptions
   , _elasticsearchDomainTags :: Maybe [Tag]
   , _elasticsearchDomainVPCOptions :: Maybe ElasticsearchDomainVPCOptions
@@ -38,6 +40,7 @@
     , fmap (("EBSOptions",) . toJSON) _elasticsearchDomainEBSOptions
     , fmap (("ElasticsearchClusterConfig",) . toJSON) _elasticsearchDomainElasticsearchClusterConfig
     , fmap (("ElasticsearchVersion",) . toJSON) _elasticsearchDomainElasticsearchVersion
+    , fmap (("EncryptionAtRestOptions",) . toJSON) _elasticsearchDomainEncryptionAtRestOptions
     , fmap (("SnapshotOptions",) . toJSON) _elasticsearchDomainSnapshotOptions
     , fmap (("Tags",) . toJSON) _elasticsearchDomainTags
     , fmap (("VPCOptions",) . toJSON) _elasticsearchDomainVPCOptions
@@ -52,6 +55,7 @@
       (obj .:? "EBSOptions") <*>
       (obj .:? "ElasticsearchClusterConfig") <*>
       (obj .:? "ElasticsearchVersion") <*>
+      (obj .:? "EncryptionAtRestOptions") <*>
       (obj .:? "SnapshotOptions") <*>
       (obj .:? "Tags") <*>
       (obj .:? "VPCOptions")
@@ -69,6 +73,7 @@
   , _elasticsearchDomainEBSOptions = Nothing
   , _elasticsearchDomainElasticsearchClusterConfig = Nothing
   , _elasticsearchDomainElasticsearchVersion = Nothing
+  , _elasticsearchDomainEncryptionAtRestOptions = Nothing
   , _elasticsearchDomainSnapshotOptions = Nothing
   , _elasticsearchDomainTags = Nothing
   , _elasticsearchDomainVPCOptions = Nothing
@@ -97,6 +102,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-elasticsearchversion
 edElasticsearchVersion :: Lens' ElasticsearchDomain (Maybe (Val Text))
 edElasticsearchVersion = lens _elasticsearchDomainElasticsearchVersion (\s a -> s { _elasticsearchDomainElasticsearchVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-encryptionatrestoptions
+edEncryptionAtRestOptions :: Lens' ElasticsearchDomain (Maybe ElasticsearchDomainEncryptionAtRestOptions)
+edEncryptionAtRestOptions = lens _elasticsearchDomainEncryptionAtRestOptions (\s a -> s { _elasticsearchDomainEncryptionAtRestOptions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-snapshotoptions
 edSnapshotOptions :: Lens' ElasticsearchDomain (Maybe ElasticsearchDomainSnapshotOptions)
diff --git a/library-gen/Stratosphere/Resources/IAMRole.hs b/library-gen/Stratosphere/Resources/IAMRole.hs
--- a/library-gen/Stratosphere/Resources/IAMRole.hs
+++ b/library-gen/Stratosphere/Resources/IAMRole.hs
@@ -15,6 +15,7 @@
   IAMRole
   { _iAMRoleAssumeRolePolicyDocument :: Object
   , _iAMRoleManagedPolicyArns :: Maybe (ValList Text)
+  , _iAMRoleMaxSessionDuration :: Maybe (Val Integer)
   , _iAMRolePath :: Maybe (Val Text)
   , _iAMRolePolicies :: Maybe [IAMRolePolicy]
   , _iAMRoleRoleName :: Maybe (Val Text)
@@ -26,6 +27,7 @@
     catMaybes
     [ (Just . ("AssumeRolePolicyDocument",) . toJSON) _iAMRoleAssumeRolePolicyDocument
     , fmap (("ManagedPolicyArns",) . toJSON) _iAMRoleManagedPolicyArns
+    , fmap (("MaxSessionDuration",) . toJSON . fmap Integer') _iAMRoleMaxSessionDuration
     , fmap (("Path",) . toJSON) _iAMRolePath
     , fmap (("Policies",) . toJSON) _iAMRolePolicies
     , fmap (("RoleName",) . toJSON) _iAMRoleRoleName
@@ -36,6 +38,7 @@
     IAMRole <$>
       (obj .: "AssumeRolePolicyDocument") <*>
       (obj .:? "ManagedPolicyArns") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxSessionDuration") <*>
       (obj .:? "Path") <*>
       (obj .:? "Policies") <*>
       (obj .:? "RoleName")
@@ -49,6 +52,7 @@
   IAMRole
   { _iAMRoleAssumeRolePolicyDocument = assumeRolePolicyDocumentarg
   , _iAMRoleManagedPolicyArns = Nothing
+  , _iAMRoleMaxSessionDuration = Nothing
   , _iAMRolePath = Nothing
   , _iAMRolePolicies = Nothing
   , _iAMRoleRoleName = Nothing
@@ -61,6 +65,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns
 iamrManagedPolicyArns :: Lens' IAMRole (Maybe (ValList Text))
 iamrManagedPolicyArns = lens _iAMRoleManagedPolicyArns (\s a -> s { _iAMRoleManagedPolicyArns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-maxsessionduration
+iamrMaxSessionDuration :: Lens' IAMRole (Maybe (Val Integer))
+iamrMaxSessionDuration = lens _iAMRoleMaxSessionDuration (\s a -> s { _iAMRoleMaxSessionDuration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path
 iamrPath :: Lens' IAMRole (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs b/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
--- a/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
+++ b/library-gen/Stratosphere/Resources/KinesisFirehoseDeliveryStream.hs
@@ -12,6 +12,7 @@
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
 
 -- | Full data type definition for KinesisFirehoseDeliveryStream. See
 -- 'kinesisFirehoseDeliveryStream' for a more convenient constructor.
@@ -24,6 +25,7 @@
   , _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration :: Maybe KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
   , _kinesisFirehoseDeliveryStreamS3DestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
   } deriving (Show, Eq)
 
 instance ToJSON KinesisFirehoseDeliveryStream where
@@ -37,6 +39,7 @@
     , fmap (("KinesisStreamSourceConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
     , fmap (("RedshiftDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
     , fmap (("S3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfiguration
+    , fmap (("SplunkDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
     ]
 
 instance FromJSON KinesisFirehoseDeliveryStream where
@@ -48,7 +51,8 @@
       (obj .:? "ExtendedS3DestinationConfiguration") <*>
       (obj .:? "KinesisStreamSourceConfiguration") <*>
       (obj .:? "RedshiftDestinationConfiguration") <*>
-      (obj .:? "S3DestinationConfiguration")
+      (obj .:? "S3DestinationConfiguration") <*>
+      (obj .:? "SplunkDestinationConfiguration")
   parseJSON _ = mempty
 
 -- | Constructor for 'KinesisFirehoseDeliveryStream' containing required
@@ -64,6 +68,7 @@
   , _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-deliverystreamname
@@ -93,3 +98,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration
 kfdsS3DestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamS3DestinationConfiguration)
 kfdsS3DestinationConfiguration = lens _kinesisFirehoseDeliveryStreamS3DestinationConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamS3DestinationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-splunkdestinationconfiguration
+kfdsSplunkDestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration)
+kfdsSplunkDestinationConfiguration = lens _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamSplunkDestinationConfiguration = a })
diff --git a/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs b/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
--- a/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
+++ b/library-gen/Stratosphere/Resources/LambdaEventSourceMapping.hs
@@ -17,7 +17,7 @@
   , _lambdaEventSourceMappingEnabled :: Maybe (Val Bool)
   , _lambdaEventSourceMappingEventSourceArn :: Val Text
   , _lambdaEventSourceMappingFunctionName :: Val Text
-  , _lambdaEventSourceMappingStartingPosition :: Val Text
+  , _lambdaEventSourceMappingStartingPosition :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON LambdaEventSourceMapping where
@@ -28,7 +28,7 @@
     , fmap (("Enabled",) . toJSON . fmap Bool') _lambdaEventSourceMappingEnabled
     , (Just . ("EventSourceArn",) . toJSON) _lambdaEventSourceMappingEventSourceArn
     , (Just . ("FunctionName",) . toJSON) _lambdaEventSourceMappingFunctionName
-    , (Just . ("StartingPosition",) . toJSON) _lambdaEventSourceMappingStartingPosition
+    , fmap (("StartingPosition",) . toJSON) _lambdaEventSourceMappingStartingPosition
     ]
 
 instance FromJSON LambdaEventSourceMapping where
@@ -38,7 +38,7 @@
       fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
       (obj .: "EventSourceArn") <*>
       (obj .: "FunctionName") <*>
-      (obj .: "StartingPosition")
+      (obj .:? "StartingPosition")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaEventSourceMapping' containing required fields as
@@ -46,15 +46,14 @@
 lambdaEventSourceMapping
   :: Val Text -- ^ 'lesmEventSourceArn'
   -> Val Text -- ^ 'lesmFunctionName'
-  -> Val Text -- ^ 'lesmStartingPosition'
   -> LambdaEventSourceMapping
-lambdaEventSourceMapping eventSourceArnarg functionNamearg startingPositionarg =
+lambdaEventSourceMapping eventSourceArnarg functionNamearg =
   LambdaEventSourceMapping
   { _lambdaEventSourceMappingBatchSize = Nothing
   , _lambdaEventSourceMappingEnabled = Nothing
   , _lambdaEventSourceMappingEventSourceArn = eventSourceArnarg
   , _lambdaEventSourceMappingFunctionName = functionNamearg
-  , _lambdaEventSourceMappingStartingPosition = startingPositionarg
+  , _lambdaEventSourceMappingStartingPosition = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-batchsize
@@ -74,5 +73,5 @@
 lesmFunctionName = lens _lambdaEventSourceMappingFunctionName (\s a -> s { _lambdaEventSourceMappingFunctionName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-startingposition
-lesmStartingPosition :: Lens' LambdaEventSourceMapping (Val Text)
+lesmStartingPosition :: Lens' LambdaEventSourceMapping (Maybe (Val Text))
 lesmStartingPosition = lens _lambdaEventSourceMappingStartingPosition (\s a -> s { _lambdaEventSourceMappingStartingPosition = a })
diff --git a/library-gen/Stratosphere/Resources/SSMAssociation.hs b/library-gen/Stratosphere/Resources/SSMAssociation.hs
--- a/library-gen/Stratosphere/Resources/SSMAssociation.hs
+++ b/library-gen/Stratosphere/Resources/SSMAssociation.hs
@@ -7,6 +7,7 @@
 module Stratosphere.Resources.SSMAssociation where
 
 import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.SSMAssociationInstanceAssociationOutputLocation
 import Stratosphere.ResourceProperties.SSMAssociationParameterValues
 import Stratosphere.ResourceProperties.SSMAssociationTarget
 
@@ -18,6 +19,7 @@
   , _sSMAssociationDocumentVersion :: Maybe (Val Text)
   , _sSMAssociationInstanceId :: Maybe (Val Text)
   , _sSMAssociationName :: Val Text
+  , _sSMAssociationOutputLocation :: Maybe SSMAssociationInstanceAssociationOutputLocation
   , _sSMAssociationParameters :: Maybe (Map Text SSMAssociationParameterValues)
   , _sSMAssociationScheduleExpression :: Maybe (Val Text)
   , _sSMAssociationTargets :: Maybe [SSMAssociationTarget]
@@ -31,6 +33,7 @@
     , fmap (("DocumentVersion",) . toJSON) _sSMAssociationDocumentVersion
     , fmap (("InstanceId",) . toJSON) _sSMAssociationInstanceId
     , (Just . ("Name",) . toJSON) _sSMAssociationName
+    , fmap (("OutputLocation",) . toJSON) _sSMAssociationOutputLocation
     , fmap (("Parameters",) . toJSON) _sSMAssociationParameters
     , fmap (("ScheduleExpression",) . toJSON) _sSMAssociationScheduleExpression
     , fmap (("Targets",) . toJSON) _sSMAssociationTargets
@@ -43,6 +46,7 @@
       (obj .:? "DocumentVersion") <*>
       (obj .:? "InstanceId") <*>
       (obj .: "Name") <*>
+      (obj .:? "OutputLocation") <*>
       (obj .:? "Parameters") <*>
       (obj .:? "ScheduleExpression") <*>
       (obj .:? "Targets")
@@ -58,6 +62,7 @@
   , _sSMAssociationDocumentVersion = Nothing
   , _sSMAssociationInstanceId = Nothing
   , _sSMAssociationName = namearg
+  , _sSMAssociationOutputLocation = Nothing
   , _sSMAssociationParameters = Nothing
   , _sSMAssociationScheduleExpression = Nothing
   , _sSMAssociationTargets = Nothing
@@ -78,6 +83,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-name
 ssmaName :: Lens' SSMAssociation (Val Text)
 ssmaName = lens _sSMAssociationName (\s a -> s { _sSMAssociationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-outputlocation
+ssmaOutputLocation :: Lens' SSMAssociation (Maybe SSMAssociationInstanceAssociationOutputLocation)
+ssmaOutputLocation = lens _sSMAssociationOutputLocation (\s a -> s { _sSMAssociationOutputLocation = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-parameters
 ssmaParameters :: Lens' SSMAssociation (Maybe (Map Text SSMAssociationParameterValues))
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogAcceptedPortfolioShare.hs b/library-gen/Stratosphere/Resources/ServiceCatalogAcceptedPortfolioShare.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogAcceptedPortfolioShare.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-acceptedportfolioshare.html
+
+module Stratosphere.Resources.ServiceCatalogAcceptedPortfolioShare where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogAcceptedPortfolioShare. See
+-- 'serviceCatalogAcceptedPortfolioShare' for a more convenient constructor.
+data ServiceCatalogAcceptedPortfolioShare =
+  ServiceCatalogAcceptedPortfolioShare
+  { _serviceCatalogAcceptedPortfolioShareAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogAcceptedPortfolioSharePortfolioId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogAcceptedPortfolioShare where
+  toJSON ServiceCatalogAcceptedPortfolioShare{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogAcceptedPortfolioShareAcceptLanguage
+    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogAcceptedPortfolioSharePortfolioId
+    ]
+
+instance FromJSON ServiceCatalogAcceptedPortfolioShare where
+  parseJSON (Object obj) =
+    ServiceCatalogAcceptedPortfolioShare <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .: "PortfolioId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogAcceptedPortfolioShare' containing
+-- required fields as arguments.
+serviceCatalogAcceptedPortfolioShare
+  :: Val Text -- ^ 'scapsPortfolioId'
+  -> ServiceCatalogAcceptedPortfolioShare
+serviceCatalogAcceptedPortfolioShare portfolioIdarg =
+  ServiceCatalogAcceptedPortfolioShare
+  { _serviceCatalogAcceptedPortfolioShareAcceptLanguage = Nothing
+  , _serviceCatalogAcceptedPortfolioSharePortfolioId = portfolioIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-acceptedportfolioshare.html#cfn-servicecatalog-acceptedportfolioshare-acceptlanguage
+scapsAcceptLanguage :: Lens' ServiceCatalogAcceptedPortfolioShare (Maybe (Val Text))
+scapsAcceptLanguage = lens _serviceCatalogAcceptedPortfolioShareAcceptLanguage (\s a -> s { _serviceCatalogAcceptedPortfolioShareAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-acceptedportfolioshare.html#cfn-servicecatalog-acceptedportfolioshare-portfolioid
+scapsPortfolioId :: Lens' ServiceCatalogAcceptedPortfolioShare (Val Text)
+scapsPortfolioId = lens _serviceCatalogAcceptedPortfolioSharePortfolioId (\s a -> s { _serviceCatalogAcceptedPortfolioSharePortfolioId = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProduct.hs b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProduct.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogCloudFormationProduct.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html
+
+module Stratosphere.Resources.ServiceCatalogCloudFormationProduct where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for ServiceCatalogCloudFormationProduct. See
+-- 'serviceCatalogCloudFormationProduct' for a more convenient constructor.
+data ServiceCatalogCloudFormationProduct =
+  ServiceCatalogCloudFormationProduct
+  { _serviceCatalogCloudFormationProductAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProductDescription :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProductDistributor :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProductName :: Val Text
+  , _serviceCatalogCloudFormationProductOwner :: Val Text
+  , _serviceCatalogCloudFormationProductProvisioningArtifactParameters :: [ServiceCatalogCloudFormationProductProvisioningArtifactProperties]
+  , _serviceCatalogCloudFormationProductSupportDescription :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProductSupportEmail :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProductSupportUrl :: Maybe (Val Text)
+  , _serviceCatalogCloudFormationProductTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogCloudFormationProduct where
+  toJSON ServiceCatalogCloudFormationProduct{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogCloudFormationProductAcceptLanguage
+    , fmap (("Description",) . toJSON) _serviceCatalogCloudFormationProductDescription
+    , fmap (("Distributor",) . toJSON) _serviceCatalogCloudFormationProductDistributor
+    , (Just . ("Name",) . toJSON) _serviceCatalogCloudFormationProductName
+    , (Just . ("Owner",) . toJSON) _serviceCatalogCloudFormationProductOwner
+    , (Just . ("ProvisioningArtifactParameters",) . toJSON) _serviceCatalogCloudFormationProductProvisioningArtifactParameters
+    , fmap (("SupportDescription",) . toJSON) _serviceCatalogCloudFormationProductSupportDescription
+    , fmap (("SupportEmail",) . toJSON) _serviceCatalogCloudFormationProductSupportEmail
+    , fmap (("SupportUrl",) . toJSON) _serviceCatalogCloudFormationProductSupportUrl
+    , fmap (("Tags",) . toJSON) _serviceCatalogCloudFormationProductTags
+    ]
+
+instance FromJSON ServiceCatalogCloudFormationProduct where
+  parseJSON (Object obj) =
+    ServiceCatalogCloudFormationProduct <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Distributor") <*>
+      (obj .: "Name") <*>
+      (obj .: "Owner") <*>
+      (obj .: "ProvisioningArtifactParameters") <*>
+      (obj .:? "SupportDescription") <*>
+      (obj .:? "SupportEmail") <*>
+      (obj .:? "SupportUrl") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogCloudFormationProduct' containing required
+-- fields as arguments.
+serviceCatalogCloudFormationProduct
+  :: Val Text -- ^ 'sccfpName'
+  -> Val Text -- ^ 'sccfpOwner'
+  -> [ServiceCatalogCloudFormationProductProvisioningArtifactProperties] -- ^ 'sccfpProvisioningArtifactParameters'
+  -> ServiceCatalogCloudFormationProduct
+serviceCatalogCloudFormationProduct namearg ownerarg provisioningArtifactParametersarg =
+  ServiceCatalogCloudFormationProduct
+  { _serviceCatalogCloudFormationProductAcceptLanguage = Nothing
+  , _serviceCatalogCloudFormationProductDescription = Nothing
+  , _serviceCatalogCloudFormationProductDistributor = Nothing
+  , _serviceCatalogCloudFormationProductName = namearg
+  , _serviceCatalogCloudFormationProductOwner = ownerarg
+  , _serviceCatalogCloudFormationProductProvisioningArtifactParameters = provisioningArtifactParametersarg
+  , _serviceCatalogCloudFormationProductSupportDescription = Nothing
+  , _serviceCatalogCloudFormationProductSupportEmail = Nothing
+  , _serviceCatalogCloudFormationProductSupportUrl = Nothing
+  , _serviceCatalogCloudFormationProductTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-acceptlanguage
+sccfpAcceptLanguage :: Lens' ServiceCatalogCloudFormationProduct (Maybe (Val Text))
+sccfpAcceptLanguage = lens _serviceCatalogCloudFormationProductAcceptLanguage (\s a -> s { _serviceCatalogCloudFormationProductAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-description
+sccfpDescription :: Lens' ServiceCatalogCloudFormationProduct (Maybe (Val Text))
+sccfpDescription = lens _serviceCatalogCloudFormationProductDescription (\s a -> s { _serviceCatalogCloudFormationProductDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-distributor
+sccfpDistributor :: Lens' ServiceCatalogCloudFormationProduct (Maybe (Val Text))
+sccfpDistributor = lens _serviceCatalogCloudFormationProductDistributor (\s a -> s { _serviceCatalogCloudFormationProductDistributor = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-name
+sccfpName :: Lens' ServiceCatalogCloudFormationProduct (Val Text)
+sccfpName = lens _serviceCatalogCloudFormationProductName (\s a -> s { _serviceCatalogCloudFormationProductName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-owner
+sccfpOwner :: Lens' ServiceCatalogCloudFormationProduct (Val Text)
+sccfpOwner = lens _serviceCatalogCloudFormationProductOwner (\s a -> s { _serviceCatalogCloudFormationProductOwner = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactparameters
+sccfpProvisioningArtifactParameters :: Lens' ServiceCatalogCloudFormationProduct [ServiceCatalogCloudFormationProductProvisioningArtifactProperties]
+sccfpProvisioningArtifactParameters = lens _serviceCatalogCloudFormationProductProvisioningArtifactParameters (\s a -> s { _serviceCatalogCloudFormationProductProvisioningArtifactParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-supportdescription
+sccfpSupportDescription :: Lens' ServiceCatalogCloudFormationProduct (Maybe (Val Text))
+sccfpSupportDescription = lens _serviceCatalogCloudFormationProductSupportDescription (\s a -> s { _serviceCatalogCloudFormationProductSupportDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-supportemail
+sccfpSupportEmail :: Lens' ServiceCatalogCloudFormationProduct (Maybe (Val Text))
+sccfpSupportEmail = lens _serviceCatalogCloudFormationProductSupportEmail (\s a -> s { _serviceCatalogCloudFormationProductSupportEmail = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-supporturl
+sccfpSupportUrl :: Lens' ServiceCatalogCloudFormationProduct (Maybe (Val Text))
+sccfpSupportUrl = lens _serviceCatalogCloudFormationProductSupportUrl (\s a -> s { _serviceCatalogCloudFormationProductSupportUrl = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html#cfn-servicecatalog-cloudformationproduct-tags
+sccfpTags :: Lens' ServiceCatalogCloudFormationProduct (Maybe [Tag])
+sccfpTags = lens _serviceCatalogCloudFormationProductTags (\s a -> s { _serviceCatalogCloudFormationProductTags = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchNotificationConstraint.hs b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchNotificationConstraint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchNotificationConstraint.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchnotificationconstraint.html
+
+module Stratosphere.Resources.ServiceCatalogLaunchNotificationConstraint where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogLaunchNotificationConstraint.
+-- See 'serviceCatalogLaunchNotificationConstraint' for a more convenient
+-- constructor.
+data ServiceCatalogLaunchNotificationConstraint =
+  ServiceCatalogLaunchNotificationConstraint
+  { _serviceCatalogLaunchNotificationConstraintAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogLaunchNotificationConstraintDescription :: Maybe (Val Text)
+  , _serviceCatalogLaunchNotificationConstraintNotificationArns :: ValList Text
+  , _serviceCatalogLaunchNotificationConstraintPortfolioId :: Val Text
+  , _serviceCatalogLaunchNotificationConstraintProductId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogLaunchNotificationConstraint where
+  toJSON ServiceCatalogLaunchNotificationConstraint{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchNotificationConstraintAcceptLanguage
+    , fmap (("Description",) . toJSON) _serviceCatalogLaunchNotificationConstraintDescription
+    , (Just . ("NotificationArns",) . toJSON) _serviceCatalogLaunchNotificationConstraintNotificationArns
+    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchNotificationConstraintPortfolioId
+    , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchNotificationConstraintProductId
+    ]
+
+instance FromJSON ServiceCatalogLaunchNotificationConstraint where
+  parseJSON (Object obj) =
+    ServiceCatalogLaunchNotificationConstraint <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .:? "Description") <*>
+      (obj .: "NotificationArns") <*>
+      (obj .: "PortfolioId") <*>
+      (obj .: "ProductId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogLaunchNotificationConstraint' containing
+-- required fields as arguments.
+serviceCatalogLaunchNotificationConstraint
+  :: ValList Text -- ^ 'sclncNotificationArns'
+  -> Val Text -- ^ 'sclncPortfolioId'
+  -> Val Text -- ^ 'sclncProductId'
+  -> ServiceCatalogLaunchNotificationConstraint
+serviceCatalogLaunchNotificationConstraint notificationArnsarg portfolioIdarg productIdarg =
+  ServiceCatalogLaunchNotificationConstraint
+  { _serviceCatalogLaunchNotificationConstraintAcceptLanguage = Nothing
+  , _serviceCatalogLaunchNotificationConstraintDescription = Nothing
+  , _serviceCatalogLaunchNotificationConstraintNotificationArns = notificationArnsarg
+  , _serviceCatalogLaunchNotificationConstraintPortfolioId = portfolioIdarg
+  , _serviceCatalogLaunchNotificationConstraintProductId = productIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchnotificationconstraint.html#cfn-servicecatalog-launchnotificationconstraint-acceptlanguage
+sclncAcceptLanguage :: Lens' ServiceCatalogLaunchNotificationConstraint (Maybe (Val Text))
+sclncAcceptLanguage = lens _serviceCatalogLaunchNotificationConstraintAcceptLanguage (\s a -> s { _serviceCatalogLaunchNotificationConstraintAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchnotificationconstraint.html#cfn-servicecatalog-launchnotificationconstraint-description
+sclncDescription :: Lens' ServiceCatalogLaunchNotificationConstraint (Maybe (Val Text))
+sclncDescription = lens _serviceCatalogLaunchNotificationConstraintDescription (\s a -> s { _serviceCatalogLaunchNotificationConstraintDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchnotificationconstraint.html#cfn-servicecatalog-launchnotificationconstraint-notificationarns
+sclncNotificationArns :: Lens' ServiceCatalogLaunchNotificationConstraint (ValList Text)
+sclncNotificationArns = lens _serviceCatalogLaunchNotificationConstraintNotificationArns (\s a -> s { _serviceCatalogLaunchNotificationConstraintNotificationArns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchnotificationconstraint.html#cfn-servicecatalog-launchnotificationconstraint-portfolioid
+sclncPortfolioId :: Lens' ServiceCatalogLaunchNotificationConstraint (Val Text)
+sclncPortfolioId = lens _serviceCatalogLaunchNotificationConstraintPortfolioId (\s a -> s { _serviceCatalogLaunchNotificationConstraintPortfolioId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchnotificationconstraint.html#cfn-servicecatalog-launchnotificationconstraint-productid
+sclncProductId :: Lens' ServiceCatalogLaunchNotificationConstraint (Val Text)
+sclncProductId = lens _serviceCatalogLaunchNotificationConstraintProductId (\s a -> s { _serviceCatalogLaunchNotificationConstraintProductId = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchRoleConstraint.hs b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchRoleConstraint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchRoleConstraint.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchroleconstraint.html
+
+module Stratosphere.Resources.ServiceCatalogLaunchRoleConstraint where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogLaunchRoleConstraint. See
+-- 'serviceCatalogLaunchRoleConstraint' for a more convenient constructor.
+data ServiceCatalogLaunchRoleConstraint =
+  ServiceCatalogLaunchRoleConstraint
+  { _serviceCatalogLaunchRoleConstraintAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogLaunchRoleConstraintDescription :: Maybe (Val Text)
+  , _serviceCatalogLaunchRoleConstraintPortfolioId :: Val Text
+  , _serviceCatalogLaunchRoleConstraintProductId :: Val Text
+  , _serviceCatalogLaunchRoleConstraintRoleArn :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogLaunchRoleConstraint where
+  toJSON ServiceCatalogLaunchRoleConstraint{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchRoleConstraintAcceptLanguage
+    , fmap (("Description",) . toJSON) _serviceCatalogLaunchRoleConstraintDescription
+    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchRoleConstraintPortfolioId
+    , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchRoleConstraintProductId
+    , (Just . ("RoleArn",) . toJSON) _serviceCatalogLaunchRoleConstraintRoleArn
+    ]
+
+instance FromJSON ServiceCatalogLaunchRoleConstraint where
+  parseJSON (Object obj) =
+    ServiceCatalogLaunchRoleConstraint <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .:? "Description") <*>
+      (obj .: "PortfolioId") <*>
+      (obj .: "ProductId") <*>
+      (obj .: "RoleArn")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogLaunchRoleConstraint' containing required
+-- fields as arguments.
+serviceCatalogLaunchRoleConstraint
+  :: Val Text -- ^ 'sclrcPortfolioId'
+  -> Val Text -- ^ 'sclrcProductId'
+  -> Val Text -- ^ 'sclrcRoleArn'
+  -> ServiceCatalogLaunchRoleConstraint
+serviceCatalogLaunchRoleConstraint portfolioIdarg productIdarg roleArnarg =
+  ServiceCatalogLaunchRoleConstraint
+  { _serviceCatalogLaunchRoleConstraintAcceptLanguage = Nothing
+  , _serviceCatalogLaunchRoleConstraintDescription = Nothing
+  , _serviceCatalogLaunchRoleConstraintPortfolioId = portfolioIdarg
+  , _serviceCatalogLaunchRoleConstraintProductId = productIdarg
+  , _serviceCatalogLaunchRoleConstraintRoleArn = roleArnarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchroleconstraint.html#cfn-servicecatalog-launchroleconstraint-acceptlanguage
+sclrcAcceptLanguage :: Lens' ServiceCatalogLaunchRoleConstraint (Maybe (Val Text))
+sclrcAcceptLanguage = lens _serviceCatalogLaunchRoleConstraintAcceptLanguage (\s a -> s { _serviceCatalogLaunchRoleConstraintAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchroleconstraint.html#cfn-servicecatalog-launchroleconstraint-description
+sclrcDescription :: Lens' ServiceCatalogLaunchRoleConstraint (Maybe (Val Text))
+sclrcDescription = lens _serviceCatalogLaunchRoleConstraintDescription (\s a -> s { _serviceCatalogLaunchRoleConstraintDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchroleconstraint.html#cfn-servicecatalog-launchroleconstraint-portfolioid
+sclrcPortfolioId :: Lens' ServiceCatalogLaunchRoleConstraint (Val Text)
+sclrcPortfolioId = lens _serviceCatalogLaunchRoleConstraintPortfolioId (\s a -> s { _serviceCatalogLaunchRoleConstraintPortfolioId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchroleconstraint.html#cfn-servicecatalog-launchroleconstraint-productid
+sclrcProductId :: Lens' ServiceCatalogLaunchRoleConstraint (Val Text)
+sclrcProductId = lens _serviceCatalogLaunchRoleConstraintProductId (\s a -> s { _serviceCatalogLaunchRoleConstraintProductId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchroleconstraint.html#cfn-servicecatalog-launchroleconstraint-rolearn
+sclrcRoleArn :: Lens' ServiceCatalogLaunchRoleConstraint (Val Text)
+sclrcRoleArn = lens _serviceCatalogLaunchRoleConstraintRoleArn (\s a -> s { _serviceCatalogLaunchRoleConstraintRoleArn = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogLaunchTemplateConstraint.hs b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchTemplateConstraint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogLaunchTemplateConstraint.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchtemplateconstraint.html
+
+module Stratosphere.Resources.ServiceCatalogLaunchTemplateConstraint where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogLaunchTemplateConstraint. See
+-- 'serviceCatalogLaunchTemplateConstraint' for a more convenient
+-- constructor.
+data ServiceCatalogLaunchTemplateConstraint =
+  ServiceCatalogLaunchTemplateConstraint
+  { _serviceCatalogLaunchTemplateConstraintAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogLaunchTemplateConstraintDescription :: Maybe (Val Text)
+  , _serviceCatalogLaunchTemplateConstraintPortfolioId :: Val Text
+  , _serviceCatalogLaunchTemplateConstraintProductId :: Val Text
+  , _serviceCatalogLaunchTemplateConstraintRules :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogLaunchTemplateConstraint where
+  toJSON ServiceCatalogLaunchTemplateConstraint{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogLaunchTemplateConstraintAcceptLanguage
+    , fmap (("Description",) . toJSON) _serviceCatalogLaunchTemplateConstraintDescription
+    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogLaunchTemplateConstraintPortfolioId
+    , (Just . ("ProductId",) . toJSON) _serviceCatalogLaunchTemplateConstraintProductId
+    , (Just . ("Rules",) . toJSON) _serviceCatalogLaunchTemplateConstraintRules
+    ]
+
+instance FromJSON ServiceCatalogLaunchTemplateConstraint where
+  parseJSON (Object obj) =
+    ServiceCatalogLaunchTemplateConstraint <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .:? "Description") <*>
+      (obj .: "PortfolioId") <*>
+      (obj .: "ProductId") <*>
+      (obj .: "Rules")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogLaunchTemplateConstraint' containing
+-- required fields as arguments.
+serviceCatalogLaunchTemplateConstraint
+  :: Val Text -- ^ 'scltcPortfolioId'
+  -> Val Text -- ^ 'scltcProductId'
+  -> Val Text -- ^ 'scltcRules'
+  -> ServiceCatalogLaunchTemplateConstraint
+serviceCatalogLaunchTemplateConstraint portfolioIdarg productIdarg rulesarg =
+  ServiceCatalogLaunchTemplateConstraint
+  { _serviceCatalogLaunchTemplateConstraintAcceptLanguage = Nothing
+  , _serviceCatalogLaunchTemplateConstraintDescription = Nothing
+  , _serviceCatalogLaunchTemplateConstraintPortfolioId = portfolioIdarg
+  , _serviceCatalogLaunchTemplateConstraintProductId = productIdarg
+  , _serviceCatalogLaunchTemplateConstraintRules = rulesarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchtemplateconstraint.html#cfn-servicecatalog-launchtemplateconstraint-acceptlanguage
+scltcAcceptLanguage :: Lens' ServiceCatalogLaunchTemplateConstraint (Maybe (Val Text))
+scltcAcceptLanguage = lens _serviceCatalogLaunchTemplateConstraintAcceptLanguage (\s a -> s { _serviceCatalogLaunchTemplateConstraintAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchtemplateconstraint.html#cfn-servicecatalog-launchtemplateconstraint-description
+scltcDescription :: Lens' ServiceCatalogLaunchTemplateConstraint (Maybe (Val Text))
+scltcDescription = lens _serviceCatalogLaunchTemplateConstraintDescription (\s a -> s { _serviceCatalogLaunchTemplateConstraintDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchtemplateconstraint.html#cfn-servicecatalog-launchtemplateconstraint-portfolioid
+scltcPortfolioId :: Lens' ServiceCatalogLaunchTemplateConstraint (Val Text)
+scltcPortfolioId = lens _serviceCatalogLaunchTemplateConstraintPortfolioId (\s a -> s { _serviceCatalogLaunchTemplateConstraintPortfolioId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchtemplateconstraint.html#cfn-servicecatalog-launchtemplateconstraint-productid
+scltcProductId :: Lens' ServiceCatalogLaunchTemplateConstraint (Val Text)
+scltcProductId = lens _serviceCatalogLaunchTemplateConstraintProductId (\s a -> s { _serviceCatalogLaunchTemplateConstraintProductId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-launchtemplateconstraint.html#cfn-servicecatalog-launchtemplateconstraint-rules
+scltcRules :: Lens' ServiceCatalogLaunchTemplateConstraint (Val Text)
+scltcRules = lens _serviceCatalogLaunchTemplateConstraintRules (\s a -> s { _serviceCatalogLaunchTemplateConstraintRules = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolio.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolio.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolio.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html
+
+module Stratosphere.Resources.ServiceCatalogPortfolio where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for ServiceCatalogPortfolio. See
+-- 'serviceCatalogPortfolio' for a more convenient constructor.
+data ServiceCatalogPortfolio =
+  ServiceCatalogPortfolio
+  { _serviceCatalogPortfolioAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogPortfolioDescription :: Maybe (Val Text)
+  , _serviceCatalogPortfolioDisplayName :: Val Text
+  , _serviceCatalogPortfolioProviderName :: Val Text
+  , _serviceCatalogPortfolioTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogPortfolio where
+  toJSON ServiceCatalogPortfolio{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioAcceptLanguage
+    , fmap (("Description",) . toJSON) _serviceCatalogPortfolioDescription
+    , (Just . ("DisplayName",) . toJSON) _serviceCatalogPortfolioDisplayName
+    , (Just . ("ProviderName",) . toJSON) _serviceCatalogPortfolioProviderName
+    , fmap (("Tags",) . toJSON) _serviceCatalogPortfolioTags
+    ]
+
+instance FromJSON ServiceCatalogPortfolio where
+  parseJSON (Object obj) =
+    ServiceCatalogPortfolio <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .:? "Description") <*>
+      (obj .: "DisplayName") <*>
+      (obj .: "ProviderName") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogPortfolio' containing required fields as
+-- arguments.
+serviceCatalogPortfolio
+  :: Val Text -- ^ 'scpDisplayName'
+  -> Val Text -- ^ 'scpProviderName'
+  -> ServiceCatalogPortfolio
+serviceCatalogPortfolio displayNamearg providerNamearg =
+  ServiceCatalogPortfolio
+  { _serviceCatalogPortfolioAcceptLanguage = Nothing
+  , _serviceCatalogPortfolioDescription = Nothing
+  , _serviceCatalogPortfolioDisplayName = displayNamearg
+  , _serviceCatalogPortfolioProviderName = providerNamearg
+  , _serviceCatalogPortfolioTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html#cfn-servicecatalog-portfolio-acceptlanguage
+scpAcceptLanguage :: Lens' ServiceCatalogPortfolio (Maybe (Val Text))
+scpAcceptLanguage = lens _serviceCatalogPortfolioAcceptLanguage (\s a -> s { _serviceCatalogPortfolioAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html#cfn-servicecatalog-portfolio-description
+scpDescription :: Lens' ServiceCatalogPortfolio (Maybe (Val Text))
+scpDescription = lens _serviceCatalogPortfolioDescription (\s a -> s { _serviceCatalogPortfolioDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html#cfn-servicecatalog-portfolio-displayname
+scpDisplayName :: Lens' ServiceCatalogPortfolio (Val Text)
+scpDisplayName = lens _serviceCatalogPortfolioDisplayName (\s a -> s { _serviceCatalogPortfolioDisplayName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html#cfn-servicecatalog-portfolio-providername
+scpProviderName :: Lens' ServiceCatalogPortfolio (Val Text)
+scpProviderName = lens _serviceCatalogPortfolioProviderName (\s a -> s { _serviceCatalogPortfolioProviderName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html#cfn-servicecatalog-portfolio-tags
+scpTags :: Lens' ServiceCatalogPortfolio (Maybe [Tag])
+scpTags = lens _serviceCatalogPortfolioTags (\s a -> s { _serviceCatalogPortfolioTags = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioPrincipalAssociation.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html
+
+module Stratosphere.Resources.ServiceCatalogPortfolioPrincipalAssociation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ServiceCatalogPortfolioPrincipalAssociation. See
+-- 'serviceCatalogPortfolioPrincipalAssociation' for a more convenient
+-- constructor.
+data ServiceCatalogPortfolioPrincipalAssociation =
+  ServiceCatalogPortfolioPrincipalAssociation
+  { _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogPortfolioPrincipalAssociationPortfolioId :: Val Text
+  , _serviceCatalogPortfolioPrincipalAssociationPrincipalARN :: Val Text
+  , _serviceCatalogPortfolioPrincipalAssociationPrincipalType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogPortfolioPrincipalAssociation where
+  toJSON ServiceCatalogPortfolioPrincipalAssociation{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage
+    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPortfolioId
+    , (Just . ("PrincipalARN",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalARN
+    , (Just . ("PrincipalType",) . toJSON) _serviceCatalogPortfolioPrincipalAssociationPrincipalType
+    ]
+
+instance FromJSON ServiceCatalogPortfolioPrincipalAssociation where
+  parseJSON (Object obj) =
+    ServiceCatalogPortfolioPrincipalAssociation <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .: "PortfolioId") <*>
+      (obj .: "PrincipalARN") <*>
+      (obj .: "PrincipalType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogPortfolioPrincipalAssociation' containing
+-- required fields as arguments.
+serviceCatalogPortfolioPrincipalAssociation
+  :: Val Text -- ^ 'scppriaPortfolioId'
+  -> Val Text -- ^ 'scppriaPrincipalARN'
+  -> Val Text -- ^ 'scppriaPrincipalType'
+  -> ServiceCatalogPortfolioPrincipalAssociation
+serviceCatalogPortfolioPrincipalAssociation portfolioIdarg principalARNarg principalTypearg =
+  ServiceCatalogPortfolioPrincipalAssociation
+  { _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage = Nothing
+  , _serviceCatalogPortfolioPrincipalAssociationPortfolioId = portfolioIdarg
+  , _serviceCatalogPortfolioPrincipalAssociationPrincipalARN = principalARNarg
+  , _serviceCatalogPortfolioPrincipalAssociationPrincipalType = principalTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-acceptlanguage
+scppriaAcceptLanguage :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Maybe (Val Text))
+scppriaAcceptLanguage = lens _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-portfolioid
+scppriaPortfolioId :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Val Text)
+scppriaPortfolioId = lens _serviceCatalogPortfolioPrincipalAssociationPortfolioId (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationPortfolioId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-principalarn
+scppriaPrincipalARN :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Val Text)
+scppriaPrincipalARN = lens _serviceCatalogPortfolioPrincipalAssociationPrincipalARN (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationPrincipalARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioprincipalassociation.html#cfn-servicecatalog-portfolioprincipalassociation-principaltype
+scppriaPrincipalType :: Lens' ServiceCatalogPortfolioPrincipalAssociation (Val Text)
+scppriaPrincipalType = lens _serviceCatalogPortfolioPrincipalAssociationPrincipalType (\s a -> s { _serviceCatalogPortfolioPrincipalAssociationPrincipalType = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioProductAssociation.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioProductAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioProductAssociation.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioproductassociation.html
+
+module Stratosphere.Resources.ServiceCatalogPortfolioProductAssociation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogPortfolioProductAssociation.
+-- See 'serviceCatalogPortfolioProductAssociation' for a more convenient
+-- constructor.
+data ServiceCatalogPortfolioProductAssociation =
+  ServiceCatalogPortfolioProductAssociation
+  { _serviceCatalogPortfolioProductAssociationAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogPortfolioProductAssociationPortfolioId :: Val Text
+  , _serviceCatalogPortfolioProductAssociationProductId :: Val Text
+  , _serviceCatalogPortfolioProductAssociationSourcePortfolioId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogPortfolioProductAssociation where
+  toJSON ServiceCatalogPortfolioProductAssociation{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioProductAssociationAcceptLanguage
+    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioProductAssociationPortfolioId
+    , (Just . ("ProductId",) . toJSON) _serviceCatalogPortfolioProductAssociationProductId
+    , fmap (("SourcePortfolioId",) . toJSON) _serviceCatalogPortfolioProductAssociationSourcePortfolioId
+    ]
+
+instance FromJSON ServiceCatalogPortfolioProductAssociation where
+  parseJSON (Object obj) =
+    ServiceCatalogPortfolioProductAssociation <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .: "PortfolioId") <*>
+      (obj .: "ProductId") <*>
+      (obj .:? "SourcePortfolioId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogPortfolioProductAssociation' containing
+-- required fields as arguments.
+serviceCatalogPortfolioProductAssociation
+  :: Val Text -- ^ 'scpproaPortfolioId'
+  -> Val Text -- ^ 'scpproaProductId'
+  -> ServiceCatalogPortfolioProductAssociation
+serviceCatalogPortfolioProductAssociation portfolioIdarg productIdarg =
+  ServiceCatalogPortfolioProductAssociation
+  { _serviceCatalogPortfolioProductAssociationAcceptLanguage = Nothing
+  , _serviceCatalogPortfolioProductAssociationPortfolioId = portfolioIdarg
+  , _serviceCatalogPortfolioProductAssociationProductId = productIdarg
+  , _serviceCatalogPortfolioProductAssociationSourcePortfolioId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioproductassociation.html#cfn-servicecatalog-portfolioproductassociation-acceptlanguage
+scpproaAcceptLanguage :: Lens' ServiceCatalogPortfolioProductAssociation (Maybe (Val Text))
+scpproaAcceptLanguage = lens _serviceCatalogPortfolioProductAssociationAcceptLanguage (\s a -> s { _serviceCatalogPortfolioProductAssociationAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioproductassociation.html#cfn-servicecatalog-portfolioproductassociation-portfolioid
+scpproaPortfolioId :: Lens' ServiceCatalogPortfolioProductAssociation (Val Text)
+scpproaPortfolioId = lens _serviceCatalogPortfolioProductAssociationPortfolioId (\s a -> s { _serviceCatalogPortfolioProductAssociationPortfolioId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioproductassociation.html#cfn-servicecatalog-portfolioproductassociation-productid
+scpproaProductId :: Lens' ServiceCatalogPortfolioProductAssociation (Val Text)
+scpproaProductId = lens _serviceCatalogPortfolioProductAssociationProductId (\s a -> s { _serviceCatalogPortfolioProductAssociationProductId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioproductassociation.html#cfn-servicecatalog-portfolioproductassociation-sourceportfolioid
+scpproaSourcePortfolioId :: Lens' ServiceCatalogPortfolioProductAssociation (Maybe (Val Text))
+scpproaSourcePortfolioId = lens _serviceCatalogPortfolioProductAssociationSourcePortfolioId (\s a -> s { _serviceCatalogPortfolioProductAssociationSourcePortfolioId = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioShare.hs b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioShare.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogPortfolioShare.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioshare.html
+
+module Stratosphere.Resources.ServiceCatalogPortfolioShare where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogPortfolioShare. See
+-- 'serviceCatalogPortfolioShare' for a more convenient constructor.
+data ServiceCatalogPortfolioShare =
+  ServiceCatalogPortfolioShare
+  { _serviceCatalogPortfolioShareAcceptLanguage :: Maybe (Val Text)
+  , _serviceCatalogPortfolioShareAccountId :: Val Text
+  , _serviceCatalogPortfolioSharePortfolioId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogPortfolioShare where
+  toJSON ServiceCatalogPortfolioShare{..} =
+    object $
+    catMaybes
+    [ fmap (("AcceptLanguage",) . toJSON) _serviceCatalogPortfolioShareAcceptLanguage
+    , (Just . ("AccountId",) . toJSON) _serviceCatalogPortfolioShareAccountId
+    , (Just . ("PortfolioId",) . toJSON) _serviceCatalogPortfolioSharePortfolioId
+    ]
+
+instance FromJSON ServiceCatalogPortfolioShare where
+  parseJSON (Object obj) =
+    ServiceCatalogPortfolioShare <$>
+      (obj .:? "AcceptLanguage") <*>
+      (obj .: "AccountId") <*>
+      (obj .: "PortfolioId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogPortfolioShare' containing required fields
+-- as arguments.
+serviceCatalogPortfolioShare
+  :: Val Text -- ^ 'scpsAccountId'
+  -> Val Text -- ^ 'scpsPortfolioId'
+  -> ServiceCatalogPortfolioShare
+serviceCatalogPortfolioShare accountIdarg portfolioIdarg =
+  ServiceCatalogPortfolioShare
+  { _serviceCatalogPortfolioShareAcceptLanguage = Nothing
+  , _serviceCatalogPortfolioShareAccountId = accountIdarg
+  , _serviceCatalogPortfolioSharePortfolioId = portfolioIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioshare.html#cfn-servicecatalog-portfolioshare-acceptlanguage
+scpsAcceptLanguage :: Lens' ServiceCatalogPortfolioShare (Maybe (Val Text))
+scpsAcceptLanguage = lens _serviceCatalogPortfolioShareAcceptLanguage (\s a -> s { _serviceCatalogPortfolioShareAcceptLanguage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioshare.html#cfn-servicecatalog-portfolioshare-accountid
+scpsAccountId :: Lens' ServiceCatalogPortfolioShare (Val Text)
+scpsAccountId = lens _serviceCatalogPortfolioShareAccountId (\s a -> s { _serviceCatalogPortfolioShareAccountId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolioshare.html#cfn-servicecatalog-portfolioshare-portfolioid
+scpsPortfolioId :: Lens' ServiceCatalogPortfolioShare (Val Text)
+scpsPortfolioId = lens _serviceCatalogPortfolioSharePortfolioId (\s a -> s { _serviceCatalogPortfolioSharePortfolioId = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogTagOption.hs b/library-gen/Stratosphere/Resources/ServiceCatalogTagOption.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogTagOption.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoption.html
+
+module Stratosphere.Resources.ServiceCatalogTagOption where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogTagOption. See
+-- 'serviceCatalogTagOption' for a more convenient constructor.
+data ServiceCatalogTagOption =
+  ServiceCatalogTagOption
+  { _serviceCatalogTagOptionActive :: Maybe (Val Bool)
+  , _serviceCatalogTagOptionKey :: Val Text
+  , _serviceCatalogTagOptionValue :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogTagOption where
+  toJSON ServiceCatalogTagOption{..} =
+    object $
+    catMaybes
+    [ fmap (("Active",) . toJSON . fmap Bool') _serviceCatalogTagOptionActive
+    , (Just . ("Key",) . toJSON) _serviceCatalogTagOptionKey
+    , (Just . ("Value",) . toJSON) _serviceCatalogTagOptionValue
+    ]
+
+instance FromJSON ServiceCatalogTagOption where
+  parseJSON (Object obj) =
+    ServiceCatalogTagOption <$>
+      fmap (fmap (fmap unBool')) (obj .:? "Active") <*>
+      (obj .: "Key") <*>
+      (obj .: "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogTagOption' containing required fields as
+-- arguments.
+serviceCatalogTagOption
+  :: Val Text -- ^ 'sctoKey'
+  -> Val Text -- ^ 'sctoValue'
+  -> ServiceCatalogTagOption
+serviceCatalogTagOption keyarg valuearg =
+  ServiceCatalogTagOption
+  { _serviceCatalogTagOptionActive = Nothing
+  , _serviceCatalogTagOptionKey = keyarg
+  , _serviceCatalogTagOptionValue = valuearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoption.html#cfn-servicecatalog-tagoption-active
+sctoActive :: Lens' ServiceCatalogTagOption (Maybe (Val Bool))
+sctoActive = lens _serviceCatalogTagOptionActive (\s a -> s { _serviceCatalogTagOptionActive = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoption.html#cfn-servicecatalog-tagoption-key
+sctoKey :: Lens' ServiceCatalogTagOption (Val Text)
+sctoKey = lens _serviceCatalogTagOptionKey (\s a -> s { _serviceCatalogTagOptionKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoption.html#cfn-servicecatalog-tagoption-value
+sctoValue :: Lens' ServiceCatalogTagOption (Val Text)
+sctoValue = lens _serviceCatalogTagOptionValue (\s a -> s { _serviceCatalogTagOptionValue = a })
diff --git a/library-gen/Stratosphere/Resources/ServiceCatalogTagOptionAssociation.hs b/library-gen/Stratosphere/Resources/ServiceCatalogTagOptionAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ServiceCatalogTagOptionAssociation.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoptionassociation.html
+
+module Stratosphere.Resources.ServiceCatalogTagOptionAssociation where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ServiceCatalogTagOptionAssociation. See
+-- 'serviceCatalogTagOptionAssociation' for a more convenient constructor.
+data ServiceCatalogTagOptionAssociation =
+  ServiceCatalogTagOptionAssociation
+  { _serviceCatalogTagOptionAssociationResourceId :: Val Text
+  , _serviceCatalogTagOptionAssociationTagOptionId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ServiceCatalogTagOptionAssociation where
+  toJSON ServiceCatalogTagOptionAssociation{..} =
+    object $
+    catMaybes
+    [ (Just . ("ResourceId",) . toJSON) _serviceCatalogTagOptionAssociationResourceId
+    , (Just . ("TagOptionId",) . toJSON) _serviceCatalogTagOptionAssociationTagOptionId
+    ]
+
+instance FromJSON ServiceCatalogTagOptionAssociation where
+  parseJSON (Object obj) =
+    ServiceCatalogTagOptionAssociation <$>
+      (obj .: "ResourceId") <*>
+      (obj .: "TagOptionId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ServiceCatalogTagOptionAssociation' containing required
+-- fields as arguments.
+serviceCatalogTagOptionAssociation
+  :: Val Text -- ^ 'sctoaResourceId'
+  -> Val Text -- ^ 'sctoaTagOptionId'
+  -> ServiceCatalogTagOptionAssociation
+serviceCatalogTagOptionAssociation resourceIdarg tagOptionIdarg =
+  ServiceCatalogTagOptionAssociation
+  { _serviceCatalogTagOptionAssociationResourceId = resourceIdarg
+  , _serviceCatalogTagOptionAssociationTagOptionId = tagOptionIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoptionassociation.html#cfn-servicecatalog-tagoptionassociation-resourceid
+sctoaResourceId :: Lens' ServiceCatalogTagOptionAssociation (Val Text)
+sctoaResourceId = lens _serviceCatalogTagOptionAssociationResourceId (\s a -> s { _serviceCatalogTagOptionAssociationResourceId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-tagoptionassociation.html#cfn-servicecatalog-tagoptionassociation-tagoptionid
+sctoaTagOptionId :: Lens' ServiceCatalogTagOptionAssociation (Val Text)
+sctoaTagOptionId = lens _serviceCatalogTagOptionAssociationTagOptionId (\s a -> s { _serviceCatalogTagOptionAssociationTagOptionId = a })
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 70cc727d77e6f021e462b0f83c278cf1e9cee45a576a8da714e12cd2aea2c3e5
+-- hash: 25ad1cd2934b657afc03d91e33e6feb4e362e74d07e17020816c620ebe939fab
 
 name:           stratosphere
-version:        0.22.3
+version:        0.23.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -113,10 +113,18 @@
       Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment
       Stratosphere.ResourceProperties.BatchJobDefinitionMountPoints
       Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy
+      Stratosphere.ResourceProperties.BatchJobDefinitionTimeout
       Stratosphere.ResourceProperties.BatchJobDefinitionUlimit
       Stratosphere.ResourceProperties.BatchJobDefinitionVolumes
       Stratosphere.ResourceProperties.BatchJobDefinitionVolumesHost
       Stratosphere.ResourceProperties.BatchJobQueueComputeEnvironmentOrder
+      Stratosphere.ResourceProperties.BudgetsBudgetBudgetData
+      Stratosphere.ResourceProperties.BudgetsBudgetCostTypes
+      Stratosphere.ResourceProperties.BudgetsBudgetNotification
+      Stratosphere.ResourceProperties.BudgetsBudgetNotificationWithSubscribers
+      Stratosphere.ResourceProperties.BudgetsBudgetSpend
+      Stratosphere.ResourceProperties.BudgetsBudgetSubscriber
+      Stratosphere.ResourceProperties.BudgetsBudgetTimePeriod
       Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption
       Stratosphere.ResourceProperties.Cloud9EnvironmentEC2Repository
       Stratosphere.ResourceProperties.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
@@ -216,6 +224,7 @@
       Stratosphere.ResourceProperties.DynamoDBTableGlobalSecondaryIndex
       Stratosphere.ResourceProperties.DynamoDBTableKeySchema
       Stratosphere.ResourceProperties.DynamoDBTableLocalSecondaryIndex
+      Stratosphere.ResourceProperties.DynamoDBTablePointInTimeRecoverySpecification
       Stratosphere.ResourceProperties.DynamoDBTableProjection
       Stratosphere.ResourceProperties.DynamoDBTableProvisionedThroughput
       Stratosphere.ResourceProperties.DynamoDBTableSSESpecification
@@ -227,6 +236,7 @@
       Stratosphere.ResourceProperties.EC2InstanceEbs
       Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification
       Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address
+      Stratosphere.ResourceProperties.EC2InstanceLaunchTemplateSpecification
       Stratosphere.ResourceProperties.EC2InstanceNetworkInterface
       Stratosphere.ResourceProperties.EC2InstanceNoDevice
       Stratosphere.ResourceProperties.EC2InstancePrivateIpAddressSpecification
@@ -254,13 +264,10 @@
       Stratosphere.ResourceProperties.EC2SecurityGroupIngressProperty
       Stratosphere.ResourceProperties.EC2SpotFleetBlockDeviceMapping
       Stratosphere.ResourceProperties.EC2SpotFleetEbsBlockDevice
-      Stratosphere.ResourceProperties.EC2SpotFleetFleetLaunchTemplateSpecification
       Stratosphere.ResourceProperties.EC2SpotFleetGroupIdentifier
       Stratosphere.ResourceProperties.EC2SpotFleetIamInstanceProfileSpecification
       Stratosphere.ResourceProperties.EC2SpotFleetInstanceIpv6Address
       Stratosphere.ResourceProperties.EC2SpotFleetInstanceNetworkInterfaceSpecification
-      Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateConfig
-      Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateOverrides
       Stratosphere.ResourceProperties.EC2SpotFleetPrivateIpAddressSpecification
       Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetLaunchSpecification
       Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetMonitoring
@@ -275,8 +282,10 @@
       Stratosphere.ResourceProperties.ECSServiceNetworkConfiguration
       Stratosphere.ResourceProperties.ECSServicePlacementConstraint
       Stratosphere.ResourceProperties.ECSServicePlacementStrategy
+      Stratosphere.ResourceProperties.ECSServiceServiceRegistry
       Stratosphere.ResourceProperties.ECSTaskDefinitionContainerDefinition
       Stratosphere.ResourceProperties.ECSTaskDefinitionDevice
+      Stratosphere.ResourceProperties.ECSTaskDefinitionHealthCheck
       Stratosphere.ResourceProperties.ECSTaskDefinitionHostEntry
       Stratosphere.ResourceProperties.ECSTaskDefinitionHostVolumeProperties
       Stratosphere.ResourceProperties.ECSTaskDefinitionKernelCapabilities
@@ -320,6 +329,7 @@
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2TargetGroupTargetGroupAttribute
       Stratosphere.ResourceProperties.ElasticsearchDomainEBSOptions
       Stratosphere.ResourceProperties.ElasticsearchDomainElasticsearchClusterConfig
+      Stratosphere.ResourceProperties.ElasticsearchDomainEncryptionAtRestOptions
       Stratosphere.ResourceProperties.ElasticsearchDomainSnapshotOptions
       Stratosphere.ResourceProperties.ElasticsearchDomainVPCOptions
       Stratosphere.ResourceProperties.EMRClusterApplication
@@ -463,6 +473,8 @@
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkDestinationConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamSplunkRetryOptions
       Stratosphere.ResourceProperties.KinesisStreamStreamEncryption
       Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration
       Stratosphere.ResourceProperties.LambdaAliasVersionWeight
@@ -546,6 +558,7 @@
       Stratosphere.ResourceProperties.S3BucketTransition
       Stratosphere.ResourceProperties.S3BucketVersioningConfiguration
       Stratosphere.ResourceProperties.S3BucketWebsiteConfiguration
+      Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProductProvisioningArtifactProperties
       Stratosphere.ResourceProperties.ServiceCatalogCloudFormationProvisionedProductProvisioningParameter
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsConfig
       Stratosphere.ResourceProperties.ServiceDiscoveryServiceDnsRecord
@@ -567,7 +580,9 @@
       Stratosphere.ResourceProperties.SESReceiptRuleWorkmailAction
       Stratosphere.ResourceProperties.SESTemplateTemplate
       Stratosphere.ResourceProperties.SNSTopicSubscription
+      Stratosphere.ResourceProperties.SSMAssociationInstanceAssociationOutputLocation
       Stratosphere.ResourceProperties.SSMAssociationParameterValues
+      Stratosphere.ResourceProperties.SSMAssociationS3OutputLocation
       Stratosphere.ResourceProperties.SSMAssociationTarget
       Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskLoggingInfo
       Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters
@@ -644,6 +659,7 @@
       Stratosphere.Resources.BatchComputeEnvironment
       Stratosphere.Resources.BatchJobDefinition
       Stratosphere.Resources.BatchJobQueue
+      Stratosphere.Resources.BudgetsBudget
       Stratosphere.Resources.CertificateManagerCertificate
       Stratosphere.Resources.Cloud9EnvironmentEC2
       Stratosphere.Resources.CloudFormationCustomResource
@@ -835,7 +851,18 @@
       Stratosphere.Resources.S3Bucket
       Stratosphere.Resources.S3BucketPolicy
       Stratosphere.Resources.SDBDomain
+      Stratosphere.Resources.ServiceCatalogAcceptedPortfolioShare
+      Stratosphere.Resources.ServiceCatalogCloudFormationProduct
       Stratosphere.Resources.ServiceCatalogCloudFormationProvisionedProduct
+      Stratosphere.Resources.ServiceCatalogLaunchNotificationConstraint
+      Stratosphere.Resources.ServiceCatalogLaunchRoleConstraint
+      Stratosphere.Resources.ServiceCatalogLaunchTemplateConstraint
+      Stratosphere.Resources.ServiceCatalogPortfolio
+      Stratosphere.Resources.ServiceCatalogPortfolioPrincipalAssociation
+      Stratosphere.Resources.ServiceCatalogPortfolioProductAssociation
+      Stratosphere.Resources.ServiceCatalogPortfolioShare
+      Stratosphere.Resources.ServiceCatalogTagOption
+      Stratosphere.Resources.ServiceCatalogTagOptionAssociation
       Stratosphere.Resources.ServiceDiscoveryInstance
       Stratosphere.Resources.ServiceDiscoveryPrivateDnsNamespace
       Stratosphere.Resources.ServiceDiscoveryPublicDnsNamespace
