diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.10.0
+
+* Update resource specification document to version 1.7.0
+
 ## 0.9.0
 
 * Update resource specification document to version 1.6.0
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironmentVariable.hs
@@ -20,6 +20,7 @@
 data CodeBuildProjectEnvironmentVariable =
   CodeBuildProjectEnvironmentVariable
   { _codeBuildProjectEnvironmentVariableName :: Val Text
+  , _codeBuildProjectEnvironmentVariableType :: Maybe (Val Text)
   , _codeBuildProjectEnvironmentVariableValue :: Val Text
   } deriving (Show, Eq)
 
@@ -28,6 +29,7 @@
     object $
     catMaybes
     [ (Just . ("Name",) . toJSON) _codeBuildProjectEnvironmentVariableName
+    , fmap (("Type",) . toJSON) _codeBuildProjectEnvironmentVariableType
     , (Just . ("Value",) . toJSON) _codeBuildProjectEnvironmentVariableValue
     ]
 
@@ -35,6 +37,7 @@
   parseJSON (Object obj) =
     CodeBuildProjectEnvironmentVariable <$>
       (obj .: "Name") <*>
+      (obj .:? "Type") <*>
       (obj .: "Value")
   parseJSON _ = mempty
 
@@ -47,12 +50,17 @@
 codeBuildProjectEnvironmentVariable namearg valuearg =
   CodeBuildProjectEnvironmentVariable
   { _codeBuildProjectEnvironmentVariableName = namearg
+  , _codeBuildProjectEnvironmentVariableType = Nothing
   , _codeBuildProjectEnvironmentVariableValue = valuearg
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-environmentvariable-name
 cbpevName :: Lens' CodeBuildProjectEnvironmentVariable (Val Text)
 cbpevName = lens _codeBuildProjectEnvironmentVariableName (\s a -> s { _codeBuildProjectEnvironmentVariableName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-environmentvariable-type
+cbpevType :: Lens' CodeBuildProjectEnvironmentVariable (Maybe (Val Text))
+cbpevType = lens _codeBuildProjectEnvironmentVariableType (\s a -> s { _codeBuildProjectEnvironmentVariableType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environmentvariable.html#cfn-codebuild-project-environmentvariable-value
 cbpevValue :: Lens' CodeBuildProjectEnvironmentVariable (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
--- a/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CognitoIdentityPoolRoleAttachmentRulesConfigurationType.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping-rulesconfiguration.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rulesconfigurationtype.html
 
 module Stratosphere.ResourceProperties.CognitoIdentityPoolRoleAttachmentRulesConfigurationType where
 
@@ -47,6 +47,6 @@
   { _cognitoIdentityPoolRoleAttachmentRulesConfigurationTypeRules = rulesarg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rolemapping-rulesconfiguration.html#cfn-cognito-identitypoolroleattachment-rolemapping-rulesconfiguration-rules
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypoolroleattachment-rulesconfigurationtype.html#cfn-cognito-identitypoolroleattachment-rulesconfigurationtype-rules
 ciprarctRules :: Lens' CognitoIdentityPoolRoleAttachmentRulesConfigurationType [CognitoIdentityPoolRoleAttachmentMappingRule]
 ciprarctRules = lens _cognitoIdentityPoolRoleAttachmentRulesConfigurationTypeRules (\s a -> s { _cognitoIdentityPoolRoleAttachmentRulesConfigurationTypeRules = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationResourceLifecycleConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationResourceLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationResourceLifecycleConfig.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationresourcelifecycleconfig.html
+
+module Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationResourceLifecycleConfig where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationVersionLifecycleConfig
+
+-- | Full data type definition for
+-- ElasticBeanstalkApplicationApplicationResourceLifecycleConfig. See
+-- 'elasticBeanstalkApplicationApplicationResourceLifecycleConfig' for a
+-- more convenient constructor.
+data ElasticBeanstalkApplicationApplicationResourceLifecycleConfig =
+  ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
+  { _elasticBeanstalkApplicationApplicationResourceLifecycleConfigServiceRole :: Maybe (Val Text)
+  , _elasticBeanstalkApplicationApplicationResourceLifecycleConfigVersionLifecycleConfig :: Maybe ElasticBeanstalkApplicationApplicationVersionLifecycleConfig
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticBeanstalkApplicationApplicationResourceLifecycleConfig where
+  toJSON ElasticBeanstalkApplicationApplicationResourceLifecycleConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("ServiceRole",) . toJSON) _elasticBeanstalkApplicationApplicationResourceLifecycleConfigServiceRole
+    , fmap (("VersionLifecycleConfig",) . toJSON) _elasticBeanstalkApplicationApplicationResourceLifecycleConfigVersionLifecycleConfig
+    ]
+
+instance FromJSON ElasticBeanstalkApplicationApplicationResourceLifecycleConfig where
+  parseJSON (Object obj) =
+    ElasticBeanstalkApplicationApplicationResourceLifecycleConfig <$>
+      (obj .:? "ServiceRole") <*>
+      (obj .:? "VersionLifecycleConfig")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'ElasticBeanstalkApplicationApplicationResourceLifecycleConfig'
+-- containing required fields as arguments.
+elasticBeanstalkApplicationApplicationResourceLifecycleConfig
+  :: ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
+elasticBeanstalkApplicationApplicationResourceLifecycleConfig  =
+  ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
+  { _elasticBeanstalkApplicationApplicationResourceLifecycleConfigServiceRole = Nothing
+  , _elasticBeanstalkApplicationApplicationResourceLifecycleConfigVersionLifecycleConfig = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationresourcelifecycleconfig.html#cfn-elasticbeanstalk-application-applicationresourcelifecycleconfig-servicerole
+ebaarlcServiceRole :: Lens' ElasticBeanstalkApplicationApplicationResourceLifecycleConfig (Maybe (Val Text))
+ebaarlcServiceRole = lens _elasticBeanstalkApplicationApplicationResourceLifecycleConfigServiceRole (\s a -> s { _elasticBeanstalkApplicationApplicationResourceLifecycleConfigServiceRole = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationresourcelifecycleconfig.html#cfn-elasticbeanstalk-application-applicationresourcelifecycleconfig-versionlifecycleconfig
+ebaarlcVersionLifecycleConfig :: Lens' ElasticBeanstalkApplicationApplicationResourceLifecycleConfig (Maybe ElasticBeanstalkApplicationApplicationVersionLifecycleConfig)
+ebaarlcVersionLifecycleConfig = lens _elasticBeanstalkApplicationApplicationResourceLifecycleConfigVersionLifecycleConfig (\s a -> s { _elasticBeanstalkApplicationApplicationResourceLifecycleConfigVersionLifecycleConfig = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationVersionLifecycleConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationVersionLifecycleConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationApplicationVersionLifecycleConfig.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationversionlifecycleconfig.html
+
+module Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationVersionLifecycleConfig where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxAgeRule
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxCountRule
+
+-- | Full data type definition for
+-- ElasticBeanstalkApplicationApplicationVersionLifecycleConfig. See
+-- 'elasticBeanstalkApplicationApplicationVersionLifecycleConfig' for a more
+-- convenient constructor.
+data ElasticBeanstalkApplicationApplicationVersionLifecycleConfig =
+  ElasticBeanstalkApplicationApplicationVersionLifecycleConfig
+  { _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxAgeRule :: Maybe ElasticBeanstalkApplicationMaxAgeRule
+  , _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxCountRule :: Maybe ElasticBeanstalkApplicationMaxCountRule
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticBeanstalkApplicationApplicationVersionLifecycleConfig where
+  toJSON ElasticBeanstalkApplicationApplicationVersionLifecycleConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("MaxAgeRule",) . toJSON) _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxAgeRule
+    , fmap (("MaxCountRule",) . toJSON) _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxCountRule
+    ]
+
+instance FromJSON ElasticBeanstalkApplicationApplicationVersionLifecycleConfig where
+  parseJSON (Object obj) =
+    ElasticBeanstalkApplicationApplicationVersionLifecycleConfig <$>
+      (obj .:? "MaxAgeRule") <*>
+      (obj .:? "MaxCountRule")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'ElasticBeanstalkApplicationApplicationVersionLifecycleConfig' containing
+-- required fields as arguments.
+elasticBeanstalkApplicationApplicationVersionLifecycleConfig
+  :: ElasticBeanstalkApplicationApplicationVersionLifecycleConfig
+elasticBeanstalkApplicationApplicationVersionLifecycleConfig  =
+  ElasticBeanstalkApplicationApplicationVersionLifecycleConfig
+  { _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxAgeRule = Nothing
+  , _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxCountRule = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationversionlifecycleconfig.html#cfn-elasticbeanstalk-application-applicationversionlifecycleconfig-maxagerule
+ebaavlcMaxAgeRule :: Lens' ElasticBeanstalkApplicationApplicationVersionLifecycleConfig (Maybe ElasticBeanstalkApplicationMaxAgeRule)
+ebaavlcMaxAgeRule = lens _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxAgeRule (\s a -> s { _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxAgeRule = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationversionlifecycleconfig.html#cfn-elasticbeanstalk-application-applicationversionlifecycleconfig-maxcountrule
+ebaavlcMaxCountRule :: Lens' ElasticBeanstalkApplicationApplicationVersionLifecycleConfig (Maybe ElasticBeanstalkApplicationMaxCountRule)
+ebaavlcMaxCountRule = lens _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxCountRule (\s a -> s { _elasticBeanstalkApplicationApplicationVersionLifecycleConfigMaxCountRule = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxAgeRule.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxAgeRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxAgeRule.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxagerule.html
+
+module Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxAgeRule where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for ElasticBeanstalkApplicationMaxAgeRule. See
+-- 'elasticBeanstalkApplicationMaxAgeRule' for a more convenient
+-- constructor.
+data ElasticBeanstalkApplicationMaxAgeRule =
+  ElasticBeanstalkApplicationMaxAgeRule
+  { _elasticBeanstalkApplicationMaxAgeRuleDeleteSourceFromS3 :: Maybe (Val Bool)
+  , _elasticBeanstalkApplicationMaxAgeRuleEnabled :: Maybe (Val Bool)
+  , _elasticBeanstalkApplicationMaxAgeRuleMaxAgeInDays :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticBeanstalkApplicationMaxAgeRule where
+  toJSON ElasticBeanstalkApplicationMaxAgeRule{..} =
+    object $
+    catMaybes
+    [ fmap (("DeleteSourceFromS3",) . toJSON . fmap Bool') _elasticBeanstalkApplicationMaxAgeRuleDeleteSourceFromS3
+    , fmap (("Enabled",) . toJSON . fmap Bool') _elasticBeanstalkApplicationMaxAgeRuleEnabled
+    , fmap (("MaxAgeInDays",) . toJSON . fmap Integer') _elasticBeanstalkApplicationMaxAgeRuleMaxAgeInDays
+    ]
+
+instance FromJSON ElasticBeanstalkApplicationMaxAgeRule where
+  parseJSON (Object obj) =
+    ElasticBeanstalkApplicationMaxAgeRule <$>
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteSourceFromS3") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxAgeInDays")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticBeanstalkApplicationMaxAgeRule' containing
+-- required fields as arguments.
+elasticBeanstalkApplicationMaxAgeRule
+  :: ElasticBeanstalkApplicationMaxAgeRule
+elasticBeanstalkApplicationMaxAgeRule  =
+  ElasticBeanstalkApplicationMaxAgeRule
+  { _elasticBeanstalkApplicationMaxAgeRuleDeleteSourceFromS3 = Nothing
+  , _elasticBeanstalkApplicationMaxAgeRuleEnabled = Nothing
+  , _elasticBeanstalkApplicationMaxAgeRuleMaxAgeInDays = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxagerule.html#cfn-elasticbeanstalk-application-maxagerule-deletesourcefroms3
+ebamarDeleteSourceFromS3 :: Lens' ElasticBeanstalkApplicationMaxAgeRule (Maybe (Val Bool))
+ebamarDeleteSourceFromS3 = lens _elasticBeanstalkApplicationMaxAgeRuleDeleteSourceFromS3 (\s a -> s { _elasticBeanstalkApplicationMaxAgeRuleDeleteSourceFromS3 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxagerule.html#cfn-elasticbeanstalk-application-maxagerule-enabled
+ebamarEnabled :: Lens' ElasticBeanstalkApplicationMaxAgeRule (Maybe (Val Bool))
+ebamarEnabled = lens _elasticBeanstalkApplicationMaxAgeRuleEnabled (\s a -> s { _elasticBeanstalkApplicationMaxAgeRuleEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxagerule.html#cfn-elasticbeanstalk-application-maxagerule-maxageindays
+ebamarMaxAgeInDays :: Lens' ElasticBeanstalkApplicationMaxAgeRule (Maybe (Val Integer))
+ebamarMaxAgeInDays = lens _elasticBeanstalkApplicationMaxAgeRuleMaxAgeInDays (\s a -> s { _elasticBeanstalkApplicationMaxAgeRuleMaxAgeInDays = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxCountRule.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxCountRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkApplicationMaxCountRule.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxcountrule.html
+
+module Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxCountRule where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for ElasticBeanstalkApplicationMaxCountRule.
+-- See 'elasticBeanstalkApplicationMaxCountRule' for a more convenient
+-- constructor.
+data ElasticBeanstalkApplicationMaxCountRule =
+  ElasticBeanstalkApplicationMaxCountRule
+  { _elasticBeanstalkApplicationMaxCountRuleDeleteSourceFromS3 :: Maybe (Val Bool)
+  , _elasticBeanstalkApplicationMaxCountRuleEnabled :: Maybe (Val Bool)
+  , _elasticBeanstalkApplicationMaxCountRuleMaxCount :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticBeanstalkApplicationMaxCountRule where
+  toJSON ElasticBeanstalkApplicationMaxCountRule{..} =
+    object $
+    catMaybes
+    [ fmap (("DeleteSourceFromS3",) . toJSON . fmap Bool') _elasticBeanstalkApplicationMaxCountRuleDeleteSourceFromS3
+    , fmap (("Enabled",) . toJSON . fmap Bool') _elasticBeanstalkApplicationMaxCountRuleEnabled
+    , fmap (("MaxCount",) . toJSON . fmap Integer') _elasticBeanstalkApplicationMaxCountRuleMaxCount
+    ]
+
+instance FromJSON ElasticBeanstalkApplicationMaxCountRule where
+  parseJSON (Object obj) =
+    ElasticBeanstalkApplicationMaxCountRule <$>
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteSourceFromS3") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "MaxCount")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticBeanstalkApplicationMaxCountRule' containing
+-- required fields as arguments.
+elasticBeanstalkApplicationMaxCountRule
+  :: ElasticBeanstalkApplicationMaxCountRule
+elasticBeanstalkApplicationMaxCountRule  =
+  ElasticBeanstalkApplicationMaxCountRule
+  { _elasticBeanstalkApplicationMaxCountRuleDeleteSourceFromS3 = Nothing
+  , _elasticBeanstalkApplicationMaxCountRuleEnabled = Nothing
+  , _elasticBeanstalkApplicationMaxCountRuleMaxCount = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxcountrule.html#cfn-elasticbeanstalk-application-maxcountrule-deletesourcefroms3
+ebamcrDeleteSourceFromS3 :: Lens' ElasticBeanstalkApplicationMaxCountRule (Maybe (Val Bool))
+ebamcrDeleteSourceFromS3 = lens _elasticBeanstalkApplicationMaxCountRuleDeleteSourceFromS3 (\s a -> s { _elasticBeanstalkApplicationMaxCountRuleDeleteSourceFromS3 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxcountrule.html#cfn-elasticbeanstalk-application-maxcountrule-enabled
+ebamcrEnabled :: Lens' ElasticBeanstalkApplicationMaxCountRule (Maybe (Val Bool))
+ebamcrEnabled = lens _elasticBeanstalkApplicationMaxCountRuleEnabled (\s a -> s { _elasticBeanstalkApplicationMaxCountRuleEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-maxcountrule.html#cfn-elasticbeanstalk-application-maxcountrule-maxcount
+ebamcrMaxCount :: Lens' ElasticBeanstalkApplicationMaxCountRule (Maybe (Val Integer))
+ebamcrMaxCount = lens _elasticBeanstalkApplicationMaxCountRuleMaxCount (\s a -> s { _elasticBeanstalkApplicationMaxCountRuleMaxCount = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting.hs
@@ -23,7 +23,7 @@
   ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting
   { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace :: Val Text
   , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName :: Val Text
-  , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue :: Val Text
+  , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting where
@@ -32,7 +32,7 @@
     catMaybes
     [ (Just . ("Namespace",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace
     , (Just . ("OptionName",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName
-    , (Just . ("Value",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue
+    , fmap (("Value",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue
     ]
 
 instance FromJSON ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting where
@@ -40,7 +40,7 @@
     ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting <$>
       (obj .: "Namespace") <*>
       (obj .: "OptionName") <*>
-      (obj .: "Value")
+      (obj .:? "Value")
   parseJSON _ = mempty
 
 -- | Constructor for
@@ -49,13 +49,12 @@
 elasticBeanstalkConfigurationTemplateConfigurationOptionSetting
   :: Val Text -- ^ 'ebctcosNamespace'
   -> Val Text -- ^ 'ebctcosOptionName'
-  -> Val Text -- ^ 'ebctcosValue'
   -> ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting
-elasticBeanstalkConfigurationTemplateConfigurationOptionSetting namespacearg optionNamearg valuearg =
+elasticBeanstalkConfigurationTemplateConfigurationOptionSetting namespacearg optionNamearg =
   ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting
   { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace = namespacearg
   , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName = optionNamearg
-  , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue = valuearg
+  , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-namespace
@@ -67,5 +66,5 @@
 ebctcosOptionName = lens _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName (\s a -> s { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-value
-ebctcosValue :: Lens' ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting (Val Text)
+ebctcosValue :: Lens' ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting (Maybe (Val Text))
 ebctcosValue = lens _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue (\s a -> s { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html
+
+module Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSetting where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for ElasticBeanstalkEnvironmentOptionSetting.
+-- See 'elasticBeanstalkEnvironmentOptionSetting' for a more convenient
+-- constructor.
+data ElasticBeanstalkEnvironmentOptionSetting =
+  ElasticBeanstalkEnvironmentOptionSetting
+  { _elasticBeanstalkEnvironmentOptionSettingNamespace :: Val Text
+  , _elasticBeanstalkEnvironmentOptionSettingOptionName :: Val Text
+  , _elasticBeanstalkEnvironmentOptionSettingValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticBeanstalkEnvironmentOptionSetting where
+  toJSON ElasticBeanstalkEnvironmentOptionSetting{..} =
+    object $
+    catMaybes
+    [ (Just . ("Namespace",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingNamespace
+    , (Just . ("OptionName",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingOptionName
+    , fmap (("Value",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingValue
+    ]
+
+instance FromJSON ElasticBeanstalkEnvironmentOptionSetting where
+  parseJSON (Object obj) =
+    ElasticBeanstalkEnvironmentOptionSetting <$>
+      (obj .: "Namespace") <*>
+      (obj .: "OptionName") <*>
+      (obj .:? "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticBeanstalkEnvironmentOptionSetting' containing
+-- required fields as arguments.
+elasticBeanstalkEnvironmentOptionSetting
+  :: Val Text -- ^ 'ebeosNamespace'
+  -> Val Text -- ^ 'ebeosOptionName'
+  -> ElasticBeanstalkEnvironmentOptionSetting
+elasticBeanstalkEnvironmentOptionSetting namespacearg optionNamearg =
+  ElasticBeanstalkEnvironmentOptionSetting
+  { _elasticBeanstalkEnvironmentOptionSettingNamespace = namespacearg
+  , _elasticBeanstalkEnvironmentOptionSettingOptionName = optionNamearg
+  , _elasticBeanstalkEnvironmentOptionSettingValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-namespace
+ebeosNamespace :: Lens' ElasticBeanstalkEnvironmentOptionSetting (Val Text)
+ebeosNamespace = lens _elasticBeanstalkEnvironmentOptionSettingNamespace (\s a -> s { _elasticBeanstalkEnvironmentOptionSettingNamespace = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-optionname
+ebeosOptionName :: Lens' ElasticBeanstalkEnvironmentOptionSetting (Val Text)
+ebeosOptionName = lens _elasticBeanstalkEnvironmentOptionSettingOptionName (\s a -> s { _elasticBeanstalkEnvironmentOptionSettingOptionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-value
+ebeosValue :: Lens' ElasticBeanstalkEnvironmentOptionSetting (Maybe (Val Text))
+ebeosValue = lens _elasticBeanstalkEnvironmentOptionSettingValue (\s a -> s { _elasticBeanstalkEnvironmentOptionSettingValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSettings.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSettings.hs
deleted file mode 100644
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSettings.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE TupleSections #-}
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html
-
-module Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSettings where
-
-import Control.Lens hiding ((.=))
-import Data.Aeson
-import Data.Maybe (catMaybes)
-import Data.Monoid (mempty)
-import Data.Text
-
-import Stratosphere.Values
-
-
--- | Full data type definition for ElasticBeanstalkEnvironmentOptionSettings.
--- See 'elasticBeanstalkEnvironmentOptionSettings' for a more convenient
--- constructor.
-data ElasticBeanstalkEnvironmentOptionSettings =
-  ElasticBeanstalkEnvironmentOptionSettings
-  { _elasticBeanstalkEnvironmentOptionSettingsNamespace :: Val Text
-  , _elasticBeanstalkEnvironmentOptionSettingsOptionName :: Val Text
-  , _elasticBeanstalkEnvironmentOptionSettingsValue :: Val Text
-  } deriving (Show, Eq)
-
-instance ToJSON ElasticBeanstalkEnvironmentOptionSettings where
-  toJSON ElasticBeanstalkEnvironmentOptionSettings{..} =
-    object $
-    catMaybes
-    [ (Just . ("Namespace",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingsNamespace
-    , (Just . ("OptionName",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingsOptionName
-    , (Just . ("Value",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingsValue
-    ]
-
-instance FromJSON ElasticBeanstalkEnvironmentOptionSettings where
-  parseJSON (Object obj) =
-    ElasticBeanstalkEnvironmentOptionSettings <$>
-      (obj .: "Namespace") <*>
-      (obj .: "OptionName") <*>
-      (obj .: "Value")
-  parseJSON _ = mempty
-
--- | Constructor for 'ElasticBeanstalkEnvironmentOptionSettings' containing
--- required fields as arguments.
-elasticBeanstalkEnvironmentOptionSettings
-  :: Val Text -- ^ 'ebeosNamespace'
-  -> Val Text -- ^ 'ebeosOptionName'
-  -> Val Text -- ^ 'ebeosValue'
-  -> ElasticBeanstalkEnvironmentOptionSettings
-elasticBeanstalkEnvironmentOptionSettings namespacearg optionNamearg valuearg =
-  ElasticBeanstalkEnvironmentOptionSettings
-  { _elasticBeanstalkEnvironmentOptionSettingsNamespace = namespacearg
-  , _elasticBeanstalkEnvironmentOptionSettingsOptionName = optionNamearg
-  , _elasticBeanstalkEnvironmentOptionSettingsValue = valuearg
-  }
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-namespace
-ebeosNamespace :: Lens' ElasticBeanstalkEnvironmentOptionSettings (Val Text)
-ebeosNamespace = lens _elasticBeanstalkEnvironmentOptionSettingsNamespace (\s a -> s { _elasticBeanstalkEnvironmentOptionSettingsNamespace = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-optionname
-ebeosOptionName :: Lens' ElasticBeanstalkEnvironmentOptionSettings (Val Text)
-ebeosOptionName = lens _elasticBeanstalkEnvironmentOptionSettingsOptionName (\s a -> s { _elasticBeanstalkEnvironmentOptionSettingsOptionName = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-value
-ebeosValue :: Lens' ElasticBeanstalkEnvironmentOptionSettings (Val Text)
-ebeosValue = lens _elasticBeanstalkEnvironmentOptionSettingsValue (\s a -> s { _elasticBeanstalkEnvironmentOptionSettingsValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificateCertificate.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificateCertificate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerCertificateCertificate.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerCertificateCertificate. See
+-- 'elasticLoadBalancingV2ListenerCertificateCertificate' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerCertificateCertificate =
+  ElasticLoadBalancingV2ListenerCertificateCertificate
+  { _elasticLoadBalancingV2ListenerCertificateCertificateCertificateArn :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerCertificateCertificate where
+  toJSON ElasticLoadBalancingV2ListenerCertificateCertificate{..} =
+    object $
+    catMaybes
+    [ fmap (("CertificateArn",) . toJSON) _elasticLoadBalancingV2ListenerCertificateCertificateCertificateArn
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerCertificateCertificate where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerCertificateCertificate <$>
+      (obj .:? "CertificateArn")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerCertificateCertificate'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerCertificateCertificate
+  :: ElasticLoadBalancingV2ListenerCertificateCertificate
+elasticLoadBalancingV2ListenerCertificateCertificate  =
+  ElasticLoadBalancingV2ListenerCertificateCertificate
+  { _elasticLoadBalancingV2ListenerCertificateCertificateCertificateArn = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html#cfn-elasticloadbalancingv2-listener-certificates-certificatearn
+elbvlccCertificateArn :: Lens' ElasticLoadBalancingV2ListenerCertificateCertificate (Maybe (Val Text))
+elbvlccCertificateArn = lens _elasticLoadBalancingV2ListenerCertificateCertificateCertificateArn (\s a -> s { _elasticLoadBalancingV2ListenerCertificateCertificateCertificateArn = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2TargetGroupTargetDescription.hs
@@ -21,7 +21,8 @@
 -- convenient constructor.
 data ElasticLoadBalancingV2TargetGroupTargetDescription =
   ElasticLoadBalancingV2TargetGroupTargetDescription
-  { _elasticLoadBalancingV2TargetGroupTargetDescriptionId :: Val Text
+  { _elasticLoadBalancingV2TargetGroupTargetDescriptionAvailabilityZone :: Maybe (Val Text)
+  , _elasticLoadBalancingV2TargetGroupTargetDescriptionId :: Val Text
   , _elasticLoadBalancingV2TargetGroupTargetDescriptionPort :: Maybe (Val Integer)
   } deriving (Show, Eq)
 
@@ -29,13 +30,15 @@
   toJSON ElasticLoadBalancingV2TargetGroupTargetDescription{..} =
     object $
     catMaybes
-    [ (Just . ("Id",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetDescriptionId
+    [ fmap (("AvailabilityZone",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetDescriptionAvailabilityZone
+    , (Just . ("Id",) . toJSON) _elasticLoadBalancingV2TargetGroupTargetDescriptionId
     , fmap (("Port",) . toJSON . fmap Integer') _elasticLoadBalancingV2TargetGroupTargetDescriptionPort
     ]
 
 instance FromJSON ElasticLoadBalancingV2TargetGroupTargetDescription where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2TargetGroupTargetDescription <$>
+      (obj .:? "AvailabilityZone") <*>
       (obj .: "Id") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "Port")
   parseJSON _ = mempty
@@ -47,9 +50,14 @@
   -> ElasticLoadBalancingV2TargetGroupTargetDescription
 elasticLoadBalancingV2TargetGroupTargetDescription idarg =
   ElasticLoadBalancingV2TargetGroupTargetDescription
-  { _elasticLoadBalancingV2TargetGroupTargetDescriptionId = idarg
+  { _elasticLoadBalancingV2TargetGroupTargetDescriptionAvailabilityZone = Nothing
+  , _elasticLoadBalancingV2TargetGroupTargetDescriptionId = idarg
   , _elasticLoadBalancingV2TargetGroupTargetDescriptionPort = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html#cfn-elasticloadbalancingv2-targetgroup-targetdescription-availabilityzone
+elbvtgtdAvailabilityZone :: Lens' ElasticLoadBalancingV2TargetGroupTargetDescription (Maybe (Val Text))
+elbvtgtdAvailabilityZone = lens _elasticLoadBalancingV2TargetGroupTargetDescriptionAvailabilityZone (\s a -> s { _elasticLoadBalancingV2TargetGroupTargetDescriptionAvailabilityZone = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-targetgroup-targetdescription.html#cfn-elasticloadbalancingv2-targetgroup-targetdescription-id
 elbvtgtdId :: Lens' ElasticLoadBalancingV2TargetGroupTargetDescription (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for
+-- KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration. See
+-- 'kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration' for a
+-- more convenient constructor.
+data KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration =
+  KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
+  { _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationKinesisStreamARN :: Val Text
+  , _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationRoleARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration where
+  toJSON KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("KinesisStreamARN",) . toJSON) _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationKinesisStreamARN
+    , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationRoleARN
+    ]
+
+instance FromJSON KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration where
+  parseJSON (Object obj) =
+    KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration <$>
+      (obj .: "KinesisStreamARN") <*>
+      (obj .: "RoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration'
+-- containing required fields as arguments.
+kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
+  :: Val Text -- ^ 'kfdsksscKinesisStreamARN'
+  -> Val Text -- ^ 'kfdsksscRoleARN'
+  -> KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
+kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration kinesisStreamARNarg roleARNarg =
+  KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
+  { _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationKinesisStreamARN = kinesisStreamARNarg
+  , _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationRoleARN = roleARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html#cfn-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration-kinesisstreamarn
+kfdsksscKinesisStreamARN :: Lens' KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration (Val Text)
+kfdsksscKinesisStreamARN = lens _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationKinesisStreamARN (\s a -> s { _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationKinesisStreamARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html#cfn-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration-rolearn
+kfdsksscRoleARN :: Lens' KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration (Val Text)
+kfdsksscRoleARN = lens _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationRoleARN (\s a -> s { _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfigurationRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketAnalyticsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketAnalyticsConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketAnalyticsConfiguration.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html
+
+module Stratosphere.ResourceProperties.S3BucketAnalyticsConfiguration where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.S3BucketStorageClassAnalysis
+import Stratosphere.ResourceProperties.S3BucketTagFilter
+
+-- | Full data type definition for S3BucketAnalyticsConfiguration. See
+-- 's3BucketAnalyticsConfiguration' for a more convenient constructor.
+data S3BucketAnalyticsConfiguration =
+  S3BucketAnalyticsConfiguration
+  { _s3BucketAnalyticsConfigurationId :: Val Text
+  , _s3BucketAnalyticsConfigurationPrefix :: Maybe (Val Text)
+  , _s3BucketAnalyticsConfigurationStorageClassAnalysis :: S3BucketStorageClassAnalysis
+  , _s3BucketAnalyticsConfigurationTagFilters :: Maybe [S3BucketTagFilter]
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketAnalyticsConfiguration where
+  toJSON S3BucketAnalyticsConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Id",) . toJSON) _s3BucketAnalyticsConfigurationId
+    , fmap (("Prefix",) . toJSON) _s3BucketAnalyticsConfigurationPrefix
+    , (Just . ("StorageClassAnalysis",) . toJSON) _s3BucketAnalyticsConfigurationStorageClassAnalysis
+    , fmap (("TagFilters",) . toJSON) _s3BucketAnalyticsConfigurationTagFilters
+    ]
+
+instance FromJSON S3BucketAnalyticsConfiguration where
+  parseJSON (Object obj) =
+    S3BucketAnalyticsConfiguration <$>
+      (obj .: "Id") <*>
+      (obj .:? "Prefix") <*>
+      (obj .: "StorageClassAnalysis") <*>
+      (obj .:? "TagFilters")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketAnalyticsConfiguration' containing required
+-- fields as arguments.
+s3BucketAnalyticsConfiguration
+  :: Val Text -- ^ 'sbacId'
+  -> S3BucketStorageClassAnalysis -- ^ 'sbacStorageClassAnalysis'
+  -> S3BucketAnalyticsConfiguration
+s3BucketAnalyticsConfiguration idarg storageClassAnalysisarg =
+  S3BucketAnalyticsConfiguration
+  { _s3BucketAnalyticsConfigurationId = idarg
+  , _s3BucketAnalyticsConfigurationPrefix = Nothing
+  , _s3BucketAnalyticsConfigurationStorageClassAnalysis = storageClassAnalysisarg
+  , _s3BucketAnalyticsConfigurationTagFilters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-id
+sbacId :: Lens' S3BucketAnalyticsConfiguration (Val Text)
+sbacId = lens _s3BucketAnalyticsConfigurationId (\s a -> s { _s3BucketAnalyticsConfigurationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-prefix
+sbacPrefix :: Lens' S3BucketAnalyticsConfiguration (Maybe (Val Text))
+sbacPrefix = lens _s3BucketAnalyticsConfigurationPrefix (\s a -> s { _s3BucketAnalyticsConfigurationPrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-storageclassanalysis
+sbacStorageClassAnalysis :: Lens' S3BucketAnalyticsConfiguration S3BucketStorageClassAnalysis
+sbacStorageClassAnalysis = lens _s3BucketAnalyticsConfigurationStorageClassAnalysis (\s a -> s { _s3BucketAnalyticsConfigurationStorageClassAnalysis = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-analyticsconfiguration.html#cfn-s3-bucket-analyticsconfiguration-tagfilters
+sbacTagFilters :: Lens' S3BucketAnalyticsConfiguration (Maybe [S3BucketTagFilter])
+sbacTagFilters = lens _s3BucketAnalyticsConfigurationTagFilters (\s a -> s { _s3BucketAnalyticsConfigurationTagFilters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketDataExport.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketDataExport.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketDataExport.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html
+
+module Stratosphere.ResourceProperties.S3BucketDataExport where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.S3BucketDestination
+
+-- | Full data type definition for S3BucketDataExport. See
+-- 's3BucketDataExport' for a more convenient constructor.
+data S3BucketDataExport =
+  S3BucketDataExport
+  { _s3BucketDataExportDestination :: S3BucketDestination
+  , _s3BucketDataExportOutputSchemaVersion :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketDataExport where
+  toJSON S3BucketDataExport{..} =
+    object $
+    catMaybes
+    [ (Just . ("Destination",) . toJSON) _s3BucketDataExportDestination
+    , (Just . ("OutputSchemaVersion",) . toJSON) _s3BucketDataExportOutputSchemaVersion
+    ]
+
+instance FromJSON S3BucketDataExport where
+  parseJSON (Object obj) =
+    S3BucketDataExport <$>
+      (obj .: "Destination") <*>
+      (obj .: "OutputSchemaVersion")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketDataExport' containing required fields as
+-- arguments.
+s3BucketDataExport
+  :: S3BucketDestination -- ^ 'sbdeDestination'
+  -> Val Text -- ^ 'sbdeOutputSchemaVersion'
+  -> S3BucketDataExport
+s3BucketDataExport destinationarg outputSchemaVersionarg =
+  S3BucketDataExport
+  { _s3BucketDataExportDestination = destinationarg
+  , _s3BucketDataExportOutputSchemaVersion = outputSchemaVersionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html#cfn-s3-bucket-dataexport-destination
+sbdeDestination :: Lens' S3BucketDataExport S3BucketDestination
+sbdeDestination = lens _s3BucketDataExportDestination (\s a -> s { _s3BucketDataExportDestination = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-dataexport.html#cfn-s3-bucket-dataexport-outputschemaversion
+sbdeOutputSchemaVersion :: Lens' S3BucketDataExport (Val Text)
+sbdeOutputSchemaVersion = lens _s3BucketDataExportOutputSchemaVersion (\s a -> s { _s3BucketDataExportOutputSchemaVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketDestination.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketDestination.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketDestination.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html
+
+module Stratosphere.ResourceProperties.S3BucketDestination where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+
+
+-- | Full data type definition for S3BucketDestination. See
+-- 's3BucketDestination' for a more convenient constructor.
+data S3BucketDestination =
+  S3BucketDestination
+  { _s3BucketDestinationBucketAccountId :: Maybe (Val Text)
+  , _s3BucketDestinationBucketArn :: Val Text
+  , _s3BucketDestinationFormat :: Val Text
+  , _s3BucketDestinationPrefix :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketDestination where
+  toJSON S3BucketDestination{..} =
+    object $
+    catMaybes
+    [ fmap (("BucketAccountId",) . toJSON) _s3BucketDestinationBucketAccountId
+    , (Just . ("BucketArn",) . toJSON) _s3BucketDestinationBucketArn
+    , (Just . ("Format",) . toJSON) _s3BucketDestinationFormat
+    , fmap (("Prefix",) . toJSON) _s3BucketDestinationPrefix
+    ]
+
+instance FromJSON S3BucketDestination where
+  parseJSON (Object obj) =
+    S3BucketDestination <$>
+      (obj .:? "BucketAccountId") <*>
+      (obj .: "BucketArn") <*>
+      (obj .: "Format") <*>
+      (obj .:? "Prefix")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketDestination' containing required fields as
+-- arguments.
+s3BucketDestination
+  :: Val Text -- ^ 'sbdBucketArn'
+  -> Val Text -- ^ 'sbdFormat'
+  -> S3BucketDestination
+s3BucketDestination bucketArnarg formatarg =
+  S3BucketDestination
+  { _s3BucketDestinationBucketAccountId = Nothing
+  , _s3BucketDestinationBucketArn = bucketArnarg
+  , _s3BucketDestinationFormat = formatarg
+  , _s3BucketDestinationPrefix = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-bucketaccountid
+sbdBucketAccountId :: Lens' S3BucketDestination (Maybe (Val Text))
+sbdBucketAccountId = lens _s3BucketDestinationBucketAccountId (\s a -> s { _s3BucketDestinationBucketAccountId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-bucketarn
+sbdBucketArn :: Lens' S3BucketDestination (Val Text)
+sbdBucketArn = lens _s3BucketDestinationBucketArn (\s a -> s { _s3BucketDestinationBucketArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-format
+sbdFormat :: Lens' S3BucketDestination (Val Text)
+sbdFormat = lens _s3BucketDestinationFormat (\s a -> s { _s3BucketDestinationFormat = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-destination.html#cfn-s3-bucket-destination-prefix
+sbdPrefix :: Lens' S3BucketDestination (Maybe (Val Text))
+sbdPrefix = lens _s3BucketDestinationPrefix (\s a -> s { _s3BucketDestinationPrefix = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketInventoryConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketInventoryConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketInventoryConfiguration.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html
+
+module Stratosphere.ResourceProperties.S3BucketInventoryConfiguration where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.S3BucketDestination
+
+-- | Full data type definition for S3BucketInventoryConfiguration. See
+-- 's3BucketInventoryConfiguration' for a more convenient constructor.
+data S3BucketInventoryConfiguration =
+  S3BucketInventoryConfiguration
+  { _s3BucketInventoryConfigurationDestination :: S3BucketDestination
+  , _s3BucketInventoryConfigurationEnabled :: Val Bool
+  , _s3BucketInventoryConfigurationId :: Val Text
+  , _s3BucketInventoryConfigurationIncludedObjectVersions :: Val Text
+  , _s3BucketInventoryConfigurationOptionalFields :: Maybe (ValList Text)
+  , _s3BucketInventoryConfigurationPrefix :: Maybe (Val Text)
+  , _s3BucketInventoryConfigurationScheduleFrequency :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketInventoryConfiguration where
+  toJSON S3BucketInventoryConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("Destination",) . toJSON) _s3BucketInventoryConfigurationDestination
+    , (Just . ("Enabled",) . toJSON . fmap Bool') _s3BucketInventoryConfigurationEnabled
+    , (Just . ("Id",) . toJSON) _s3BucketInventoryConfigurationId
+    , (Just . ("IncludedObjectVersions",) . toJSON) _s3BucketInventoryConfigurationIncludedObjectVersions
+    , fmap (("OptionalFields",) . toJSON) _s3BucketInventoryConfigurationOptionalFields
+    , fmap (("Prefix",) . toJSON) _s3BucketInventoryConfigurationPrefix
+    , (Just . ("ScheduleFrequency",) . toJSON) _s3BucketInventoryConfigurationScheduleFrequency
+    ]
+
+instance FromJSON S3BucketInventoryConfiguration where
+  parseJSON (Object obj) =
+    S3BucketInventoryConfiguration <$>
+      (obj .: "Destination") <*>
+      fmap (fmap unBool') (obj .: "Enabled") <*>
+      (obj .: "Id") <*>
+      (obj .: "IncludedObjectVersions") <*>
+      (obj .:? "OptionalFields") <*>
+      (obj .:? "Prefix") <*>
+      (obj .: "ScheduleFrequency")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketInventoryConfiguration' containing required
+-- fields as arguments.
+s3BucketInventoryConfiguration
+  :: S3BucketDestination -- ^ 'sbicDestination'
+  -> Val Bool -- ^ 'sbicEnabled'
+  -> Val Text -- ^ 'sbicId'
+  -> Val Text -- ^ 'sbicIncludedObjectVersions'
+  -> Val Text -- ^ 'sbicScheduleFrequency'
+  -> S3BucketInventoryConfiguration
+s3BucketInventoryConfiguration destinationarg enabledarg idarg includedObjectVersionsarg scheduleFrequencyarg =
+  S3BucketInventoryConfiguration
+  { _s3BucketInventoryConfigurationDestination = destinationarg
+  , _s3BucketInventoryConfigurationEnabled = enabledarg
+  , _s3BucketInventoryConfigurationId = idarg
+  , _s3BucketInventoryConfigurationIncludedObjectVersions = includedObjectVersionsarg
+  , _s3BucketInventoryConfigurationOptionalFields = Nothing
+  , _s3BucketInventoryConfigurationPrefix = Nothing
+  , _s3BucketInventoryConfigurationScheduleFrequency = scheduleFrequencyarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-destination
+sbicDestination :: Lens' S3BucketInventoryConfiguration S3BucketDestination
+sbicDestination = lens _s3BucketInventoryConfigurationDestination (\s a -> s { _s3BucketInventoryConfigurationDestination = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-enabled
+sbicEnabled :: Lens' S3BucketInventoryConfiguration (Val Bool)
+sbicEnabled = lens _s3BucketInventoryConfigurationEnabled (\s a -> s { _s3BucketInventoryConfigurationEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-id
+sbicId :: Lens' S3BucketInventoryConfiguration (Val Text)
+sbicId = lens _s3BucketInventoryConfigurationId (\s a -> s { _s3BucketInventoryConfigurationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-includedobjectversions
+sbicIncludedObjectVersions :: Lens' S3BucketInventoryConfiguration (Val Text)
+sbicIncludedObjectVersions = lens _s3BucketInventoryConfigurationIncludedObjectVersions (\s a -> s { _s3BucketInventoryConfigurationIncludedObjectVersions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-optionalfields
+sbicOptionalFields :: Lens' S3BucketInventoryConfiguration (Maybe (ValList Text))
+sbicOptionalFields = lens _s3BucketInventoryConfigurationOptionalFields (\s a -> s { _s3BucketInventoryConfigurationOptionalFields = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-prefix
+sbicPrefix :: Lens' S3BucketInventoryConfiguration (Maybe (Val Text))
+sbicPrefix = lens _s3BucketInventoryConfigurationPrefix (\s a -> s { _s3BucketInventoryConfigurationPrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-inventoryconfiguration.html#cfn-s3-bucket-inventoryconfiguration-schedulefrequency
+sbicScheduleFrequency :: Lens' S3BucketInventoryConfiguration (Val Text)
+sbicScheduleFrequency = lens _s3BucketInventoryConfigurationScheduleFrequency (\s a -> s { _s3BucketInventoryConfigurationScheduleFrequency = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketStorageClassAnalysis.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketStorageClassAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketStorageClassAnalysis.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-storageclassanalysis.html
+
+module Stratosphere.ResourceProperties.S3BucketStorageClassAnalysis where
+
+import Control.Lens hiding ((.=))
+import Data.Aeson
+import Data.Maybe (catMaybes)
+import Data.Monoid (mempty)
+import Data.Text
+
+import Stratosphere.Values
+import Stratosphere.ResourceProperties.S3BucketDataExport
+
+-- | Full data type definition for S3BucketStorageClassAnalysis. See
+-- 's3BucketStorageClassAnalysis' for a more convenient constructor.
+data S3BucketStorageClassAnalysis =
+  S3BucketStorageClassAnalysis
+  { _s3BucketStorageClassAnalysisDataExport :: Maybe S3BucketDataExport
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketStorageClassAnalysis where
+  toJSON S3BucketStorageClassAnalysis{..} =
+    object $
+    catMaybes
+    [ fmap (("DataExport",) . toJSON) _s3BucketStorageClassAnalysisDataExport
+    ]
+
+instance FromJSON S3BucketStorageClassAnalysis where
+  parseJSON (Object obj) =
+    S3BucketStorageClassAnalysis <$>
+      (obj .:? "DataExport")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketStorageClassAnalysis' containing required fields
+-- as arguments.
+s3BucketStorageClassAnalysis
+  :: S3BucketStorageClassAnalysis
+s3BucketStorageClassAnalysis  =
+  S3BucketStorageClassAnalysis
+  { _s3BucketStorageClassAnalysisDataExport = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-storageclassanalysis.html#cfn-s3-bucket-storageclassanalysis-dataexport
+sbscaDataExport :: Lens' S3BucketStorageClassAnalysis (Maybe S3BucketDataExport)
+sbscaDataExport = lens _s3BucketStorageClassAnalysisDataExport (\s a -> s { _s3BucketStorageClassAnalysisDataExport = 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
@@ -482,10 +482,14 @@
 import Stratosphere.ResourceProperties.EMRStepHadoopJarStepConfig as X
 import Stratosphere.ResourceProperties.EMRStepKeyValue as X
 import Stratosphere.ResourceProperties.ElastiCacheReplicationGroupNodeGroupConfiguration as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationResourceLifecycleConfig as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationVersionLifecycleConfig as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxAgeRule as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxCountRule as X
 import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationVersionSourceBundle as X
 import Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting as X
 import Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateSourceConfiguration as X
-import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSettings as X
+import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSetting as X
 import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentTier as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAccessLoggingPolicy as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy as X
@@ -497,6 +501,7 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerPolicies as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute as X
@@ -567,6 +572,7 @@
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKMSEncryptionConfig as X
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter as X
@@ -614,9 +620,13 @@
 import Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet as X
 import Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload as X
 import Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration as X
+import Stratosphere.ResourceProperties.S3BucketAnalyticsConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketCorsConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketCorsRule as X
+import Stratosphere.ResourceProperties.S3BucketDataExport as X
+import Stratosphere.ResourceProperties.S3BucketDestination as X
 import Stratosphere.ResourceProperties.S3BucketFilterRule as X
+import Stratosphere.ResourceProperties.S3BucketInventoryConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketLambdaConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketLifecycleConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketLoggingConfiguration as X
@@ -634,6 +644,7 @@
 import Stratosphere.ResourceProperties.S3BucketRoutingRuleCondition as X
 import Stratosphere.ResourceProperties.S3BucketRule as X
 import Stratosphere.ResourceProperties.S3BucketS3KeyFilter as X
+import Stratosphere.ResourceProperties.S3BucketStorageClassAnalysis as X
 import Stratosphere.ResourceProperties.S3BucketTagFilter as X
 import Stratosphere.ResourceProperties.S3BucketTopicConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketTransition as X
diff --git a/library-gen/Stratosphere/Resources/EC2NatGateway.hs b/library-gen/Stratosphere/Resources/EC2NatGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2NatGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2NatGateway.hs
@@ -13,7 +13,7 @@
 import Data.Text
 
 import Stratosphere.Values
-
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for EC2NatGateway. See 'ec2NatGateway' for a
 -- more convenient constructor.
@@ -21,6 +21,7 @@
   EC2NatGateway
   { _eC2NatGatewayAllocationId :: Val Text
   , _eC2NatGatewaySubnetId :: Val Text
+  , _eC2NatGatewayTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToJSON EC2NatGateway where
@@ -29,13 +30,15 @@
     catMaybes
     [ (Just . ("AllocationId",) . toJSON) _eC2NatGatewayAllocationId
     , (Just . ("SubnetId",) . toJSON) _eC2NatGatewaySubnetId
+    , fmap (("Tags",) . toJSON) _eC2NatGatewayTags
     ]
 
 instance FromJSON EC2NatGateway where
   parseJSON (Object obj) =
     EC2NatGateway <$>
       (obj .: "AllocationId") <*>
-      (obj .: "SubnetId")
+      (obj .: "SubnetId") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2NatGateway' containing required fields as arguments.
@@ -47,6 +50,7 @@
   EC2NatGateway
   { _eC2NatGatewayAllocationId = allocationIdarg
   , _eC2NatGatewaySubnetId = subnetIdarg
+  , _eC2NatGatewayTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-allocationid
@@ -56,3 +60,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-subnetid
 ecngSubnetId :: Lens' EC2NatGateway (Val Text)
 ecngSubnetId = lens _eC2NatGatewaySubnetId (\s a -> s { _eC2NatGatewaySubnetId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html#cfn-ec2-natgateway-tags
+ecngTags :: Lens' EC2NatGateway (Maybe [Tag])
+ecngTags = lens _eC2NatGatewayTags (\s a -> s { _eC2NatGatewayTags = a })
diff --git a/library-gen/Stratosphere/Resources/ECSService.hs b/library-gen/Stratosphere/Resources/ECSService.hs
--- a/library-gen/Stratosphere/Resources/ECSService.hs
+++ b/library-gen/Stratosphere/Resources/ECSService.hs
@@ -24,7 +24,7 @@
   ECSService
   { _eCSServiceCluster :: Maybe (Val Text)
   , _eCSServiceDeploymentConfiguration :: Maybe ECSServiceDeploymentConfiguration
-  , _eCSServiceDesiredCount :: Val Integer
+  , _eCSServiceDesiredCount :: Maybe (Val Integer)
   , _eCSServiceLoadBalancers :: Maybe [ECSServiceLoadBalancer]
   , _eCSServicePlacementConstraints :: Maybe [ECSServicePlacementConstraint]
   , _eCSServicePlacementStrategies :: Maybe [ECSServicePlacementStrategy]
@@ -39,7 +39,7 @@
     catMaybes
     [ fmap (("Cluster",) . toJSON) _eCSServiceCluster
     , fmap (("DeploymentConfiguration",) . toJSON) _eCSServiceDeploymentConfiguration
-    , (Just . ("DesiredCount",) . toJSON . fmap Integer') _eCSServiceDesiredCount
+    , fmap (("DesiredCount",) . toJSON . fmap Integer') _eCSServiceDesiredCount
     , fmap (("LoadBalancers",) . toJSON) _eCSServiceLoadBalancers
     , fmap (("PlacementConstraints",) . toJSON) _eCSServicePlacementConstraints
     , fmap (("PlacementStrategies",) . toJSON) _eCSServicePlacementStrategies
@@ -53,7 +53,7 @@
     ECSService <$>
       (obj .:? "Cluster") <*>
       (obj .:? "DeploymentConfiguration") <*>
-      fmap (fmap unInteger') (obj .: "DesiredCount") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "DesiredCount") <*>
       (obj .:? "LoadBalancers") <*>
       (obj .:? "PlacementConstraints") <*>
       (obj .:? "PlacementStrategies") <*>
@@ -64,14 +64,13 @@
 
 -- | Constructor for 'ECSService' containing required fields as arguments.
 ecsService
-  :: Val Integer -- ^ 'ecssDesiredCount'
-  -> Val Text -- ^ 'ecssTaskDefinition'
+  :: Val Text -- ^ 'ecssTaskDefinition'
   -> ECSService
-ecsService desiredCountarg taskDefinitionarg =
+ecsService taskDefinitionarg =
   ECSService
   { _eCSServiceCluster = Nothing
   , _eCSServiceDeploymentConfiguration = Nothing
-  , _eCSServiceDesiredCount = desiredCountarg
+  , _eCSServiceDesiredCount = Nothing
   , _eCSServiceLoadBalancers = Nothing
   , _eCSServicePlacementConstraints = Nothing
   , _eCSServicePlacementStrategies = Nothing
@@ -89,7 +88,7 @@
 ecssDeploymentConfiguration = lens _eCSServiceDeploymentConfiguration (\s a -> s { _eCSServiceDeploymentConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-desiredcount
-ecssDesiredCount :: Lens' ECSService (Val Integer)
+ecssDesiredCount :: Lens' ECSService (Maybe (Val Integer))
 ecssDesiredCount = lens _eCSServiceDesiredCount (\s a -> s { _eCSServiceDesiredCount = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html#cfn-ecs-service-loadbalancers
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkApplication.hs
@@ -13,7 +13,7 @@
 import Data.Text
 
 import Stratosphere.Values
-
+import Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
 
 -- | Full data type definition for ElasticBeanstalkApplication. See
 -- 'elasticBeanstalkApplication' for a more convenient constructor.
@@ -21,6 +21,7 @@
   ElasticBeanstalkApplication
   { _elasticBeanstalkApplicationApplicationName :: Maybe (Val Text)
   , _elasticBeanstalkApplicationDescription :: Maybe (Val Text)
+  , _elasticBeanstalkApplicationResourceLifecycleConfig :: Maybe ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
   } deriving (Show, Eq)
 
 instance ToJSON ElasticBeanstalkApplication where
@@ -29,13 +30,15 @@
     catMaybes
     [ fmap (("ApplicationName",) . toJSON) _elasticBeanstalkApplicationApplicationName
     , fmap (("Description",) . toJSON) _elasticBeanstalkApplicationDescription
+    , fmap (("ResourceLifecycleConfig",) . toJSON) _elasticBeanstalkApplicationResourceLifecycleConfig
     ]
 
 instance FromJSON ElasticBeanstalkApplication where
   parseJSON (Object obj) =
     ElasticBeanstalkApplication <$>
       (obj .:? "ApplicationName") <*>
-      (obj .:? "Description")
+      (obj .:? "Description") <*>
+      (obj .:? "ResourceLifecycleConfig")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticBeanstalkApplication' containing required fields
@@ -46,6 +49,7 @@
   ElasticBeanstalkApplication
   { _elasticBeanstalkApplicationApplicationName = Nothing
   , _elasticBeanstalkApplicationDescription = Nothing
+  , _elasticBeanstalkApplicationResourceLifecycleConfig = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html#cfn-elasticbeanstalk-application-name
@@ -55,3 +59,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html#cfn-elasticbeanstalk-application-description
 ebaDescription :: Lens' ElasticBeanstalkApplication (Maybe (Val Text))
 ebaDescription = lens _elasticBeanstalkApplicationDescription (\s a -> s { _elasticBeanstalkApplicationDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk.html#cfn-elasticbeanstalk-application-resourcelifecycleconfig
+ebaResourceLifecycleConfig :: Lens' ElasticBeanstalkApplication (Maybe ElasticBeanstalkApplicationApplicationResourceLifecycleConfig)
+ebaResourceLifecycleConfig = lens _elasticBeanstalkApplicationResourceLifecycleConfig (\s a -> s { _elasticBeanstalkApplicationResourceLifecycleConfig = a })
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkConfigurationTemplate.hs
@@ -25,6 +25,7 @@
   , _elasticBeanstalkConfigurationTemplateDescription :: Maybe (Val Text)
   , _elasticBeanstalkConfigurationTemplateEnvironmentId :: Maybe (Val Text)
   , _elasticBeanstalkConfigurationTemplateOptionSettings :: Maybe [ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting]
+  , _elasticBeanstalkConfigurationTemplatePlatformArn :: Maybe (Val Text)
   , _elasticBeanstalkConfigurationTemplateSolutionStackName :: Maybe (Val Text)
   , _elasticBeanstalkConfigurationTemplateSourceConfiguration :: Maybe ElasticBeanstalkConfigurationTemplateSourceConfiguration
   } deriving (Show, Eq)
@@ -37,6 +38,7 @@
     , fmap (("Description",) . toJSON) _elasticBeanstalkConfigurationTemplateDescription
     , fmap (("EnvironmentId",) . toJSON) _elasticBeanstalkConfigurationTemplateEnvironmentId
     , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkConfigurationTemplateOptionSettings
+    , fmap (("PlatformArn",) . toJSON) _elasticBeanstalkConfigurationTemplatePlatformArn
     , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkConfigurationTemplateSolutionStackName
     , fmap (("SourceConfiguration",) . toJSON) _elasticBeanstalkConfigurationTemplateSourceConfiguration
     ]
@@ -48,6 +50,7 @@
       (obj .:? "Description") <*>
       (obj .:? "EnvironmentId") <*>
       (obj .:? "OptionSettings") <*>
+      (obj .:? "PlatformArn") <*>
       (obj .:? "SolutionStackName") <*>
       (obj .:? "SourceConfiguration")
   parseJSON _ = mempty
@@ -63,6 +66,7 @@
   , _elasticBeanstalkConfigurationTemplateDescription = Nothing
   , _elasticBeanstalkConfigurationTemplateEnvironmentId = Nothing
   , _elasticBeanstalkConfigurationTemplateOptionSettings = Nothing
+  , _elasticBeanstalkConfigurationTemplatePlatformArn = Nothing
   , _elasticBeanstalkConfigurationTemplateSolutionStackName = Nothing
   , _elasticBeanstalkConfigurationTemplateSourceConfiguration = Nothing
   }
@@ -82,6 +86,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-optionsettings
 ebctOptionSettings :: Lens' ElasticBeanstalkConfigurationTemplate (Maybe [ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting])
 ebctOptionSettings = lens _elasticBeanstalkConfigurationTemplateOptionSettings (\s a -> s { _elasticBeanstalkConfigurationTemplateOptionSettings = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-platformarn
+ebctPlatformArn :: Lens' ElasticBeanstalkConfigurationTemplate (Maybe (Val Text))
+ebctPlatformArn = lens _elasticBeanstalkConfigurationTemplatePlatformArn (\s a -> s { _elasticBeanstalkConfigurationTemplatePlatformArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-beanstalk-configurationtemplate.html#cfn-elasticbeanstalk-configurationtemplate-solutionstackname
 ebctSolutionStackName :: Lens' ElasticBeanstalkConfigurationTemplate (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs b/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
--- a/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
+++ b/library-gen/Stratosphere/Resources/ElasticBeanstalkEnvironment.hs
@@ -13,7 +13,7 @@
 import Data.Text
 
 import Stratosphere.Values
-import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSettings
+import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSetting
 import Stratosphere.ResourceProperties.Tag
 import Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentTier
 
@@ -25,7 +25,8 @@
   , _elasticBeanstalkEnvironmentCNAMEPrefix :: Maybe (Val Text)
   , _elasticBeanstalkEnvironmentDescription :: Maybe (Val Text)
   , _elasticBeanstalkEnvironmentEnvironmentName :: Maybe (Val Text)
-  , _elasticBeanstalkEnvironmentOptionSettings :: Maybe [ElasticBeanstalkEnvironmentOptionSettings]
+  , _elasticBeanstalkEnvironmentOptionSettings :: Maybe [ElasticBeanstalkEnvironmentOptionSetting]
+  , _elasticBeanstalkEnvironmentPlatformArn :: Maybe (Val Text)
   , _elasticBeanstalkEnvironmentSolutionStackName :: Maybe (Val Text)
   , _elasticBeanstalkEnvironmentTags :: Maybe [Tag]
   , _elasticBeanstalkEnvironmentTemplateName :: Maybe (Val Text)
@@ -42,6 +43,7 @@
     , fmap (("Description",) . toJSON) _elasticBeanstalkEnvironmentDescription
     , fmap (("EnvironmentName",) . toJSON) _elasticBeanstalkEnvironmentEnvironmentName
     , fmap (("OptionSettings",) . toJSON) _elasticBeanstalkEnvironmentOptionSettings
+    , fmap (("PlatformArn",) . toJSON) _elasticBeanstalkEnvironmentPlatformArn
     , fmap (("SolutionStackName",) . toJSON) _elasticBeanstalkEnvironmentSolutionStackName
     , fmap (("Tags",) . toJSON) _elasticBeanstalkEnvironmentTags
     , fmap (("TemplateName",) . toJSON) _elasticBeanstalkEnvironmentTemplateName
@@ -57,6 +59,7 @@
       (obj .:? "Description") <*>
       (obj .:? "EnvironmentName") <*>
       (obj .:? "OptionSettings") <*>
+      (obj .:? "PlatformArn") <*>
       (obj .:? "SolutionStackName") <*>
       (obj .:? "Tags") <*>
       (obj .:? "TemplateName") <*>
@@ -76,6 +79,7 @@
   , _elasticBeanstalkEnvironmentDescription = Nothing
   , _elasticBeanstalkEnvironmentEnvironmentName = Nothing
   , _elasticBeanstalkEnvironmentOptionSettings = Nothing
+  , _elasticBeanstalkEnvironmentPlatformArn = Nothing
   , _elasticBeanstalkEnvironmentSolutionStackName = Nothing
   , _elasticBeanstalkEnvironmentTags = Nothing
   , _elasticBeanstalkEnvironmentTemplateName = Nothing
@@ -100,8 +104,12 @@
 ebeEnvironmentName = lens _elasticBeanstalkEnvironmentEnvironmentName (\s a -> s { _elasticBeanstalkEnvironmentEnvironmentName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-optionsettings
-ebeOptionSettings :: Lens' ElasticBeanstalkEnvironment (Maybe [ElasticBeanstalkEnvironmentOptionSettings])
+ebeOptionSettings :: Lens' ElasticBeanstalkEnvironment (Maybe [ElasticBeanstalkEnvironmentOptionSetting])
 ebeOptionSettings = lens _elasticBeanstalkEnvironmentOptionSettings (\s a -> s { _elasticBeanstalkEnvironmentOptionSettings = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-platformarn
+ebePlatformArn :: Lens' ElasticBeanstalkEnvironment (Maybe (Val Text))
+ebePlatformArn = lens _elasticBeanstalkEnvironmentPlatformArn (\s a -> s { _elasticBeanstalkEnvironmentPlatformArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html#cfn-beanstalk-environment-solutionstackname
 ebeSolutionStackName :: Lens' ElasticBeanstalkEnvironment (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/KMSKey.hs b/library-gen/Stratosphere/Resources/KMSKey.hs
--- a/library-gen/Stratosphere/Resources/KMSKey.hs
+++ b/library-gen/Stratosphere/Resources/KMSKey.hs
@@ -13,7 +13,7 @@
 import Data.Text
 
 import Stratosphere.Values
-
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for KMSKey. See 'kmsKey' for a more convenient
 -- constructor.
@@ -24,6 +24,7 @@
   , _kMSKeyEnabled :: Maybe (Val Bool)
   , _kMSKeyKeyPolicy :: Object
   , _kMSKeyKeyUsage :: Maybe (Val Text)
+  , _kMSKeyTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToJSON KMSKey where
@@ -35,6 +36,7 @@
     , fmap (("Enabled",) . toJSON . fmap Bool') _kMSKeyEnabled
     , (Just . ("KeyPolicy",) . toJSON) _kMSKeyKeyPolicy
     , fmap (("KeyUsage",) . toJSON) _kMSKeyKeyUsage
+    , fmap (("Tags",) . toJSON) _kMSKeyTags
     ]
 
 instance FromJSON KMSKey where
@@ -44,7 +46,8 @@
       fmap (fmap (fmap unBool')) (obj .:? "EnableKeyRotation") <*>
       fmap (fmap (fmap unBool')) (obj .:? "Enabled") <*>
       (obj .: "KeyPolicy") <*>
-      (obj .:? "KeyUsage")
+      (obj .:? "KeyUsage") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'KMSKey' containing required fields as arguments.
@@ -58,6 +61,7 @@
   , _kMSKeyEnabled = Nothing
   , _kMSKeyKeyPolicy = keyPolicyarg
   , _kMSKeyKeyUsage = Nothing
+  , _kMSKeyTags = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-description
@@ -79,3 +83,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyusage
 kmskKeyUsage :: Lens' KMSKey (Maybe (Val Text))
 kmskKeyUsage = lens _kMSKeyKeyUsage (\s a -> s { _kMSKeyKeyUsage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-tags
+kmskTags :: Lens' KMSKey (Maybe [Tag])
+kmskTags = lens _kMSKeyTags (\s a -> s { _kMSKeyTags = a })
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
@@ -15,6 +15,7 @@
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
 
@@ -23,8 +24,10 @@
 data KinesisFirehoseDeliveryStream =
   KinesisFirehoseDeliveryStream
   { _kinesisFirehoseDeliveryStreamDeliveryStreamName :: Maybe (Val Text)
+  , _kinesisFirehoseDeliveryStreamDeliveryStreamType :: Maybe (Val Text)
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+  , _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration :: Maybe KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
   , _kinesisFirehoseDeliveryStreamS3DestinationConfiguration :: Maybe KinesisFirehoseDeliveryStreamS3DestinationConfiguration
   } deriving (Show, Eq)
@@ -34,8 +37,10 @@
     object $
     catMaybes
     [ fmap (("DeliveryStreamName",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamName
+    , fmap (("DeliveryStreamType",) . toJSON) _kinesisFirehoseDeliveryStreamDeliveryStreamType
     , fmap (("ElasticsearchDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration
     , fmap (("ExtendedS3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+    , fmap (("KinesisStreamSourceConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
     , fmap (("RedshiftDestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
     , fmap (("S3DestinationConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfiguration
     ]
@@ -44,8 +49,10 @@
   parseJSON (Object obj) =
     KinesisFirehoseDeliveryStream <$>
       (obj .:? "DeliveryStreamName") <*>
+      (obj .:? "DeliveryStreamType") <*>
       (obj .:? "ElasticsearchDestinationConfiguration") <*>
       (obj .:? "ExtendedS3DestinationConfiguration") <*>
+      (obj .:? "KinesisStreamSourceConfiguration") <*>
       (obj .:? "RedshiftDestinationConfiguration") <*>
       (obj .:? "S3DestinationConfiguration")
   parseJSON _ = mempty
@@ -57,8 +64,10 @@
 kinesisFirehoseDeliveryStream  =
   KinesisFirehoseDeliveryStream
   { _kinesisFirehoseDeliveryStreamDeliveryStreamName = Nothing
+  , _kinesisFirehoseDeliveryStreamDeliveryStreamType = Nothing
   , _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration = Nothing
+  , _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfiguration = Nothing
   }
@@ -67,6 +76,10 @@
 kfdsDeliveryStreamName :: Lens' KinesisFirehoseDeliveryStream (Maybe (Val Text))
 kfdsDeliveryStreamName = lens _kinesisFirehoseDeliveryStreamDeliveryStreamName (\s a -> s { _kinesisFirehoseDeliveryStreamDeliveryStreamName = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-deliverystreamtype
+kfdsDeliveryStreamType :: Lens' KinesisFirehoseDeliveryStream (Maybe (Val Text))
+kfdsDeliveryStreamType = lens _kinesisFirehoseDeliveryStreamDeliveryStreamType (\s a -> s { _kinesisFirehoseDeliveryStreamDeliveryStreamType = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-elasticsearchdestinationconfiguration
 kfdsElasticsearchDestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration)
 kfdsElasticsearchDestinationConfiguration = lens _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamElasticsearchDestinationConfiguration = a })
@@ -74,6 +87,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-extendeds3destinationconfiguration
 kfdsExtendedS3DestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration)
 kfdsExtendedS3DestinationConfiguration = lens _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration
+kfdsKinesisStreamSourceConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration)
+kfdsKinesisStreamSourceConfiguration = lens _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#cfn-kinesisfirehose-deliverystream-redshiftdestinationconfiguration
 kfdsRedshiftDestinationConfiguration :: Lens' KinesisFirehoseDeliveryStream (Maybe KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration)
diff --git a/library-gen/Stratosphere/Resources/S3Bucket.hs b/library-gen/Stratosphere/Resources/S3Bucket.hs
--- a/library-gen/Stratosphere/Resources/S3Bucket.hs
+++ b/library-gen/Stratosphere/Resources/S3Bucket.hs
@@ -15,7 +15,9 @@
 import Stratosphere.Values
 import Stratosphere.Types
 import Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration
+import Stratosphere.ResourceProperties.S3BucketAnalyticsConfiguration
 import Stratosphere.ResourceProperties.S3BucketCorsConfiguration
+import Stratosphere.ResourceProperties.S3BucketInventoryConfiguration
 import Stratosphere.ResourceProperties.S3BucketLifecycleConfiguration
 import Stratosphere.ResourceProperties.S3BucketLoggingConfiguration
 import Stratosphere.ResourceProperties.S3BucketMetricsConfiguration
@@ -31,8 +33,10 @@
   S3Bucket
   { _s3BucketAccelerateConfiguration :: Maybe S3BucketAccelerateConfiguration
   , _s3BucketAccessControl :: Maybe (Val CannedACL)
+  , _s3BucketAnalyticsConfigurations :: Maybe [S3BucketAnalyticsConfiguration]
   , _s3BucketBucketName :: Maybe (Val Text)
   , _s3BucketCorsConfiguration :: Maybe S3BucketCorsConfiguration
+  , _s3BucketInventoryConfigurations :: Maybe [S3BucketInventoryConfiguration]
   , _s3BucketLifecycleConfiguration :: Maybe S3BucketLifecycleConfiguration
   , _s3BucketLoggingConfiguration :: Maybe S3BucketLoggingConfiguration
   , _s3BucketMetricsConfigurations :: Maybe [S3BucketMetricsConfiguration]
@@ -49,8 +53,10 @@
     catMaybes
     [ fmap (("AccelerateConfiguration",) . toJSON) _s3BucketAccelerateConfiguration
     , fmap (("AccessControl",) . toJSON) _s3BucketAccessControl
+    , fmap (("AnalyticsConfigurations",) . toJSON) _s3BucketAnalyticsConfigurations
     , fmap (("BucketName",) . toJSON) _s3BucketBucketName
     , fmap (("CorsConfiguration",) . toJSON) _s3BucketCorsConfiguration
+    , fmap (("InventoryConfigurations",) . toJSON) _s3BucketInventoryConfigurations
     , fmap (("LifecycleConfiguration",) . toJSON) _s3BucketLifecycleConfiguration
     , fmap (("LoggingConfiguration",) . toJSON) _s3BucketLoggingConfiguration
     , fmap (("MetricsConfigurations",) . toJSON) _s3BucketMetricsConfigurations
@@ -66,8 +72,10 @@
     S3Bucket <$>
       (obj .:? "AccelerateConfiguration") <*>
       (obj .:? "AccessControl") <*>
+      (obj .:? "AnalyticsConfigurations") <*>
       (obj .:? "BucketName") <*>
       (obj .:? "CorsConfiguration") <*>
+      (obj .:? "InventoryConfigurations") <*>
       (obj .:? "LifecycleConfiguration") <*>
       (obj .:? "LoggingConfiguration") <*>
       (obj .:? "MetricsConfigurations") <*>
@@ -85,8 +93,10 @@
   S3Bucket
   { _s3BucketAccelerateConfiguration = Nothing
   , _s3BucketAccessControl = Nothing
+  , _s3BucketAnalyticsConfigurations = Nothing
   , _s3BucketBucketName = Nothing
   , _s3BucketCorsConfiguration = Nothing
+  , _s3BucketInventoryConfigurations = Nothing
   , _s3BucketLifecycleConfiguration = Nothing
   , _s3BucketLoggingConfiguration = Nothing
   , _s3BucketMetricsConfigurations = Nothing
@@ -105,6 +115,10 @@
 sbAccessControl :: Lens' S3Bucket (Maybe (Val CannedACL))
 sbAccessControl = lens _s3BucketAccessControl (\s a -> s { _s3BucketAccessControl = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-analyticsconfigurations
+sbAnalyticsConfigurations :: Lens' S3Bucket (Maybe [S3BucketAnalyticsConfiguration])
+sbAnalyticsConfigurations = lens _s3BucketAnalyticsConfigurations (\s a -> s { _s3BucketAnalyticsConfigurations = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-name
 sbBucketName :: Lens' S3Bucket (Maybe (Val Text))
 sbBucketName = lens _s3BucketBucketName (\s a -> s { _s3BucketBucketName = a })
@@ -112,6 +126,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-crossoriginconfig
 sbCorsConfiguration :: Lens' S3Bucket (Maybe S3BucketCorsConfiguration)
 sbCorsConfiguration = lens _s3BucketCorsConfiguration (\s a -> s { _s3BucketCorsConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-inventoryconfigurations
+sbInventoryConfigurations :: Lens' S3Bucket (Maybe [S3BucketInventoryConfiguration])
+sbInventoryConfigurations = lens _s3BucketInventoryConfigurations (\s a -> s { _s3BucketInventoryConfigurations = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-lifecycleconfig
 sbLifecycleConfiguration :: Lens' S3Bucket (Maybe S3BucketLifecycleConfiguration)
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           stratosphere
-version:        0.9.0
+version:        0.10.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -232,10 +232,14 @@
       Stratosphere.ResourceProperties.ECSTaskDefinitionVolumeFrom
       Stratosphere.ResourceProperties.EFSFileSystemElasticFileSystemTag
       Stratosphere.ResourceProperties.ElastiCacheReplicationGroupNodeGroupConfiguration
+      Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationResourceLifecycleConfig
+      Stratosphere.ResourceProperties.ElasticBeanstalkApplicationApplicationVersionLifecycleConfig
+      Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxAgeRule
+      Stratosphere.ResourceProperties.ElasticBeanstalkApplicationMaxCountRule
       Stratosphere.ResourceProperties.ElasticBeanstalkApplicationVersionSourceBundle
       Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting
       Stratosphere.ResourceProperties.ElasticBeanstalkConfigurationTemplateSourceConfiguration
-      Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSettings
+      Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentOptionSetting
       Stratosphere.ResourceProperties.ElasticBeanstalkEnvironmentTier
       Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAccessLoggingPolicy
       Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerAppCookieStickinessPolicy
@@ -247,6 +251,7 @@
       Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerPolicies
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute
@@ -359,6 +364,7 @@
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamElasticsearchRetryOptions
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamEncryptionConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamExtendedS3DestinationConfiguration
+      Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKinesisStreamSourceConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamKMSEncryptionConfig
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessingConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessor
@@ -407,9 +413,13 @@
       Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet
       Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload
       Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration
+      Stratosphere.ResourceProperties.S3BucketAnalyticsConfiguration
       Stratosphere.ResourceProperties.S3BucketCorsConfiguration
       Stratosphere.ResourceProperties.S3BucketCorsRule
+      Stratosphere.ResourceProperties.S3BucketDataExport
+      Stratosphere.ResourceProperties.S3BucketDestination
       Stratosphere.ResourceProperties.S3BucketFilterRule
+      Stratosphere.ResourceProperties.S3BucketInventoryConfiguration
       Stratosphere.ResourceProperties.S3BucketLambdaConfiguration
       Stratosphere.ResourceProperties.S3BucketLifecycleConfiguration
       Stratosphere.ResourceProperties.S3BucketLoggingConfiguration
@@ -427,6 +437,7 @@
       Stratosphere.ResourceProperties.S3BucketRoutingRuleCondition
       Stratosphere.ResourceProperties.S3BucketRule
       Stratosphere.ResourceProperties.S3BucketS3KeyFilter
+      Stratosphere.ResourceProperties.S3BucketStorageClassAnalysis
       Stratosphere.ResourceProperties.S3BucketTagFilter
       Stratosphere.ResourceProperties.S3BucketTopicConfiguration
       Stratosphere.ResourceProperties.S3BucketTransition
