diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.11.0
+
+* Update resource specification document to version 1.8.0
+
 ## 0.10.0
 
 * Update resource specification document to version 1.7.0
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayDeploymentStageDescription.hs
@@ -32,7 +32,6 @@
   , _apiGatewayDeploymentStageDescriptionLoggingLevel :: Maybe (Val LoggingLevel)
   , _apiGatewayDeploymentStageDescriptionMethodSettings :: Maybe [ApiGatewayDeploymentMethodSetting]
   , _apiGatewayDeploymentStageDescriptionMetricsEnabled :: Maybe (Val Bool)
-  , _apiGatewayDeploymentStageDescriptionStageName :: Maybe (Val Text)
   , _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit :: Maybe (Val Integer)
   , _apiGatewayDeploymentStageDescriptionThrottlingRateLimit :: Maybe (Val Double)
   , _apiGatewayDeploymentStageDescriptionVariables :: Maybe Object
@@ -54,7 +53,6 @@
     , fmap (("LoggingLevel",) . toJSON) _apiGatewayDeploymentStageDescriptionLoggingLevel
     , fmap (("MethodSettings",) . toJSON) _apiGatewayDeploymentStageDescriptionMethodSettings
     , fmap (("MetricsEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionMetricsEnabled
-    , fmap (("StageName",) . toJSON) _apiGatewayDeploymentStageDescriptionStageName
     , fmap (("ThrottlingBurstLimit",) . toJSON . fmap Integer') _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit
     , fmap (("ThrottlingRateLimit",) . toJSON . fmap Double') _apiGatewayDeploymentStageDescriptionThrottlingRateLimit
     , fmap (("Variables",) . toJSON) _apiGatewayDeploymentStageDescriptionVariables
@@ -75,7 +73,6 @@
       (obj .:? "LoggingLevel") <*>
       (obj .:? "MethodSettings") <*>
       fmap (fmap (fmap unBool')) (obj .:? "MetricsEnabled") <*>
-      (obj .:? "StageName") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "ThrottlingBurstLimit") <*>
       fmap (fmap (fmap unDouble')) (obj .:? "ThrottlingRateLimit") <*>
       (obj .:? "Variables")
@@ -99,7 +96,6 @@
   , _apiGatewayDeploymentStageDescriptionLoggingLevel = Nothing
   , _apiGatewayDeploymentStageDescriptionMethodSettings = Nothing
   , _apiGatewayDeploymentStageDescriptionMetricsEnabled = Nothing
-  , _apiGatewayDeploymentStageDescriptionStageName = Nothing
   , _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit = Nothing
   , _apiGatewayDeploymentStageDescriptionThrottlingRateLimit = Nothing
   , _apiGatewayDeploymentStageDescriptionVariables = Nothing
@@ -152,10 +148,6 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-metricsenabled
 agdsdMetricsEnabled :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Bool))
 agdsdMetricsEnabled = lens _apiGatewayDeploymentStageDescriptionMetricsEnabled (\s a -> s { _apiGatewayDeploymentStageDescriptionMetricsEnabled = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-stagename
-agdsdStageName :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Text))
-agdsdStageName = lens _apiGatewayDeploymentStageDescriptionStageName (\s a -> s { _apiGatewayDeploymentStageDescriptionStageName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-deployment-stagedescription.html#cfn-apigateway-deployment-stagedescription-throttlingburstlimit
 agdsdThrottlingBurstLimit :: Lens' ApiGatewayDeploymentStageDescription (Maybe (Val Integer))
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegration.hs
@@ -22,6 +22,7 @@
   ApiGatewayMethodIntegration
   { _apiGatewayMethodIntegrationCacheKeyParameters :: Maybe (ValList Text)
   , _apiGatewayMethodIntegrationCacheNamespace :: Maybe (Val Text)
+  , _apiGatewayMethodIntegrationContentHandling :: Maybe (Val Text)
   , _apiGatewayMethodIntegrationCredentials :: Maybe (Val Text)
   , _apiGatewayMethodIntegrationIntegrationHttpMethod :: Maybe (Val HttpMethod)
   , _apiGatewayMethodIntegrationIntegrationResponses :: Maybe [ApiGatewayMethodIntegrationResponse]
@@ -38,6 +39,7 @@
     catMaybes
     [ fmap (("CacheKeyParameters",) . toJSON) _apiGatewayMethodIntegrationCacheKeyParameters
     , fmap (("CacheNamespace",) . toJSON) _apiGatewayMethodIntegrationCacheNamespace
+    , fmap (("ContentHandling",) . toJSON) _apiGatewayMethodIntegrationContentHandling
     , fmap (("Credentials",) . toJSON) _apiGatewayMethodIntegrationCredentials
     , fmap (("IntegrationHttpMethod",) . toJSON) _apiGatewayMethodIntegrationIntegrationHttpMethod
     , fmap (("IntegrationResponses",) . toJSON) _apiGatewayMethodIntegrationIntegrationResponses
@@ -53,6 +55,7 @@
     ApiGatewayMethodIntegration <$>
       (obj .:? "CacheKeyParameters") <*>
       (obj .:? "CacheNamespace") <*>
+      (obj .:? "ContentHandling") <*>
       (obj .:? "Credentials") <*>
       (obj .:? "IntegrationHttpMethod") <*>
       (obj .:? "IntegrationResponses") <*>
@@ -71,6 +74,7 @@
   ApiGatewayMethodIntegration
   { _apiGatewayMethodIntegrationCacheKeyParameters = Nothing
   , _apiGatewayMethodIntegrationCacheNamespace = Nothing
+  , _apiGatewayMethodIntegrationContentHandling = Nothing
   , _apiGatewayMethodIntegrationCredentials = Nothing
   , _apiGatewayMethodIntegrationIntegrationHttpMethod = Nothing
   , _apiGatewayMethodIntegrationIntegrationResponses = Nothing
@@ -88,6 +92,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-cachenamespace
 agmiCacheNamespace :: Lens' ApiGatewayMethodIntegration (Maybe (Val Text))
 agmiCacheNamespace = lens _apiGatewayMethodIntegrationCacheNamespace (\s a -> s { _apiGatewayMethodIntegrationCacheNamespace = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-contenthandling
+agmiContentHandling :: Lens' ApiGatewayMethodIntegration (Maybe (Val Text))
+agmiContentHandling = lens _apiGatewayMethodIntegrationContentHandling (\s a -> s { _apiGatewayMethodIntegrationContentHandling = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-credentials
 agmiCredentials :: Lens' ApiGatewayMethodIntegration (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ApiGatewayMethodIntegrationResponse.hs
@@ -19,7 +19,8 @@
 -- 'apiGatewayMethodIntegrationResponse' for a more convenient constructor.
 data ApiGatewayMethodIntegrationResponse =
   ApiGatewayMethodIntegrationResponse
-  { _apiGatewayMethodIntegrationResponseResponseParameters :: Maybe Object
+  { _apiGatewayMethodIntegrationResponseContentHandling :: Maybe (Val Text)
+  , _apiGatewayMethodIntegrationResponseResponseParameters :: Maybe Object
   , _apiGatewayMethodIntegrationResponseResponseTemplates :: Maybe Object
   , _apiGatewayMethodIntegrationResponseSelectionPattern :: Maybe (Val Text)
   , _apiGatewayMethodIntegrationResponseStatusCode :: Val Text
@@ -29,7 +30,8 @@
   toJSON ApiGatewayMethodIntegrationResponse{..} =
     object $
     catMaybes
-    [ fmap (("ResponseParameters",) . toJSON) _apiGatewayMethodIntegrationResponseResponseParameters
+    [ fmap (("ContentHandling",) . toJSON) _apiGatewayMethodIntegrationResponseContentHandling
+    , fmap (("ResponseParameters",) . toJSON) _apiGatewayMethodIntegrationResponseResponseParameters
     , fmap (("ResponseTemplates",) . toJSON) _apiGatewayMethodIntegrationResponseResponseTemplates
     , fmap (("SelectionPattern",) . toJSON) _apiGatewayMethodIntegrationResponseSelectionPattern
     , (Just . ("StatusCode",) . toJSON) _apiGatewayMethodIntegrationResponseStatusCode
@@ -38,6 +40,7 @@
 instance FromJSON ApiGatewayMethodIntegrationResponse where
   parseJSON (Object obj) =
     ApiGatewayMethodIntegrationResponse <$>
+      (obj .:? "ContentHandling") <*>
       (obj .:? "ResponseParameters") <*>
       (obj .:? "ResponseTemplates") <*>
       (obj .:? "SelectionPattern") <*>
@@ -51,11 +54,16 @@
   -> ApiGatewayMethodIntegrationResponse
 apiGatewayMethodIntegrationResponse statusCodearg =
   ApiGatewayMethodIntegrationResponse
-  { _apiGatewayMethodIntegrationResponseResponseParameters = Nothing
+  { _apiGatewayMethodIntegrationResponseContentHandling = Nothing
+  , _apiGatewayMethodIntegrationResponseResponseParameters = Nothing
   , _apiGatewayMethodIntegrationResponseResponseTemplates = Nothing
   , _apiGatewayMethodIntegrationResponseSelectionPattern = Nothing
   , _apiGatewayMethodIntegrationResponseStatusCode = statusCodearg
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integrationresponse-contenthandling
+agmirContentHandling :: Lens' ApiGatewayMethodIntegrationResponse (Maybe (Val Text))
+agmirContentHandling = lens _apiGatewayMethodIntegrationResponseContentHandling (\s a -> s { _apiGatewayMethodIntegrationResponseContentHandling = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration-integrationresponse.html#cfn-apigateway-method-integration-integrationresponse-responseparameters
 agmirResponseParameters :: Lens' ApiGatewayMethodIntegrationResponse (Maybe Object)
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLifecycleHookSpecification.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLifecycleHookSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLifecycleHookSpecification.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html
+
+module Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification 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
+-- AutoScalingAutoScalingGroupLifecycleHookSpecification. See
+-- 'autoScalingAutoScalingGroupLifecycleHookSpecification' for a more
+-- convenient constructor.
+data AutoScalingAutoScalingGroupLifecycleHookSpecification =
+  AutoScalingAutoScalingGroupLifecycleHookSpecification
+  { _autoScalingAutoScalingGroupLifecycleHookSpecificationDefaultResult :: Maybe (Val Text)
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationHeartbeatTimeout :: Maybe (Val Integer)
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleHookName :: Val Text
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleTransition :: Val Text
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationMetadata :: Maybe (Val Text)
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationTargetARN :: Maybe (Val Text)
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationRoleARN :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingAutoScalingGroupLifecycleHookSpecification where
+  toJSON AutoScalingAutoScalingGroupLifecycleHookSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("DefaultResult",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationDefaultResult
+    , fmap (("HeartbeatTimeout",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupLifecycleHookSpecificationHeartbeatTimeout
+    , (Just . ("LifecycleHookName",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleHookName
+    , (Just . ("LifecycleTransition",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleTransition
+    , fmap (("NotificationMetadata",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationMetadata
+    , fmap (("NotificationTargetARN",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationTargetARN
+    , fmap (("RoleARN",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationRoleARN
+    ]
+
+instance FromJSON AutoScalingAutoScalingGroupLifecycleHookSpecification where
+  parseJSON (Object obj) =
+    AutoScalingAutoScalingGroupLifecycleHookSpecification <$>
+      (obj .:? "DefaultResult") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HeartbeatTimeout") <*>
+      (obj .: "LifecycleHookName") <*>
+      (obj .: "LifecycleTransition") <*>
+      (obj .:? "NotificationMetadata") <*>
+      (obj .:? "NotificationTargetARN") <*>
+      (obj .:? "RoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingAutoScalingGroupLifecycleHookSpecification'
+-- containing required fields as arguments.
+autoScalingAutoScalingGroupLifecycleHookSpecification
+  :: Val Text -- ^ 'asasglhsLifecycleHookName'
+  -> Val Text -- ^ 'asasglhsLifecycleTransition'
+  -> AutoScalingAutoScalingGroupLifecycleHookSpecification
+autoScalingAutoScalingGroupLifecycleHookSpecification lifecycleHookNamearg lifecycleTransitionarg =
+  AutoScalingAutoScalingGroupLifecycleHookSpecification
+  { _autoScalingAutoScalingGroupLifecycleHookSpecificationDefaultResult = Nothing
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationHeartbeatTimeout = Nothing
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleHookName = lifecycleHookNamearg
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleTransition = lifecycleTransitionarg
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationMetadata = Nothing
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationTargetARN = Nothing
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationRoleARN = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-defaultresult
+asasglhsDefaultResult :: Lens' AutoScalingAutoScalingGroupLifecycleHookSpecification (Maybe (Val Text))
+asasglhsDefaultResult = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationDefaultResult (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationDefaultResult = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-heartbeattimeout
+asasglhsHeartbeatTimeout :: Lens' AutoScalingAutoScalingGroupLifecycleHookSpecification (Maybe (Val Integer))
+asasglhsHeartbeatTimeout = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationHeartbeatTimeout (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationHeartbeatTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-lifecyclehookname
+asasglhsLifecycleHookName :: Lens' AutoScalingAutoScalingGroupLifecycleHookSpecification (Val Text)
+asasglhsLifecycleHookName = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleHookName (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleHookName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-lifecycletransition
+asasglhsLifecycleTransition :: Lens' AutoScalingAutoScalingGroupLifecycleHookSpecification (Val Text)
+asasglhsLifecycleTransition = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleTransition (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationLifecycleTransition = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-notificationmetadata
+asasglhsNotificationMetadata :: Lens' AutoScalingAutoScalingGroupLifecycleHookSpecification (Maybe (Val Text))
+asasglhsNotificationMetadata = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationMetadata (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationMetadata = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-notificationtargetarn
+asasglhsNotificationTargetARN :: Lens' AutoScalingAutoScalingGroupLifecycleHookSpecification (Maybe (Val Text))
+asasglhsNotificationTargetARN = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationTargetARN (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationNotificationTargetARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-rolearn
+asasglhsRoleARN :: Lens' AutoScalingAutoScalingGroupLifecycleHookSpecification (Maybe (Val Text))
+asasglhsRoleARN = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationRoleARN (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cloudfrontoriginaccessidentity-cloudfrontoriginaccessidentityconfig.html
+
+module Stratosphere.ResourceProperties.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig 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
+-- CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig.
+-- See
+-- 'cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig'
+-- for a more convenient constructor.
+data CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig =
+  CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+  { _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfigComment :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig where
+  toJSON CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig{..} =
+    object $
+    catMaybes
+    [ (Just . ("Comment",) . toJSON) _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfigComment
+    ]
+
+instance FromJSON CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig where
+  parseJSON (Object obj) =
+    CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig <$>
+      (obj .: "Comment")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig'
+-- containing required fields as arguments.
+cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+  :: Val Text -- ^ 'cfcfoaicfoaicComment'
+  -> CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig commentarg =
+  CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+  { _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfigComment = commentarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cloudfrontoriginaccessidentity-cloudfrontoriginaccessidentityconfig.html#cfn-cloudfront-cloudfrontoriginaccessidentity-cloudfrontoriginaccessidentityconfig-comment
+cfcfoaicfoaicComment :: Lens' CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig (Val Text)
+cfcfoaicfoaicComment = lens _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfigComment (\s a -> s { _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfigComment = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCacheBehavior.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior where
 
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.CloudFrontDistributionForwardedValues
+import Stratosphere.ResourceProperties.CloudFrontDistributionLambdaFunctionAssociation
 
 -- | Full data type definition for CloudFrontDistributionCacheBehavior. See
 -- 'cloudFrontDistributionCacheBehavior' for a more convenient constructor.
@@ -22,10 +23,11 @@
   { _cloudFrontDistributionCacheBehaviorAllowedMethods :: Maybe (ValList Text)
   , _cloudFrontDistributionCacheBehaviorCachedMethods :: Maybe (ValList Text)
   , _cloudFrontDistributionCacheBehaviorCompress :: Maybe (Val Bool)
-  , _cloudFrontDistributionCacheBehaviorDefaultTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionCacheBehaviorDefaultTTL :: Maybe (Val Double)
   , _cloudFrontDistributionCacheBehaviorForwardedValues :: CloudFrontDistributionForwardedValues
-  , _cloudFrontDistributionCacheBehaviorMaxTTL :: Maybe (Val Integer)
-  , _cloudFrontDistributionCacheBehaviorMinTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionCacheBehaviorLambdaFunctionAssociations :: Maybe [CloudFrontDistributionLambdaFunctionAssociation]
+  , _cloudFrontDistributionCacheBehaviorMaxTTL :: Maybe (Val Double)
+  , _cloudFrontDistributionCacheBehaviorMinTTL :: Maybe (Val Double)
   , _cloudFrontDistributionCacheBehaviorPathPattern :: Val Text
   , _cloudFrontDistributionCacheBehaviorSmoothStreaming :: Maybe (Val Bool)
   , _cloudFrontDistributionCacheBehaviorTargetOriginId :: Val Text
@@ -40,10 +42,11 @@
     [ fmap (("AllowedMethods",) . toJSON) _cloudFrontDistributionCacheBehaviorAllowedMethods
     , fmap (("CachedMethods",) . toJSON) _cloudFrontDistributionCacheBehaviorCachedMethods
     , fmap (("Compress",) . toJSON . fmap Bool') _cloudFrontDistributionCacheBehaviorCompress
-    , fmap (("DefaultTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCacheBehaviorDefaultTTL
+    , fmap (("DefaultTTL",) . toJSON . fmap Double') _cloudFrontDistributionCacheBehaviorDefaultTTL
     , (Just . ("ForwardedValues",) . toJSON) _cloudFrontDistributionCacheBehaviorForwardedValues
-    , fmap (("MaxTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCacheBehaviorMaxTTL
-    , fmap (("MinTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCacheBehaviorMinTTL
+    , fmap (("LambdaFunctionAssociations",) . toJSON) _cloudFrontDistributionCacheBehaviorLambdaFunctionAssociations
+    , fmap (("MaxTTL",) . toJSON . fmap Double') _cloudFrontDistributionCacheBehaviorMaxTTL
+    , fmap (("MinTTL",) . toJSON . fmap Double') _cloudFrontDistributionCacheBehaviorMinTTL
     , (Just . ("PathPattern",) . toJSON) _cloudFrontDistributionCacheBehaviorPathPattern
     , fmap (("SmoothStreaming",) . toJSON . fmap Bool') _cloudFrontDistributionCacheBehaviorSmoothStreaming
     , (Just . ("TargetOriginId",) . toJSON) _cloudFrontDistributionCacheBehaviorTargetOriginId
@@ -57,10 +60,11 @@
       (obj .:? "AllowedMethods") <*>
       (obj .:? "CachedMethods") <*>
       fmap (fmap (fmap unBool')) (obj .:? "Compress") <*>
-      fmap (fmap (fmap unInteger')) (obj .:? "DefaultTTL") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "DefaultTTL") <*>
       (obj .: "ForwardedValues") <*>
-      fmap (fmap (fmap unInteger')) (obj .:? "MaxTTL") <*>
-      fmap (fmap (fmap unInteger')) (obj .:? "MinTTL") <*>
+      (obj .:? "LambdaFunctionAssociations") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MaxTTL") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MinTTL") <*>
       (obj .: "PathPattern") <*>
       fmap (fmap (fmap unBool')) (obj .:? "SmoothStreaming") <*>
       (obj .: "TargetOriginId") <*>
@@ -83,6 +87,7 @@
   , _cloudFrontDistributionCacheBehaviorCompress = Nothing
   , _cloudFrontDistributionCacheBehaviorDefaultTTL = Nothing
   , _cloudFrontDistributionCacheBehaviorForwardedValues = forwardedValuesarg
+  , _cloudFrontDistributionCacheBehaviorLambdaFunctionAssociations = Nothing
   , _cloudFrontDistributionCacheBehaviorMaxTTL = Nothing
   , _cloudFrontDistributionCacheBehaviorMinTTL = Nothing
   , _cloudFrontDistributionCacheBehaviorPathPattern = pathPatternarg
@@ -92,50 +97,54 @@
   , _cloudFrontDistributionCacheBehaviorViewerProtocolPolicy = viewerProtocolPolicyarg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-allowedmethods
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-allowedmethods
 cfdcbAllowedMethods :: Lens' CloudFrontDistributionCacheBehavior (Maybe (ValList Text))
 cfdcbAllowedMethods = lens _cloudFrontDistributionCacheBehaviorAllowedMethods (\s a -> s { _cloudFrontDistributionCacheBehaviorAllowedMethods = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-cachedmethods
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-cachedmethods
 cfdcbCachedMethods :: Lens' CloudFrontDistributionCacheBehavior (Maybe (ValList Text))
 cfdcbCachedMethods = lens _cloudFrontDistributionCacheBehaviorCachedMethods (\s a -> s { _cloudFrontDistributionCacheBehaviorCachedMethods = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-compress
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-compress
 cfdcbCompress :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Bool))
 cfdcbCompress = lens _cloudFrontDistributionCacheBehaviorCompress (\s a -> s { _cloudFrontDistributionCacheBehaviorCompress = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-defaultttl
-cfdcbDefaultTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer))
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-defaultttl
+cfdcbDefaultTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Double))
 cfdcbDefaultTTL = lens _cloudFrontDistributionCacheBehaviorDefaultTTL (\s a -> s { _cloudFrontDistributionCacheBehaviorDefaultTTL = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-forwardedvalues
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-forwardedvalues
 cfdcbForwardedValues :: Lens' CloudFrontDistributionCacheBehavior CloudFrontDistributionForwardedValues
 cfdcbForwardedValues = lens _cloudFrontDistributionCacheBehaviorForwardedValues (\s a -> s { _cloudFrontDistributionCacheBehaviorForwardedValues = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-maxttl
-cfdcbMaxTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer))
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-lambdafunctionassociations
+cfdcbLambdaFunctionAssociations :: Lens' CloudFrontDistributionCacheBehavior (Maybe [CloudFrontDistributionLambdaFunctionAssociation])
+cfdcbLambdaFunctionAssociations = lens _cloudFrontDistributionCacheBehaviorLambdaFunctionAssociations (\s a -> s { _cloudFrontDistributionCacheBehaviorLambdaFunctionAssociations = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-maxttl
+cfdcbMaxTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Double))
 cfdcbMaxTTL = lens _cloudFrontDistributionCacheBehaviorMaxTTL (\s a -> s { _cloudFrontDistributionCacheBehaviorMaxTTL = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-minttl
-cfdcbMinTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Integer))
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-minttl
+cfdcbMinTTL :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Double))
 cfdcbMinTTL = lens _cloudFrontDistributionCacheBehaviorMinTTL (\s a -> s { _cloudFrontDistributionCacheBehaviorMinTTL = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-pathpattern
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-pathpattern
 cfdcbPathPattern :: Lens' CloudFrontDistributionCacheBehavior (Val Text)
 cfdcbPathPattern = lens _cloudFrontDistributionCacheBehaviorPathPattern (\s a -> s { _cloudFrontDistributionCacheBehaviorPathPattern = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-smoothstreaming
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-smoothstreaming
 cfdcbSmoothStreaming :: Lens' CloudFrontDistributionCacheBehavior (Maybe (Val Bool))
 cfdcbSmoothStreaming = lens _cloudFrontDistributionCacheBehaviorSmoothStreaming (\s a -> s { _cloudFrontDistributionCacheBehaviorSmoothStreaming = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-targetoriginid
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-targetoriginid
 cfdcbTargetOriginId :: Lens' CloudFrontDistributionCacheBehavior (Val Text)
 cfdcbTargetOriginId = lens _cloudFrontDistributionCacheBehaviorTargetOriginId (\s a -> s { _cloudFrontDistributionCacheBehaviorTargetOriginId = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-trustedsigners
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-trustedsigners
 cfdcbTrustedSigners :: Lens' CloudFrontDistributionCacheBehavior (Maybe (ValList Text))
 cfdcbTrustedSigners = lens _cloudFrontDistributionCacheBehaviorTrustedSigners (\s a -> s { _cloudFrontDistributionCacheBehaviorTrustedSigners = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-cachebehavior.html#cfn-cloudfront-cachebehavior-viewerprotocolpolicy
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-viewerprotocolpolicy
 cfdcbViewerProtocolPolicy :: Lens' CloudFrontDistributionCacheBehavior (Val Text)
 cfdcbViewerProtocolPolicy = lens _cloudFrontDistributionCacheBehaviorViewerProtocolPolicy (\s a -> s { _cloudFrontDistributionCacheBehaviorViewerProtocolPolicy = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCookies.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cookies.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionCookies where
 
@@ -49,10 +49,10 @@
   , _cloudFrontDistributionCookiesWhitelistedNames = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html#cfn-cloudfront-forwardedvalues-cookies-forward
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cookies.html#cfn-cloudfront-distribution-cookies-forward
 cfdcForward :: Lens' CloudFrontDistributionCookies (Val Text)
 cfdcForward = lens _cloudFrontDistributionCookiesForward (\s a -> s { _cloudFrontDistributionCookiesForward = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues-cookies.html#cfn-cloudfront-forwardedvalues-cookies-whitelistednames
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cookies.html#cfn-cloudfront-distribution-cookies-whitelistednames
 cfdcWhitelistedNames :: Lens' CloudFrontDistributionCookies (Maybe (ValList Text))
 cfdcWhitelistedNames = lens _cloudFrontDistributionCookiesWhitelistedNames (\s a -> s { _cloudFrontDistributionCookiesWhitelistedNames = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomErrorResponse.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionCustomErrorResponse where
 
@@ -20,7 +20,7 @@
 -- constructor.
 data CloudFrontDistributionCustomErrorResponse =
   CloudFrontDistributionCustomErrorResponse
-  { _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL :: Maybe (Val Integer)
+  { _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL :: Maybe (Val Double)
   , _cloudFrontDistributionCustomErrorResponseErrorCode :: Val Integer
   , _cloudFrontDistributionCustomErrorResponseResponseCode :: Maybe (Val Integer)
   , _cloudFrontDistributionCustomErrorResponseResponsePagePath :: Maybe (Val Text)
@@ -30,7 +30,7 @@
   toJSON CloudFrontDistributionCustomErrorResponse{..} =
     object $
     catMaybes
-    [ fmap (("ErrorCachingMinTTL",) . toJSON . fmap Integer') _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL
+    [ fmap (("ErrorCachingMinTTL",) . toJSON . fmap Double') _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL
     , (Just . ("ErrorCode",) . toJSON . fmap Integer') _cloudFrontDistributionCustomErrorResponseErrorCode
     , fmap (("ResponseCode",) . toJSON . fmap Integer') _cloudFrontDistributionCustomErrorResponseResponseCode
     , fmap (("ResponsePagePath",) . toJSON) _cloudFrontDistributionCustomErrorResponseResponsePagePath
@@ -39,7 +39,7 @@
 instance FromJSON CloudFrontDistributionCustomErrorResponse where
   parseJSON (Object obj) =
     CloudFrontDistributionCustomErrorResponse <$>
-      fmap (fmap (fmap unInteger')) (obj .:? "ErrorCachingMinTTL") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "ErrorCachingMinTTL") <*>
       fmap (fmap unInteger') (obj .: "ErrorCode") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "ResponseCode") <*>
       (obj .:? "ResponsePagePath")
@@ -58,18 +58,18 @@
   , _cloudFrontDistributionCustomErrorResponseResponsePagePath = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-errorcachingminttl
-cfdcerErrorCachingMinTTL :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Integer))
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html#cfn-cloudfront-distribution-customerrorresponse-errorcachingminttl
+cfdcerErrorCachingMinTTL :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Double))
 cfdcerErrorCachingMinTTL = lens _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL (\s a -> s { _cloudFrontDistributionCustomErrorResponseErrorCachingMinTTL = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-errorcode
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html#cfn-cloudfront-distribution-customerrorresponse-errorcode
 cfdcerErrorCode :: Lens' CloudFrontDistributionCustomErrorResponse (Val Integer)
 cfdcerErrorCode = lens _cloudFrontDistributionCustomErrorResponseErrorCode (\s a -> s { _cloudFrontDistributionCustomErrorResponseErrorCode = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-responsecode
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html#cfn-cloudfront-distribution-customerrorresponse-responsecode
 cfdcerResponseCode :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Integer))
 cfdcerResponseCode = lens _cloudFrontDistributionCustomErrorResponseResponseCode (\s a -> s { _cloudFrontDistributionCustomErrorResponseResponseCode = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-customerrorresponse.html#cfn-cloudfront-distributionconfig-customerrorresponse-responsepagepath
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customerrorresponse.html#cfn-cloudfront-distribution-customerrorresponse-responsepagepath
 cfdcerResponsePagePath :: Lens' CloudFrontDistributionCustomErrorResponse (Maybe (Val Text))
 cfdcerResponsePagePath = lens _cloudFrontDistributionCustomErrorResponseResponsePagePath (\s a -> s { _cloudFrontDistributionCustomErrorResponseResponsePagePath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionCustomOriginConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionCustomOriginConfig where
 
@@ -22,7 +22,9 @@
   CloudFrontDistributionCustomOriginConfig
   { _cloudFrontDistributionCustomOriginConfigHTTPPort :: Maybe (Val Integer)
   , _cloudFrontDistributionCustomOriginConfigHTTPSPort :: Maybe (Val Integer)
+  , _cloudFrontDistributionCustomOriginConfigOriginKeepaliveTimeout :: Maybe (Val Integer)
   , _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy :: Val Text
+  , _cloudFrontDistributionCustomOriginConfigOriginReadTimeout :: Maybe (Val Integer)
   , _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols :: Maybe (ValList Text)
   } deriving (Show, Eq)
 
@@ -32,7 +34,9 @@
     catMaybes
     [ fmap (("HTTPPort",) . toJSON . fmap Integer') _cloudFrontDistributionCustomOriginConfigHTTPPort
     , fmap (("HTTPSPort",) . toJSON . fmap Integer') _cloudFrontDistributionCustomOriginConfigHTTPSPort
+    , fmap (("OriginKeepaliveTimeout",) . toJSON . fmap Integer') _cloudFrontDistributionCustomOriginConfigOriginKeepaliveTimeout
     , (Just . ("OriginProtocolPolicy",) . toJSON) _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy
+    , fmap (("OriginReadTimeout",) . toJSON . fmap Integer') _cloudFrontDistributionCustomOriginConfigOriginReadTimeout
     , fmap (("OriginSSLProtocols",) . toJSON) _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols
     ]
 
@@ -41,7 +45,9 @@
     CloudFrontDistributionCustomOriginConfig <$>
       fmap (fmap (fmap unInteger')) (obj .:? "HTTPPort") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "HTTPSPort") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "OriginKeepaliveTimeout") <*>
       (obj .: "OriginProtocolPolicy") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "OriginReadTimeout") <*>
       (obj .:? "OriginSSLProtocols")
   parseJSON _ = mempty
 
@@ -54,22 +60,32 @@
   CloudFrontDistributionCustomOriginConfig
   { _cloudFrontDistributionCustomOriginConfigHTTPPort = Nothing
   , _cloudFrontDistributionCustomOriginConfigHTTPSPort = Nothing
+  , _cloudFrontDistributionCustomOriginConfigOriginKeepaliveTimeout = Nothing
   , _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy = originProtocolPolicyarg
+  , _cloudFrontDistributionCustomOriginConfigOriginReadTimeout = Nothing
   , _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-httpport
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html#cfn-cloudfront-distribution-customoriginconfig-httpport
 cfdcocHTTPPort :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer))
 cfdcocHTTPPort = lens _cloudFrontDistributionCustomOriginConfigHTTPPort (\s a -> s { _cloudFrontDistributionCustomOriginConfigHTTPPort = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-httpsport
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html#cfn-cloudfront-distribution-customoriginconfig-httpsport
 cfdcocHTTPSPort :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer))
 cfdcocHTTPSPort = lens _cloudFrontDistributionCustomOriginConfigHTTPSPort (\s a -> s { _cloudFrontDistributionCustomOriginConfigHTTPSPort = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-originprotocolpolicy
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html#cfn-cloudfront-distribution-customoriginconfig-originkeepalivetimeout
+cfdcocOriginKeepaliveTimeout :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer))
+cfdcocOriginKeepaliveTimeout = lens _cloudFrontDistributionCustomOriginConfigOriginKeepaliveTimeout (\s a -> s { _cloudFrontDistributionCustomOriginConfigOriginKeepaliveTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html#cfn-cloudfront-distribution-customoriginconfig-originprotocolpolicy
 cfdcocOriginProtocolPolicy :: Lens' CloudFrontDistributionCustomOriginConfig (Val Text)
 cfdcocOriginProtocolPolicy = lens _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy (\s a -> s { _cloudFrontDistributionCustomOriginConfigOriginProtocolPolicy = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-customorigin.html#cfn-cloudfront-customorigin-originsslprotocols
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html#cfn-cloudfront-distribution-customoriginconfig-originreadtimeout
+cfdcocOriginReadTimeout :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (Val Integer))
+cfdcocOriginReadTimeout = lens _cloudFrontDistributionCustomOriginConfigOriginReadTimeout (\s a -> s { _cloudFrontDistributionCustomOriginConfigOriginReadTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-customoriginconfig.html#cfn-cloudfront-distribution-customoriginconfig-originsslprotocols
 cfdcocOriginSSLProtocols :: Lens' CloudFrontDistributionCustomOriginConfig (Maybe (ValList Text))
 cfdcocOriginSSLProtocols = lens _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols (\s a -> s { _cloudFrontDistributionCustomOriginConfigOriginSSLProtocols = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDefaultCacheBehavior.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionDefaultCacheBehavior where
 
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.CloudFrontDistributionForwardedValues
+import Stratosphere.ResourceProperties.CloudFrontDistributionLambdaFunctionAssociation
 
 -- | Full data type definition for CloudFrontDistributionDefaultCacheBehavior.
 -- See 'cloudFrontDistributionDefaultCacheBehavior' for a more convenient
@@ -23,10 +24,11 @@
   { _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods :: Maybe (ValList Text)
   , _cloudFrontDistributionDefaultCacheBehaviorCachedMethods :: Maybe (ValList Text)
   , _cloudFrontDistributionDefaultCacheBehaviorCompress :: Maybe (Val Bool)
-  , _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL :: Maybe (Val Double)
   , _cloudFrontDistributionDefaultCacheBehaviorForwardedValues :: CloudFrontDistributionForwardedValues
-  , _cloudFrontDistributionDefaultCacheBehaviorMaxTTL :: Maybe (Val Integer)
-  , _cloudFrontDistributionDefaultCacheBehaviorMinTTL :: Maybe (Val Integer)
+  , _cloudFrontDistributionDefaultCacheBehaviorLambdaFunctionAssociations :: Maybe [CloudFrontDistributionLambdaFunctionAssociation]
+  , _cloudFrontDistributionDefaultCacheBehaviorMaxTTL :: Maybe (Val Double)
+  , _cloudFrontDistributionDefaultCacheBehaviorMinTTL :: Maybe (Val Double)
   , _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming :: Maybe (Val Bool)
   , _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId :: Val Text
   , _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners :: Maybe (ValList Text)
@@ -40,10 +42,11 @@
     [ fmap (("AllowedMethods",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods
     , fmap (("CachedMethods",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorCachedMethods
     , fmap (("Compress",) . toJSON . fmap Bool') _cloudFrontDistributionDefaultCacheBehaviorCompress
-    , fmap (("DefaultTTL",) . toJSON . fmap Integer') _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL
+    , fmap (("DefaultTTL",) . toJSON . fmap Double') _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL
     , (Just . ("ForwardedValues",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorForwardedValues
-    , fmap (("MaxTTL",) . toJSON . fmap Integer') _cloudFrontDistributionDefaultCacheBehaviorMaxTTL
-    , fmap (("MinTTL",) . toJSON . fmap Integer') _cloudFrontDistributionDefaultCacheBehaviorMinTTL
+    , fmap (("LambdaFunctionAssociations",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorLambdaFunctionAssociations
+    , fmap (("MaxTTL",) . toJSON . fmap Double') _cloudFrontDistributionDefaultCacheBehaviorMaxTTL
+    , fmap (("MinTTL",) . toJSON . fmap Double') _cloudFrontDistributionDefaultCacheBehaviorMinTTL
     , fmap (("SmoothStreaming",) . toJSON . fmap Bool') _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming
     , (Just . ("TargetOriginId",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId
     , fmap (("TrustedSigners",) . toJSON) _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners
@@ -56,10 +59,11 @@
       (obj .:? "AllowedMethods") <*>
       (obj .:? "CachedMethods") <*>
       fmap (fmap (fmap unBool')) (obj .:? "Compress") <*>
-      fmap (fmap (fmap unInteger')) (obj .:? "DefaultTTL") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "DefaultTTL") <*>
       (obj .: "ForwardedValues") <*>
-      fmap (fmap (fmap unInteger')) (obj .:? "MaxTTL") <*>
-      fmap (fmap (fmap unInteger')) (obj .:? "MinTTL") <*>
+      (obj .:? "LambdaFunctionAssociations") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MaxTTL") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MinTTL") <*>
       fmap (fmap (fmap unBool')) (obj .:? "SmoothStreaming") <*>
       (obj .: "TargetOriginId") <*>
       (obj .:? "TrustedSigners") <*>
@@ -80,6 +84,7 @@
   , _cloudFrontDistributionDefaultCacheBehaviorCompress = Nothing
   , _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL = Nothing
   , _cloudFrontDistributionDefaultCacheBehaviorForwardedValues = forwardedValuesarg
+  , _cloudFrontDistributionDefaultCacheBehaviorLambdaFunctionAssociations = Nothing
   , _cloudFrontDistributionDefaultCacheBehaviorMaxTTL = Nothing
   , _cloudFrontDistributionDefaultCacheBehaviorMinTTL = Nothing
   , _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming = Nothing
@@ -88,46 +93,50 @@
   , _cloudFrontDistributionDefaultCacheBehaviorViewerProtocolPolicy = viewerProtocolPolicyarg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-allowedmethods
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-allowedmethods
 cfddcbAllowedMethods :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (ValList Text))
 cfddcbAllowedMethods = lens _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorAllowedMethods = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-cachedmethods
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-cachedmethods
 cfddcbCachedMethods :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (ValList Text))
 cfddcbCachedMethods = lens _cloudFrontDistributionDefaultCacheBehaviorCachedMethods (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorCachedMethods = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-compress
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-compress
 cfddcbCompress :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Bool))
 cfddcbCompress = lens _cloudFrontDistributionDefaultCacheBehaviorCompress (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorCompress = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-defaultttl
-cfddcbDefaultTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer))
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-defaultttl
+cfddcbDefaultTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Double))
 cfddcbDefaultTTL = lens _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorDefaultTTL = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-forwardedvalues
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-forwardedvalues
 cfddcbForwardedValues :: Lens' CloudFrontDistributionDefaultCacheBehavior CloudFrontDistributionForwardedValues
 cfddcbForwardedValues = lens _cloudFrontDistributionDefaultCacheBehaviorForwardedValues (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorForwardedValues = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-maxttl
-cfddcbMaxTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer))
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-lambdafunctionassociations
+cfddcbLambdaFunctionAssociations :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe [CloudFrontDistributionLambdaFunctionAssociation])
+cfddcbLambdaFunctionAssociations = lens _cloudFrontDistributionDefaultCacheBehaviorLambdaFunctionAssociations (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorLambdaFunctionAssociations = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-maxttl
+cfddcbMaxTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Double))
 cfddcbMaxTTL = lens _cloudFrontDistributionDefaultCacheBehaviorMaxTTL (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorMaxTTL = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-minttl
-cfddcbMinTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Integer))
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-minttl
+cfddcbMinTTL :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Double))
 cfddcbMinTTL = lens _cloudFrontDistributionDefaultCacheBehaviorMinTTL (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorMinTTL = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-smoothstreaming
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-smoothstreaming
 cfddcbSmoothStreaming :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (Val Bool))
 cfddcbSmoothStreaming = lens _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorSmoothStreaming = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-targetoriginid
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-targetoriginid
 cfddcbTargetOriginId :: Lens' CloudFrontDistributionDefaultCacheBehavior (Val Text)
 cfddcbTargetOriginId = lens _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorTargetOriginId = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-trustedsigners
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-trustedsigners
 cfddcbTrustedSigners :: Lens' CloudFrontDistributionDefaultCacheBehavior (Maybe (ValList Text))
 cfddcbTrustedSigners = lens _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorTrustedSigners = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-defaultcachebehavior.html#cfn-cloudfront-defaultcachebehavior-viewerprotocolpolicy
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-viewerprotocolpolicy
 cfddcbViewerProtocolPolicy :: Lens' CloudFrontDistributionDefaultCacheBehavior (Val Text)
 cfddcbViewerProtocolPolicy = lens _cloudFrontDistributionDefaultCacheBehaviorViewerProtocolPolicy (\s a -> s { _cloudFrontDistributionDefaultCacheBehaviorViewerProtocolPolicy = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionDistributionConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionDistributionConfig where
 
@@ -15,10 +15,12 @@
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior
 import Stratosphere.ResourceProperties.CloudFrontDistributionCustomErrorResponse
+import Stratosphere.ResourceProperties.CloudFrontDistributionLegacyCustomOrigin
 import Stratosphere.ResourceProperties.CloudFrontDistributionDefaultCacheBehavior
 import Stratosphere.ResourceProperties.CloudFrontDistributionLogging
 import Stratosphere.ResourceProperties.CloudFrontDistributionOrigin
 import Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions
+import Stratosphere.ResourceProperties.CloudFrontDistributionLegacyS3Origin
 import Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate
 
 -- | Full data type definition for CloudFrontDistributionDistributionConfig.
@@ -27,17 +29,21 @@
 data CloudFrontDistributionDistributionConfig =
   CloudFrontDistributionDistributionConfig
   { _cloudFrontDistributionDistributionConfigAliases :: Maybe (ValList Text)
+  , _cloudFrontDistributionDistributionConfigCNAMEs :: Maybe (ValList Text)
   , _cloudFrontDistributionDistributionConfigCacheBehaviors :: Maybe [CloudFrontDistributionCacheBehavior]
   , _cloudFrontDistributionDistributionConfigComment :: Maybe (Val Text)
   , _cloudFrontDistributionDistributionConfigCustomErrorResponses :: Maybe [CloudFrontDistributionCustomErrorResponse]
-  , _cloudFrontDistributionDistributionConfigDefaultCacheBehavior :: CloudFrontDistributionDefaultCacheBehavior
+  , _cloudFrontDistributionDistributionConfigCustomOrigin :: Maybe CloudFrontDistributionLegacyCustomOrigin
+  , _cloudFrontDistributionDistributionConfigDefaultCacheBehavior :: Maybe CloudFrontDistributionDefaultCacheBehavior
   , _cloudFrontDistributionDistributionConfigDefaultRootObject :: Maybe (Val Text)
   , _cloudFrontDistributionDistributionConfigEnabled :: Val Bool
   , _cloudFrontDistributionDistributionConfigHttpVersion :: Maybe (Val Text)
+  , _cloudFrontDistributionDistributionConfigIPV6Enabled :: Maybe (Val Bool)
   , _cloudFrontDistributionDistributionConfigLogging :: Maybe CloudFrontDistributionLogging
-  , _cloudFrontDistributionDistributionConfigOrigins :: [CloudFrontDistributionOrigin]
+  , _cloudFrontDistributionDistributionConfigOrigins :: Maybe [CloudFrontDistributionOrigin]
   , _cloudFrontDistributionDistributionConfigPriceClass :: Maybe (Val Text)
   , _cloudFrontDistributionDistributionConfigRestrictions :: Maybe CloudFrontDistributionRestrictions
+  , _cloudFrontDistributionDistributionConfigS3Origin :: Maybe CloudFrontDistributionLegacyS3Origin
   , _cloudFrontDistributionDistributionConfigViewerCertificate :: Maybe CloudFrontDistributionViewerCertificate
   , _cloudFrontDistributionDistributionConfigWebACLId :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -47,17 +53,21 @@
     object $
     catMaybes
     [ fmap (("Aliases",) . toJSON) _cloudFrontDistributionDistributionConfigAliases
+    , fmap (("CNAMEs",) . toJSON) _cloudFrontDistributionDistributionConfigCNAMEs
     , fmap (("CacheBehaviors",) . toJSON) _cloudFrontDistributionDistributionConfigCacheBehaviors
     , fmap (("Comment",) . toJSON) _cloudFrontDistributionDistributionConfigComment
     , fmap (("CustomErrorResponses",) . toJSON) _cloudFrontDistributionDistributionConfigCustomErrorResponses
-    , (Just . ("DefaultCacheBehavior",) . toJSON) _cloudFrontDistributionDistributionConfigDefaultCacheBehavior
+    , fmap (("CustomOrigin",) . toJSON) _cloudFrontDistributionDistributionConfigCustomOrigin
+    , fmap (("DefaultCacheBehavior",) . toJSON) _cloudFrontDistributionDistributionConfigDefaultCacheBehavior
     , fmap (("DefaultRootObject",) . toJSON) _cloudFrontDistributionDistributionConfigDefaultRootObject
     , (Just . ("Enabled",) . toJSON . fmap Bool') _cloudFrontDistributionDistributionConfigEnabled
     , fmap (("HttpVersion",) . toJSON) _cloudFrontDistributionDistributionConfigHttpVersion
+    , fmap (("IPV6Enabled",) . toJSON . fmap Bool') _cloudFrontDistributionDistributionConfigIPV6Enabled
     , fmap (("Logging",) . toJSON) _cloudFrontDistributionDistributionConfigLogging
-    , (Just . ("Origins",) . toJSON) _cloudFrontDistributionDistributionConfigOrigins
+    , fmap (("Origins",) . toJSON) _cloudFrontDistributionDistributionConfigOrigins
     , fmap (("PriceClass",) . toJSON) _cloudFrontDistributionDistributionConfigPriceClass
     , fmap (("Restrictions",) . toJSON) _cloudFrontDistributionDistributionConfigRestrictions
+    , fmap (("S3Origin",) . toJSON) _cloudFrontDistributionDistributionConfigS3Origin
     , fmap (("ViewerCertificate",) . toJSON) _cloudFrontDistributionDistributionConfigViewerCertificate
     , fmap (("WebACLId",) . toJSON) _cloudFrontDistributionDistributionConfigWebACLId
     ]
@@ -66,17 +76,21 @@
   parseJSON (Object obj) =
     CloudFrontDistributionDistributionConfig <$>
       (obj .:? "Aliases") <*>
+      (obj .:? "CNAMEs") <*>
       (obj .:? "CacheBehaviors") <*>
       (obj .:? "Comment") <*>
       (obj .:? "CustomErrorResponses") <*>
-      (obj .: "DefaultCacheBehavior") <*>
+      (obj .:? "CustomOrigin") <*>
+      (obj .:? "DefaultCacheBehavior") <*>
       (obj .:? "DefaultRootObject") <*>
       fmap (fmap unBool') (obj .: "Enabled") <*>
       (obj .:? "HttpVersion") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IPV6Enabled") <*>
       (obj .:? "Logging") <*>
-      (obj .: "Origins") <*>
+      (obj .:? "Origins") <*>
       (obj .:? "PriceClass") <*>
       (obj .:? "Restrictions") <*>
+      (obj .:? "S3Origin") <*>
       (obj .:? "ViewerCertificate") <*>
       (obj .:? "WebACLId")
   parseJSON _ = mempty
@@ -84,80 +98,98 @@
 -- | Constructor for 'CloudFrontDistributionDistributionConfig' containing
 -- required fields as arguments.
 cloudFrontDistributionDistributionConfig
-  :: CloudFrontDistributionDefaultCacheBehavior -- ^ 'cfddcDefaultCacheBehavior'
-  -> Val Bool -- ^ 'cfddcEnabled'
-  -> [CloudFrontDistributionOrigin] -- ^ 'cfddcOrigins'
+  :: Val Bool -- ^ 'cfddcEnabled'
   -> CloudFrontDistributionDistributionConfig
-cloudFrontDistributionDistributionConfig defaultCacheBehaviorarg enabledarg originsarg =
+cloudFrontDistributionDistributionConfig enabledarg =
   CloudFrontDistributionDistributionConfig
   { _cloudFrontDistributionDistributionConfigAliases = Nothing
+  , _cloudFrontDistributionDistributionConfigCNAMEs = Nothing
   , _cloudFrontDistributionDistributionConfigCacheBehaviors = Nothing
   , _cloudFrontDistributionDistributionConfigComment = Nothing
   , _cloudFrontDistributionDistributionConfigCustomErrorResponses = Nothing
-  , _cloudFrontDistributionDistributionConfigDefaultCacheBehavior = defaultCacheBehaviorarg
+  , _cloudFrontDistributionDistributionConfigCustomOrigin = Nothing
+  , _cloudFrontDistributionDistributionConfigDefaultCacheBehavior = Nothing
   , _cloudFrontDistributionDistributionConfigDefaultRootObject = Nothing
   , _cloudFrontDistributionDistributionConfigEnabled = enabledarg
   , _cloudFrontDistributionDistributionConfigHttpVersion = Nothing
+  , _cloudFrontDistributionDistributionConfigIPV6Enabled = Nothing
   , _cloudFrontDistributionDistributionConfigLogging = Nothing
-  , _cloudFrontDistributionDistributionConfigOrigins = originsarg
+  , _cloudFrontDistributionDistributionConfigOrigins = Nothing
   , _cloudFrontDistributionDistributionConfigPriceClass = Nothing
   , _cloudFrontDistributionDistributionConfigRestrictions = Nothing
+  , _cloudFrontDistributionDistributionConfigS3Origin = Nothing
   , _cloudFrontDistributionDistributionConfigViewerCertificate = Nothing
   , _cloudFrontDistributionDistributionConfigWebACLId = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-aliases
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-aliases
 cfddcAliases :: Lens' CloudFrontDistributionDistributionConfig (Maybe (ValList Text))
 cfddcAliases = lens _cloudFrontDistributionDistributionConfigAliases (\s a -> s { _cloudFrontDistributionDistributionConfigAliases = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-cachebehaviors
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-cnames
+cfddcCNAMEs :: Lens' CloudFrontDistributionDistributionConfig (Maybe (ValList Text))
+cfddcCNAMEs = lens _cloudFrontDistributionDistributionConfigCNAMEs (\s a -> s { _cloudFrontDistributionDistributionConfigCNAMEs = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-cachebehaviors
 cfddcCacheBehaviors :: Lens' CloudFrontDistributionDistributionConfig (Maybe [CloudFrontDistributionCacheBehavior])
 cfddcCacheBehaviors = lens _cloudFrontDistributionDistributionConfigCacheBehaviors (\s a -> s { _cloudFrontDistributionDistributionConfigCacheBehaviors = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-comment
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-comment
 cfddcComment :: Lens' CloudFrontDistributionDistributionConfig (Maybe (Val Text))
 cfddcComment = lens _cloudFrontDistributionDistributionConfigComment (\s a -> s { _cloudFrontDistributionDistributionConfigComment = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-customerrorresponses
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-customerrorresponses
 cfddcCustomErrorResponses :: Lens' CloudFrontDistributionDistributionConfig (Maybe [CloudFrontDistributionCustomErrorResponse])
 cfddcCustomErrorResponses = lens _cloudFrontDistributionDistributionConfigCustomErrorResponses (\s a -> s { _cloudFrontDistributionDistributionConfigCustomErrorResponses = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-defaultcachebehavior
-cfddcDefaultCacheBehavior :: Lens' CloudFrontDistributionDistributionConfig CloudFrontDistributionDefaultCacheBehavior
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-customorigin
+cfddcCustomOrigin :: Lens' CloudFrontDistributionDistributionConfig (Maybe CloudFrontDistributionLegacyCustomOrigin)
+cfddcCustomOrigin = lens _cloudFrontDistributionDistributionConfigCustomOrigin (\s a -> s { _cloudFrontDistributionDistributionConfigCustomOrigin = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-defaultcachebehavior
+cfddcDefaultCacheBehavior :: Lens' CloudFrontDistributionDistributionConfig (Maybe CloudFrontDistributionDefaultCacheBehavior)
 cfddcDefaultCacheBehavior = lens _cloudFrontDistributionDistributionConfigDefaultCacheBehavior (\s a -> s { _cloudFrontDistributionDistributionConfigDefaultCacheBehavior = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-defaultrootobject
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-defaultrootobject
 cfddcDefaultRootObject :: Lens' CloudFrontDistributionDistributionConfig (Maybe (Val Text))
 cfddcDefaultRootObject = lens _cloudFrontDistributionDistributionConfigDefaultRootObject (\s a -> s { _cloudFrontDistributionDistributionConfigDefaultRootObject = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-enabled
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-enabled
 cfddcEnabled :: Lens' CloudFrontDistributionDistributionConfig (Val Bool)
 cfddcEnabled = lens _cloudFrontDistributionDistributionConfigEnabled (\s a -> s { _cloudFrontDistributionDistributionConfigEnabled = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-httpversion
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-httpversion
 cfddcHttpVersion :: Lens' CloudFrontDistributionDistributionConfig (Maybe (Val Text))
 cfddcHttpVersion = lens _cloudFrontDistributionDistributionConfigHttpVersion (\s a -> s { _cloudFrontDistributionDistributionConfigHttpVersion = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-logging
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-ipv6enabled
+cfddcIPV6Enabled :: Lens' CloudFrontDistributionDistributionConfig (Maybe (Val Bool))
+cfddcIPV6Enabled = lens _cloudFrontDistributionDistributionConfigIPV6Enabled (\s a -> s { _cloudFrontDistributionDistributionConfigIPV6Enabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-logging
 cfddcLogging :: Lens' CloudFrontDistributionDistributionConfig (Maybe CloudFrontDistributionLogging)
 cfddcLogging = lens _cloudFrontDistributionDistributionConfigLogging (\s a -> s { _cloudFrontDistributionDistributionConfigLogging = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-origins
-cfddcOrigins :: Lens' CloudFrontDistributionDistributionConfig [CloudFrontDistributionOrigin]
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-origins
+cfddcOrigins :: Lens' CloudFrontDistributionDistributionConfig (Maybe [CloudFrontDistributionOrigin])
 cfddcOrigins = lens _cloudFrontDistributionDistributionConfigOrigins (\s a -> s { _cloudFrontDistributionDistributionConfigOrigins = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-priceclass
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-priceclass
 cfddcPriceClass :: Lens' CloudFrontDistributionDistributionConfig (Maybe (Val Text))
 cfddcPriceClass = lens _cloudFrontDistributionDistributionConfigPriceClass (\s a -> s { _cloudFrontDistributionDistributionConfigPriceClass = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-restrictions
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-restrictions
 cfddcRestrictions :: Lens' CloudFrontDistributionDistributionConfig (Maybe CloudFrontDistributionRestrictions)
 cfddcRestrictions = lens _cloudFrontDistributionDistributionConfigRestrictions (\s a -> s { _cloudFrontDistributionDistributionConfigRestrictions = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-viewercertificate
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-s3origin
+cfddcS3Origin :: Lens' CloudFrontDistributionDistributionConfig (Maybe CloudFrontDistributionLegacyS3Origin)
+cfddcS3Origin = lens _cloudFrontDistributionDistributionConfigS3Origin (\s a -> s { _cloudFrontDistributionDistributionConfigS3Origin = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-viewercertificate
 cfddcViewerCertificate :: Lens' CloudFrontDistributionDistributionConfig (Maybe CloudFrontDistributionViewerCertificate)
 cfddcViewerCertificate = lens _cloudFrontDistributionDistributionConfigViewerCertificate (\s a -> s { _cloudFrontDistributionDistributionConfigViewerCertificate = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig.html#cfn-cloudfront-distributionconfig-webaclid
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-webaclid
 cfddcWebACLId :: Lens' CloudFrontDistributionDistributionConfig (Maybe (Val Text))
 cfddcWebACLId = lens _cloudFrontDistributionDistributionConfigWebACLId (\s a -> s { _cloudFrontDistributionDistributionConfigWebACLId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionForwardedValues.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-forwardedvalues.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionForwardedValues where
 
@@ -58,18 +58,18 @@
   , _cloudFrontDistributionForwardedValuesQueryStringCacheKeys = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-cookies
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-forwardedvalues.html#cfn-cloudfront-distribution-forwardedvalues-cookies
 cfdfvCookies :: Lens' CloudFrontDistributionForwardedValues (Maybe CloudFrontDistributionCookies)
 cfdfvCookies = lens _cloudFrontDistributionForwardedValuesCookies (\s a -> s { _cloudFrontDistributionForwardedValuesCookies = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-headers
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-forwardedvalues.html#cfn-cloudfront-distribution-forwardedvalues-headers
 cfdfvHeaders :: Lens' CloudFrontDistributionForwardedValues (Maybe (ValList Text))
 cfdfvHeaders = lens _cloudFrontDistributionForwardedValuesHeaders (\s a -> s { _cloudFrontDistributionForwardedValuesHeaders = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-querystring
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-forwardedvalues.html#cfn-cloudfront-distribution-forwardedvalues-querystring
 cfdfvQueryString :: Lens' CloudFrontDistributionForwardedValues (Val Bool)
 cfdfvQueryString = lens _cloudFrontDistributionForwardedValuesQueryString (\s a -> s { _cloudFrontDistributionForwardedValuesQueryString = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-forwardedvalues.html#cfn-cloudfront-forwardedvalues-querystringcachekeys
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-forwardedvalues.html#cfn-cloudfront-distribution-forwardedvalues-querystringcachekeys
 cfdfvQueryStringCacheKeys :: Lens' CloudFrontDistributionForwardedValues (Maybe (ValList Text))
 cfdfvQueryStringCacheKeys = lens _cloudFrontDistributionForwardedValuesQueryStringCacheKeys (\s a -> s { _cloudFrontDistributionForwardedValuesQueryStringCacheKeys = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionGeoRestriction.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-georestriction.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionGeoRestriction where
 
@@ -49,10 +49,10 @@
   , _cloudFrontDistributionGeoRestrictionRestrictionType = restrictionTypearg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html#cfn-cloudfront-distributionconfig-restrictions-georestriction-locations
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-georestriction.html#cfn-cloudfront-distribution-georestriction-locations
 cfdgrLocations :: Lens' CloudFrontDistributionGeoRestriction (Maybe (ValList Text))
 cfdgrLocations = lens _cloudFrontDistributionGeoRestrictionLocations (\s a -> s { _cloudFrontDistributionGeoRestrictionLocations = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions-georestriction.html#cfn-cloudfront-distributionconfig-restrictions-georestriction-restrictiontype
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-georestriction.html#cfn-cloudfront-distribution-georestriction-restrictiontype
 cfdgrRestrictionType :: Lens' CloudFrontDistributionGeoRestriction (Val Text)
 cfdgrRestrictionType = lens _cloudFrontDistributionGeoRestrictionRestrictionType (\s a -> s { _cloudFrontDistributionGeoRestrictionRestrictionType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLambdaFunctionAssociation.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLambdaFunctionAssociation.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLambdaFunctionAssociation.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-lambdafunctionassociation.html
+
+module Stratosphere.ResourceProperties.CloudFrontDistributionLambdaFunctionAssociation 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
+-- CloudFrontDistributionLambdaFunctionAssociation. See
+-- 'cloudFrontDistributionLambdaFunctionAssociation' for a more convenient
+-- constructor.
+data CloudFrontDistributionLambdaFunctionAssociation =
+  CloudFrontDistributionLambdaFunctionAssociation
+  { _cloudFrontDistributionLambdaFunctionAssociationEventType :: Maybe (Val Text)
+  , _cloudFrontDistributionLambdaFunctionAssociationLambdaFunctionARN :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontDistributionLambdaFunctionAssociation where
+  toJSON CloudFrontDistributionLambdaFunctionAssociation{..} =
+    object $
+    catMaybes
+    [ fmap (("EventType",) . toJSON) _cloudFrontDistributionLambdaFunctionAssociationEventType
+    , fmap (("LambdaFunctionARN",) . toJSON) _cloudFrontDistributionLambdaFunctionAssociationLambdaFunctionARN
+    ]
+
+instance FromJSON CloudFrontDistributionLambdaFunctionAssociation where
+  parseJSON (Object obj) =
+    CloudFrontDistributionLambdaFunctionAssociation <$>
+      (obj .:? "EventType") <*>
+      (obj .:? "LambdaFunctionARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontDistributionLambdaFunctionAssociation'
+-- containing required fields as arguments.
+cloudFrontDistributionLambdaFunctionAssociation
+  :: CloudFrontDistributionLambdaFunctionAssociation
+cloudFrontDistributionLambdaFunctionAssociation  =
+  CloudFrontDistributionLambdaFunctionAssociation
+  { _cloudFrontDistributionLambdaFunctionAssociationEventType = Nothing
+  , _cloudFrontDistributionLambdaFunctionAssociationLambdaFunctionARN = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-lambdafunctionassociation.html#cfn-cloudfront-distribution-lambdafunctionassociation-eventtype
+cfdlfaEventType :: Lens' CloudFrontDistributionLambdaFunctionAssociation (Maybe (Val Text))
+cfdlfaEventType = lens _cloudFrontDistributionLambdaFunctionAssociationEventType (\s a -> s { _cloudFrontDistributionLambdaFunctionAssociationEventType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-lambdafunctionassociation.html#cfn-cloudfront-distribution-lambdafunctionassociation-lambdafunctionarn
+cfdlfaLambdaFunctionARN :: Lens' CloudFrontDistributionLambdaFunctionAssociation (Maybe (Val Text))
+cfdlfaLambdaFunctionARN = lens _cloudFrontDistributionLambdaFunctionAssociationLambdaFunctionARN (\s a -> s { _cloudFrontDistributionLambdaFunctionAssociationLambdaFunctionARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLegacyCustomOrigin.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLegacyCustomOrigin.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLegacyCustomOrigin.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacycustomorigin.html
+
+module Stratosphere.ResourceProperties.CloudFrontDistributionLegacyCustomOrigin 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 CloudFrontDistributionLegacyCustomOrigin.
+-- See 'cloudFrontDistributionLegacyCustomOrigin' for a more convenient
+-- constructor.
+data CloudFrontDistributionLegacyCustomOrigin =
+  CloudFrontDistributionLegacyCustomOrigin
+  { _cloudFrontDistributionLegacyCustomOriginDNSName :: Val Text
+  , _cloudFrontDistributionLegacyCustomOriginHTTPPort :: Maybe (Val Integer)
+  , _cloudFrontDistributionLegacyCustomOriginHTTPSPort :: Maybe (Val Integer)
+  , _cloudFrontDistributionLegacyCustomOriginOriginProtocolPolicy :: Val Text
+  , _cloudFrontDistributionLegacyCustomOriginOriginSSLProtocols :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontDistributionLegacyCustomOrigin where
+  toJSON CloudFrontDistributionLegacyCustomOrigin{..} =
+    object $
+    catMaybes
+    [ (Just . ("DNSName",) . toJSON) _cloudFrontDistributionLegacyCustomOriginDNSName
+    , fmap (("HTTPPort",) . toJSON . fmap Integer') _cloudFrontDistributionLegacyCustomOriginHTTPPort
+    , fmap (("HTTPSPort",) . toJSON . fmap Integer') _cloudFrontDistributionLegacyCustomOriginHTTPSPort
+    , (Just . ("OriginProtocolPolicy",) . toJSON) _cloudFrontDistributionLegacyCustomOriginOriginProtocolPolicy
+    , fmap (("OriginSSLProtocols",) . toJSON) _cloudFrontDistributionLegacyCustomOriginOriginSSLProtocols
+    ]
+
+instance FromJSON CloudFrontDistributionLegacyCustomOrigin where
+  parseJSON (Object obj) =
+    CloudFrontDistributionLegacyCustomOrigin <$>
+      (obj .: "DNSName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HTTPPort") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "HTTPSPort") <*>
+      (obj .: "OriginProtocolPolicy") <*>
+      (obj .:? "OriginSSLProtocols")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontDistributionLegacyCustomOrigin' containing
+-- required fields as arguments.
+cloudFrontDistributionLegacyCustomOrigin
+  :: Val Text -- ^ 'cfdlcoDNSName'
+  -> Val Text -- ^ 'cfdlcoOriginProtocolPolicy'
+  -> CloudFrontDistributionLegacyCustomOrigin
+cloudFrontDistributionLegacyCustomOrigin dNSNamearg originProtocolPolicyarg =
+  CloudFrontDistributionLegacyCustomOrigin
+  { _cloudFrontDistributionLegacyCustomOriginDNSName = dNSNamearg
+  , _cloudFrontDistributionLegacyCustomOriginHTTPPort = Nothing
+  , _cloudFrontDistributionLegacyCustomOriginHTTPSPort = Nothing
+  , _cloudFrontDistributionLegacyCustomOriginOriginProtocolPolicy = originProtocolPolicyarg
+  , _cloudFrontDistributionLegacyCustomOriginOriginSSLProtocols = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacycustomorigin.html#cfn-cloudfront-distribution-legacycustomorigin-dnsname
+cfdlcoDNSName :: Lens' CloudFrontDistributionLegacyCustomOrigin (Val Text)
+cfdlcoDNSName = lens _cloudFrontDistributionLegacyCustomOriginDNSName (\s a -> s { _cloudFrontDistributionLegacyCustomOriginDNSName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacycustomorigin.html#cfn-cloudfront-distribution-legacycustomorigin-httpport
+cfdlcoHTTPPort :: Lens' CloudFrontDistributionLegacyCustomOrigin (Maybe (Val Integer))
+cfdlcoHTTPPort = lens _cloudFrontDistributionLegacyCustomOriginHTTPPort (\s a -> s { _cloudFrontDistributionLegacyCustomOriginHTTPPort = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacycustomorigin.html#cfn-cloudfront-distribution-legacycustomorigin-httpsport
+cfdlcoHTTPSPort :: Lens' CloudFrontDistributionLegacyCustomOrigin (Maybe (Val Integer))
+cfdlcoHTTPSPort = lens _cloudFrontDistributionLegacyCustomOriginHTTPSPort (\s a -> s { _cloudFrontDistributionLegacyCustomOriginHTTPSPort = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacycustomorigin.html#cfn-cloudfront-distribution-legacycustomorigin-originprotocolpolicy
+cfdlcoOriginProtocolPolicy :: Lens' CloudFrontDistributionLegacyCustomOrigin (Val Text)
+cfdlcoOriginProtocolPolicy = lens _cloudFrontDistributionLegacyCustomOriginOriginProtocolPolicy (\s a -> s { _cloudFrontDistributionLegacyCustomOriginOriginProtocolPolicy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacycustomorigin.html#cfn-cloudfront-distribution-legacycustomorigin-originsslprotocols
+cfdlcoOriginSSLProtocols :: Lens' CloudFrontDistributionLegacyCustomOrigin (Maybe (ValList Text))
+cfdlcoOriginSSLProtocols = lens _cloudFrontDistributionLegacyCustomOriginOriginSSLProtocols (\s a -> s { _cloudFrontDistributionLegacyCustomOriginOriginSSLProtocols = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLegacyS3Origin.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLegacyS3Origin.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLegacyS3Origin.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacys3origin.html
+
+module Stratosphere.ResourceProperties.CloudFrontDistributionLegacyS3Origin 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 CloudFrontDistributionLegacyS3Origin. See
+-- 'cloudFrontDistributionLegacyS3Origin' for a more convenient constructor.
+data CloudFrontDistributionLegacyS3Origin =
+  CloudFrontDistributionLegacyS3Origin
+  { _cloudFrontDistributionLegacyS3OriginDNSName :: Val Text
+  , _cloudFrontDistributionLegacyS3OriginOriginAccessIdentity :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontDistributionLegacyS3Origin where
+  toJSON CloudFrontDistributionLegacyS3Origin{..} =
+    object $
+    catMaybes
+    [ (Just . ("DNSName",) . toJSON) _cloudFrontDistributionLegacyS3OriginDNSName
+    , fmap (("OriginAccessIdentity",) . toJSON) _cloudFrontDistributionLegacyS3OriginOriginAccessIdentity
+    ]
+
+instance FromJSON CloudFrontDistributionLegacyS3Origin where
+  parseJSON (Object obj) =
+    CloudFrontDistributionLegacyS3Origin <$>
+      (obj .: "DNSName") <*>
+      (obj .:? "OriginAccessIdentity")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontDistributionLegacyS3Origin' containing
+-- required fields as arguments.
+cloudFrontDistributionLegacyS3Origin
+  :: Val Text -- ^ 'cfdlsoDNSName'
+  -> CloudFrontDistributionLegacyS3Origin
+cloudFrontDistributionLegacyS3Origin dNSNamearg =
+  CloudFrontDistributionLegacyS3Origin
+  { _cloudFrontDistributionLegacyS3OriginDNSName = dNSNamearg
+  , _cloudFrontDistributionLegacyS3OriginOriginAccessIdentity = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacys3origin.html#cfn-cloudfront-distribution-legacys3origin-dnsname
+cfdlsoDNSName :: Lens' CloudFrontDistributionLegacyS3Origin (Val Text)
+cfdlsoDNSName = lens _cloudFrontDistributionLegacyS3OriginDNSName (\s a -> s { _cloudFrontDistributionLegacyS3OriginDNSName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-legacys3origin.html#cfn-cloudfront-distribution-legacys3origin-originaccessidentity
+cfdlsoOriginAccessIdentity :: Lens' CloudFrontDistributionLegacyS3Origin (Maybe (Val Text))
+cfdlsoOriginAccessIdentity = lens _cloudFrontDistributionLegacyS3OriginOriginAccessIdentity (\s a -> s { _cloudFrontDistributionLegacyS3OriginOriginAccessIdentity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionLogging.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-logging.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionLogging where
 
@@ -53,14 +53,14 @@
   , _cloudFrontDistributionLoggingPrefix = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-bucket
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-logging.html#cfn-cloudfront-distribution-logging-bucket
 cfdlBucket :: Lens' CloudFrontDistributionLogging (Val Text)
 cfdlBucket = lens _cloudFrontDistributionLoggingBucket (\s a -> s { _cloudFrontDistributionLoggingBucket = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-includecookies
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-logging.html#cfn-cloudfront-distribution-logging-includecookies
 cfdlIncludeCookies :: Lens' CloudFrontDistributionLogging (Maybe (Val Bool))
 cfdlIncludeCookies = lens _cloudFrontDistributionLoggingIncludeCookies (\s a -> s { _cloudFrontDistributionLoggingIncludeCookies = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-logging.html#cfn-cloudfront-logging-prefix
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-logging.html#cfn-cloudfront-distribution-logging-prefix
 cfdlPrefix :: Lens' CloudFrontDistributionLogging (Maybe (Val Text))
 cfdlPrefix = lens _cloudFrontDistributionLoggingPrefix (\s a -> s { _cloudFrontDistributionLoggingPrefix = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOrigin.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionOrigin where
 
@@ -68,26 +68,26 @@
   , _cloudFrontDistributionOriginS3OriginConfig = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-customorigin
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html#cfn-cloudfront-distribution-origin-customoriginconfig
 cfdoCustomOriginConfig :: Lens' CloudFrontDistributionOrigin (Maybe CloudFrontDistributionCustomOriginConfig)
 cfdoCustomOriginConfig = lens _cloudFrontDistributionOriginCustomOriginConfig (\s a -> s { _cloudFrontDistributionOriginCustomOriginConfig = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-domainname
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html#cfn-cloudfront-distribution-origin-domainname
 cfdoDomainName :: Lens' CloudFrontDistributionOrigin (Val Text)
 cfdoDomainName = lens _cloudFrontDistributionOriginDomainName (\s a -> s { _cloudFrontDistributionOriginDomainName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-id
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html#cfn-cloudfront-distribution-origin-id
 cfdoId :: Lens' CloudFrontDistributionOrigin (Val Text)
 cfdoId = lens _cloudFrontDistributionOriginId (\s a -> s { _cloudFrontDistributionOriginId = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-origincustomheaders
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html#cfn-cloudfront-distribution-origin-origincustomheaders
 cfdoOriginCustomHeaders :: Lens' CloudFrontDistributionOrigin (Maybe [CloudFrontDistributionOriginCustomHeader])
 cfdoOriginCustomHeaders = lens _cloudFrontDistributionOriginOriginCustomHeaders (\s a -> s { _cloudFrontDistributionOriginOriginCustomHeaders = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-originpath
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html#cfn-cloudfront-distribution-origin-originpath
 cfdoOriginPath :: Lens' CloudFrontDistributionOrigin (Maybe (Val Text))
 cfdoOriginPath = lens _cloudFrontDistributionOriginOriginPath (\s a -> s { _cloudFrontDistributionOriginOriginPath = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-s3origin
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html#cfn-cloudfront-distribution-origin-s3originconfig
 cfdoS3OriginConfig :: Lens' CloudFrontDistributionOrigin (Maybe CloudFrontDistributionS3OriginConfig)
 cfdoS3OriginConfig = lens _cloudFrontDistributionOriginS3OriginConfig (\s a -> s { _cloudFrontDistributionOriginS3OriginConfig = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionOriginCustomHeader.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin-origincustomheader.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origincustomheader.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionOriginCustomHeader where
 
@@ -51,10 +51,10 @@
   , _cloudFrontDistributionOriginCustomHeaderHeaderValue = headerValuearg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin-origincustomheader.html#cfn-cloudfront-origin-origincustomheader-headername
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origincustomheader.html#cfn-cloudfront-distribution-origincustomheader-headername
 cfdochHeaderName :: Lens' CloudFrontDistributionOriginCustomHeader (Val Text)
 cfdochHeaderName = lens _cloudFrontDistributionOriginCustomHeaderHeaderName (\s a -> s { _cloudFrontDistributionOriginCustomHeaderHeaderName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin-origincustomheader.html#cfn-cloudfront-origin-origincustomheader-headervalue
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origincustomheader.html#cfn-cloudfront-distribution-origincustomheader-headervalue
 cfdochHeaderValue :: Lens' CloudFrontDistributionOriginCustomHeader (Val Text)
 cfdochHeaderValue = lens _cloudFrontDistributionOriginCustomHeaderHeaderValue (\s a -> s { _cloudFrontDistributionOriginCustomHeaderHeaderValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionRestrictions.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-restrictions.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions where
 
@@ -45,6 +45,6 @@
   { _cloudFrontDistributionRestrictionsGeoRestriction = geoRestrictionarg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-restrictions.html#cfn-cloudfront-distributionconfig-restrictions-georestriction
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-restrictions.html#cfn-cloudfront-distribution-restrictions-georestriction
 cfdrGeoRestriction :: Lens' CloudFrontDistributionRestrictions CloudFrontDistributionGeoRestriction
 cfdrGeoRestriction = lens _cloudFrontDistributionRestrictionsGeoRestriction (\s a -> s { _cloudFrontDistributionRestrictionsGeoRestriction = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionS3OriginConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-s3origin.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-s3originconfig.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionS3OriginConfig where
 
@@ -44,6 +44,6 @@
   { _cloudFrontDistributionS3OriginConfigOriginAccessIdentity = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-s3origin.html#cfn-cloudfront-s3origin-originaccessidentity
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-s3originconfig.html#cfn-cloudfront-distribution-s3originconfig-originaccessidentity
 cfdsocOriginAccessIdentity :: Lens' CloudFrontDistributionS3OriginConfig (Maybe (Val Text))
 cfdsocOriginAccessIdentity = lens _cloudFrontDistributionS3OriginConfigOriginAccessIdentity (\s a -> s { _cloudFrontDistributionS3OriginConfigOriginAccessIdentity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
--- a/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontDistributionViewerCertificate.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html
 
 module Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate where
 
@@ -61,22 +61,22 @@
   , _cloudFrontDistributionViewerCertificateSslSupportMethod = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-acmcertificatearn
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html#cfn-cloudfront-distribution-viewercertificate-acmcertificatearn
 cfdvcAcmCertificateArn :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
 cfdvcAcmCertificateArn = lens _cloudFrontDistributionViewerCertificateAcmCertificateArn (\s a -> s { _cloudFrontDistributionViewerCertificateAcmCertificateArn = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-cloudfrontdefaultcertificate
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html#cfn-cloudfront-distribution-viewercertificate-cloudfrontdefaultcertificate
 cfdvcCloudFrontDefaultCertificate :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Bool))
 cfdvcCloudFrontDefaultCertificate = lens _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate (\s a -> s { _cloudFrontDistributionViewerCertificateCloudFrontDefaultCertificate = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-iamcertificateid
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html#cfn-cloudfront-distribution-viewercertificate-iamcertificateid
 cfdvcIamCertificateId :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
 cfdvcIamCertificateId = lens _cloudFrontDistributionViewerCertificateIamCertificateId (\s a -> s { _cloudFrontDistributionViewerCertificateIamCertificateId = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-sslsupportmethod
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html#cfn-cloudfront-distribution-viewercertificate-minimumprotocolversion
 cfdvcMinimumProtocolVersion :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
 cfdvcMinimumProtocolVersion = lens _cloudFrontDistributionViewerCertificateMinimumProtocolVersion (\s a -> s { _cloudFrontDistributionViewerCertificateMinimumProtocolVersion = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distributionconfig-viewercertificate.html#cfn-cloudfront-distributionconfig-viewercertificate-minimumprotocolversion
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-viewercertificate.html#cfn-cloudfront-distribution-viewercertificate-sslsupportmethod
 cfdvcSslSupportMethod :: Lens' CloudFrontDistributionViewerCertificate (Maybe (Val Text))
 cfdvcSslSupportMethod = lens _cloudFrontDistributionViewerCertificateSslSupportMethod (\s a -> s { _cloudFrontDistributionViewerCertificateSslSupportMethod = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionLogging.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionLogging.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionLogging.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-logging.html
+
+module Stratosphere.ResourceProperties.CloudFrontStreamingDistributionLogging 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 CloudFrontStreamingDistributionLogging. See
+-- 'cloudFrontStreamingDistributionLogging' for a more convenient
+-- constructor.
+data CloudFrontStreamingDistributionLogging =
+  CloudFrontStreamingDistributionLogging
+  { _cloudFrontStreamingDistributionLoggingBucket :: Val Text
+  , _cloudFrontStreamingDistributionLoggingEnabled :: Val Bool
+  , _cloudFrontStreamingDistributionLoggingPrefix :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontStreamingDistributionLogging where
+  toJSON CloudFrontStreamingDistributionLogging{..} =
+    object $
+    catMaybes
+    [ (Just . ("Bucket",) . toJSON) _cloudFrontStreamingDistributionLoggingBucket
+    , (Just . ("Enabled",) . toJSON . fmap Bool') _cloudFrontStreamingDistributionLoggingEnabled
+    , (Just . ("Prefix",) . toJSON) _cloudFrontStreamingDistributionLoggingPrefix
+    ]
+
+instance FromJSON CloudFrontStreamingDistributionLogging where
+  parseJSON (Object obj) =
+    CloudFrontStreamingDistributionLogging <$>
+      (obj .: "Bucket") <*>
+      fmap (fmap unBool') (obj .: "Enabled") <*>
+      (obj .: "Prefix")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontStreamingDistributionLogging' containing
+-- required fields as arguments.
+cloudFrontStreamingDistributionLogging
+  :: Val Text -- ^ 'cfsdlBucket'
+  -> Val Bool -- ^ 'cfsdlEnabled'
+  -> Val Text -- ^ 'cfsdlPrefix'
+  -> CloudFrontStreamingDistributionLogging
+cloudFrontStreamingDistributionLogging bucketarg enabledarg prefixarg =
+  CloudFrontStreamingDistributionLogging
+  { _cloudFrontStreamingDistributionLoggingBucket = bucketarg
+  , _cloudFrontStreamingDistributionLoggingEnabled = enabledarg
+  , _cloudFrontStreamingDistributionLoggingPrefix = prefixarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-logging.html#cfn-cloudfront-streamingdistribution-logging-bucket
+cfsdlBucket :: Lens' CloudFrontStreamingDistributionLogging (Val Text)
+cfsdlBucket = lens _cloudFrontStreamingDistributionLoggingBucket (\s a -> s { _cloudFrontStreamingDistributionLoggingBucket = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-logging.html#cfn-cloudfront-streamingdistribution-logging-enabled
+cfsdlEnabled :: Lens' CloudFrontStreamingDistributionLogging (Val Bool)
+cfsdlEnabled = lens _cloudFrontStreamingDistributionLoggingEnabled (\s a -> s { _cloudFrontStreamingDistributionLoggingEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-logging.html#cfn-cloudfront-streamingdistribution-logging-prefix
+cfsdlPrefix :: Lens' CloudFrontStreamingDistributionLogging (Val Text)
+cfsdlPrefix = lens _cloudFrontStreamingDistributionLoggingPrefix (\s a -> s { _cloudFrontStreamingDistributionLoggingPrefix = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionS3Origin.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionS3Origin.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionS3Origin.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-s3origin.html
+
+module Stratosphere.ResourceProperties.CloudFrontStreamingDistributionS3Origin 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 CloudFrontStreamingDistributionS3Origin.
+-- See 'cloudFrontStreamingDistributionS3Origin' for a more convenient
+-- constructor.
+data CloudFrontStreamingDistributionS3Origin =
+  CloudFrontStreamingDistributionS3Origin
+  { _cloudFrontStreamingDistributionS3OriginDomainName :: Val Text
+  , _cloudFrontStreamingDistributionS3OriginOriginAccessIdentity :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontStreamingDistributionS3Origin where
+  toJSON CloudFrontStreamingDistributionS3Origin{..} =
+    object $
+    catMaybes
+    [ (Just . ("DomainName",) . toJSON) _cloudFrontStreamingDistributionS3OriginDomainName
+    , (Just . ("OriginAccessIdentity",) . toJSON) _cloudFrontStreamingDistributionS3OriginOriginAccessIdentity
+    ]
+
+instance FromJSON CloudFrontStreamingDistributionS3Origin where
+  parseJSON (Object obj) =
+    CloudFrontStreamingDistributionS3Origin <$>
+      (obj .: "DomainName") <*>
+      (obj .: "OriginAccessIdentity")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontStreamingDistributionS3Origin' containing
+-- required fields as arguments.
+cloudFrontStreamingDistributionS3Origin
+  :: Val Text -- ^ 'cfsdsoDomainName'
+  -> Val Text -- ^ 'cfsdsoOriginAccessIdentity'
+  -> CloudFrontStreamingDistributionS3Origin
+cloudFrontStreamingDistributionS3Origin domainNamearg originAccessIdentityarg =
+  CloudFrontStreamingDistributionS3Origin
+  { _cloudFrontStreamingDistributionS3OriginDomainName = domainNamearg
+  , _cloudFrontStreamingDistributionS3OriginOriginAccessIdentity = originAccessIdentityarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-s3origin.html#cfn-cloudfront-streamingdistribution-s3origin-domainname
+cfsdsoDomainName :: Lens' CloudFrontStreamingDistributionS3Origin (Val Text)
+cfsdsoDomainName = lens _cloudFrontStreamingDistributionS3OriginDomainName (\s a -> s { _cloudFrontStreamingDistributionS3OriginDomainName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-s3origin.html#cfn-cloudfront-streamingdistribution-s3origin-originaccessidentity
+cfsdsoOriginAccessIdentity :: Lens' CloudFrontStreamingDistributionS3Origin (Val Text)
+cfsdsoOriginAccessIdentity = lens _cloudFrontStreamingDistributionS3OriginOriginAccessIdentity (\s a -> s { _cloudFrontStreamingDistributionS3OriginOriginAccessIdentity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionStreamingDistributionConfig.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionStreamingDistributionConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionStreamingDistributionConfig.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html
+
+module Stratosphere.ResourceProperties.CloudFrontStreamingDistributionStreamingDistributionConfig 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.CloudFrontStreamingDistributionLogging
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionS3Origin
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionTrustedSigners
+
+-- | Full data type definition for
+-- CloudFrontStreamingDistributionStreamingDistributionConfig. See
+-- 'cloudFrontStreamingDistributionStreamingDistributionConfig' for a more
+-- convenient constructor.
+data CloudFrontStreamingDistributionStreamingDistributionConfig =
+  CloudFrontStreamingDistributionStreamingDistributionConfig
+  { _cloudFrontStreamingDistributionStreamingDistributionConfigAliases :: Maybe (ValList Text)
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigComment :: Val Text
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigEnabled :: Val Bool
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigLogging :: Maybe CloudFrontStreamingDistributionLogging
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigPriceClass :: Maybe (Val Text)
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigS3Origin :: CloudFrontStreamingDistributionS3Origin
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigTrustedSigners :: CloudFrontStreamingDistributionTrustedSigners
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontStreamingDistributionStreamingDistributionConfig where
+  toJSON CloudFrontStreamingDistributionStreamingDistributionConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Aliases",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfigAliases
+    , (Just . ("Comment",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfigComment
+    , (Just . ("Enabled",) . toJSON . fmap Bool') _cloudFrontStreamingDistributionStreamingDistributionConfigEnabled
+    , fmap (("Logging",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfigLogging
+    , fmap (("PriceClass",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfigPriceClass
+    , (Just . ("S3Origin",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfigS3Origin
+    , (Just . ("TrustedSigners",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfigTrustedSigners
+    ]
+
+instance FromJSON CloudFrontStreamingDistributionStreamingDistributionConfig where
+  parseJSON (Object obj) =
+    CloudFrontStreamingDistributionStreamingDistributionConfig <$>
+      (obj .:? "Aliases") <*>
+      (obj .: "Comment") <*>
+      fmap (fmap unBool') (obj .: "Enabled") <*>
+      (obj .:? "Logging") <*>
+      (obj .:? "PriceClass") <*>
+      (obj .: "S3Origin") <*>
+      (obj .: "TrustedSigners")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'CloudFrontStreamingDistributionStreamingDistributionConfig' containing
+-- required fields as arguments.
+cloudFrontStreamingDistributionStreamingDistributionConfig
+  :: Val Text -- ^ 'cfsdsdcComment'
+  -> Val Bool -- ^ 'cfsdsdcEnabled'
+  -> CloudFrontStreamingDistributionS3Origin -- ^ 'cfsdsdcS3Origin'
+  -> CloudFrontStreamingDistributionTrustedSigners -- ^ 'cfsdsdcTrustedSigners'
+  -> CloudFrontStreamingDistributionStreamingDistributionConfig
+cloudFrontStreamingDistributionStreamingDistributionConfig commentarg enabledarg s3Originarg trustedSignersarg =
+  CloudFrontStreamingDistributionStreamingDistributionConfig
+  { _cloudFrontStreamingDistributionStreamingDistributionConfigAliases = Nothing
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigComment = commentarg
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigEnabled = enabledarg
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigLogging = Nothing
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigPriceClass = Nothing
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigS3Origin = s3Originarg
+  , _cloudFrontStreamingDistributionStreamingDistributionConfigTrustedSigners = trustedSignersarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig-aliases
+cfsdsdcAliases :: Lens' CloudFrontStreamingDistributionStreamingDistributionConfig (Maybe (ValList Text))
+cfsdsdcAliases = lens _cloudFrontStreamingDistributionStreamingDistributionConfigAliases (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfigAliases = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig-comment
+cfsdsdcComment :: Lens' CloudFrontStreamingDistributionStreamingDistributionConfig (Val Text)
+cfsdsdcComment = lens _cloudFrontStreamingDistributionStreamingDistributionConfigComment (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfigComment = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig-enabled
+cfsdsdcEnabled :: Lens' CloudFrontStreamingDistributionStreamingDistributionConfig (Val Bool)
+cfsdsdcEnabled = lens _cloudFrontStreamingDistributionStreamingDistributionConfigEnabled (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfigEnabled = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig-logging
+cfsdsdcLogging :: Lens' CloudFrontStreamingDistributionStreamingDistributionConfig (Maybe CloudFrontStreamingDistributionLogging)
+cfsdsdcLogging = lens _cloudFrontStreamingDistributionStreamingDistributionConfigLogging (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfigLogging = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig-priceclass
+cfsdsdcPriceClass :: Lens' CloudFrontStreamingDistributionStreamingDistributionConfig (Maybe (Val Text))
+cfsdsdcPriceClass = lens _cloudFrontStreamingDistributionStreamingDistributionConfigPriceClass (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfigPriceClass = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig-s3origin
+cfsdsdcS3Origin :: Lens' CloudFrontStreamingDistributionStreamingDistributionConfig CloudFrontStreamingDistributionS3Origin
+cfsdsdcS3Origin = lens _cloudFrontStreamingDistributionStreamingDistributionConfigS3Origin (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfigS3Origin = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-streamingdistributionconfig.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig-trustedsigners
+cfsdsdcTrustedSigners :: Lens' CloudFrontStreamingDistributionStreamingDistributionConfig CloudFrontStreamingDistributionTrustedSigners
+cfsdsdcTrustedSigners = lens _cloudFrontStreamingDistributionStreamingDistributionConfigTrustedSigners (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfigTrustedSigners = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionTrustedSigners.hs b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionTrustedSigners.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CloudFrontStreamingDistributionTrustedSigners.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-trustedsigners.html
+
+module Stratosphere.ResourceProperties.CloudFrontStreamingDistributionTrustedSigners 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
+-- CloudFrontStreamingDistributionTrustedSigners. See
+-- 'cloudFrontStreamingDistributionTrustedSigners' for a more convenient
+-- constructor.
+data CloudFrontStreamingDistributionTrustedSigners =
+  CloudFrontStreamingDistributionTrustedSigners
+  { _cloudFrontStreamingDistributionTrustedSignersAwsAccountNumbers :: Maybe (ValList Text)
+  , _cloudFrontStreamingDistributionTrustedSignersEnabled :: Val Bool
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontStreamingDistributionTrustedSigners where
+  toJSON CloudFrontStreamingDistributionTrustedSigners{..} =
+    object $
+    catMaybes
+    [ fmap (("AwsAccountNumbers",) . toJSON) _cloudFrontStreamingDistributionTrustedSignersAwsAccountNumbers
+    , (Just . ("Enabled",) . toJSON . fmap Bool') _cloudFrontStreamingDistributionTrustedSignersEnabled
+    ]
+
+instance FromJSON CloudFrontStreamingDistributionTrustedSigners where
+  parseJSON (Object obj) =
+    CloudFrontStreamingDistributionTrustedSigners <$>
+      (obj .:? "AwsAccountNumbers") <*>
+      fmap (fmap unBool') (obj .: "Enabled")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontStreamingDistributionTrustedSigners'
+-- containing required fields as arguments.
+cloudFrontStreamingDistributionTrustedSigners
+  :: Val Bool -- ^ 'cfsdtsEnabled'
+  -> CloudFrontStreamingDistributionTrustedSigners
+cloudFrontStreamingDistributionTrustedSigners enabledarg =
+  CloudFrontStreamingDistributionTrustedSigners
+  { _cloudFrontStreamingDistributionTrustedSignersAwsAccountNumbers = Nothing
+  , _cloudFrontStreamingDistributionTrustedSignersEnabled = enabledarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-trustedsigners.html#cfn-cloudfront-streamingdistribution-trustedsigners-awsaccountnumbers
+cfsdtsAwsAccountNumbers :: Lens' CloudFrontStreamingDistributionTrustedSigners (Maybe (ValList Text))
+cfsdtsAwsAccountNumbers = lens _cloudFrontStreamingDistributionTrustedSignersAwsAccountNumbers (\s a -> s { _cloudFrontStreamingDistributionTrustedSignersAwsAccountNumbers = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-streamingdistribution-trustedsigners.html#cfn-cloudfront-streamingdistribution-trustedsigners-enabled
+cfsdtsEnabled :: Lens' CloudFrontStreamingDistributionTrustedSigners (Val Bool)
+cfsdtsEnabled = lens _cloudFrontStreamingDistributionTrustedSignersEnabled (\s a -> s { _cloudFrontStreamingDistributionTrustedSignersEnabled = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupLoadBalancerInfo.hs
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupELBInfo
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTargetGroupInfo
 
 -- | Full data type definition for CodeDeployDeploymentGroupLoadBalancerInfo.
 -- See 'codeDeployDeploymentGroupLoadBalancerInfo' for a more convenient
@@ -21,6 +22,7 @@
 data CodeDeployDeploymentGroupLoadBalancerInfo =
   CodeDeployDeploymentGroupLoadBalancerInfo
   { _codeDeployDeploymentGroupLoadBalancerInfoElbInfoList :: Maybe [CodeDeployDeploymentGroupELBInfo]
+  , _codeDeployDeploymentGroupLoadBalancerInfoTargetGroupInfoList :: Maybe [CodeDeployDeploymentGroupTargetGroupInfo]
   } deriving (Show, Eq)
 
 instance ToJSON CodeDeployDeploymentGroupLoadBalancerInfo where
@@ -28,12 +30,14 @@
     object $
     catMaybes
     [ fmap (("ElbInfoList",) . toJSON) _codeDeployDeploymentGroupLoadBalancerInfoElbInfoList
+    , fmap (("TargetGroupInfoList",) . toJSON) _codeDeployDeploymentGroupLoadBalancerInfoTargetGroupInfoList
     ]
 
 instance FromJSON CodeDeployDeploymentGroupLoadBalancerInfo where
   parseJSON (Object obj) =
     CodeDeployDeploymentGroupLoadBalancerInfo <$>
-      (obj .:? "ElbInfoList")
+      (obj .:? "ElbInfoList") <*>
+      (obj .:? "TargetGroupInfoList")
   parseJSON _ = mempty
 
 -- | Constructor for 'CodeDeployDeploymentGroupLoadBalancerInfo' containing
@@ -43,8 +47,13 @@
 codeDeployDeploymentGroupLoadBalancerInfo  =
   CodeDeployDeploymentGroupLoadBalancerInfo
   { _codeDeployDeploymentGroupLoadBalancerInfoElbInfoList = Nothing
+  , _codeDeployDeploymentGroupLoadBalancerInfoTargetGroupInfoList = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo-elbinfolist
 cddglbiElbInfoList :: Lens' CodeDeployDeploymentGroupLoadBalancerInfo (Maybe [CodeDeployDeploymentGroupELBInfo])
 cddglbiElbInfoList = lens _codeDeployDeploymentGroupLoadBalancerInfoElbInfoList (\s a -> s { _codeDeployDeploymentGroupLoadBalancerInfoElbInfoList = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo-targetgroupinfolist
+cddglbiTargetGroupInfoList :: Lens' CodeDeployDeploymentGroupLoadBalancerInfo (Maybe [CodeDeployDeploymentGroupTargetGroupInfo])
+cddglbiTargetGroupInfoList = lens _codeDeployDeploymentGroupLoadBalancerInfoTargetGroupInfoList (\s a -> s { _codeDeployDeploymentGroupLoadBalancerInfoTargetGroupInfoList = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTargetGroupInfo.hs b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTargetGroupInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CodeDeployDeploymentGroupTargetGroupInfo.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgroupinfo.html
+
+module Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTargetGroupInfo 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 CodeDeployDeploymentGroupTargetGroupInfo.
+-- See 'codeDeployDeploymentGroupTargetGroupInfo' for a more convenient
+-- constructor.
+data CodeDeployDeploymentGroupTargetGroupInfo =
+  CodeDeployDeploymentGroupTargetGroupInfo
+  { _codeDeployDeploymentGroupTargetGroupInfoName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON CodeDeployDeploymentGroupTargetGroupInfo where
+  toJSON CodeDeployDeploymentGroupTargetGroupInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("Name",) . toJSON) _codeDeployDeploymentGroupTargetGroupInfoName
+    ]
+
+instance FromJSON CodeDeployDeploymentGroupTargetGroupInfo where
+  parseJSON (Object obj) =
+    CodeDeployDeploymentGroupTargetGroupInfo <$>
+      (obj .:? "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CodeDeployDeploymentGroupTargetGroupInfo' containing
+-- required fields as arguments.
+codeDeployDeploymentGroupTargetGroupInfo
+  :: CodeDeployDeploymentGroupTargetGroupInfo
+codeDeployDeploymentGroupTargetGroupInfo  =
+  CodeDeployDeploymentGroupTargetGroupInfo
+  { _codeDeployDeploymentGroupTargetGroupInfoName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgroupinfo.html#cfn-codedeploy-deploymentgroup-targetgroupinfo-name
+cddgtgiName :: Lens' CodeDeployDeploymentGroupTargetGroupInfo (Maybe (Val Text))
+cddgtgiName = lens _codeDeployDeploymentGroupTargetGroupInfoName (\s a -> s { _codeDeployDeploymentGroupTargetGroupInfoName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticGpuSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticGpuSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2InstanceElasticGpuSpecification.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html
+
+module Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification 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 EC2InstanceElasticGpuSpecification. See
+-- 'ec2InstanceElasticGpuSpecification' for a more convenient constructor.
+data EC2InstanceElasticGpuSpecification =
+  EC2InstanceElasticGpuSpecification
+  { _eC2InstanceElasticGpuSpecificationType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON EC2InstanceElasticGpuSpecification where
+  toJSON EC2InstanceElasticGpuSpecification{..} =
+    object $
+    catMaybes
+    [ (Just . ("Type",) . toJSON) _eC2InstanceElasticGpuSpecificationType
+    ]
+
+instance FromJSON EC2InstanceElasticGpuSpecification where
+  parseJSON (Object obj) =
+    EC2InstanceElasticGpuSpecification <$>
+      (obj .: "Type")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2InstanceElasticGpuSpecification' containing required
+-- fields as arguments.
+ec2InstanceElasticGpuSpecification
+  :: Val Text -- ^ 'eciegsType'
+  -> EC2InstanceElasticGpuSpecification
+ec2InstanceElasticGpuSpecification typearg =
+  EC2InstanceElasticGpuSpecification
+  { _eC2InstanceElasticGpuSpecificationType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html#cfn-ec2-instance-elasticgpuspecification-type
+eciegsType :: Lens' EC2InstanceElasticGpuSpecification (Val Text)
+eciegsType = lens _eC2InstanceElasticGpuSpecificationType (\s a -> s { _eC2InstanceElasticGpuSpecificationType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupEgressProperty.hs
@@ -21,6 +21,7 @@
   EC2SecurityGroupEgressProperty
   { _eC2SecurityGroupEgressPropertyCidrIp :: Maybe (Val Text)
   , _eC2SecurityGroupEgressPropertyCidrIpv6 :: Maybe (Val Text)
+  , _eC2SecurityGroupEgressPropertyDescription :: Maybe (Val Text)
   , _eC2SecurityGroupEgressPropertyDestinationPrefixListId :: Maybe (Val Text)
   , _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId :: Maybe (Val Text)
   , _eC2SecurityGroupEgressPropertyFromPort :: Maybe (Val Integer)
@@ -34,6 +35,7 @@
     catMaybes
     [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupEgressPropertyCidrIp
     , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupEgressPropertyCidrIpv6
+    , fmap (("Description",) . toJSON) _eC2SecurityGroupEgressPropertyDescription
     , fmap (("DestinationPrefixListId",) . toJSON) _eC2SecurityGroupEgressPropertyDestinationPrefixListId
     , fmap (("DestinationSecurityGroupId",) . toJSON) _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId
     , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressPropertyFromPort
@@ -46,6 +48,7 @@
     EC2SecurityGroupEgressProperty <$>
       (obj .:? "CidrIp") <*>
       (obj .:? "CidrIpv6") <*>
+      (obj .:? "Description") <*>
       (obj .:? "DestinationPrefixListId") <*>
       (obj .:? "DestinationSecurityGroupId") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
@@ -62,6 +65,7 @@
   EC2SecurityGroupEgressProperty
   { _eC2SecurityGroupEgressPropertyCidrIp = Nothing
   , _eC2SecurityGroupEgressPropertyCidrIpv6 = Nothing
+  , _eC2SecurityGroupEgressPropertyDescription = Nothing
   , _eC2SecurityGroupEgressPropertyDestinationPrefixListId = Nothing
   , _eC2SecurityGroupEgressPropertyDestinationSecurityGroupId = Nothing
   , _eC2SecurityGroupEgressPropertyFromPort = Nothing
@@ -76,6 +80,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-cidripv6
 ecsgepCidrIpv6 :: Lens' EC2SecurityGroupEgressProperty (Maybe (Val Text))
 ecsgepCidrIpv6 = lens _eC2SecurityGroupEgressPropertyCidrIpv6 (\s a -> s { _eC2SecurityGroupEgressPropertyCidrIpv6 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-description
+ecsgepDescription :: Lens' EC2SecurityGroupEgressProperty (Maybe (Val Text))
+ecsgepDescription = lens _eC2SecurityGroupEgressPropertyDescription (\s a -> s { _eC2SecurityGroupEgressPropertyDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-destinationprefixlistid
 ecsgepDestinationPrefixListId :: Lens' EC2SecurityGroupEgressProperty (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
--- a/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EC2SecurityGroupIngressProperty.hs
@@ -21,6 +21,7 @@
   EC2SecurityGroupIngressProperty
   { _eC2SecurityGroupIngressPropertyCidrIp :: Maybe (Val Text)
   , _eC2SecurityGroupIngressPropertyCidrIpv6 :: Maybe (Val Text)
+  , _eC2SecurityGroupIngressPropertyDescription :: Maybe (Val Text)
   , _eC2SecurityGroupIngressPropertyFromPort :: Maybe (Val Integer)
   , _eC2SecurityGroupIngressPropertyIpProtocol :: Val Text
   , _eC2SecurityGroupIngressPropertySourceSecurityGroupId :: Maybe (Val Text)
@@ -35,6 +36,7 @@
     catMaybes
     [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupIngressPropertyCidrIp
     , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupIngressPropertyCidrIpv6
+    , fmap (("Description",) . toJSON) _eC2SecurityGroupIngressPropertyDescription
     , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressPropertyFromPort
     , (Just . ("IpProtocol",) . toJSON) _eC2SecurityGroupIngressPropertyIpProtocol
     , fmap (("SourceSecurityGroupId",) . toJSON) _eC2SecurityGroupIngressPropertySourceSecurityGroupId
@@ -48,6 +50,7 @@
     EC2SecurityGroupIngressProperty <$>
       (obj .:? "CidrIp") <*>
       (obj .:? "CidrIpv6") <*>
+      (obj .:? "Description") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
       (obj .: "IpProtocol") <*>
       (obj .:? "SourceSecurityGroupId") <*>
@@ -65,6 +68,7 @@
   EC2SecurityGroupIngressProperty
   { _eC2SecurityGroupIngressPropertyCidrIp = Nothing
   , _eC2SecurityGroupIngressPropertyCidrIpv6 = Nothing
+  , _eC2SecurityGroupIngressPropertyDescription = Nothing
   , _eC2SecurityGroupIngressPropertyFromPort = Nothing
   , _eC2SecurityGroupIngressPropertyIpProtocol = ipProtocolarg
   , _eC2SecurityGroupIngressPropertySourceSecurityGroupId = Nothing
@@ -80,6 +84,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-cidripv6
 ecsgipCidrIpv6 :: Lens' EC2SecurityGroupIngressProperty (Maybe (Val Text))
 ecsgipCidrIpv6 = lens _eC2SecurityGroupIngressPropertyCidrIpv6 (\s a -> s { _eC2SecurityGroupIngressPropertyCidrIpv6 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-description
+ecsgipDescription :: Lens' EC2SecurityGroupIngressProperty (Maybe (Val Text))
+ecsgipDescription = lens _eC2SecurityGroupIngressPropertyDescription (\s a -> s { _eC2SecurityGroupIngressPropertyDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html#cfn-ec2-security-group-rule-fromport
 ecsgipFromPort :: Lens' EC2SecurityGroupIngressProperty (Maybe (Val Integer))
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2VPNConnectionVpnTunnelOptionsSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2VPNConnectionVpnTunnelOptionsSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2VPNConnectionVpnTunnelOptionsSpecification.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-vpnconnection-vpntunneloptionsspecification.html
+
+module Stratosphere.ResourceProperties.EC2VPNConnectionVpnTunnelOptionsSpecification 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
+-- EC2VPNConnectionVpnTunnelOptionsSpecification. See
+-- 'ec2VPNConnectionVpnTunnelOptionsSpecification' for a more convenient
+-- constructor.
+data EC2VPNConnectionVpnTunnelOptionsSpecification =
+  EC2VPNConnectionVpnTunnelOptionsSpecification
+  { _eC2VPNConnectionVpnTunnelOptionsSpecificationPreSharedKey :: Maybe (Val Text)
+  , _eC2VPNConnectionVpnTunnelOptionsSpecificationTunnelInsideCidr :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2VPNConnectionVpnTunnelOptionsSpecification where
+  toJSON EC2VPNConnectionVpnTunnelOptionsSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("PreSharedKey",) . toJSON) _eC2VPNConnectionVpnTunnelOptionsSpecificationPreSharedKey
+    , fmap (("TunnelInsideCidr",) . toJSON) _eC2VPNConnectionVpnTunnelOptionsSpecificationTunnelInsideCidr
+    ]
+
+instance FromJSON EC2VPNConnectionVpnTunnelOptionsSpecification where
+  parseJSON (Object obj) =
+    EC2VPNConnectionVpnTunnelOptionsSpecification <$>
+      (obj .:? "PreSharedKey") <*>
+      (obj .:? "TunnelInsideCidr")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2VPNConnectionVpnTunnelOptionsSpecification'
+-- containing required fields as arguments.
+ec2VPNConnectionVpnTunnelOptionsSpecification
+  :: EC2VPNConnectionVpnTunnelOptionsSpecification
+ec2VPNConnectionVpnTunnelOptionsSpecification  =
+  EC2VPNConnectionVpnTunnelOptionsSpecification
+  { _eC2VPNConnectionVpnTunnelOptionsSpecificationPreSharedKey = Nothing
+  , _eC2VPNConnectionVpnTunnelOptionsSpecificationTunnelInsideCidr = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-vpnconnection-vpntunneloptionsspecification.html#cfn-ec2-vpnconnection-vpntunneloptionsspecification-presharedkey
+ecvpncvtosPreSharedKey :: Lens' EC2VPNConnectionVpnTunnelOptionsSpecification (Maybe (Val Text))
+ecvpncvtosPreSharedKey = lens _eC2VPNConnectionVpnTunnelOptionsSpecificationPreSharedKey (\s a -> s { _eC2VPNConnectionVpnTunnelOptionsSpecificationPreSharedKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-vpnconnection-vpntunneloptionsspecification.html#cfn-ec2-vpnconnection-vpntunneloptionsspecification-tunnelinsidecidr
+ecvpncvtosTunnelInsideCidr :: Lens' EC2VPNConnectionVpnTunnelOptionsSpecification (Maybe (Val Text))
+ecvpncvtosTunnelInsideCidr = lens _eC2VPNConnectionVpnTunnelOptionsSpecificationTunnelInsideCidr (\s a -> s { _eC2VPNConnectionVpnTunnelOptionsSpecificationTunnelInsideCidr = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterApplication.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-application.html
 
 module Stratosphere.ResourceProperties.EMRClusterApplication where
 
@@ -56,18 +56,18 @@
   , _eMRClusterApplicationVersion = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-additionalinfo
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-application.html#cfn-elasticmapreduce-cluster-application-additionalinfo
 emrcaAdditionalInfo :: Lens' EMRClusterApplication (Maybe Object)
 emrcaAdditionalInfo = lens _eMRClusterApplicationAdditionalInfo (\s a -> s { _eMRClusterApplicationAdditionalInfo = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-args
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-application.html#cfn-elasticmapreduce-cluster-application-args
 emrcaArgs :: Lens' EMRClusterApplication (Maybe (ValList Text))
 emrcaArgs = lens _eMRClusterApplicationArgs (\s a -> s { _eMRClusterApplicationArgs = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-name
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-application.html#cfn-elasticmapreduce-cluster-application-name
 emrcaName :: Lens' EMRClusterApplication (Maybe (Val Text))
 emrcaName = lens _eMRClusterApplicationName (\s a -> s { _eMRClusterApplicationName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-application.html#cfn-emr-cluster-application-version
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-application.html#cfn-elasticmapreduce-cluster-application-version
 emrcaVersion :: Lens' EMRClusterApplication (Maybe (Val Text))
 emrcaVersion = lens _eMRClusterApplicationVersion (\s a -> s { _eMRClusterApplicationVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterBootstrapActionConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-bootstrapactionconfig.html
 
 module Stratosphere.ResourceProperties.EMRClusterBootstrapActionConfig where
 
@@ -50,10 +50,10 @@
   , _eMRClusterBootstrapActionConfigScriptBootstrapAction = scriptBootstrapActionarg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-name
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-bootstrapactionconfig.html#cfn-elasticmapreduce-cluster-bootstrapactionconfig-name
 emrcbacName :: Lens' EMRClusterBootstrapActionConfig (Val Text)
 emrcbacName = lens _eMRClusterBootstrapActionConfigName (\s a -> s { _eMRClusterBootstrapActionConfigName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-bootstrapactionconfig.html#cfn-elasticmapreduce-cluster-bootstrapactionconfig-scriptbootstrapaction
 emrcbacScriptBootstrapAction :: Lens' EMRClusterBootstrapActionConfig EMRClusterScriptBootstrapActionConfig
 emrcbacScriptBootstrapAction = lens _eMRClusterBootstrapActionConfigScriptBootstrapAction (\s a -> s { _eMRClusterBootstrapActionConfigScriptBootstrapAction = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterConfiguration.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-configuration.html
 
 module Stratosphere.ResourceProperties.EMRClusterConfiguration where
 
@@ -52,14 +52,14 @@
   , _eMRClusterConfigurationConfigurations = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-classification
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-configuration.html#cfn-elasticmapreduce-cluster-configuration-classification
 emrccClassification :: Lens' EMRClusterConfiguration (Maybe (Val Text))
 emrccClassification = lens _eMRClusterConfigurationClassification (\s a -> s { _eMRClusterConfigurationClassification = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-configurationproperties
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-configuration.html#cfn-elasticmapreduce-cluster-configuration-configurationproperties
 emrccConfigurationProperties :: Lens' EMRClusterConfiguration (Maybe Object)
 emrccConfigurationProperties = lens _eMRClusterConfigurationConfigurationProperties (\s a -> s { _eMRClusterConfigurationConfigurationProperties = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html#cfn-emr-cluster-configuration-configurations
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-configuration.html#cfn-elasticmapreduce-cluster-configuration-configurations
 emrccConfigurations :: Lens' EMRClusterConfiguration (Maybe [EMRClusterConfiguration])
 emrccConfigurations = lens _eMRClusterConfigurationConfigurations (\s a -> s { _eMRClusterConfigurationConfigurations = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsBlockDeviceConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsblockdeviceconfig.html
 
 module Stratosphere.ResourceProperties.EMRClusterEbsBlockDeviceConfig where
 
@@ -49,10 +49,10 @@
   , _eMRClusterEbsBlockDeviceConfigVolumesPerInstance = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsblockdeviceconfig.html#cfn-elasticmapreduce-cluster-ebsblockdeviceconfig-volumespecification
 emrcebdcVolumeSpecification :: Lens' EMRClusterEbsBlockDeviceConfig EMRClusterVolumeSpecification
 emrcebdcVolumeSpecification = lens _eMRClusterEbsBlockDeviceConfigVolumeSpecification (\s a -> s { _eMRClusterEbsBlockDeviceConfigVolumeSpecification = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumesperinstance
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsblockdeviceconfig.html#cfn-elasticmapreduce-cluster-ebsblockdeviceconfig-volumesperinstance
 emrcebdcVolumesPerInstance :: Lens' EMRClusterEbsBlockDeviceConfig (Maybe (Val Integer))
 emrcebdcVolumesPerInstance = lens _eMRClusterEbsBlockDeviceConfigVolumesPerInstance (\s a -> s { _eMRClusterEbsBlockDeviceConfigVolumesPerInstance = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterEbsConfiguration.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsconfiguration.html
 
 module Stratosphere.ResourceProperties.EMRClusterEbsConfiguration where
 
@@ -48,10 +48,10 @@
   , _eMRClusterEbsConfigurationEbsOptimized = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfigs
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsconfiguration.html#cfn-elasticmapreduce-cluster-ebsconfiguration-ebsblockdeviceconfigs
 emrcecEbsBlockDeviceConfigs :: Lens' EMRClusterEbsConfiguration (Maybe [EMRClusterEbsBlockDeviceConfig])
 emrcecEbsBlockDeviceConfigs = lens _eMRClusterEbsConfigurationEbsBlockDeviceConfigs (\s a -> s { _eMRClusterEbsConfigurationEbsBlockDeviceConfigs = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html#cfn-emr-ebsconfiguration-ebsoptimized
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsconfiguration.html#cfn-elasticmapreduce-cluster-ebsconfiguration-ebsoptimized
 emrcecEbsOptimized :: Lens' EMRClusterEbsConfiguration (Maybe (Val Bool))
 emrcecEbsOptimized = lens _eMRClusterEbsConfigurationEbsOptimized (\s a -> s { _eMRClusterEbsConfigurationEbsOptimized = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterInstanceGroupConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html
 
 module Stratosphere.ResourceProperties.EMRClusterInstanceGroupConfig where
 
@@ -76,34 +76,34 @@
   , _eMRClusterInstanceGroupConfigName = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-autoscalingpolicy
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-autoscalingpolicy
 emrcigcAutoScalingPolicy :: Lens' EMRClusterInstanceGroupConfig (Maybe EMRClusterAutoScalingPolicy)
 emrcigcAutoScalingPolicy = lens _eMRClusterInstanceGroupConfigAutoScalingPolicy (\s a -> s { _eMRClusterInstanceGroupConfigAutoScalingPolicy = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-bidprice
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-bidprice
 emrcigcBidPrice :: Lens' EMRClusterInstanceGroupConfig (Maybe (Val Text))
 emrcigcBidPrice = lens _eMRClusterInstanceGroupConfigBidPrice (\s a -> s { _eMRClusterInstanceGroupConfigBidPrice = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-configurations
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-configurations
 emrcigcConfigurations :: Lens' EMRClusterInstanceGroupConfig (Maybe [EMRClusterConfiguration])
 emrcigcConfigurations = lens _eMRClusterInstanceGroupConfigConfigurations (\s a -> s { _eMRClusterInstanceGroupConfigConfigurations = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfigConfigurations-ebsconfiguration
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-ebsconfiguration
 emrcigcEbsConfiguration :: Lens' EMRClusterInstanceGroupConfig (Maybe EMRClusterEbsConfiguration)
 emrcigcEbsConfiguration = lens _eMRClusterInstanceGroupConfigEbsConfiguration (\s a -> s { _eMRClusterInstanceGroupConfigEbsConfiguration = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-instancecount
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-instancecount
 emrcigcInstanceCount :: Lens' EMRClusterInstanceGroupConfig (Val Integer)
 emrcigcInstanceCount = lens _eMRClusterInstanceGroupConfigInstanceCount (\s a -> s { _eMRClusterInstanceGroupConfigInstanceCount = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-instancetype
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-instancetype
 emrcigcInstanceType :: Lens' EMRClusterInstanceGroupConfig (Val Text)
 emrcigcInstanceType = lens _eMRClusterInstanceGroupConfigInstanceType (\s a -> s { _eMRClusterInstanceGroupConfigInstanceType = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-market
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-market
 emrcigcMarket :: Lens' EMRClusterInstanceGroupConfig (Maybe (Val Text))
 emrcigcMarket = lens _eMRClusterInstanceGroupConfigMarket (\s a -> s { _eMRClusterInstanceGroupConfigMarket = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-instancegroupconfig.html#cfn-emr-cluster-jobflowinstancesconfig-instancegroupconfig-name
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html#cfn-elasticmapreduce-cluster-instancegroupconfig-name
 emrcigcName :: Lens' EMRClusterInstanceGroupConfig (Maybe (Val Text))
 emrcigcName = lens _eMRClusterInstanceGroupConfigName (\s a -> s { _eMRClusterInstanceGroupConfigName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterJobFlowInstancesConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html
 
 module Stratosphere.ResourceProperties.EMRClusterJobFlowInstancesConfig where
 
@@ -98,58 +98,58 @@
   , _eMRClusterJobFlowInstancesConfigTerminationProtected = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-additionalmastersecuritygroups
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-additionalmastersecuritygroups
 emrcjficAdditionalMasterSecurityGroups :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (ValList Text))
 emrcjficAdditionalMasterSecurityGroups = lens _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups (\s a -> s { _eMRClusterJobFlowInstancesConfigAdditionalMasterSecurityGroups = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-additionalslavesecuritygroups
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-additionalslavesecuritygroups
 emrcjficAdditionalSlaveSecurityGroups :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (ValList Text))
 emrcjficAdditionalSlaveSecurityGroups = lens _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups (\s a -> s { _eMRClusterJobFlowInstancesConfigAdditionalSlaveSecurityGroups = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-coreinstancefleet
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-coreinstancefleet
 emrcjficCoreInstanceFleet :: Lens' EMRClusterJobFlowInstancesConfig (Maybe EMRClusterInstanceFleetConfig)
 emrcjficCoreInstanceFleet = lens _eMRClusterJobFlowInstancesConfigCoreInstanceFleet (\s a -> s { _eMRClusterJobFlowInstancesConfigCoreInstanceFleet = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-coreinstancegroup
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-coreinstancegroup
 emrcjficCoreInstanceGroup :: Lens' EMRClusterJobFlowInstancesConfig (Maybe EMRClusterInstanceGroupConfig)
 emrcjficCoreInstanceGroup = lens _eMRClusterJobFlowInstancesConfigCoreInstanceGroup (\s a -> s { _eMRClusterJobFlowInstancesConfigCoreInstanceGroup = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-ec2keyname
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-ec2keyname
 emrcjficEc2KeyName :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
 emrcjficEc2KeyName = lens _eMRClusterJobFlowInstancesConfigEc2KeyName (\s a -> s { _eMRClusterJobFlowInstancesConfigEc2KeyName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-ec2subnetid
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-ec2subnetid
 emrcjficEc2SubnetId :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
 emrcjficEc2SubnetId = lens _eMRClusterJobFlowInstancesConfigEc2SubnetId (\s a -> s { _eMRClusterJobFlowInstancesConfigEc2SubnetId = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-emrmanagedmastersecuritygroup
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-emrmanagedmastersecuritygroup
 emrcjficEmrManagedMasterSecurityGroup :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
 emrcjficEmrManagedMasterSecurityGroup = lens _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup (\s a -> s { _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-emrmanagedslavesecuritygroup
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-emrmanagedslavesecuritygroup
 emrcjficEmrManagedSlaveSecurityGroup :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
 emrcjficEmrManagedSlaveSecurityGroup = lens _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup (\s a -> s { _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-hadoopversion
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-hadoopversion
 emrcjficHadoopVersion :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
 emrcjficHadoopVersion = lens _eMRClusterJobFlowInstancesConfigHadoopVersion (\s a -> s { _eMRClusterJobFlowInstancesConfigHadoopVersion = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-masterinstancefleet
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-masterinstancefleet
 emrcjficMasterInstanceFleet :: Lens' EMRClusterJobFlowInstancesConfig (Maybe EMRClusterInstanceFleetConfig)
 emrcjficMasterInstanceFleet = lens _eMRClusterJobFlowInstancesConfigMasterInstanceFleet (\s a -> s { _eMRClusterJobFlowInstancesConfigMasterInstanceFleet = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-coreinstancegroup
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-masterinstancegroup
 emrcjficMasterInstanceGroup :: Lens' EMRClusterJobFlowInstancesConfig (Maybe EMRClusterInstanceGroupConfig)
 emrcjficMasterInstanceGroup = lens _eMRClusterJobFlowInstancesConfigMasterInstanceGroup (\s a -> s { _eMRClusterJobFlowInstancesConfigMasterInstanceGroup = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-placement
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-placement
 emrcjficPlacement :: Lens' EMRClusterJobFlowInstancesConfig (Maybe EMRClusterPlacementType)
 emrcjficPlacement = lens _eMRClusterJobFlowInstancesConfigPlacement (\s a -> s { _eMRClusterJobFlowInstancesConfigPlacement = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-serviceaccesssecuritygroup
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-serviceaccesssecuritygroup
 emrcjficServiceAccessSecurityGroup :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Text))
 emrcjficServiceAccessSecurityGroup = lens _eMRClusterJobFlowInstancesConfigServiceAccessSecurityGroup (\s a -> s { _eMRClusterJobFlowInstancesConfigServiceAccessSecurityGroup = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig.html#cfn-emr-cluster-jobflowinstancesconfig-terminationprotected
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-terminationprotected
 emrcjficTerminationProtected :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Bool))
 emrcjficTerminationProtected = lens _eMRClusterJobFlowInstancesConfigTerminationProtected (\s a -> s { _eMRClusterJobFlowInstancesConfigTerminationProtected = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterPlacementType.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-placementtype.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-placementtype.html
 
 module Stratosphere.ResourceProperties.EMRClusterPlacementType where
 
@@ -45,6 +45,6 @@
   { _eMRClusterPlacementTypeAvailabilityZone = availabilityZonearg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-jobflowinstancesconfig-placementtype.html#aws-properties-emr-cluster-jobflowinstancesconfig-placementtype
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-placementtype.html#cfn-elasticmapreduce-cluster-placementtype-availabilityzone
 emrcptAvailabilityZone :: Lens' EMRClusterPlacementType (Val Text)
 emrcptAvailabilityZone = lens _eMRClusterPlacementTypeAvailabilityZone (\s a -> s { _eMRClusterPlacementTypeAvailabilityZone = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterScriptBootstrapActionConfig.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scriptbootstrapactionconfig.html
 
 module Stratosphere.ResourceProperties.EMRClusterScriptBootstrapActionConfig where
 
@@ -50,10 +50,10 @@
   , _eMRClusterScriptBootstrapActionConfigPath = patharg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction-args
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scriptbootstrapactionconfig.html#cfn-elasticmapreduce-cluster-scriptbootstrapactionconfig-args
 emrcsbacArgs :: Lens' EMRClusterScriptBootstrapActionConfig (Maybe (ValList Text))
 emrcsbacArgs = lens _eMRClusterScriptBootstrapActionConfigArgs (\s a -> s { _eMRClusterScriptBootstrapActionConfigArgs = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-bootstrapactionconfig-scriptbootstrapactionconfig.html#cfn-emr-cluster-bootstrapactionconfig-scriptbootstrapaction-path
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scriptbootstrapactionconfig.html#cfn-elasticmapreduce-cluster-scriptbootstrapactionconfig-path
 emrcsbacPath :: Lens' EMRClusterScriptBootstrapActionConfig (Val Text)
 emrcsbacPath = lens _eMRClusterScriptBootstrapActionConfigPath (\s a -> s { _eMRClusterScriptBootstrapActionConfigPath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
--- a/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterVolumeSpecification.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-volumespecification.html
 
 module Stratosphere.ResourceProperties.EMRClusterVolumeSpecification where
 
@@ -54,14 +54,14 @@
   , _eMRClusterVolumeSpecificationVolumeType = volumeTypearg
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-iops
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-volumespecification.html#cfn-elasticmapreduce-cluster-volumespecification-iops
 emrcvsIops :: Lens' EMRClusterVolumeSpecification (Maybe (Val Integer))
 emrcvsIops = lens _eMRClusterVolumeSpecificationIops (\s a -> s { _eMRClusterVolumeSpecificationIops = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-sizeingb
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-volumespecification.html#cfn-elasticmapreduce-cluster-volumespecification-sizeingb
 emrcvsSizeInGB :: Lens' EMRClusterVolumeSpecification (Val Integer)
 emrcvsSizeInGB = lens _eMRClusterVolumeSpecificationSizeInGB (\s a -> s { _eMRClusterVolumeSpecificationSizeInGB = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html#cfn-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification-volumetype
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-volumespecification.html#cfn-elasticmapreduce-cluster-volumespecification-volumetype
 emrcvsVolumeType :: Lens' EMRClusterVolumeSpecification (Val Text)
 emrcvsVolumeType = lens _eMRClusterVolumeSpecificationVolumeType (\s a -> s { _eMRClusterVolumeSpecificationVolumeType = 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,6 +23,7 @@
   ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting
   { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace :: Val Text
   , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName :: Val Text
+  , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingResourceName :: Maybe (Val Text)
   , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -32,6 +33,7 @@
     catMaybes
     [ (Just . ("Namespace",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace
     , (Just . ("OptionName",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName
+    , fmap (("ResourceName",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingResourceName
     , fmap (("Value",) . toJSON) _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue
     ]
 
@@ -40,6 +42,7 @@
     ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting <$>
       (obj .: "Namespace") <*>
       (obj .: "OptionName") <*>
+      (obj .:? "ResourceName") <*>
       (obj .:? "Value")
   parseJSON _ = mempty
 
@@ -54,6 +57,7 @@
   ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting
   { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingNamespace = namespacearg
   , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName = optionNamearg
+  , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingResourceName = Nothing
   , _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingValue = Nothing
   }
 
@@ -64,6 +68,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-optionname
 ebctcosOptionName :: Lens' ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting (Val Text)
 ebctcosOptionName = lens _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName (\s a -> s { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingOptionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-elasticbeanstalk-configurationtemplate-configurationoptionsetting-resourcename
+ebctcosResourceName :: Lens' ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting (Maybe (Val Text))
+ebctcosResourceName = lens _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingResourceName (\s a -> s { _elasticBeanstalkConfigurationTemplateConfigurationOptionSettingResourceName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-option-settings.html#cfn-beanstalk-optionsettings-value
 ebctcosValue :: Lens' ElasticBeanstalkConfigurationTemplateConfigurationOptionSetting (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticBeanstalkEnvironmentOptionSetting.hs
@@ -22,6 +22,7 @@
   ElasticBeanstalkEnvironmentOptionSetting
   { _elasticBeanstalkEnvironmentOptionSettingNamespace :: Val Text
   , _elasticBeanstalkEnvironmentOptionSettingOptionName :: Val Text
+  , _elasticBeanstalkEnvironmentOptionSettingResourceName :: Maybe (Val Text)
   , _elasticBeanstalkEnvironmentOptionSettingValue :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -31,6 +32,7 @@
     catMaybes
     [ (Just . ("Namespace",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingNamespace
     , (Just . ("OptionName",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingOptionName
+    , fmap (("ResourceName",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingResourceName
     , fmap (("Value",) . toJSON) _elasticBeanstalkEnvironmentOptionSettingValue
     ]
 
@@ -39,6 +41,7 @@
     ElasticBeanstalkEnvironmentOptionSetting <$>
       (obj .: "Namespace") <*>
       (obj .: "OptionName") <*>
+      (obj .:? "ResourceName") <*>
       (obj .:? "Value")
   parseJSON _ = mempty
 
@@ -52,6 +55,7 @@
   ElasticBeanstalkEnvironmentOptionSetting
   { _elasticBeanstalkEnvironmentOptionSettingNamespace = namespacearg
   , _elasticBeanstalkEnvironmentOptionSettingOptionName = optionNamearg
+  , _elasticBeanstalkEnvironmentOptionSettingResourceName = Nothing
   , _elasticBeanstalkEnvironmentOptionSettingValue = Nothing
   }
 
@@ -62,6 +66,10 @@
 -- | 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-elasticbeanstalk-environment-optionsetting-resourcename
+ebeosResourceName :: Lens' ElasticBeanstalkEnvironmentOptionSetting (Maybe (Val Text))
+ebeosResourceName = lens _elasticBeanstalkEnvironmentOptionSettingResourceName (\s a -> s { _elasticBeanstalkEnvironmentOptionSettingResourceName = 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))
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueClassifierGrokClassifier.hs b/library-gen/Stratosphere/ResourceProperties/GlueClassifierGrokClassifier.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueClassifierGrokClassifier.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-grokclassifier.html
+
+module Stratosphere.ResourceProperties.GlueClassifierGrokClassifier 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 GlueClassifierGrokClassifier. See
+-- 'glueClassifierGrokClassifier' for a more convenient constructor.
+data GlueClassifierGrokClassifier =
+  GlueClassifierGrokClassifier
+  { _glueClassifierGrokClassifierClassification :: Val Text
+  , _glueClassifierGrokClassifierCustomPatterns :: Maybe (Val Text)
+  , _glueClassifierGrokClassifierGrokPattern :: Val Text
+  , _glueClassifierGrokClassifierName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueClassifierGrokClassifier where
+  toJSON GlueClassifierGrokClassifier{..} =
+    object $
+    catMaybes
+    [ (Just . ("Classification",) . toJSON) _glueClassifierGrokClassifierClassification
+    , fmap (("CustomPatterns",) . toJSON) _glueClassifierGrokClassifierCustomPatterns
+    , (Just . ("GrokPattern",) . toJSON) _glueClassifierGrokClassifierGrokPattern
+    , fmap (("Name",) . toJSON) _glueClassifierGrokClassifierName
+    ]
+
+instance FromJSON GlueClassifierGrokClassifier where
+  parseJSON (Object obj) =
+    GlueClassifierGrokClassifier <$>
+      (obj .: "Classification") <*>
+      (obj .:? "CustomPatterns") <*>
+      (obj .: "GrokPattern") <*>
+      (obj .:? "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueClassifierGrokClassifier' containing required fields
+-- as arguments.
+glueClassifierGrokClassifier
+  :: Val Text -- ^ 'gcgcClassification'
+  -> Val Text -- ^ 'gcgcGrokPattern'
+  -> GlueClassifierGrokClassifier
+glueClassifierGrokClassifier classificationarg grokPatternarg =
+  GlueClassifierGrokClassifier
+  { _glueClassifierGrokClassifierClassification = classificationarg
+  , _glueClassifierGrokClassifierCustomPatterns = Nothing
+  , _glueClassifierGrokClassifierGrokPattern = grokPatternarg
+  , _glueClassifierGrokClassifierName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-grokclassifier.html#cfn-glue-classifier-grokclassifier-classification
+gcgcClassification :: Lens' GlueClassifierGrokClassifier (Val Text)
+gcgcClassification = lens _glueClassifierGrokClassifierClassification (\s a -> s { _glueClassifierGrokClassifierClassification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-grokclassifier.html#cfn-glue-classifier-grokclassifier-custompatterns
+gcgcCustomPatterns :: Lens' GlueClassifierGrokClassifier (Maybe (Val Text))
+gcgcCustomPatterns = lens _glueClassifierGrokClassifierCustomPatterns (\s a -> s { _glueClassifierGrokClassifierCustomPatterns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-grokclassifier.html#cfn-glue-classifier-grokclassifier-grokpattern
+gcgcGrokPattern :: Lens' GlueClassifierGrokClassifier (Val Text)
+gcgcGrokPattern = lens _glueClassifierGrokClassifierGrokPattern (\s a -> s { _glueClassifierGrokClassifierGrokPattern = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-grokclassifier.html#cfn-glue-classifier-grokclassifier-name
+gcgcName :: Lens' GlueClassifierGrokClassifier (Maybe (Val Text))
+gcgcName = lens _glueClassifierGrokClassifierName (\s a -> s { _glueClassifierGrokClassifierName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs b/library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueConnectionConnectionInput.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html
+
+module Stratosphere.ResourceProperties.GlueConnectionConnectionInput 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.GlueConnectionPhysicalConnectionRequirements
+
+-- | Full data type definition for GlueConnectionConnectionInput. See
+-- 'glueConnectionConnectionInput' for a more convenient constructor.
+data GlueConnectionConnectionInput =
+  GlueConnectionConnectionInput
+  { _glueConnectionConnectionInputConnectionProperties :: Object
+  , _glueConnectionConnectionInputConnectionType :: Val Text
+  , _glueConnectionConnectionInputDescription :: Maybe (Val Text)
+  , _glueConnectionConnectionInputMatchCriteria :: Maybe (ValList Text)
+  , _glueConnectionConnectionInputName :: Maybe (Val Text)
+  , _glueConnectionConnectionInputPhysicalConnectionRequirements :: Maybe GlueConnectionPhysicalConnectionRequirements
+  } deriving (Show, Eq)
+
+instance ToJSON GlueConnectionConnectionInput where
+  toJSON GlueConnectionConnectionInput{..} =
+    object $
+    catMaybes
+    [ (Just . ("ConnectionProperties",) . toJSON) _glueConnectionConnectionInputConnectionProperties
+    , (Just . ("ConnectionType",) . toJSON) _glueConnectionConnectionInputConnectionType
+    , fmap (("Description",) . toJSON) _glueConnectionConnectionInputDescription
+    , fmap (("MatchCriteria",) . toJSON) _glueConnectionConnectionInputMatchCriteria
+    , fmap (("Name",) . toJSON) _glueConnectionConnectionInputName
+    , fmap (("PhysicalConnectionRequirements",) . toJSON) _glueConnectionConnectionInputPhysicalConnectionRequirements
+    ]
+
+instance FromJSON GlueConnectionConnectionInput where
+  parseJSON (Object obj) =
+    GlueConnectionConnectionInput <$>
+      (obj .: "ConnectionProperties") <*>
+      (obj .: "ConnectionType") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "MatchCriteria") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "PhysicalConnectionRequirements")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueConnectionConnectionInput' containing required
+-- fields as arguments.
+glueConnectionConnectionInput
+  :: Object -- ^ 'gcciConnectionProperties'
+  -> Val Text -- ^ 'gcciConnectionType'
+  -> GlueConnectionConnectionInput
+glueConnectionConnectionInput connectionPropertiesarg connectionTypearg =
+  GlueConnectionConnectionInput
+  { _glueConnectionConnectionInputConnectionProperties = connectionPropertiesarg
+  , _glueConnectionConnectionInputConnectionType = connectionTypearg
+  , _glueConnectionConnectionInputDescription = Nothing
+  , _glueConnectionConnectionInputMatchCriteria = Nothing
+  , _glueConnectionConnectionInputName = Nothing
+  , _glueConnectionConnectionInputPhysicalConnectionRequirements = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectionproperties
+gcciConnectionProperties :: Lens' GlueConnectionConnectionInput Object
+gcciConnectionProperties = lens _glueConnectionConnectionInputConnectionProperties (\s a -> s { _glueConnectionConnectionInputConnectionProperties = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectiontype
+gcciConnectionType :: Lens' GlueConnectionConnectionInput (Val Text)
+gcciConnectionType = lens _glueConnectionConnectionInputConnectionType (\s a -> s { _glueConnectionConnectionInputConnectionType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-description
+gcciDescription :: Lens' GlueConnectionConnectionInput (Maybe (Val Text))
+gcciDescription = lens _glueConnectionConnectionInputDescription (\s a -> s { _glueConnectionConnectionInputDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-matchcriteria
+gcciMatchCriteria :: Lens' GlueConnectionConnectionInput (Maybe (ValList Text))
+gcciMatchCriteria = lens _glueConnectionConnectionInputMatchCriteria (\s a -> s { _glueConnectionConnectionInputMatchCriteria = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-name
+gcciName :: Lens' GlueConnectionConnectionInput (Maybe (Val Text))
+gcciName = lens _glueConnectionConnectionInputName (\s a -> s { _glueConnectionConnectionInputName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-physicalconnectionrequirements
+gcciPhysicalConnectionRequirements :: Lens' GlueConnectionConnectionInput (Maybe GlueConnectionPhysicalConnectionRequirements)
+gcciPhysicalConnectionRequirements = lens _glueConnectionConnectionInputPhysicalConnectionRequirements (\s a -> s { _glueConnectionConnectionInputPhysicalConnectionRequirements = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueConnectionPhysicalConnectionRequirements.hs b/library-gen/Stratosphere/ResourceProperties/GlueConnectionPhysicalConnectionRequirements.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueConnectionPhysicalConnectionRequirements.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-physicalconnectionrequirements.html
+
+module Stratosphere.ResourceProperties.GlueConnectionPhysicalConnectionRequirements 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
+-- GlueConnectionPhysicalConnectionRequirements. See
+-- 'glueConnectionPhysicalConnectionRequirements' for a more convenient
+-- constructor.
+data GlueConnectionPhysicalConnectionRequirements =
+  GlueConnectionPhysicalConnectionRequirements
+  { _glueConnectionPhysicalConnectionRequirementsAvailabilityZone :: Maybe (Val Text)
+  , _glueConnectionPhysicalConnectionRequirementsSecurityGroupIdList :: Maybe (ValList Text)
+  , _glueConnectionPhysicalConnectionRequirementsSubnetId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueConnectionPhysicalConnectionRequirements where
+  toJSON GlueConnectionPhysicalConnectionRequirements{..} =
+    object $
+    catMaybes
+    [ fmap (("AvailabilityZone",) . toJSON) _glueConnectionPhysicalConnectionRequirementsAvailabilityZone
+    , fmap (("SecurityGroupIdList",) . toJSON) _glueConnectionPhysicalConnectionRequirementsSecurityGroupIdList
+    , fmap (("SubnetId",) . toJSON) _glueConnectionPhysicalConnectionRequirementsSubnetId
+    ]
+
+instance FromJSON GlueConnectionPhysicalConnectionRequirements where
+  parseJSON (Object obj) =
+    GlueConnectionPhysicalConnectionRequirements <$>
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "SecurityGroupIdList") <*>
+      (obj .:? "SubnetId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueConnectionPhysicalConnectionRequirements' containing
+-- required fields as arguments.
+glueConnectionPhysicalConnectionRequirements
+  :: GlueConnectionPhysicalConnectionRequirements
+glueConnectionPhysicalConnectionRequirements  =
+  GlueConnectionPhysicalConnectionRequirements
+  { _glueConnectionPhysicalConnectionRequirementsAvailabilityZone = Nothing
+  , _glueConnectionPhysicalConnectionRequirementsSecurityGroupIdList = Nothing
+  , _glueConnectionPhysicalConnectionRequirementsSubnetId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-physicalconnectionrequirements.html#cfn-glue-connection-physicalconnectionrequirements-availabilityzone
+gcpcrAvailabilityZone :: Lens' GlueConnectionPhysicalConnectionRequirements (Maybe (Val Text))
+gcpcrAvailabilityZone = lens _glueConnectionPhysicalConnectionRequirementsAvailabilityZone (\s a -> s { _glueConnectionPhysicalConnectionRequirementsAvailabilityZone = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-physicalconnectionrequirements.html#cfn-glue-connection-physicalconnectionrequirements-securitygroupidlist
+gcpcrSecurityGroupIdList :: Lens' GlueConnectionPhysicalConnectionRequirements (Maybe (ValList Text))
+gcpcrSecurityGroupIdList = lens _glueConnectionPhysicalConnectionRequirementsSecurityGroupIdList (\s a -> s { _glueConnectionPhysicalConnectionRequirementsSecurityGroupIdList = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-physicalconnectionrequirements.html#cfn-glue-connection-physicalconnectionrequirements-subnetid
+gcpcrSubnetId :: Lens' GlueConnectionPhysicalConnectionRequirements (Maybe (Val Text))
+gcpcrSubnetId = lens _glueConnectionPhysicalConnectionRequirementsSubnetId (\s a -> s { _glueConnectionPhysicalConnectionRequirementsSubnetId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerJdbcTarget.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerJdbcTarget.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerJdbcTarget.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-jdbctarget.html
+
+module Stratosphere.ResourceProperties.GlueCrawlerJdbcTarget 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 GlueCrawlerJdbcTarget. See
+-- 'glueCrawlerJdbcTarget' for a more convenient constructor.
+data GlueCrawlerJdbcTarget =
+  GlueCrawlerJdbcTarget
+  { _glueCrawlerJdbcTargetConnectionName :: Maybe (Val Text)
+  , _glueCrawlerJdbcTargetExclusions :: Maybe (ValList Text)
+  , _glueCrawlerJdbcTargetPath :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueCrawlerJdbcTarget where
+  toJSON GlueCrawlerJdbcTarget{..} =
+    object $
+    catMaybes
+    [ fmap (("ConnectionName",) . toJSON) _glueCrawlerJdbcTargetConnectionName
+    , fmap (("Exclusions",) . toJSON) _glueCrawlerJdbcTargetExclusions
+    , fmap (("Path",) . toJSON) _glueCrawlerJdbcTargetPath
+    ]
+
+instance FromJSON GlueCrawlerJdbcTarget where
+  parseJSON (Object obj) =
+    GlueCrawlerJdbcTarget <$>
+      (obj .:? "ConnectionName") <*>
+      (obj .:? "Exclusions") <*>
+      (obj .:? "Path")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueCrawlerJdbcTarget' containing required fields as
+-- arguments.
+glueCrawlerJdbcTarget
+  :: GlueCrawlerJdbcTarget
+glueCrawlerJdbcTarget  =
+  GlueCrawlerJdbcTarget
+  { _glueCrawlerJdbcTargetConnectionName = Nothing
+  , _glueCrawlerJdbcTargetExclusions = Nothing
+  , _glueCrawlerJdbcTargetPath = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-jdbctarget.html#cfn-glue-crawler-jdbctarget-connectionname
+gcjtConnectionName :: Lens' GlueCrawlerJdbcTarget (Maybe (Val Text))
+gcjtConnectionName = lens _glueCrawlerJdbcTargetConnectionName (\s a -> s { _glueCrawlerJdbcTargetConnectionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-jdbctarget.html#cfn-glue-crawler-jdbctarget-exclusions
+gcjtExclusions :: Lens' GlueCrawlerJdbcTarget (Maybe (ValList Text))
+gcjtExclusions = lens _glueCrawlerJdbcTargetExclusions (\s a -> s { _glueCrawlerJdbcTargetExclusions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-jdbctarget.html#cfn-glue-crawler-jdbctarget-path
+gcjtPath :: Lens' GlueCrawlerJdbcTarget (Maybe (Val Text))
+gcjtPath = lens _glueCrawlerJdbcTargetPath (\s a -> s { _glueCrawlerJdbcTargetPath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerS3Target.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerS3Target.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerS3Target.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html
+
+module Stratosphere.ResourceProperties.GlueCrawlerS3Target 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 GlueCrawlerS3Target. See
+-- 'glueCrawlerS3Target' for a more convenient constructor.
+data GlueCrawlerS3Target =
+  GlueCrawlerS3Target
+  { _glueCrawlerS3TargetExclusions :: Maybe (ValList Text)
+  , _glueCrawlerS3TargetPath :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueCrawlerS3Target where
+  toJSON GlueCrawlerS3Target{..} =
+    object $
+    catMaybes
+    [ fmap (("Exclusions",) . toJSON) _glueCrawlerS3TargetExclusions
+    , fmap (("Path",) . toJSON) _glueCrawlerS3TargetPath
+    ]
+
+instance FromJSON GlueCrawlerS3Target where
+  parseJSON (Object obj) =
+    GlueCrawlerS3Target <$>
+      (obj .:? "Exclusions") <*>
+      (obj .:? "Path")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueCrawlerS3Target' containing required fields as
+-- arguments.
+glueCrawlerS3Target
+  :: GlueCrawlerS3Target
+glueCrawlerS3Target  =
+  GlueCrawlerS3Target
+  { _glueCrawlerS3TargetExclusions = Nothing
+  , _glueCrawlerS3TargetPath = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html#cfn-glue-crawler-s3target-exclusions
+gcstExclusions :: Lens' GlueCrawlerS3Target (Maybe (ValList Text))
+gcstExclusions = lens _glueCrawlerS3TargetExclusions (\s a -> s { _glueCrawlerS3TargetExclusions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html#cfn-glue-crawler-s3target-path
+gcstPath :: Lens' GlueCrawlerS3Target (Maybe (Val Text))
+gcstPath = lens _glueCrawlerS3TargetPath (\s a -> s { _glueCrawlerS3TargetPath = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchedule.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchedule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchedule.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-schedule.html
+
+module Stratosphere.ResourceProperties.GlueCrawlerSchedule 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 GlueCrawlerSchedule. See
+-- 'glueCrawlerSchedule' for a more convenient constructor.
+data GlueCrawlerSchedule =
+  GlueCrawlerSchedule
+  { _glueCrawlerScheduleScheduleExpression :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueCrawlerSchedule where
+  toJSON GlueCrawlerSchedule{..} =
+    object $
+    catMaybes
+    [ fmap (("ScheduleExpression",) . toJSON) _glueCrawlerScheduleScheduleExpression
+    ]
+
+instance FromJSON GlueCrawlerSchedule where
+  parseJSON (Object obj) =
+    GlueCrawlerSchedule <$>
+      (obj .:? "ScheduleExpression")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueCrawlerSchedule' containing required fields as
+-- arguments.
+glueCrawlerSchedule
+  :: GlueCrawlerSchedule
+glueCrawlerSchedule  =
+  GlueCrawlerSchedule
+  { _glueCrawlerScheduleScheduleExpression = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-schedule.html#cfn-glue-crawler-schedule-scheduleexpression
+gcsScheduleExpression :: Lens' GlueCrawlerSchedule (Maybe (Val Text))
+gcsScheduleExpression = lens _glueCrawlerScheduleScheduleExpression (\s a -> s { _glueCrawlerScheduleScheduleExpression = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchemaChangePolicy.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchemaChangePolicy.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerSchemaChangePolicy.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-schemachangepolicy.html
+
+module Stratosphere.ResourceProperties.GlueCrawlerSchemaChangePolicy 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 GlueCrawlerSchemaChangePolicy. See
+-- 'glueCrawlerSchemaChangePolicy' for a more convenient constructor.
+data GlueCrawlerSchemaChangePolicy =
+  GlueCrawlerSchemaChangePolicy
+  { _glueCrawlerSchemaChangePolicyDeleteBehavior :: Maybe (Val Text)
+  , _glueCrawlerSchemaChangePolicyUpdateBehavior :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueCrawlerSchemaChangePolicy where
+  toJSON GlueCrawlerSchemaChangePolicy{..} =
+    object $
+    catMaybes
+    [ fmap (("DeleteBehavior",) . toJSON) _glueCrawlerSchemaChangePolicyDeleteBehavior
+    , fmap (("UpdateBehavior",) . toJSON) _glueCrawlerSchemaChangePolicyUpdateBehavior
+    ]
+
+instance FromJSON GlueCrawlerSchemaChangePolicy where
+  parseJSON (Object obj) =
+    GlueCrawlerSchemaChangePolicy <$>
+      (obj .:? "DeleteBehavior") <*>
+      (obj .:? "UpdateBehavior")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueCrawlerSchemaChangePolicy' containing required
+-- fields as arguments.
+glueCrawlerSchemaChangePolicy
+  :: GlueCrawlerSchemaChangePolicy
+glueCrawlerSchemaChangePolicy  =
+  GlueCrawlerSchemaChangePolicy
+  { _glueCrawlerSchemaChangePolicyDeleteBehavior = Nothing
+  , _glueCrawlerSchemaChangePolicyUpdateBehavior = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-schemachangepolicy.html#cfn-glue-crawler-schemachangepolicy-deletebehavior
+gcscpDeleteBehavior :: Lens' GlueCrawlerSchemaChangePolicy (Maybe (Val Text))
+gcscpDeleteBehavior = lens _glueCrawlerSchemaChangePolicyDeleteBehavior (\s a -> s { _glueCrawlerSchemaChangePolicyDeleteBehavior = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-schemachangepolicy.html#cfn-glue-crawler-schemachangepolicy-updatebehavior
+gcscpUpdateBehavior :: Lens' GlueCrawlerSchemaChangePolicy (Maybe (Val Text))
+gcscpUpdateBehavior = lens _glueCrawlerSchemaChangePolicyUpdateBehavior (\s a -> s { _glueCrawlerSchemaChangePolicyUpdateBehavior = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueCrawlerTargets.hs b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerTargets.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueCrawlerTargets.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-targets.html
+
+module Stratosphere.ResourceProperties.GlueCrawlerTargets 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.GlueCrawlerJdbcTarget
+import Stratosphere.ResourceProperties.GlueCrawlerS3Target
+
+-- | Full data type definition for GlueCrawlerTargets. See
+-- 'glueCrawlerTargets' for a more convenient constructor.
+data GlueCrawlerTargets =
+  GlueCrawlerTargets
+  { _glueCrawlerTargetsJdbcTargets :: Maybe [GlueCrawlerJdbcTarget]
+  , _glueCrawlerTargetsS3Targets :: Maybe [GlueCrawlerS3Target]
+  } deriving (Show, Eq)
+
+instance ToJSON GlueCrawlerTargets where
+  toJSON GlueCrawlerTargets{..} =
+    object $
+    catMaybes
+    [ fmap (("JdbcTargets",) . toJSON) _glueCrawlerTargetsJdbcTargets
+    , fmap (("S3Targets",) . toJSON) _glueCrawlerTargetsS3Targets
+    ]
+
+instance FromJSON GlueCrawlerTargets where
+  parseJSON (Object obj) =
+    GlueCrawlerTargets <$>
+      (obj .:? "JdbcTargets") <*>
+      (obj .:? "S3Targets")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueCrawlerTargets' containing required fields as
+-- arguments.
+glueCrawlerTargets
+  :: GlueCrawlerTargets
+glueCrawlerTargets  =
+  GlueCrawlerTargets
+  { _glueCrawlerTargetsJdbcTargets = Nothing
+  , _glueCrawlerTargetsS3Targets = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-targets.html#cfn-glue-crawler-targets-jdbctargets
+gctJdbcTargets :: Lens' GlueCrawlerTargets (Maybe [GlueCrawlerJdbcTarget])
+gctJdbcTargets = lens _glueCrawlerTargetsJdbcTargets (\s a -> s { _glueCrawlerTargetsJdbcTargets = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-targets.html#cfn-glue-crawler-targets-s3targets
+gctS3Targets :: Lens' GlueCrawlerTargets (Maybe [GlueCrawlerS3Target])
+gctS3Targets = lens _glueCrawlerTargetsS3Targets (\s a -> s { _glueCrawlerTargetsS3Targets = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueDatabaseDatabaseInput.hs b/library-gen/Stratosphere/ResourceProperties/GlueDatabaseDatabaseInput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueDatabaseDatabaseInput.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html
+
+module Stratosphere.ResourceProperties.GlueDatabaseDatabaseInput 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 GlueDatabaseDatabaseInput. See
+-- 'glueDatabaseDatabaseInput' for a more convenient constructor.
+data GlueDatabaseDatabaseInput =
+  GlueDatabaseDatabaseInput
+  { _glueDatabaseDatabaseInputDescription :: Maybe (Val Text)
+  , _glueDatabaseDatabaseInputLocationUri :: Maybe (Val Text)
+  , _glueDatabaseDatabaseInputName :: Maybe (Val Text)
+  , _glueDatabaseDatabaseInputParameters :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON GlueDatabaseDatabaseInput where
+  toJSON GlueDatabaseDatabaseInput{..} =
+    object $
+    catMaybes
+    [ fmap (("Description",) . toJSON) _glueDatabaseDatabaseInputDescription
+    , fmap (("LocationUri",) . toJSON) _glueDatabaseDatabaseInputLocationUri
+    , fmap (("Name",) . toJSON) _glueDatabaseDatabaseInputName
+    , fmap (("Parameters",) . toJSON) _glueDatabaseDatabaseInputParameters
+    ]
+
+instance FromJSON GlueDatabaseDatabaseInput where
+  parseJSON (Object obj) =
+    GlueDatabaseDatabaseInput <$>
+      (obj .:? "Description") <*>
+      (obj .:? "LocationUri") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Parameters")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueDatabaseDatabaseInput' containing required fields as
+-- arguments.
+glueDatabaseDatabaseInput
+  :: GlueDatabaseDatabaseInput
+glueDatabaseDatabaseInput  =
+  GlueDatabaseDatabaseInput
+  { _glueDatabaseDatabaseInputDescription = Nothing
+  , _glueDatabaseDatabaseInputLocationUri = Nothing
+  , _glueDatabaseDatabaseInputName = Nothing
+  , _glueDatabaseDatabaseInputParameters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-description
+gddiDescription :: Lens' GlueDatabaseDatabaseInput (Maybe (Val Text))
+gddiDescription = lens _glueDatabaseDatabaseInputDescription (\s a -> s { _glueDatabaseDatabaseInputDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-locationuri
+gddiLocationUri :: Lens' GlueDatabaseDatabaseInput (Maybe (Val Text))
+gddiLocationUri = lens _glueDatabaseDatabaseInputLocationUri (\s a -> s { _glueDatabaseDatabaseInputLocationUri = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-name
+gddiName :: Lens' GlueDatabaseDatabaseInput (Maybe (Val Text))
+gddiName = lens _glueDatabaseDatabaseInputName (\s a -> s { _glueDatabaseDatabaseInputName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-parameters
+gddiParameters :: Lens' GlueDatabaseDatabaseInput (Maybe Object)
+gddiParameters = lens _glueDatabaseDatabaseInputParameters (\s a -> s { _glueDatabaseDatabaseInputParameters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueJobConnectionsList.hs b/library-gen/Stratosphere/ResourceProperties/GlueJobConnectionsList.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueJobConnectionsList.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-connectionslist.html
+
+module Stratosphere.ResourceProperties.GlueJobConnectionsList 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 GlueJobConnectionsList. See
+-- 'glueJobConnectionsList' for a more convenient constructor.
+data GlueJobConnectionsList =
+  GlueJobConnectionsList
+  { _glueJobConnectionsListConnections :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueJobConnectionsList where
+  toJSON GlueJobConnectionsList{..} =
+    object $
+    catMaybes
+    [ fmap (("Connections",) . toJSON) _glueJobConnectionsListConnections
+    ]
+
+instance FromJSON GlueJobConnectionsList where
+  parseJSON (Object obj) =
+    GlueJobConnectionsList <$>
+      (obj .:? "Connections")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueJobConnectionsList' containing required fields as
+-- arguments.
+glueJobConnectionsList
+  :: GlueJobConnectionsList
+glueJobConnectionsList  =
+  GlueJobConnectionsList
+  { _glueJobConnectionsListConnections = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-connectionslist.html#cfn-glue-job-connectionslist-connections
+gjclConnections :: Lens' GlueJobConnectionsList (Maybe (ValList Text))
+gjclConnections = lens _glueJobConnectionsListConnections (\s a -> s { _glueJobConnectionsListConnections = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueJobExecutionProperty.hs b/library-gen/Stratosphere/ResourceProperties/GlueJobExecutionProperty.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueJobExecutionProperty.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-executionproperty.html
+
+module Stratosphere.ResourceProperties.GlueJobExecutionProperty 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 GlueJobExecutionProperty. See
+-- 'glueJobExecutionProperty' for a more convenient constructor.
+data GlueJobExecutionProperty =
+  GlueJobExecutionProperty
+  { _glueJobExecutionPropertyMaxConcurrentRuns :: Maybe (Val Double)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueJobExecutionProperty where
+  toJSON GlueJobExecutionProperty{..} =
+    object $
+    catMaybes
+    [ fmap (("MaxConcurrentRuns",) . toJSON . fmap Double') _glueJobExecutionPropertyMaxConcurrentRuns
+    ]
+
+instance FromJSON GlueJobExecutionProperty where
+  parseJSON (Object obj) =
+    GlueJobExecutionProperty <$>
+      fmap (fmap (fmap unDouble')) (obj .:? "MaxConcurrentRuns")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueJobExecutionProperty' containing required fields as
+-- arguments.
+glueJobExecutionProperty
+  :: GlueJobExecutionProperty
+glueJobExecutionProperty  =
+  GlueJobExecutionProperty
+  { _glueJobExecutionPropertyMaxConcurrentRuns = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-executionproperty.html#cfn-glue-job-executionproperty-maxconcurrentruns
+gjepMaxConcurrentRuns :: Lens' GlueJobExecutionProperty (Maybe (Val Double))
+gjepMaxConcurrentRuns = lens _glueJobExecutionPropertyMaxConcurrentRuns (\s a -> s { _glueJobExecutionPropertyMaxConcurrentRuns = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueJobJobCommand.hs b/library-gen/Stratosphere/ResourceProperties/GlueJobJobCommand.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueJobJobCommand.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-jobcommand.html
+
+module Stratosphere.ResourceProperties.GlueJobJobCommand 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 GlueJobJobCommand. See 'glueJobJobCommand'
+-- for a more convenient constructor.
+data GlueJobJobCommand =
+  GlueJobJobCommand
+  { _glueJobJobCommandName :: Maybe (Val Text)
+  , _glueJobJobCommandScriptLocation :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueJobJobCommand where
+  toJSON GlueJobJobCommand{..} =
+    object $
+    catMaybes
+    [ fmap (("Name",) . toJSON) _glueJobJobCommandName
+    , fmap (("ScriptLocation",) . toJSON) _glueJobJobCommandScriptLocation
+    ]
+
+instance FromJSON GlueJobJobCommand where
+  parseJSON (Object obj) =
+    GlueJobJobCommand <$>
+      (obj .:? "Name") <*>
+      (obj .:? "ScriptLocation")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueJobJobCommand' containing required fields as
+-- arguments.
+glueJobJobCommand
+  :: GlueJobJobCommand
+glueJobJobCommand  =
+  GlueJobJobCommand
+  { _glueJobJobCommandName = Nothing
+  , _glueJobJobCommandScriptLocation = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-jobcommand.html#cfn-glue-job-jobcommand-name
+gjjcName :: Lens' GlueJobJobCommand (Maybe (Val Text))
+gjjcName = lens _glueJobJobCommandName (\s a -> s { _glueJobJobCommandName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-job-jobcommand.html#cfn-glue-job-jobcommand-scriptlocation
+gjjcScriptLocation :: Lens' GlueJobJobCommand (Maybe (Val Text))
+gjjcScriptLocation = lens _glueJobJobCommandScriptLocation (\s a -> s { _glueJobJobCommandScriptLocation = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionColumn.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionColumn.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionColumn.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-column.html
+
+module Stratosphere.ResourceProperties.GluePartitionColumn 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 GluePartitionColumn. See
+-- 'gluePartitionColumn' for a more convenient constructor.
+data GluePartitionColumn =
+  GluePartitionColumn
+  { _gluePartitionColumnComment :: Maybe (Val Text)
+  , _gluePartitionColumnName :: Val Text
+  , _gluePartitionColumnType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GluePartitionColumn where
+  toJSON GluePartitionColumn{..} =
+    object $
+    catMaybes
+    [ fmap (("Comment",) . toJSON) _gluePartitionColumnComment
+    , (Just . ("Name",) . toJSON) _gluePartitionColumnName
+    , fmap (("Type",) . toJSON) _gluePartitionColumnType
+    ]
+
+instance FromJSON GluePartitionColumn where
+  parseJSON (Object obj) =
+    GluePartitionColumn <$>
+      (obj .:? "Comment") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Type")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GluePartitionColumn' containing required fields as
+-- arguments.
+gluePartitionColumn
+  :: Val Text -- ^ 'gpcName'
+  -> GluePartitionColumn
+gluePartitionColumn namearg =
+  GluePartitionColumn
+  { _gluePartitionColumnComment = Nothing
+  , _gluePartitionColumnName = namearg
+  , _gluePartitionColumnType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-column.html#cfn-glue-partition-column-comment
+gpcComment :: Lens' GluePartitionColumn (Maybe (Val Text))
+gpcComment = lens _gluePartitionColumnComment (\s a -> s { _gluePartitionColumnComment = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-column.html#cfn-glue-partition-column-name
+gpcName :: Lens' GluePartitionColumn (Val Text)
+gpcName = lens _gluePartitionColumnName (\s a -> s { _gluePartitionColumnName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-column.html#cfn-glue-partition-column-type
+gpcType :: Lens' GluePartitionColumn (Maybe (Val Text))
+gpcType = lens _gluePartitionColumnType (\s a -> s { _gluePartitionColumnType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionOrder.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionOrder.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionOrder.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-order.html
+
+module Stratosphere.ResourceProperties.GluePartitionOrder 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 GluePartitionOrder. See
+-- 'gluePartitionOrder' for a more convenient constructor.
+data GluePartitionOrder =
+  GluePartitionOrder
+  { _gluePartitionOrderColumn :: Val Text
+  , _gluePartitionOrderSortOrder :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON GluePartitionOrder where
+  toJSON GluePartitionOrder{..} =
+    object $
+    catMaybes
+    [ (Just . ("Column",) . toJSON) _gluePartitionOrderColumn
+    , fmap (("SortOrder",) . toJSON . fmap Integer') _gluePartitionOrderSortOrder
+    ]
+
+instance FromJSON GluePartitionOrder where
+  parseJSON (Object obj) =
+    GluePartitionOrder <$>
+      (obj .: "Column") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SortOrder")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GluePartitionOrder' containing required fields as
+-- arguments.
+gluePartitionOrder
+  :: Val Text -- ^ 'gpoColumn'
+  -> GluePartitionOrder
+gluePartitionOrder columnarg =
+  GluePartitionOrder
+  { _gluePartitionOrderColumn = columnarg
+  , _gluePartitionOrderSortOrder = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-order.html#cfn-glue-partition-order-column
+gpoColumn :: Lens' GluePartitionOrder (Val Text)
+gpoColumn = lens _gluePartitionOrderColumn (\s a -> s { _gluePartitionOrderColumn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-order.html#cfn-glue-partition-order-sortorder
+gpoSortOrder :: Lens' GluePartitionOrder (Maybe (Val Integer))
+gpoSortOrder = lens _gluePartitionOrderSortOrder (\s a -> s { _gluePartitionOrderSortOrder = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionPartitionInput.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionPartitionInput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionPartitionInput.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-partitioninput.html
+
+module Stratosphere.ResourceProperties.GluePartitionPartitionInput 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.GluePartitionStorageDescriptor
+
+-- | Full data type definition for GluePartitionPartitionInput. See
+-- 'gluePartitionPartitionInput' for a more convenient constructor.
+data GluePartitionPartitionInput =
+  GluePartitionPartitionInput
+  { _gluePartitionPartitionInputParameters :: Maybe Object
+  , _gluePartitionPartitionInputStorageDescriptor :: Maybe GluePartitionStorageDescriptor
+  , _gluePartitionPartitionInputValues :: ValList Text
+  } deriving (Show, Eq)
+
+instance ToJSON GluePartitionPartitionInput where
+  toJSON GluePartitionPartitionInput{..} =
+    object $
+    catMaybes
+    [ fmap (("Parameters",) . toJSON) _gluePartitionPartitionInputParameters
+    , fmap (("StorageDescriptor",) . toJSON) _gluePartitionPartitionInputStorageDescriptor
+    , (Just . ("Values",) . toJSON) _gluePartitionPartitionInputValues
+    ]
+
+instance FromJSON GluePartitionPartitionInput where
+  parseJSON (Object obj) =
+    GluePartitionPartitionInput <$>
+      (obj .:? "Parameters") <*>
+      (obj .:? "StorageDescriptor") <*>
+      (obj .: "Values")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GluePartitionPartitionInput' containing required fields
+-- as arguments.
+gluePartitionPartitionInput
+  :: ValList Text -- ^ 'gppiValues'
+  -> GluePartitionPartitionInput
+gluePartitionPartitionInput valuesarg =
+  GluePartitionPartitionInput
+  { _gluePartitionPartitionInputParameters = Nothing
+  , _gluePartitionPartitionInputStorageDescriptor = Nothing
+  , _gluePartitionPartitionInputValues = valuesarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-partitioninput.html#cfn-glue-partition-partitioninput-parameters
+gppiParameters :: Lens' GluePartitionPartitionInput (Maybe Object)
+gppiParameters = lens _gluePartitionPartitionInputParameters (\s a -> s { _gluePartitionPartitionInputParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-partitioninput.html#cfn-glue-partition-partitioninput-storagedescriptor
+gppiStorageDescriptor :: Lens' GluePartitionPartitionInput (Maybe GluePartitionStorageDescriptor)
+gppiStorageDescriptor = lens _gluePartitionPartitionInputStorageDescriptor (\s a -> s { _gluePartitionPartitionInputStorageDescriptor = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-partitioninput.html#cfn-glue-partition-partitioninput-values
+gppiValues :: Lens' GluePartitionPartitionInput (ValList Text)
+gppiValues = lens _gluePartitionPartitionInputValues (\s a -> s { _gluePartitionPartitionInputValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionSerdeInfo.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionSerdeInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionSerdeInfo.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-serdeinfo.html
+
+module Stratosphere.ResourceProperties.GluePartitionSerdeInfo 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 GluePartitionSerdeInfo. See
+-- 'gluePartitionSerdeInfo' for a more convenient constructor.
+data GluePartitionSerdeInfo =
+  GluePartitionSerdeInfo
+  { _gluePartitionSerdeInfoName :: Maybe (Val Text)
+  , _gluePartitionSerdeInfoParameters :: Maybe Object
+  , _gluePartitionSerdeInfoSerializationLibrary :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GluePartitionSerdeInfo where
+  toJSON GluePartitionSerdeInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("Name",) . toJSON) _gluePartitionSerdeInfoName
+    , fmap (("Parameters",) . toJSON) _gluePartitionSerdeInfoParameters
+    , fmap (("SerializationLibrary",) . toJSON) _gluePartitionSerdeInfoSerializationLibrary
+    ]
+
+instance FromJSON GluePartitionSerdeInfo where
+  parseJSON (Object obj) =
+    GluePartitionSerdeInfo <$>
+      (obj .:? "Name") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "SerializationLibrary")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GluePartitionSerdeInfo' containing required fields as
+-- arguments.
+gluePartitionSerdeInfo
+  :: GluePartitionSerdeInfo
+gluePartitionSerdeInfo  =
+  GluePartitionSerdeInfo
+  { _gluePartitionSerdeInfoName = Nothing
+  , _gluePartitionSerdeInfoParameters = Nothing
+  , _gluePartitionSerdeInfoSerializationLibrary = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-serdeinfo.html#cfn-glue-partition-serdeinfo-name
+gpsiName :: Lens' GluePartitionSerdeInfo (Maybe (Val Text))
+gpsiName = lens _gluePartitionSerdeInfoName (\s a -> s { _gluePartitionSerdeInfoName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-serdeinfo.html#cfn-glue-partition-serdeinfo-parameters
+gpsiParameters :: Lens' GluePartitionSerdeInfo (Maybe Object)
+gpsiParameters = lens _gluePartitionSerdeInfoParameters (\s a -> s { _gluePartitionSerdeInfoParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-serdeinfo.html#cfn-glue-partition-serdeinfo-serializationlibrary
+gpsiSerializationLibrary :: Lens' GluePartitionSerdeInfo (Maybe (Val Text))
+gpsiSerializationLibrary = lens _gluePartitionSerdeInfoSerializationLibrary (\s a -> s { _gluePartitionSerdeInfoSerializationLibrary = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionSkewedInfo.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionSkewedInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionSkewedInfo.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-skewedinfo.html
+
+module Stratosphere.ResourceProperties.GluePartitionSkewedInfo 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 GluePartitionSkewedInfo. See
+-- 'gluePartitionSkewedInfo' for a more convenient constructor.
+data GluePartitionSkewedInfo =
+  GluePartitionSkewedInfo
+  { _gluePartitionSkewedInfoSkewedColumnNames :: Maybe (ValList Text)
+  , _gluePartitionSkewedInfoSkewedColumnValueLocationMaps :: Maybe Object
+  , _gluePartitionSkewedInfoSkewedColumnValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GluePartitionSkewedInfo where
+  toJSON GluePartitionSkewedInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("SkewedColumnNames",) . toJSON) _gluePartitionSkewedInfoSkewedColumnNames
+    , fmap (("SkewedColumnValueLocationMaps",) . toJSON) _gluePartitionSkewedInfoSkewedColumnValueLocationMaps
+    , fmap (("SkewedColumnValues",) . toJSON) _gluePartitionSkewedInfoSkewedColumnValues
+    ]
+
+instance FromJSON GluePartitionSkewedInfo where
+  parseJSON (Object obj) =
+    GluePartitionSkewedInfo <$>
+      (obj .:? "SkewedColumnNames") <*>
+      (obj .:? "SkewedColumnValueLocationMaps") <*>
+      (obj .:? "SkewedColumnValues")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GluePartitionSkewedInfo' containing required fields as
+-- arguments.
+gluePartitionSkewedInfo
+  :: GluePartitionSkewedInfo
+gluePartitionSkewedInfo  =
+  GluePartitionSkewedInfo
+  { _gluePartitionSkewedInfoSkewedColumnNames = Nothing
+  , _gluePartitionSkewedInfoSkewedColumnValueLocationMaps = Nothing
+  , _gluePartitionSkewedInfoSkewedColumnValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-skewedinfo.html#cfn-glue-partition-skewedinfo-skewedcolumnnames
+gpsiSkewedColumnNames :: Lens' GluePartitionSkewedInfo (Maybe (ValList Text))
+gpsiSkewedColumnNames = lens _gluePartitionSkewedInfoSkewedColumnNames (\s a -> s { _gluePartitionSkewedInfoSkewedColumnNames = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-skewedinfo.html#cfn-glue-partition-skewedinfo-skewedcolumnvaluelocationmaps
+gpsiSkewedColumnValueLocationMaps :: Lens' GluePartitionSkewedInfo (Maybe Object)
+gpsiSkewedColumnValueLocationMaps = lens _gluePartitionSkewedInfoSkewedColumnValueLocationMaps (\s a -> s { _gluePartitionSkewedInfoSkewedColumnValueLocationMaps = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-skewedinfo.html#cfn-glue-partition-skewedinfo-skewedcolumnvalues
+gpsiSkewedColumnValues :: Lens' GluePartitionSkewedInfo (Maybe (ValList Text))
+gpsiSkewedColumnValues = lens _gluePartitionSkewedInfoSkewedColumnValues (\s a -> s { _gluePartitionSkewedInfoSkewedColumnValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GluePartitionStorageDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/GluePartitionStorageDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GluePartitionStorageDescriptor.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html
+
+module Stratosphere.ResourceProperties.GluePartitionStorageDescriptor 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.GluePartitionColumn
+import Stratosphere.ResourceProperties.GluePartitionSerdeInfo
+import Stratosphere.ResourceProperties.GluePartitionSkewedInfo
+import Stratosphere.ResourceProperties.GluePartitionOrder
+
+-- | Full data type definition for GluePartitionStorageDescriptor. See
+-- 'gluePartitionStorageDescriptor' for a more convenient constructor.
+data GluePartitionStorageDescriptor =
+  GluePartitionStorageDescriptor
+  { _gluePartitionStorageDescriptorBucketColumns :: Maybe (ValList Text)
+  , _gluePartitionStorageDescriptorColumns :: Maybe [GluePartitionColumn]
+  , _gluePartitionStorageDescriptorCompressed :: Maybe (Val Bool)
+  , _gluePartitionStorageDescriptorInputFormat :: Maybe (Val Text)
+  , _gluePartitionStorageDescriptorLocation :: Maybe (Val Text)
+  , _gluePartitionStorageDescriptorNumberOfBuckets :: Maybe (Val Integer)
+  , _gluePartitionStorageDescriptorOutputFormat :: Maybe (Val Text)
+  , _gluePartitionStorageDescriptorParameters :: Maybe Object
+  , _gluePartitionStorageDescriptorSerdeInfo :: Maybe GluePartitionSerdeInfo
+  , _gluePartitionStorageDescriptorSkewedInfo :: Maybe GluePartitionSkewedInfo
+  , _gluePartitionStorageDescriptorSortColumns :: Maybe [GluePartitionOrder]
+  , _gluePartitionStorageDescriptorStoredAsSubDirectories :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON GluePartitionStorageDescriptor where
+  toJSON GluePartitionStorageDescriptor{..} =
+    object $
+    catMaybes
+    [ fmap (("BucketColumns",) . toJSON) _gluePartitionStorageDescriptorBucketColumns
+    , fmap (("Columns",) . toJSON) _gluePartitionStorageDescriptorColumns
+    , fmap (("Compressed",) . toJSON . fmap Bool') _gluePartitionStorageDescriptorCompressed
+    , fmap (("InputFormat",) . toJSON) _gluePartitionStorageDescriptorInputFormat
+    , fmap (("Location",) . toJSON) _gluePartitionStorageDescriptorLocation
+    , fmap (("NumberOfBuckets",) . toJSON . fmap Integer') _gluePartitionStorageDescriptorNumberOfBuckets
+    , fmap (("OutputFormat",) . toJSON) _gluePartitionStorageDescriptorOutputFormat
+    , fmap (("Parameters",) . toJSON) _gluePartitionStorageDescriptorParameters
+    , fmap (("SerdeInfo",) . toJSON) _gluePartitionStorageDescriptorSerdeInfo
+    , fmap (("SkewedInfo",) . toJSON) _gluePartitionStorageDescriptorSkewedInfo
+    , fmap (("SortColumns",) . toJSON) _gluePartitionStorageDescriptorSortColumns
+    , fmap (("StoredAsSubDirectories",) . toJSON . fmap Bool') _gluePartitionStorageDescriptorStoredAsSubDirectories
+    ]
+
+instance FromJSON GluePartitionStorageDescriptor where
+  parseJSON (Object obj) =
+    GluePartitionStorageDescriptor <$>
+      (obj .:? "BucketColumns") <*>
+      (obj .:? "Columns") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Compressed") <*>
+      (obj .:? "InputFormat") <*>
+      (obj .:? "Location") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumberOfBuckets") <*>
+      (obj .:? "OutputFormat") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "SerdeInfo") <*>
+      (obj .:? "SkewedInfo") <*>
+      (obj .:? "SortColumns") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "StoredAsSubDirectories")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GluePartitionStorageDescriptor' containing required
+-- fields as arguments.
+gluePartitionStorageDescriptor
+  :: GluePartitionStorageDescriptor
+gluePartitionStorageDescriptor  =
+  GluePartitionStorageDescriptor
+  { _gluePartitionStorageDescriptorBucketColumns = Nothing
+  , _gluePartitionStorageDescriptorColumns = Nothing
+  , _gluePartitionStorageDescriptorCompressed = Nothing
+  , _gluePartitionStorageDescriptorInputFormat = Nothing
+  , _gluePartitionStorageDescriptorLocation = Nothing
+  , _gluePartitionStorageDescriptorNumberOfBuckets = Nothing
+  , _gluePartitionStorageDescriptorOutputFormat = Nothing
+  , _gluePartitionStorageDescriptorParameters = Nothing
+  , _gluePartitionStorageDescriptorSerdeInfo = Nothing
+  , _gluePartitionStorageDescriptorSkewedInfo = Nothing
+  , _gluePartitionStorageDescriptorSortColumns = Nothing
+  , _gluePartitionStorageDescriptorStoredAsSubDirectories = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-bucketcolumns
+gpsdBucketColumns :: Lens' GluePartitionStorageDescriptor (Maybe (ValList Text))
+gpsdBucketColumns = lens _gluePartitionStorageDescriptorBucketColumns (\s a -> s { _gluePartitionStorageDescriptorBucketColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-columns
+gpsdColumns :: Lens' GluePartitionStorageDescriptor (Maybe [GluePartitionColumn])
+gpsdColumns = lens _gluePartitionStorageDescriptorColumns (\s a -> s { _gluePartitionStorageDescriptorColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-compressed
+gpsdCompressed :: Lens' GluePartitionStorageDescriptor (Maybe (Val Bool))
+gpsdCompressed = lens _gluePartitionStorageDescriptorCompressed (\s a -> s { _gluePartitionStorageDescriptorCompressed = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-inputformat
+gpsdInputFormat :: Lens' GluePartitionStorageDescriptor (Maybe (Val Text))
+gpsdInputFormat = lens _gluePartitionStorageDescriptorInputFormat (\s a -> s { _gluePartitionStorageDescriptorInputFormat = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-location
+gpsdLocation :: Lens' GluePartitionStorageDescriptor (Maybe (Val Text))
+gpsdLocation = lens _gluePartitionStorageDescriptorLocation (\s a -> s { _gluePartitionStorageDescriptorLocation = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-numberofbuckets
+gpsdNumberOfBuckets :: Lens' GluePartitionStorageDescriptor (Maybe (Val Integer))
+gpsdNumberOfBuckets = lens _gluePartitionStorageDescriptorNumberOfBuckets (\s a -> s { _gluePartitionStorageDescriptorNumberOfBuckets = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-outputformat
+gpsdOutputFormat :: Lens' GluePartitionStorageDescriptor (Maybe (Val Text))
+gpsdOutputFormat = lens _gluePartitionStorageDescriptorOutputFormat (\s a -> s { _gluePartitionStorageDescriptorOutputFormat = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-parameters
+gpsdParameters :: Lens' GluePartitionStorageDescriptor (Maybe Object)
+gpsdParameters = lens _gluePartitionStorageDescriptorParameters (\s a -> s { _gluePartitionStorageDescriptorParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-serdeinfo
+gpsdSerdeInfo :: Lens' GluePartitionStorageDescriptor (Maybe GluePartitionSerdeInfo)
+gpsdSerdeInfo = lens _gluePartitionStorageDescriptorSerdeInfo (\s a -> s { _gluePartitionStorageDescriptorSerdeInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-skewedinfo
+gpsdSkewedInfo :: Lens' GluePartitionStorageDescriptor (Maybe GluePartitionSkewedInfo)
+gpsdSkewedInfo = lens _gluePartitionStorageDescriptorSkewedInfo (\s a -> s { _gluePartitionStorageDescriptorSkewedInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-sortcolumns
+gpsdSortColumns :: Lens' GluePartitionStorageDescriptor (Maybe [GluePartitionOrder])
+gpsdSortColumns = lens _gluePartitionStorageDescriptorSortColumns (\s a -> s { _gluePartitionStorageDescriptorSortColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-partition-storagedescriptor.html#cfn-glue-partition-storagedescriptor-storedassubdirectories
+gpsdStoredAsSubDirectories :: Lens' GluePartitionStorageDescriptor (Maybe (Val Bool))
+gpsdStoredAsSubDirectories = lens _gluePartitionStorageDescriptorStoredAsSubDirectories (\s a -> s { _gluePartitionStorageDescriptorStoredAsSubDirectories = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableColumn.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableColumn.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableColumn.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-column.html
+
+module Stratosphere.ResourceProperties.GlueTableColumn 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 GlueTableColumn. See 'glueTableColumn' for
+-- a more convenient constructor.
+data GlueTableColumn =
+  GlueTableColumn
+  { _glueTableColumnComment :: Maybe (Val Text)
+  , _glueTableColumnName :: Val Text
+  , _glueTableColumnType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTableColumn where
+  toJSON GlueTableColumn{..} =
+    object $
+    catMaybes
+    [ fmap (("Comment",) . toJSON) _glueTableColumnComment
+    , (Just . ("Name",) . toJSON) _glueTableColumnName
+    , fmap (("Type",) . toJSON) _glueTableColumnType
+    ]
+
+instance FromJSON GlueTableColumn where
+  parseJSON (Object obj) =
+    GlueTableColumn <$>
+      (obj .:? "Comment") <*>
+      (obj .: "Name") <*>
+      (obj .:? "Type")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTableColumn' containing required fields as
+-- arguments.
+glueTableColumn
+  :: Val Text -- ^ 'gtcName'
+  -> GlueTableColumn
+glueTableColumn namearg =
+  GlueTableColumn
+  { _glueTableColumnComment = Nothing
+  , _glueTableColumnName = namearg
+  , _glueTableColumnType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-column.html#cfn-glue-table-column-comment
+gtcComment :: Lens' GlueTableColumn (Maybe (Val Text))
+gtcComment = lens _glueTableColumnComment (\s a -> s { _glueTableColumnComment = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-column.html#cfn-glue-table-column-name
+gtcName :: Lens' GlueTableColumn (Val Text)
+gtcName = lens _glueTableColumnName (\s a -> s { _glueTableColumnName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-column.html#cfn-glue-table-column-type
+gtcType :: Lens' GlueTableColumn (Maybe (Val Text))
+gtcType = lens _glueTableColumnType (\s a -> s { _glueTableColumnType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableOrder.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableOrder.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableOrder.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-order.html
+
+module Stratosphere.ResourceProperties.GlueTableOrder 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 GlueTableOrder. See 'glueTableOrder' for a
+-- more convenient constructor.
+data GlueTableOrder =
+  GlueTableOrder
+  { _glueTableOrderColumn :: Val Text
+  , _glueTableOrderSortOrder :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTableOrder where
+  toJSON GlueTableOrder{..} =
+    object $
+    catMaybes
+    [ (Just . ("Column",) . toJSON) _glueTableOrderColumn
+    , (Just . ("SortOrder",) . toJSON . fmap Integer') _glueTableOrderSortOrder
+    ]
+
+instance FromJSON GlueTableOrder where
+  parseJSON (Object obj) =
+    GlueTableOrder <$>
+      (obj .: "Column") <*>
+      fmap (fmap unInteger') (obj .: "SortOrder")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTableOrder' containing required fields as arguments.
+glueTableOrder
+  :: Val Text -- ^ 'gtoColumn'
+  -> Val Integer -- ^ 'gtoSortOrder'
+  -> GlueTableOrder
+glueTableOrder columnarg sortOrderarg =
+  GlueTableOrder
+  { _glueTableOrderColumn = columnarg
+  , _glueTableOrderSortOrder = sortOrderarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-order.html#cfn-glue-table-order-column
+gtoColumn :: Lens' GlueTableOrder (Val Text)
+gtoColumn = lens _glueTableOrderColumn (\s a -> s { _glueTableOrderColumn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-order.html#cfn-glue-table-order-sortorder
+gtoSortOrder :: Lens' GlueTableOrder (Val Integer)
+gtoSortOrder = lens _glueTableOrderSortOrder (\s a -> s { _glueTableOrderSortOrder = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableSerdeInfo.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableSerdeInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableSerdeInfo.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-serdeinfo.html
+
+module Stratosphere.ResourceProperties.GlueTableSerdeInfo 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 GlueTableSerdeInfo. See
+-- 'glueTableSerdeInfo' for a more convenient constructor.
+data GlueTableSerdeInfo =
+  GlueTableSerdeInfo
+  { _glueTableSerdeInfoName :: Maybe (Val Text)
+  , _glueTableSerdeInfoParameters :: Maybe Object
+  , _glueTableSerdeInfoSerializationLibrary :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTableSerdeInfo where
+  toJSON GlueTableSerdeInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("Name",) . toJSON) _glueTableSerdeInfoName
+    , fmap (("Parameters",) . toJSON) _glueTableSerdeInfoParameters
+    , fmap (("SerializationLibrary",) . toJSON) _glueTableSerdeInfoSerializationLibrary
+    ]
+
+instance FromJSON GlueTableSerdeInfo where
+  parseJSON (Object obj) =
+    GlueTableSerdeInfo <$>
+      (obj .:? "Name") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "SerializationLibrary")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTableSerdeInfo' containing required fields as
+-- arguments.
+glueTableSerdeInfo
+  :: GlueTableSerdeInfo
+glueTableSerdeInfo  =
+  GlueTableSerdeInfo
+  { _glueTableSerdeInfoName = Nothing
+  , _glueTableSerdeInfoParameters = Nothing
+  , _glueTableSerdeInfoSerializationLibrary = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-serdeinfo.html#cfn-glue-table-serdeinfo-name
+gtsiName :: Lens' GlueTableSerdeInfo (Maybe (Val Text))
+gtsiName = lens _glueTableSerdeInfoName (\s a -> s { _glueTableSerdeInfoName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-serdeinfo.html#cfn-glue-table-serdeinfo-parameters
+gtsiParameters :: Lens' GlueTableSerdeInfo (Maybe Object)
+gtsiParameters = lens _glueTableSerdeInfoParameters (\s a -> s { _glueTableSerdeInfoParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-serdeinfo.html#cfn-glue-table-serdeinfo-serializationlibrary
+gtsiSerializationLibrary :: Lens' GlueTableSerdeInfo (Maybe (Val Text))
+gtsiSerializationLibrary = lens _glueTableSerdeInfoSerializationLibrary (\s a -> s { _glueTableSerdeInfoSerializationLibrary = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableSkewedInfo.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableSkewedInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableSkewedInfo.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-skewedinfo.html
+
+module Stratosphere.ResourceProperties.GlueTableSkewedInfo 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 GlueTableSkewedInfo. See
+-- 'glueTableSkewedInfo' for a more convenient constructor.
+data GlueTableSkewedInfo =
+  GlueTableSkewedInfo
+  { _glueTableSkewedInfoSkewedColumnNames :: Maybe (ValList Text)
+  , _glueTableSkewedInfoSkewedColumnValueLocationMaps :: Maybe Object
+  , _glueTableSkewedInfoSkewedColumnValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTableSkewedInfo where
+  toJSON GlueTableSkewedInfo{..} =
+    object $
+    catMaybes
+    [ fmap (("SkewedColumnNames",) . toJSON) _glueTableSkewedInfoSkewedColumnNames
+    , fmap (("SkewedColumnValueLocationMaps",) . toJSON) _glueTableSkewedInfoSkewedColumnValueLocationMaps
+    , fmap (("SkewedColumnValues",) . toJSON) _glueTableSkewedInfoSkewedColumnValues
+    ]
+
+instance FromJSON GlueTableSkewedInfo where
+  parseJSON (Object obj) =
+    GlueTableSkewedInfo <$>
+      (obj .:? "SkewedColumnNames") <*>
+      (obj .:? "SkewedColumnValueLocationMaps") <*>
+      (obj .:? "SkewedColumnValues")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTableSkewedInfo' containing required fields as
+-- arguments.
+glueTableSkewedInfo
+  :: GlueTableSkewedInfo
+glueTableSkewedInfo  =
+  GlueTableSkewedInfo
+  { _glueTableSkewedInfoSkewedColumnNames = Nothing
+  , _glueTableSkewedInfoSkewedColumnValueLocationMaps = Nothing
+  , _glueTableSkewedInfoSkewedColumnValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-skewedinfo.html#cfn-glue-table-skewedinfo-skewedcolumnnames
+gtsiSkewedColumnNames :: Lens' GlueTableSkewedInfo (Maybe (ValList Text))
+gtsiSkewedColumnNames = lens _glueTableSkewedInfoSkewedColumnNames (\s a -> s { _glueTableSkewedInfoSkewedColumnNames = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-skewedinfo.html#cfn-glue-table-skewedinfo-skewedcolumnvaluelocationmaps
+gtsiSkewedColumnValueLocationMaps :: Lens' GlueTableSkewedInfo (Maybe Object)
+gtsiSkewedColumnValueLocationMaps = lens _glueTableSkewedInfoSkewedColumnValueLocationMaps (\s a -> s { _glueTableSkewedInfoSkewedColumnValueLocationMaps = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-skewedinfo.html#cfn-glue-table-skewedinfo-skewedcolumnvalues
+gtsiSkewedColumnValues :: Lens' GlueTableSkewedInfo (Maybe (ValList Text))
+gtsiSkewedColumnValues = lens _glueTableSkewedInfoSkewedColumnValues (\s a -> s { _glueTableSkewedInfoSkewedColumnValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableStorageDescriptor.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableStorageDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableStorageDescriptor.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html
+
+module Stratosphere.ResourceProperties.GlueTableStorageDescriptor 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.GlueTableColumn
+import Stratosphere.ResourceProperties.GlueTableSerdeInfo
+import Stratosphere.ResourceProperties.GlueTableSkewedInfo
+import Stratosphere.ResourceProperties.GlueTableOrder
+
+-- | Full data type definition for GlueTableStorageDescriptor. See
+-- 'glueTableStorageDescriptor' for a more convenient constructor.
+data GlueTableStorageDescriptor =
+  GlueTableStorageDescriptor
+  { _glueTableStorageDescriptorBucketColumns :: Maybe (ValList Text)
+  , _glueTableStorageDescriptorColumns :: Maybe [GlueTableColumn]
+  , _glueTableStorageDescriptorCompressed :: Maybe (Val Bool)
+  , _glueTableStorageDescriptorInputFormat :: Maybe (Val Text)
+  , _glueTableStorageDescriptorLocation :: Maybe (Val Text)
+  , _glueTableStorageDescriptorNumberOfBuckets :: Maybe (Val Integer)
+  , _glueTableStorageDescriptorOutputFormat :: Maybe (Val Text)
+  , _glueTableStorageDescriptorParameters :: Maybe Object
+  , _glueTableStorageDescriptorSerdeInfo :: Maybe GlueTableSerdeInfo
+  , _glueTableStorageDescriptorSkewedInfo :: Maybe GlueTableSkewedInfo
+  , _glueTableStorageDescriptorSortColumns :: Maybe [GlueTableOrder]
+  , _glueTableStorageDescriptorStoredAsSubDirectories :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTableStorageDescriptor where
+  toJSON GlueTableStorageDescriptor{..} =
+    object $
+    catMaybes
+    [ fmap (("BucketColumns",) . toJSON) _glueTableStorageDescriptorBucketColumns
+    , fmap (("Columns",) . toJSON) _glueTableStorageDescriptorColumns
+    , fmap (("Compressed",) . toJSON . fmap Bool') _glueTableStorageDescriptorCompressed
+    , fmap (("InputFormat",) . toJSON) _glueTableStorageDescriptorInputFormat
+    , fmap (("Location",) . toJSON) _glueTableStorageDescriptorLocation
+    , fmap (("NumberOfBuckets",) . toJSON . fmap Integer') _glueTableStorageDescriptorNumberOfBuckets
+    , fmap (("OutputFormat",) . toJSON) _glueTableStorageDescriptorOutputFormat
+    , fmap (("Parameters",) . toJSON) _glueTableStorageDescriptorParameters
+    , fmap (("SerdeInfo",) . toJSON) _glueTableStorageDescriptorSerdeInfo
+    , fmap (("SkewedInfo",) . toJSON) _glueTableStorageDescriptorSkewedInfo
+    , fmap (("SortColumns",) . toJSON) _glueTableStorageDescriptorSortColumns
+    , fmap (("StoredAsSubDirectories",) . toJSON . fmap Bool') _glueTableStorageDescriptorStoredAsSubDirectories
+    ]
+
+instance FromJSON GlueTableStorageDescriptor where
+  parseJSON (Object obj) =
+    GlueTableStorageDescriptor <$>
+      (obj .:? "BucketColumns") <*>
+      (obj .:? "Columns") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "Compressed") <*>
+      (obj .:? "InputFormat") <*>
+      (obj .:? "Location") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumberOfBuckets") <*>
+      (obj .:? "OutputFormat") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "SerdeInfo") <*>
+      (obj .:? "SkewedInfo") <*>
+      (obj .:? "SortColumns") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "StoredAsSubDirectories")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTableStorageDescriptor' containing required fields
+-- as arguments.
+glueTableStorageDescriptor
+  :: GlueTableStorageDescriptor
+glueTableStorageDescriptor  =
+  GlueTableStorageDescriptor
+  { _glueTableStorageDescriptorBucketColumns = Nothing
+  , _glueTableStorageDescriptorColumns = Nothing
+  , _glueTableStorageDescriptorCompressed = Nothing
+  , _glueTableStorageDescriptorInputFormat = Nothing
+  , _glueTableStorageDescriptorLocation = Nothing
+  , _glueTableStorageDescriptorNumberOfBuckets = Nothing
+  , _glueTableStorageDescriptorOutputFormat = Nothing
+  , _glueTableStorageDescriptorParameters = Nothing
+  , _glueTableStorageDescriptorSerdeInfo = Nothing
+  , _glueTableStorageDescriptorSkewedInfo = Nothing
+  , _glueTableStorageDescriptorSortColumns = Nothing
+  , _glueTableStorageDescriptorStoredAsSubDirectories = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-bucketcolumns
+gtsdBucketColumns :: Lens' GlueTableStorageDescriptor (Maybe (ValList Text))
+gtsdBucketColumns = lens _glueTableStorageDescriptorBucketColumns (\s a -> s { _glueTableStorageDescriptorBucketColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-columns
+gtsdColumns :: Lens' GlueTableStorageDescriptor (Maybe [GlueTableColumn])
+gtsdColumns = lens _glueTableStorageDescriptorColumns (\s a -> s { _glueTableStorageDescriptorColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-compressed
+gtsdCompressed :: Lens' GlueTableStorageDescriptor (Maybe (Val Bool))
+gtsdCompressed = lens _glueTableStorageDescriptorCompressed (\s a -> s { _glueTableStorageDescriptorCompressed = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-inputformat
+gtsdInputFormat :: Lens' GlueTableStorageDescriptor (Maybe (Val Text))
+gtsdInputFormat = lens _glueTableStorageDescriptorInputFormat (\s a -> s { _glueTableStorageDescriptorInputFormat = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-location
+gtsdLocation :: Lens' GlueTableStorageDescriptor (Maybe (Val Text))
+gtsdLocation = lens _glueTableStorageDescriptorLocation (\s a -> s { _glueTableStorageDescriptorLocation = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-numberofbuckets
+gtsdNumberOfBuckets :: Lens' GlueTableStorageDescriptor (Maybe (Val Integer))
+gtsdNumberOfBuckets = lens _glueTableStorageDescriptorNumberOfBuckets (\s a -> s { _glueTableStorageDescriptorNumberOfBuckets = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-outputformat
+gtsdOutputFormat :: Lens' GlueTableStorageDescriptor (Maybe (Val Text))
+gtsdOutputFormat = lens _glueTableStorageDescriptorOutputFormat (\s a -> s { _glueTableStorageDescriptorOutputFormat = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-parameters
+gtsdParameters :: Lens' GlueTableStorageDescriptor (Maybe Object)
+gtsdParameters = lens _glueTableStorageDescriptorParameters (\s a -> s { _glueTableStorageDescriptorParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-serdeinfo
+gtsdSerdeInfo :: Lens' GlueTableStorageDescriptor (Maybe GlueTableSerdeInfo)
+gtsdSerdeInfo = lens _glueTableStorageDescriptorSerdeInfo (\s a -> s { _glueTableStorageDescriptorSerdeInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-skewedinfo
+gtsdSkewedInfo :: Lens' GlueTableStorageDescriptor (Maybe GlueTableSkewedInfo)
+gtsdSkewedInfo = lens _glueTableStorageDescriptorSkewedInfo (\s a -> s { _glueTableStorageDescriptorSkewedInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-sortcolumns
+gtsdSortColumns :: Lens' GlueTableStorageDescriptor (Maybe [GlueTableOrder])
+gtsdSortColumns = lens _glueTableStorageDescriptorSortColumns (\s a -> s { _glueTableStorageDescriptorSortColumns = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-storagedescriptor.html#cfn-glue-table-storagedescriptor-storedassubdirectories
+gtsdStoredAsSubDirectories :: Lens' GlueTableStorageDescriptor (Maybe (Val Bool))
+gtsdStoredAsSubDirectories = lens _glueTableStorageDescriptorStoredAsSubDirectories (\s a -> s { _glueTableStorageDescriptorStoredAsSubDirectories = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTableTableInput.hs b/library-gen/Stratosphere/ResourceProperties/GlueTableTableInput.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTableTableInput.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html
+
+module Stratosphere.ResourceProperties.GlueTableTableInput 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.GlueTableColumn
+import Stratosphere.ResourceProperties.GlueTableStorageDescriptor
+
+-- | Full data type definition for GlueTableTableInput. See
+-- 'glueTableTableInput' for a more convenient constructor.
+data GlueTableTableInput =
+  GlueTableTableInput
+  { _glueTableTableInputDescription :: Maybe (Val Text)
+  , _glueTableTableInputName :: Maybe (Val Text)
+  , _glueTableTableInputOwner :: Maybe (Val Text)
+  , _glueTableTableInputParameters :: Maybe Object
+  , _glueTableTableInputPartitionKeys :: Maybe [GlueTableColumn]
+  , _glueTableTableInputRetention :: Maybe (Val Integer)
+  , _glueTableTableInputStorageDescriptor :: Maybe GlueTableStorageDescriptor
+  , _glueTableTableInputTableType :: Maybe (Val Text)
+  , _glueTableTableInputViewExpandedText :: Maybe (Val Text)
+  , _glueTableTableInputViewOriginalText :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTableTableInput where
+  toJSON GlueTableTableInput{..} =
+    object $
+    catMaybes
+    [ fmap (("Description",) . toJSON) _glueTableTableInputDescription
+    , fmap (("Name",) . toJSON) _glueTableTableInputName
+    , fmap (("Owner",) . toJSON) _glueTableTableInputOwner
+    , fmap (("Parameters",) . toJSON) _glueTableTableInputParameters
+    , fmap (("PartitionKeys",) . toJSON) _glueTableTableInputPartitionKeys
+    , fmap (("Retention",) . toJSON . fmap Integer') _glueTableTableInputRetention
+    , fmap (("StorageDescriptor",) . toJSON) _glueTableTableInputStorageDescriptor
+    , fmap (("TableType",) . toJSON) _glueTableTableInputTableType
+    , fmap (("ViewExpandedText",) . toJSON) _glueTableTableInputViewExpandedText
+    , fmap (("ViewOriginalText",) . toJSON) _glueTableTableInputViewOriginalText
+    ]
+
+instance FromJSON GlueTableTableInput where
+  parseJSON (Object obj) =
+    GlueTableTableInput <$>
+      (obj .:? "Description") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Owner") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "PartitionKeys") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Retention") <*>
+      (obj .:? "StorageDescriptor") <*>
+      (obj .:? "TableType") <*>
+      (obj .:? "ViewExpandedText") <*>
+      (obj .:? "ViewOriginalText")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTableTableInput' containing required fields as
+-- arguments.
+glueTableTableInput
+  :: GlueTableTableInput
+glueTableTableInput  =
+  GlueTableTableInput
+  { _glueTableTableInputDescription = Nothing
+  , _glueTableTableInputName = Nothing
+  , _glueTableTableInputOwner = Nothing
+  , _glueTableTableInputParameters = Nothing
+  , _glueTableTableInputPartitionKeys = Nothing
+  , _glueTableTableInputRetention = Nothing
+  , _glueTableTableInputStorageDescriptor = Nothing
+  , _glueTableTableInputTableType = Nothing
+  , _glueTableTableInputViewExpandedText = Nothing
+  , _glueTableTableInputViewOriginalText = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-description
+gttiDescription :: Lens' GlueTableTableInput (Maybe (Val Text))
+gttiDescription = lens _glueTableTableInputDescription (\s a -> s { _glueTableTableInputDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-name
+gttiName :: Lens' GlueTableTableInput (Maybe (Val Text))
+gttiName = lens _glueTableTableInputName (\s a -> s { _glueTableTableInputName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-owner
+gttiOwner :: Lens' GlueTableTableInput (Maybe (Val Text))
+gttiOwner = lens _glueTableTableInputOwner (\s a -> s { _glueTableTableInputOwner = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-parameters
+gttiParameters :: Lens' GlueTableTableInput (Maybe Object)
+gttiParameters = lens _glueTableTableInputParameters (\s a -> s { _glueTableTableInputParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-partitionkeys
+gttiPartitionKeys :: Lens' GlueTableTableInput (Maybe [GlueTableColumn])
+gttiPartitionKeys = lens _glueTableTableInputPartitionKeys (\s a -> s { _glueTableTableInputPartitionKeys = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-retention
+gttiRetention :: Lens' GlueTableTableInput (Maybe (Val Integer))
+gttiRetention = lens _glueTableTableInputRetention (\s a -> s { _glueTableTableInputRetention = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-storagedescriptor
+gttiStorageDescriptor :: Lens' GlueTableTableInput (Maybe GlueTableStorageDescriptor)
+gttiStorageDescriptor = lens _glueTableTableInputStorageDescriptor (\s a -> s { _glueTableTableInputStorageDescriptor = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-tabletype
+gttiTableType :: Lens' GlueTableTableInput (Maybe (Val Text))
+gttiTableType = lens _glueTableTableInputTableType (\s a -> s { _glueTableTableInputTableType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-viewexpandedtext
+gttiViewExpandedText :: Lens' GlueTableTableInput (Maybe (Val Text))
+gttiViewExpandedText = lens _glueTableTableInputViewExpandedText (\s a -> s { _glueTableTableInputViewExpandedText = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-vieworiginaltext
+gttiViewOriginalText :: Lens' GlueTableTableInput (Maybe (Val Text))
+gttiViewOriginalText = lens _glueTableTableInputViewOriginalText (\s a -> s { _glueTableTableInputViewOriginalText = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTriggerAction.hs b/library-gen/Stratosphere/ResourceProperties/GlueTriggerAction.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTriggerAction.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-action.html
+
+module Stratosphere.ResourceProperties.GlueTriggerAction 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 GlueTriggerAction. See 'glueTriggerAction'
+-- for a more convenient constructor.
+data GlueTriggerAction =
+  GlueTriggerAction
+  { _glueTriggerActionArguments :: Maybe Object
+  , _glueTriggerActionJobName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTriggerAction where
+  toJSON GlueTriggerAction{..} =
+    object $
+    catMaybes
+    [ fmap (("Arguments",) . toJSON) _glueTriggerActionArguments
+    , fmap (("JobName",) . toJSON) _glueTriggerActionJobName
+    ]
+
+instance FromJSON GlueTriggerAction where
+  parseJSON (Object obj) =
+    GlueTriggerAction <$>
+      (obj .:? "Arguments") <*>
+      (obj .:? "JobName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTriggerAction' containing required fields as
+-- arguments.
+glueTriggerAction
+  :: GlueTriggerAction
+glueTriggerAction  =
+  GlueTriggerAction
+  { _glueTriggerActionArguments = Nothing
+  , _glueTriggerActionJobName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-action.html#cfn-glue-trigger-action-arguments
+gtaArguments :: Lens' GlueTriggerAction (Maybe Object)
+gtaArguments = lens _glueTriggerActionArguments (\s a -> s { _glueTriggerActionArguments = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-action.html#cfn-glue-trigger-action-jobname
+gtaJobName :: Lens' GlueTriggerAction (Maybe (Val Text))
+gtaJobName = lens _glueTriggerActionJobName (\s a -> s { _glueTriggerActionJobName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTriggerCondition.hs b/library-gen/Stratosphere/ResourceProperties/GlueTriggerCondition.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTriggerCondition.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-condition.html
+
+module Stratosphere.ResourceProperties.GlueTriggerCondition 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 GlueTriggerCondition. See
+-- 'glueTriggerCondition' for a more convenient constructor.
+data GlueTriggerCondition =
+  GlueTriggerCondition
+  { _glueTriggerConditionJobName :: Maybe (Val Text)
+  , _glueTriggerConditionLogicalOperator :: Maybe (Val Text)
+  , _glueTriggerConditionState :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTriggerCondition where
+  toJSON GlueTriggerCondition{..} =
+    object $
+    catMaybes
+    [ fmap (("JobName",) . toJSON) _glueTriggerConditionJobName
+    , fmap (("LogicalOperator",) . toJSON) _glueTriggerConditionLogicalOperator
+    , fmap (("State",) . toJSON) _glueTriggerConditionState
+    ]
+
+instance FromJSON GlueTriggerCondition where
+  parseJSON (Object obj) =
+    GlueTriggerCondition <$>
+      (obj .:? "JobName") <*>
+      (obj .:? "LogicalOperator") <*>
+      (obj .:? "State")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTriggerCondition' containing required fields as
+-- arguments.
+glueTriggerCondition
+  :: GlueTriggerCondition
+glueTriggerCondition  =
+  GlueTriggerCondition
+  { _glueTriggerConditionJobName = Nothing
+  , _glueTriggerConditionLogicalOperator = Nothing
+  , _glueTriggerConditionState = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-condition.html#cfn-glue-trigger-condition-jobname
+gtcJobName :: Lens' GlueTriggerCondition (Maybe (Val Text))
+gtcJobName = lens _glueTriggerConditionJobName (\s a -> s { _glueTriggerConditionJobName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-condition.html#cfn-glue-trigger-condition-logicaloperator
+gtcLogicalOperator :: Lens' GlueTriggerCondition (Maybe (Val Text))
+gtcLogicalOperator = lens _glueTriggerConditionLogicalOperator (\s a -> s { _glueTriggerConditionLogicalOperator = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-condition.html#cfn-glue-trigger-condition-state
+gtcState :: Lens' GlueTriggerCondition (Maybe (Val Text))
+gtcState = lens _glueTriggerConditionState (\s a -> s { _glueTriggerConditionState = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/GlueTriggerPredicate.hs b/library-gen/Stratosphere/ResourceProperties/GlueTriggerPredicate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/GlueTriggerPredicate.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-predicate.html
+
+module Stratosphere.ResourceProperties.GlueTriggerPredicate 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.GlueTriggerCondition
+
+-- | Full data type definition for GlueTriggerPredicate. See
+-- 'glueTriggerPredicate' for a more convenient constructor.
+data GlueTriggerPredicate =
+  GlueTriggerPredicate
+  { _glueTriggerPredicateConditions :: Maybe [GlueTriggerCondition]
+  , _glueTriggerPredicateLogical :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTriggerPredicate where
+  toJSON GlueTriggerPredicate{..} =
+    object $
+    catMaybes
+    [ fmap (("Conditions",) . toJSON) _glueTriggerPredicateConditions
+    , fmap (("Logical",) . toJSON) _glueTriggerPredicateLogical
+    ]
+
+instance FromJSON GlueTriggerPredicate where
+  parseJSON (Object obj) =
+    GlueTriggerPredicate <$>
+      (obj .:? "Conditions") <*>
+      (obj .:? "Logical")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTriggerPredicate' containing required fields as
+-- arguments.
+glueTriggerPredicate
+  :: GlueTriggerPredicate
+glueTriggerPredicate  =
+  GlueTriggerPredicate
+  { _glueTriggerPredicateConditions = Nothing
+  , _glueTriggerPredicateLogical = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-predicate.html#cfn-glue-trigger-predicate-conditions
+gtpConditions :: Lens' GlueTriggerPredicate (Maybe [GlueTriggerCondition])
+gtpConditions = lens _glueTriggerPredicateConditions (\s a -> s { _glueTriggerPredicateConditions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-trigger-predicate.html#cfn-glue-trigger-predicate-logical
+gtpLogical :: Lens' GlueTriggerPredicate (Maybe (Val Text))
+gtpLogical = lens _glueTriggerPredicateLogical (\s a -> s { _glueTriggerPredicateLogical = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInput.hs
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputProcessingConfiguration
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputSchema
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisFirehoseInput
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisStreamsInput
@@ -23,6 +24,7 @@
 data KinesisAnalyticsApplicationInput =
   KinesisAnalyticsApplicationInput
   { _kinesisAnalyticsApplicationInputInputParallelism :: Maybe KinesisAnalyticsApplicationInputParallelism
+  , _kinesisAnalyticsApplicationInputInputProcessingConfiguration :: Maybe KinesisAnalyticsApplicationInputProcessingConfiguration
   , _kinesisAnalyticsApplicationInputInputSchema :: KinesisAnalyticsApplicationInputSchema
   , _kinesisAnalyticsApplicationInputKinesisFirehoseInput :: Maybe KinesisAnalyticsApplicationKinesisFirehoseInput
   , _kinesisAnalyticsApplicationInputKinesisStreamsInput :: Maybe KinesisAnalyticsApplicationKinesisStreamsInput
@@ -34,6 +36,7 @@
     object $
     catMaybes
     [ fmap (("InputParallelism",) . toJSON) _kinesisAnalyticsApplicationInputInputParallelism
+    , fmap (("InputProcessingConfiguration",) . toJSON) _kinesisAnalyticsApplicationInputInputProcessingConfiguration
     , (Just . ("InputSchema",) . toJSON) _kinesisAnalyticsApplicationInputInputSchema
     , fmap (("KinesisFirehoseInput",) . toJSON) _kinesisAnalyticsApplicationInputKinesisFirehoseInput
     , fmap (("KinesisStreamsInput",) . toJSON) _kinesisAnalyticsApplicationInputKinesisStreamsInput
@@ -44,6 +47,7 @@
   parseJSON (Object obj) =
     KinesisAnalyticsApplicationInput <$>
       (obj .:? "InputParallelism") <*>
+      (obj .:? "InputProcessingConfiguration") <*>
       (obj .: "InputSchema") <*>
       (obj .:? "KinesisFirehoseInput") <*>
       (obj .:? "KinesisStreamsInput") <*>
@@ -59,6 +63,7 @@
 kinesisAnalyticsApplicationInput inputSchemaarg namePrefixarg =
   KinesisAnalyticsApplicationInput
   { _kinesisAnalyticsApplicationInputInputParallelism = Nothing
+  , _kinesisAnalyticsApplicationInputInputProcessingConfiguration = Nothing
   , _kinesisAnalyticsApplicationInputInputSchema = inputSchemaarg
   , _kinesisAnalyticsApplicationInputKinesisFirehoseInput = Nothing
   , _kinesisAnalyticsApplicationInputKinesisStreamsInput = Nothing
@@ -68,6 +73,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-inputparallelism
 kaaiInputParallelism :: Lens' KinesisAnalyticsApplicationInput (Maybe KinesisAnalyticsApplicationInputParallelism)
 kaaiInputParallelism = lens _kinesisAnalyticsApplicationInputInputParallelism (\s a -> s { _kinesisAnalyticsApplicationInputInputParallelism = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-inputprocessingconfiguration
+kaaiInputProcessingConfiguration :: Lens' KinesisAnalyticsApplicationInput (Maybe KinesisAnalyticsApplicationInputProcessingConfiguration)
+kaaiInputProcessingConfiguration = lens _kinesisAnalyticsApplicationInputInputProcessingConfiguration (\s a -> s { _kinesisAnalyticsApplicationInputInputProcessingConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-input.html#cfn-kinesisanalytics-application-input-inputschema
 kaaiInputSchema :: Lens' KinesisAnalyticsApplicationInput KinesisAnalyticsApplicationInputSchema
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputLambdaProcessor.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputLambdaProcessor.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputLambdaProcessor.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputlambdaprocessor.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputLambdaProcessor 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
+-- KinesisAnalyticsApplicationInputLambdaProcessor. See
+-- 'kinesisAnalyticsApplicationInputLambdaProcessor' for a more convenient
+-- constructor.
+data KinesisAnalyticsApplicationInputLambdaProcessor =
+  KinesisAnalyticsApplicationInputLambdaProcessor
+  { _kinesisAnalyticsApplicationInputLambdaProcessorResourceARN :: Val Text
+  , _kinesisAnalyticsApplicationInputLambdaProcessorRoleARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationInputLambdaProcessor where
+  toJSON KinesisAnalyticsApplicationInputLambdaProcessor{..} =
+    object $
+    catMaybes
+    [ (Just . ("ResourceARN",) . toJSON) _kinesisAnalyticsApplicationInputLambdaProcessorResourceARN
+    , (Just . ("RoleARN",) . toJSON) _kinesisAnalyticsApplicationInputLambdaProcessorRoleARN
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationInputLambdaProcessor where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationInputLambdaProcessor <$>
+      (obj .: "ResourceARN") <*>
+      (obj .: "RoleARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationInputLambdaProcessor'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationInputLambdaProcessor
+  :: Val Text -- ^ 'kaailpResourceARN'
+  -> Val Text -- ^ 'kaailpRoleARN'
+  -> KinesisAnalyticsApplicationInputLambdaProcessor
+kinesisAnalyticsApplicationInputLambdaProcessor resourceARNarg roleARNarg =
+  KinesisAnalyticsApplicationInputLambdaProcessor
+  { _kinesisAnalyticsApplicationInputLambdaProcessorResourceARN = resourceARNarg
+  , _kinesisAnalyticsApplicationInputLambdaProcessorRoleARN = roleARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputlambdaprocessor.html#cfn-kinesisanalytics-application-inputlambdaprocessor-resourcearn
+kaailpResourceARN :: Lens' KinesisAnalyticsApplicationInputLambdaProcessor (Val Text)
+kaailpResourceARN = lens _kinesisAnalyticsApplicationInputLambdaProcessorResourceARN (\s a -> s { _kinesisAnalyticsApplicationInputLambdaProcessorResourceARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputlambdaprocessor.html#cfn-kinesisanalytics-application-inputlambdaprocessor-rolearn
+kaailpRoleARN :: Lens' KinesisAnalyticsApplicationInputLambdaProcessor (Val Text)
+kaailpRoleARN = lens _kinesisAnalyticsApplicationInputLambdaProcessorRoleARN (\s a -> s { _kinesisAnalyticsApplicationInputLambdaProcessorRoleARN = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputProcessingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputProcessingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisAnalyticsApplicationInputProcessingConfiguration.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputprocessingconfiguration.html
+
+module Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputProcessingConfiguration 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.KinesisAnalyticsApplicationInputLambdaProcessor
+
+-- | Full data type definition for
+-- KinesisAnalyticsApplicationInputProcessingConfiguration. See
+-- 'kinesisAnalyticsApplicationInputProcessingConfiguration' for a more
+-- convenient constructor.
+data KinesisAnalyticsApplicationInputProcessingConfiguration =
+  KinesisAnalyticsApplicationInputProcessingConfiguration
+  { _kinesisAnalyticsApplicationInputProcessingConfigurationInputLambdaProcessor :: Maybe KinesisAnalyticsApplicationInputLambdaProcessor
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisAnalyticsApplicationInputProcessingConfiguration where
+  toJSON KinesisAnalyticsApplicationInputProcessingConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("InputLambdaProcessor",) . toJSON) _kinesisAnalyticsApplicationInputProcessingConfigurationInputLambdaProcessor
+    ]
+
+instance FromJSON KinesisAnalyticsApplicationInputProcessingConfiguration where
+  parseJSON (Object obj) =
+    KinesisAnalyticsApplicationInputProcessingConfiguration <$>
+      (obj .:? "InputLambdaProcessor")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisAnalyticsApplicationInputProcessingConfiguration'
+-- containing required fields as arguments.
+kinesisAnalyticsApplicationInputProcessingConfiguration
+  :: KinesisAnalyticsApplicationInputProcessingConfiguration
+kinesisAnalyticsApplicationInputProcessingConfiguration  =
+  KinesisAnalyticsApplicationInputProcessingConfiguration
+  { _kinesisAnalyticsApplicationInputProcessingConfigurationInputLambdaProcessor = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputprocessingconfiguration.html#cfn-kinesisanalytics-application-inputprocessingconfiguration-inputlambdaprocessor
+kaaipcInputLambdaProcessor :: Lens' KinesisAnalyticsApplicationInputProcessingConfiguration (Maybe KinesisAnalyticsApplicationInputLambdaProcessor)
+kaaipcInputLambdaProcessor = lens _kinesisAnalyticsApplicationInputProcessingConfigurationInputLambdaProcessor (\s a -> s { _kinesisAnalyticsApplicationInputProcessingConfigurationInputLambdaProcessor = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/KinesisFirehoseDeliveryStreamS3DestinationConfiguration.hs
@@ -29,7 +29,7 @@
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions :: Maybe KinesisFirehoseDeliveryStreamCloudWatchLoggingOptions
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat :: Val KinesisFirehoseS3CompressionFormat
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration :: Maybe KinesisFirehoseDeliveryStreamEncryptionConfiguration
-  , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix :: Val Text
+  , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix :: Maybe (Val Text)
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN :: Val Text
   } deriving (Show, Eq)
 
@@ -42,7 +42,7 @@
     , fmap (("CloudWatchLoggingOptions",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions
     , (Just . ("CompressionFormat",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat
     , fmap (("EncryptionConfiguration",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration
-    , (Just . ("Prefix",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix
+    , fmap (("Prefix",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix
     , (Just . ("RoleARN",) . toJSON) _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN
     ]
 
@@ -54,7 +54,7 @@
       (obj .:? "CloudWatchLoggingOptions") <*>
       (obj .: "CompressionFormat") <*>
       (obj .:? "EncryptionConfiguration") <*>
-      (obj .: "Prefix") <*>
+      (obj .:? "Prefix") <*>
       (obj .: "RoleARN")
   parseJSON _ = mempty
 
@@ -64,17 +64,16 @@
   :: Val Text -- ^ 'kfdssdcBucketARN'
   -> KinesisFirehoseDeliveryStreamBufferingHints -- ^ 'kfdssdcBufferingHints'
   -> Val KinesisFirehoseS3CompressionFormat -- ^ 'kfdssdcCompressionFormat'
-  -> Val Text -- ^ 'kfdssdcPrefix'
   -> Val Text -- ^ 'kfdssdcRoleARN'
   -> KinesisFirehoseDeliveryStreamS3DestinationConfiguration
-kinesisFirehoseDeliveryStreamS3DestinationConfiguration bucketARNarg bufferingHintsarg compressionFormatarg prefixarg roleARNarg =
+kinesisFirehoseDeliveryStreamS3DestinationConfiguration bucketARNarg bufferingHintsarg compressionFormatarg roleARNarg =
   KinesisFirehoseDeliveryStreamS3DestinationConfiguration
   { _kinesisFirehoseDeliveryStreamS3DestinationConfigurationBucketARN = bucketARNarg
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationBufferingHints = bufferingHintsarg
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCloudWatchLoggingOptions = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationCompressionFormat = compressionFormatarg
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration = Nothing
-  , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix = prefixarg
+  , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix = Nothing
   , _kinesisFirehoseDeliveryStreamS3DestinationConfigurationRoleARN = roleARNarg
   }
 
@@ -99,7 +98,7 @@
 kfdssdcEncryptionConfiguration = lens _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration (\s a -> s { _kinesisFirehoseDeliveryStreamS3DestinationConfigurationEncryptionConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-prefix
-kfdssdcPrefix :: Lens' KinesisFirehoseDeliveryStreamS3DestinationConfiguration (Val Text)
+kfdssdcPrefix :: Lens' KinesisFirehoseDeliveryStreamS3DestinationConfiguration (Maybe (Val Text))
 kfdssdcPrefix = lens _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix (\s a -> s { _kinesisFirehoseDeliveryStreamS3DestinationConfigurationPrefix = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-s3destinationconfiguration.html#cfn-kinesisfirehose-deliverystream-s3destinationconfiguration-rolearn
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaAliasAliasRoutingConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/LambdaAliasAliasRoutingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaAliasAliasRoutingConfiguration.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-aliasroutingconfiguration.html
+
+module Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration 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.LambdaAliasVersionWeight
+
+-- | Full data type definition for LambdaAliasAliasRoutingConfiguration. See
+-- 'lambdaAliasAliasRoutingConfiguration' for a more convenient constructor.
+data LambdaAliasAliasRoutingConfiguration =
+  LambdaAliasAliasRoutingConfiguration
+  { _lambdaAliasAliasRoutingConfigurationAdditionalVersionWeights :: [LambdaAliasVersionWeight]
+  } deriving (Show, Eq)
+
+instance ToJSON LambdaAliasAliasRoutingConfiguration where
+  toJSON LambdaAliasAliasRoutingConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("AdditionalVersionWeights",) . toJSON) _lambdaAliasAliasRoutingConfigurationAdditionalVersionWeights
+    ]
+
+instance FromJSON LambdaAliasAliasRoutingConfiguration where
+  parseJSON (Object obj) =
+    LambdaAliasAliasRoutingConfiguration <$>
+      (obj .: "AdditionalVersionWeights")
+  parseJSON _ = mempty
+
+-- | Constructor for 'LambdaAliasAliasRoutingConfiguration' containing
+-- required fields as arguments.
+lambdaAliasAliasRoutingConfiguration
+  :: [LambdaAliasVersionWeight] -- ^ 'laarcAdditionalVersionWeights'
+  -> LambdaAliasAliasRoutingConfiguration
+lambdaAliasAliasRoutingConfiguration additionalVersionWeightsarg =
+  LambdaAliasAliasRoutingConfiguration
+  { _lambdaAliasAliasRoutingConfigurationAdditionalVersionWeights = additionalVersionWeightsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-aliasroutingconfiguration.html#cfn-lambda-alias-aliasroutingconfiguration-additionalversionweights
+laarcAdditionalVersionWeights :: Lens' LambdaAliasAliasRoutingConfiguration [LambdaAliasVersionWeight]
+laarcAdditionalVersionWeights = lens _lambdaAliasAliasRoutingConfigurationAdditionalVersionWeights (\s a -> s { _lambdaAliasAliasRoutingConfigurationAdditionalVersionWeights = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/LambdaAliasVersionWeight.hs b/library-gen/Stratosphere/ResourceProperties/LambdaAliasVersionWeight.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/LambdaAliasVersionWeight.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-versionweight.html
+
+module Stratosphere.ResourceProperties.LambdaAliasVersionWeight 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 LambdaAliasVersionWeight. See
+-- 'lambdaAliasVersionWeight' for a more convenient constructor.
+data LambdaAliasVersionWeight =
+  LambdaAliasVersionWeight
+  { _lambdaAliasVersionWeightFunctionVersion :: Val Text
+  , _lambdaAliasVersionWeightFunctionWeight :: Val Double
+  } deriving (Show, Eq)
+
+instance ToJSON LambdaAliasVersionWeight where
+  toJSON LambdaAliasVersionWeight{..} =
+    object $
+    catMaybes
+    [ (Just . ("FunctionVersion",) . toJSON) _lambdaAliasVersionWeightFunctionVersion
+    , (Just . ("FunctionWeight",) . toJSON . fmap Double') _lambdaAliasVersionWeightFunctionWeight
+    ]
+
+instance FromJSON LambdaAliasVersionWeight where
+  parseJSON (Object obj) =
+    LambdaAliasVersionWeight <$>
+      (obj .: "FunctionVersion") <*>
+      fmap (fmap unDouble') (obj .: "FunctionWeight")
+  parseJSON _ = mempty
+
+-- | Constructor for 'LambdaAliasVersionWeight' containing required fields as
+-- arguments.
+lambdaAliasVersionWeight
+  :: Val Text -- ^ 'lavwFunctionVersion'
+  -> Val Double -- ^ 'lavwFunctionWeight'
+  -> LambdaAliasVersionWeight
+lambdaAliasVersionWeight functionVersionarg functionWeightarg =
+  LambdaAliasVersionWeight
+  { _lambdaAliasVersionWeightFunctionVersion = functionVersionarg
+  , _lambdaAliasVersionWeightFunctionWeight = functionWeightarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-versionweight.html#cfn-lambda-alias-versionweight-functionversion
+lavwFunctionVersion :: Lens' LambdaAliasVersionWeight (Val Text)
+lavwFunctionVersion = lens _lambdaAliasVersionWeightFunctionVersion (\s a -> s { _lambdaAliasVersionWeightFunctionVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-versionweight.html#cfn-lambda-alias-versionweight-functionweight
+lavwFunctionWeight :: Lens' LambdaAliasVersionWeight (Val Double)
+lavwFunctionWeight = lens _lambdaAliasVersionWeightFunctionWeight (\s a -> s { _lambdaAliasVersionWeightFunctionWeight = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
--- a/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/RDSOptionGroupOptionConfiguration.hs
@@ -22,6 +22,7 @@
   { _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships :: Maybe (ValList Text)
   , _rDSOptionGroupOptionConfigurationOptionName :: Val Text
   , _rDSOptionGroupOptionConfigurationOptionSettings :: Maybe RDSOptionGroupOptionSetting
+  , _rDSOptionGroupOptionConfigurationOptionVersion :: Maybe (Val Text)
   , _rDSOptionGroupOptionConfigurationPort :: Maybe (Val Integer)
   , _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships :: Maybe (ValList Text)
   } deriving (Show, Eq)
@@ -33,6 +34,7 @@
     [ fmap (("DBSecurityGroupMemberships",) . toJSON) _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships
     , (Just . ("OptionName",) . toJSON) _rDSOptionGroupOptionConfigurationOptionName
     , fmap (("OptionSettings",) . toJSON) _rDSOptionGroupOptionConfigurationOptionSettings
+    , fmap (("OptionVersion",) . toJSON) _rDSOptionGroupOptionConfigurationOptionVersion
     , fmap (("Port",) . toJSON . fmap Integer') _rDSOptionGroupOptionConfigurationPort
     , fmap (("VpcSecurityGroupMemberships",) . toJSON) _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships
     ]
@@ -43,6 +45,7 @@
       (obj .:? "DBSecurityGroupMemberships") <*>
       (obj .: "OptionName") <*>
       (obj .:? "OptionSettings") <*>
+      (obj .:? "OptionVersion") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "Port") <*>
       (obj .:? "VpcSecurityGroupMemberships")
   parseJSON _ = mempty
@@ -57,6 +60,7 @@
   { _rDSOptionGroupOptionConfigurationDBSecurityGroupMemberships = Nothing
   , _rDSOptionGroupOptionConfigurationOptionName = optionNamearg
   , _rDSOptionGroupOptionConfigurationOptionSettings = Nothing
+  , _rDSOptionGroupOptionConfigurationOptionVersion = Nothing
   , _rDSOptionGroupOptionConfigurationPort = Nothing
   , _rDSOptionGroupOptionConfigurationVpcSecurityGroupMemberships = Nothing
   }
@@ -72,6 +76,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-optionsettings
 rdsogocOptionSettings :: Lens' RDSOptionGroupOptionConfiguration (Maybe RDSOptionGroupOptionSetting)
 rdsogocOptionSettings = lens _rDSOptionGroupOptionConfigurationOptionSettings (\s a -> s { _rDSOptionGroupOptionConfigurationOptionSettings = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfiguration-optionversion
+rdsogocOptionVersion :: Lens' RDSOptionGroupOptionConfiguration (Maybe (Val Text))
+rdsogocOptionVersion = lens _rDSOptionGroupOptionConfigurationOptionVersion (\s a -> s { _rDSOptionGroupOptionConfigurationOptionVersion = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-optiongroup-optionconfigurations.html#cfn-rds-optiongroup-optionconfigurations-port
 rdsogocPort :: Lens' RDSOptionGroupOptionConfiguration (Maybe (Val Integer))
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskLoggingInfo.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskLoggingInfo.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskLoggingInfo.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-logginginfo.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskLoggingInfo 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 SSMMaintenanceWindowTaskLoggingInfo. See
+-- 'ssmMaintenanceWindowTaskLoggingInfo' for a more convenient constructor.
+data SSMMaintenanceWindowTaskLoggingInfo =
+  SSMMaintenanceWindowTaskLoggingInfo
+  { _sSMMaintenanceWindowTaskLoggingInfoRegion :: Val Text
+  , _sSMMaintenanceWindowTaskLoggingInfoS3Bucket :: Val Text
+  , _sSMMaintenanceWindowTaskLoggingInfoS3Prefix :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskLoggingInfo where
+  toJSON SSMMaintenanceWindowTaskLoggingInfo{..} =
+    object $
+    catMaybes
+    [ (Just . ("Region",) . toJSON) _sSMMaintenanceWindowTaskLoggingInfoRegion
+    , (Just . ("S3Bucket",) . toJSON) _sSMMaintenanceWindowTaskLoggingInfoS3Bucket
+    , fmap (("S3Prefix",) . toJSON) _sSMMaintenanceWindowTaskLoggingInfoS3Prefix
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskLoggingInfo where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskLoggingInfo <$>
+      (obj .: "Region") <*>
+      (obj .: "S3Bucket") <*>
+      (obj .:? "S3Prefix")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMMaintenanceWindowTaskLoggingInfo' containing required
+-- fields as arguments.
+ssmMaintenanceWindowTaskLoggingInfo
+  :: Val Text -- ^ 'ssmmwtliRegion'
+  -> Val Text -- ^ 'ssmmwtliS3Bucket'
+  -> SSMMaintenanceWindowTaskLoggingInfo
+ssmMaintenanceWindowTaskLoggingInfo regionarg s3Bucketarg =
+  SSMMaintenanceWindowTaskLoggingInfo
+  { _sSMMaintenanceWindowTaskLoggingInfoRegion = regionarg
+  , _sSMMaintenanceWindowTaskLoggingInfoS3Bucket = s3Bucketarg
+  , _sSMMaintenanceWindowTaskLoggingInfoS3Prefix = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-logginginfo.html#cfn-ssm-maintenancewindowtask-logginginfo-region
+ssmmwtliRegion :: Lens' SSMMaintenanceWindowTaskLoggingInfo (Val Text)
+ssmmwtliRegion = lens _sSMMaintenanceWindowTaskLoggingInfoRegion (\s a -> s { _sSMMaintenanceWindowTaskLoggingInfoRegion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-logginginfo.html#cfn-ssm-maintenancewindowtask-logginginfo-s3bucket
+ssmmwtliS3Bucket :: Lens' SSMMaintenanceWindowTaskLoggingInfo (Val Text)
+ssmmwtliS3Bucket = lens _sSMMaintenanceWindowTaskLoggingInfoS3Bucket (\s a -> s { _sSMMaintenanceWindowTaskLoggingInfoS3Bucket = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-logginginfo.html#cfn-ssm-maintenancewindowtask-logginginfo-s3prefix
+ssmmwtliS3Prefix :: Lens' SSMMaintenanceWindowTaskLoggingInfo (Maybe (Val Text))
+ssmmwtliS3Prefix = lens _sSMMaintenanceWindowTaskLoggingInfoS3Prefix (\s a -> s { _sSMMaintenanceWindowTaskLoggingInfoS3Prefix = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowautomationparameters.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters 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
+-- SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters. See
+-- 'ssmMaintenanceWindowTaskMaintenanceWindowAutomationParameters' for a
+-- more convenient constructor.
+data SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters =
+  SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersDocumentVersion :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersParameters :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters where
+  toJSON SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("DocumentVersion",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersDocumentVersion
+    , fmap (("Parameters",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersParameters
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters <$>
+      (obj .:? "DocumentVersion") <*>
+      (obj .:? "Parameters")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters'
+-- containing required fields as arguments.
+ssmMaintenanceWindowTaskMaintenanceWindowAutomationParameters
+  :: SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters
+ssmMaintenanceWindowTaskMaintenanceWindowAutomationParameters  =
+  SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersDocumentVersion = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersParameters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowautomationparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowautomationparameters-documentversion
+ssmmwtmwapDocumentVersion :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters (Maybe (Val Text))
+ssmmwtmwapDocumentVersion = lens _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersDocumentVersion (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersDocumentVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowautomationparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowautomationparameters-parameters
+ssmmwtmwapParameters :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters (Maybe Object)
+ssmmwtmwapParameters = lens _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersParameters (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowAutomationParametersParameters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowlambdaparameters.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters 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
+-- SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters. See
+-- 'ssmMaintenanceWindowTaskMaintenanceWindowLambdaParameters' for a more
+-- convenient constructor.
+data SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters =
+  SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersClientContext :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersPayload :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersQualifier :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters where
+  toJSON SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("ClientContext",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersClientContext
+    , fmap (("Payload",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersPayload
+    , fmap (("Qualifier",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersQualifier
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters <$>
+      (obj .:? "ClientContext") <*>
+      (obj .:? "Payload") <*>
+      (obj .:? "Qualifier")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters' containing
+-- required fields as arguments.
+ssmMaintenanceWindowTaskMaintenanceWindowLambdaParameters
+  :: SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters
+ssmMaintenanceWindowTaskMaintenanceWindowLambdaParameters  =
+  SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersClientContext = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersPayload = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersQualifier = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowlambdaparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowlambdaparameters-clientcontext
+ssmmwtmwlpClientContext :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters (Maybe (Val Text))
+ssmmwtmwlpClientContext = lens _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersClientContext (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersClientContext = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowlambdaparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowlambdaparameters-payload
+ssmmwtmwlpPayload :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters (Maybe (Val Text))
+ssmmwtmwlpPayload = lens _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersPayload (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersPayload = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowlambdaparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowlambdaparameters-qualifier
+ssmmwtmwlpQualifier :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters (Maybe (Val Text))
+ssmmwtmwlpQualifier = lens _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersQualifier (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowLambdaParametersQualifier = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters 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.SSMMaintenanceWindowTaskNotificationConfig
+
+-- | Full data type definition for
+-- SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters. See
+-- 'ssmMaintenanceWindowTaskMaintenanceWindowRunCommandParameters' for a
+-- more convenient constructor.
+data SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters =
+  SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersComment :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHash :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHashType :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersNotificationConfig :: Maybe SSMMaintenanceWindowTaskNotificationConfig
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3BucketName :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3KeyPrefix :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersParameters :: Maybe Object
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersServiceRoleArn :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersTimeoutSeconds :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters where
+  toJSON SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("Comment",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersComment
+    , fmap (("DocumentHash",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHash
+    , fmap (("DocumentHashType",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHashType
+    , fmap (("NotificationConfig",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersNotificationConfig
+    , fmap (("OutputS3BucketName",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3BucketName
+    , fmap (("OutputS3KeyPrefix",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3KeyPrefix
+    , fmap (("Parameters",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersParameters
+    , fmap (("ServiceRoleArn",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersServiceRoleArn
+    , fmap (("TimeoutSeconds",) . toJSON . fmap Integer') _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersTimeoutSeconds
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters <$>
+      (obj .:? "Comment") <*>
+      (obj .:? "DocumentHash") <*>
+      (obj .:? "DocumentHashType") <*>
+      (obj .:? "NotificationConfig") <*>
+      (obj .:? "OutputS3BucketName") <*>
+      (obj .:? "OutputS3KeyPrefix") <*>
+      (obj .:? "Parameters") <*>
+      (obj .:? "ServiceRoleArn") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "TimeoutSeconds")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters'
+-- containing required fields as arguments.
+ssmMaintenanceWindowTaskMaintenanceWindowRunCommandParameters
+  :: SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters
+ssmMaintenanceWindowTaskMaintenanceWindowRunCommandParameters  =
+  SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersComment = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHash = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHashType = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersNotificationConfig = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3BucketName = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3KeyPrefix = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersParameters = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersServiceRoleArn = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersTimeoutSeconds = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-comment
+ssmmwtmwrcpComment :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe (Val Text))
+ssmmwtmwrcpComment = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersComment (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersComment = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-documenthash
+ssmmwtmwrcpDocumentHash :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe (Val Text))
+ssmmwtmwrcpDocumentHash = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHash (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHash = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-documenthashtype
+ssmmwtmwrcpDocumentHashType :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe (Val Text))
+ssmmwtmwrcpDocumentHashType = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHashType (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersDocumentHashType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-notificationconfig
+ssmmwtmwrcpNotificationConfig :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe SSMMaintenanceWindowTaskNotificationConfig)
+ssmmwtmwrcpNotificationConfig = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersNotificationConfig (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersNotificationConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-outputs3bucketname
+ssmmwtmwrcpOutputS3BucketName :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe (Val Text))
+ssmmwtmwrcpOutputS3BucketName = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3BucketName (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3BucketName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-outputs3keyprefix
+ssmmwtmwrcpOutputS3KeyPrefix :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe (Val Text))
+ssmmwtmwrcpOutputS3KeyPrefix = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3KeyPrefix (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersOutputS3KeyPrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-parameters
+ssmmwtmwrcpParameters :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe Object)
+ssmmwtmwrcpParameters = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersParameters (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-servicerolearn
+ssmmwtmwrcpServiceRoleArn :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe (Val Text))
+ssmmwtmwrcpServiceRoleArn = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersServiceRoleArn (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersServiceRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowruncommandparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowruncommandparameters-timeoutseconds
+ssmmwtmwrcpTimeoutSeconds :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters (Maybe (Val Integer))
+ssmmwtmwrcpTimeoutSeconds = lens _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersTimeoutSeconds (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowRunCommandParametersTimeoutSeconds = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowstepfunctionsparameters.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters 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
+-- SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters. See
+-- 'ssmMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters' for a
+-- more convenient constructor.
+data SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters =
+  SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersInput :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters where
+  toJSON SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("Input",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersInput
+    , fmap (("Name",) . toJSON) _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersName
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters <$>
+      (obj .:? "Input") <*>
+      (obj .:? "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters'
+-- containing required fields as arguments.
+ssmMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters
+  :: SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters
+ssmMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters  =
+  SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters
+  { _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersInput = Nothing
+  , _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowstepfunctionsparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowstepfunctionsparameters-input
+ssmmwtmwsfpInput :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters (Maybe (Val Text))
+ssmmwtmwsfpInput = lens _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersInput (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersInput = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-maintenancewindowstepfunctionsparameters.html#cfn-ssm-maintenancewindowtask-maintenancewindowstepfunctionsparameters-name
+ssmmwtmwsfpName :: Lens' SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters (Maybe (Val Text))
+ssmmwtmwsfpName = lens _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersName (\s a -> s { _sSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParametersName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskNotificationConfig.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskNotificationConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskNotificationConfig.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-notificationconfig.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskNotificationConfig 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 SSMMaintenanceWindowTaskNotificationConfig.
+-- See 'ssmMaintenanceWindowTaskNotificationConfig' for a more convenient
+-- constructor.
+data SSMMaintenanceWindowTaskNotificationConfig =
+  SSMMaintenanceWindowTaskNotificationConfig
+  { _sSMMaintenanceWindowTaskNotificationConfigNotificationArn :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskNotificationConfigNotificationEvents :: Maybe (ValList Text)
+  , _sSMMaintenanceWindowTaskNotificationConfigNotificationType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskNotificationConfig where
+  toJSON SSMMaintenanceWindowTaskNotificationConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("NotificationArn",) . toJSON) _sSMMaintenanceWindowTaskNotificationConfigNotificationArn
+    , fmap (("NotificationEvents",) . toJSON) _sSMMaintenanceWindowTaskNotificationConfigNotificationEvents
+    , fmap (("NotificationType",) . toJSON) _sSMMaintenanceWindowTaskNotificationConfigNotificationType
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskNotificationConfig where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskNotificationConfig <$>
+      (obj .:? "NotificationArn") <*>
+      (obj .:? "NotificationEvents") <*>
+      (obj .:? "NotificationType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMMaintenanceWindowTaskNotificationConfig' containing
+-- required fields as arguments.
+ssmMaintenanceWindowTaskNotificationConfig
+  :: SSMMaintenanceWindowTaskNotificationConfig
+ssmMaintenanceWindowTaskNotificationConfig  =
+  SSMMaintenanceWindowTaskNotificationConfig
+  { _sSMMaintenanceWindowTaskNotificationConfigNotificationArn = Nothing
+  , _sSMMaintenanceWindowTaskNotificationConfigNotificationEvents = Nothing
+  , _sSMMaintenanceWindowTaskNotificationConfigNotificationType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-notificationconfig.html#cfn-ssm-maintenancewindowtask-notificationconfig-notificationarn
+ssmmwtncNotificationArn :: Lens' SSMMaintenanceWindowTaskNotificationConfig (Maybe (Val Text))
+ssmmwtncNotificationArn = lens _sSMMaintenanceWindowTaskNotificationConfigNotificationArn (\s a -> s { _sSMMaintenanceWindowTaskNotificationConfigNotificationArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-notificationconfig.html#cfn-ssm-maintenancewindowtask-notificationconfig-notificationevents
+ssmmwtncNotificationEvents :: Lens' SSMMaintenanceWindowTaskNotificationConfig (Maybe (ValList Text))
+ssmmwtncNotificationEvents = lens _sSMMaintenanceWindowTaskNotificationConfigNotificationEvents (\s a -> s { _sSMMaintenanceWindowTaskNotificationConfigNotificationEvents = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-notificationconfig.html#cfn-ssm-maintenancewindowtask-notificationconfig-notificationtype
+ssmmwtncNotificationType :: Lens' SSMMaintenanceWindowTaskNotificationConfig (Maybe (Val Text))
+ssmmwtncNotificationType = lens _sSMMaintenanceWindowTaskNotificationConfigNotificationType (\s a -> s { _sSMMaintenanceWindowTaskNotificationConfigNotificationType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTarget.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTarget.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTarget.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-target.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTarget 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 SSMMaintenanceWindowTaskTarget. See
+-- 'ssmMaintenanceWindowTaskTarget' for a more convenient constructor.
+data SSMMaintenanceWindowTaskTarget =
+  SSMMaintenanceWindowTaskTarget
+  { _sSMMaintenanceWindowTaskTargetKey :: Val Text
+  , _sSMMaintenanceWindowTaskTargetValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskTarget where
+  toJSON SSMMaintenanceWindowTaskTarget{..} =
+    object $
+    catMaybes
+    [ (Just . ("Key",) . toJSON) _sSMMaintenanceWindowTaskTargetKey
+    , fmap (("Values",) . toJSON) _sSMMaintenanceWindowTaskTargetValues
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskTarget where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskTarget <$>
+      (obj .: "Key") <*>
+      (obj .:? "Values")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMMaintenanceWindowTaskTarget' containing required
+-- fields as arguments.
+ssmMaintenanceWindowTaskTarget
+  :: Val Text -- ^ 'ssmmwttKey'
+  -> SSMMaintenanceWindowTaskTarget
+ssmMaintenanceWindowTaskTarget keyarg =
+  SSMMaintenanceWindowTaskTarget
+  { _sSMMaintenanceWindowTaskTargetKey = keyarg
+  , _sSMMaintenanceWindowTaskTargetValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-target.html#cfn-ssm-maintenancewindowtask-target-key
+ssmmwttKey :: Lens' SSMMaintenanceWindowTaskTarget (Val Text)
+ssmmwttKey = lens _sSMMaintenanceWindowTaskTargetKey (\s a -> s { _sSMMaintenanceWindowTaskTargetKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-target.html#cfn-ssm-maintenancewindowtask-target-values
+ssmmwttValues :: Lens' SSMMaintenanceWindowTaskTarget (Maybe (ValList Text))
+ssmmwttValues = lens _sSMMaintenanceWindowTaskTargetValues (\s a -> s { _sSMMaintenanceWindowTaskTargetValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTaskInvocationParameters.hs b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTaskInvocationParameters.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMMaintenanceWindowTaskTaskInvocationParameters.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-taskinvocationparameters.html
+
+module Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTaskInvocationParameters 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.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters
+
+-- | Full data type definition for
+-- SSMMaintenanceWindowTaskTaskInvocationParameters. See
+-- 'ssmMaintenanceWindowTaskTaskInvocationParameters' for a more convenient
+-- constructor.
+data SSMMaintenanceWindowTaskTaskInvocationParameters =
+  SSMMaintenanceWindowTaskTaskInvocationParameters
+  { _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowAutomationParameters :: Maybe SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters
+  , _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowLambdaParameters :: Maybe SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters
+  , _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowRunCommandParameters :: Maybe SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters
+  , _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowStepFunctionsParameters :: Maybe SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTaskTaskInvocationParameters where
+  toJSON SSMMaintenanceWindowTaskTaskInvocationParameters{..} =
+    object $
+    catMaybes
+    [ fmap (("MaintenanceWindowAutomationParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowAutomationParameters
+    , fmap (("MaintenanceWindowLambdaParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowLambdaParameters
+    , fmap (("MaintenanceWindowRunCommandParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowRunCommandParameters
+    , fmap (("MaintenanceWindowStepFunctionsParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowStepFunctionsParameters
+    ]
+
+instance FromJSON SSMMaintenanceWindowTaskTaskInvocationParameters where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTaskTaskInvocationParameters <$>
+      (obj .:? "MaintenanceWindowAutomationParameters") <*>
+      (obj .:? "MaintenanceWindowLambdaParameters") <*>
+      (obj .:? "MaintenanceWindowRunCommandParameters") <*>
+      (obj .:? "MaintenanceWindowStepFunctionsParameters")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMMaintenanceWindowTaskTaskInvocationParameters'
+-- containing required fields as arguments.
+ssmMaintenanceWindowTaskTaskInvocationParameters
+  :: SSMMaintenanceWindowTaskTaskInvocationParameters
+ssmMaintenanceWindowTaskTaskInvocationParameters  =
+  SSMMaintenanceWindowTaskTaskInvocationParameters
+  { _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowAutomationParameters = Nothing
+  , _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowLambdaParameters = Nothing
+  , _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowRunCommandParameters = Nothing
+  , _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowStepFunctionsParameters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-taskinvocationparameters.html#cfn-ssm-maintenancewindowtask-taskinvocationparameters-maintenancewindowautomationparameters
+ssmmwttipMaintenanceWindowAutomationParameters :: Lens' SSMMaintenanceWindowTaskTaskInvocationParameters (Maybe SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters)
+ssmmwttipMaintenanceWindowAutomationParameters = lens _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowAutomationParameters (\s a -> s { _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowAutomationParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-taskinvocationparameters.html#cfn-ssm-maintenancewindowtask-taskinvocationparameters-maintenancewindowlambdaparameters
+ssmmwttipMaintenanceWindowLambdaParameters :: Lens' SSMMaintenanceWindowTaskTaskInvocationParameters (Maybe SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters)
+ssmmwttipMaintenanceWindowLambdaParameters = lens _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowLambdaParameters (\s a -> s { _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowLambdaParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-taskinvocationparameters.html#cfn-ssm-maintenancewindowtask-taskinvocationparameters-maintenancewindowruncommandparameters
+ssmmwttipMaintenanceWindowRunCommandParameters :: Lens' SSMMaintenanceWindowTaskTaskInvocationParameters (Maybe SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters)
+ssmmwttipMaintenanceWindowRunCommandParameters = lens _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowRunCommandParameters (\s a -> s { _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowRunCommandParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-maintenancewindowtask-taskinvocationparameters.html#cfn-ssm-maintenancewindowtask-taskinvocationparameters-maintenancewindowstepfunctionsparameters
+ssmmwttipMaintenanceWindowStepFunctionsParameters :: Lens' SSMMaintenanceWindowTaskTaskInvocationParameters (Maybe SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters)
+ssmmwttipMaintenanceWindowStepFunctionsParameters = lens _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowStepFunctionsParameters (\s a -> s { _sSMMaintenanceWindowTaskTaskInvocationParametersMaintenanceWindowStepFunctionsParameters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilter.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilter.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilter.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfilter.html
+
+module Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilter 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 SSMPatchBaselinePatchFilter. See
+-- 'ssmPatchBaselinePatchFilter' for a more convenient constructor.
+data SSMPatchBaselinePatchFilter =
+  SSMPatchBaselinePatchFilter
+  { _sSMPatchBaselinePatchFilterKey :: Maybe (Val Text)
+  , _sSMPatchBaselinePatchFilterValues :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMPatchBaselinePatchFilter where
+  toJSON SSMPatchBaselinePatchFilter{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _sSMPatchBaselinePatchFilterKey
+    , fmap (("Values",) . toJSON) _sSMPatchBaselinePatchFilterValues
+    ]
+
+instance FromJSON SSMPatchBaselinePatchFilter where
+  parseJSON (Object obj) =
+    SSMPatchBaselinePatchFilter <$>
+      (obj .:? "Key") <*>
+      (obj .:? "Values")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMPatchBaselinePatchFilter' containing required fields
+-- as arguments.
+ssmPatchBaselinePatchFilter
+  :: SSMPatchBaselinePatchFilter
+ssmPatchBaselinePatchFilter  =
+  SSMPatchBaselinePatchFilter
+  { _sSMPatchBaselinePatchFilterKey = Nothing
+  , _sSMPatchBaselinePatchFilterValues = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfilter.html#cfn-ssm-patchbaseline-patchfilter-key
+ssmpbpfKey :: Lens' SSMPatchBaselinePatchFilter (Maybe (Val Text))
+ssmpbpfKey = lens _sSMPatchBaselinePatchFilterKey (\s a -> s { _sSMPatchBaselinePatchFilterKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfilter.html#cfn-ssm-patchbaseline-patchfilter-values
+ssmpbpfValues :: Lens' SSMPatchBaselinePatchFilter (Maybe (ValList Text))
+ssmpbpfValues = lens _sSMPatchBaselinePatchFilterValues (\s a -> s { _sSMPatchBaselinePatchFilterValues = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilterGroup.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilterGroup.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselinePatchFilterGroup.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfiltergroup.html
+
+module Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilterGroup 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.SSMPatchBaselinePatchFilter
+
+-- | Full data type definition for SSMPatchBaselinePatchFilterGroup. See
+-- 'ssmPatchBaselinePatchFilterGroup' for a more convenient constructor.
+data SSMPatchBaselinePatchFilterGroup =
+  SSMPatchBaselinePatchFilterGroup
+  { _sSMPatchBaselinePatchFilterGroupPatchFilters :: Maybe [SSMPatchBaselinePatchFilter]
+  } deriving (Show, Eq)
+
+instance ToJSON SSMPatchBaselinePatchFilterGroup where
+  toJSON SSMPatchBaselinePatchFilterGroup{..} =
+    object $
+    catMaybes
+    [ fmap (("PatchFilters",) . toJSON) _sSMPatchBaselinePatchFilterGroupPatchFilters
+    ]
+
+instance FromJSON SSMPatchBaselinePatchFilterGroup where
+  parseJSON (Object obj) =
+    SSMPatchBaselinePatchFilterGroup <$>
+      (obj .:? "PatchFilters")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMPatchBaselinePatchFilterGroup' containing required
+-- fields as arguments.
+ssmPatchBaselinePatchFilterGroup
+  :: SSMPatchBaselinePatchFilterGroup
+ssmPatchBaselinePatchFilterGroup  =
+  SSMPatchBaselinePatchFilterGroup
+  { _sSMPatchBaselinePatchFilterGroupPatchFilters = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-patchfiltergroup.html#cfn-ssm-patchbaseline-patchfiltergroup-patchfilters
+ssmpbpfgPatchFilters :: Lens' SSMPatchBaselinePatchFilterGroup (Maybe [SSMPatchBaselinePatchFilter])
+ssmpbpfgPatchFilters = lens _sSMPatchBaselinePatchFilterGroupPatchFilters (\s a -> s { _sSMPatchBaselinePatchFilterGroupPatchFilters = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRule.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRule.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rule.html
+
+module Stratosphere.ResourceProperties.SSMPatchBaselineRule 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.SSMPatchBaselinePatchFilterGroup
+
+-- | Full data type definition for SSMPatchBaselineRule. See
+-- 'ssmPatchBaselineRule' for a more convenient constructor.
+data SSMPatchBaselineRule =
+  SSMPatchBaselineRule
+  { _sSMPatchBaselineRuleApproveAfterDays :: Maybe (Val Integer)
+  , _sSMPatchBaselineRuleComplianceLevel :: Maybe (Val Text)
+  , _sSMPatchBaselineRulePatchFilterGroup :: Maybe SSMPatchBaselinePatchFilterGroup
+  } deriving (Show, Eq)
+
+instance ToJSON SSMPatchBaselineRule where
+  toJSON SSMPatchBaselineRule{..} =
+    object $
+    catMaybes
+    [ fmap (("ApproveAfterDays",) . toJSON . fmap Integer') _sSMPatchBaselineRuleApproveAfterDays
+    , fmap (("ComplianceLevel",) . toJSON) _sSMPatchBaselineRuleComplianceLevel
+    , fmap (("PatchFilterGroup",) . toJSON) _sSMPatchBaselineRulePatchFilterGroup
+    ]
+
+instance FromJSON SSMPatchBaselineRule where
+  parseJSON (Object obj) =
+    SSMPatchBaselineRule <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "ApproveAfterDays") <*>
+      (obj .:? "ComplianceLevel") <*>
+      (obj .:? "PatchFilterGroup")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMPatchBaselineRule' containing required fields as
+-- arguments.
+ssmPatchBaselineRule
+  :: SSMPatchBaselineRule
+ssmPatchBaselineRule  =
+  SSMPatchBaselineRule
+  { _sSMPatchBaselineRuleApproveAfterDays = Nothing
+  , _sSMPatchBaselineRuleComplianceLevel = Nothing
+  , _sSMPatchBaselineRulePatchFilterGroup = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rule.html#cfn-ssm-patchbaseline-rule-approveafterdays
+ssmpbrApproveAfterDays :: Lens' SSMPatchBaselineRule (Maybe (Val Integer))
+ssmpbrApproveAfterDays = lens _sSMPatchBaselineRuleApproveAfterDays (\s a -> s { _sSMPatchBaselineRuleApproveAfterDays = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rule.html#cfn-ssm-patchbaseline-rule-compliancelevel
+ssmpbrComplianceLevel :: Lens' SSMPatchBaselineRule (Maybe (Val Text))
+ssmpbrComplianceLevel = lens _sSMPatchBaselineRuleComplianceLevel (\s a -> s { _sSMPatchBaselineRuleComplianceLevel = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rule.html#cfn-ssm-patchbaseline-rule-patchfiltergroup
+ssmpbrPatchFilterGroup :: Lens' SSMPatchBaselineRule (Maybe SSMPatchBaselinePatchFilterGroup)
+ssmpbrPatchFilterGroup = lens _sSMPatchBaselineRulePatchFilterGroup (\s a -> s { _sSMPatchBaselineRulePatchFilterGroup = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRuleGroup.hs b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRuleGroup.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/SSMPatchBaselineRuleGroup.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rulegroup.html
+
+module Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup 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.SSMPatchBaselineRule
+
+-- | Full data type definition for SSMPatchBaselineRuleGroup. See
+-- 'ssmPatchBaselineRuleGroup' for a more convenient constructor.
+data SSMPatchBaselineRuleGroup =
+  SSMPatchBaselineRuleGroup
+  { _sSMPatchBaselineRuleGroupPatchRules :: Maybe [SSMPatchBaselineRule]
+  } deriving (Show, Eq)
+
+instance ToJSON SSMPatchBaselineRuleGroup where
+  toJSON SSMPatchBaselineRuleGroup{..} =
+    object $
+    catMaybes
+    [ fmap (("PatchRules",) . toJSON) _sSMPatchBaselineRuleGroupPatchRules
+    ]
+
+instance FromJSON SSMPatchBaselineRuleGroup where
+  parseJSON (Object obj) =
+    SSMPatchBaselineRuleGroup <$>
+      (obj .:? "PatchRules")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMPatchBaselineRuleGroup' containing required fields as
+-- arguments.
+ssmPatchBaselineRuleGroup
+  :: SSMPatchBaselineRuleGroup
+ssmPatchBaselineRuleGroup  =
+  SSMPatchBaselineRuleGroup
+  { _sSMPatchBaselineRuleGroupPatchRules = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ssm-patchbaseline-rulegroup.html#cfn-ssm-patchbaseline-rulegroup-patchrules
+ssmpbrgPatchRules :: Lens' SSMPatchBaselineRuleGroup (Maybe [SSMPatchBaselineRule])
+ssmpbrgPatchRules = lens _sSMPatchBaselineRuleGroupPatchRules (\s a -> s { _sSMPatchBaselineRuleGroupPatchRules = 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
@@ -65,6 +65,7 @@
 import Stratosphere.Resources.ApiGatewayUsagePlanKey as X
 import Stratosphere.Resources.ApplicationAutoScalingScalableTarget as X
 import Stratosphere.Resources.ApplicationAutoScalingScalingPolicy as X
+import Stratosphere.Resources.AthenaNamedQuery as X
 import Stratosphere.Resources.AutoScalingAutoScalingGroup as X
 import Stratosphere.Resources.AutoScalingLaunchConfiguration as X
 import Stratosphere.Resources.AutoScalingLifecycleHook as X
@@ -78,7 +79,9 @@
 import Stratosphere.Resources.CloudFormationStack as X
 import Stratosphere.Resources.CloudFormationWaitCondition as X
 import Stratosphere.Resources.CloudFormationWaitConditionHandle as X
+import Stratosphere.Resources.CloudFrontCloudFrontOriginAccessIdentity as X
 import Stratosphere.Resources.CloudFrontDistribution as X
+import Stratosphere.Resources.CloudFrontStreamingDistribution as X
 import Stratosphere.Resources.CloudTrailTrail as X
 import Stratosphere.Resources.CloudWatchAlarm as X
 import Stratosphere.Resources.CloudWatchDashboard as X
@@ -182,6 +185,15 @@
 import Stratosphere.Resources.GameLiftAlias as X
 import Stratosphere.Resources.GameLiftBuild as X
 import Stratosphere.Resources.GameLiftFleet as X
+import Stratosphere.Resources.GlueClassifier as X
+import Stratosphere.Resources.GlueConnection as X
+import Stratosphere.Resources.GlueCrawler as X
+import Stratosphere.Resources.GlueDatabase as X
+import Stratosphere.Resources.GlueDevEndpoint as X
+import Stratosphere.Resources.GlueJob as X
+import Stratosphere.Resources.GluePartition as X
+import Stratosphere.Resources.GlueTable as X
+import Stratosphere.Resources.GlueTrigger as X
 import Stratosphere.Resources.IAMAccessKey as X
 import Stratosphere.Resources.IAMGroup as X
 import Stratosphere.Resources.IAMInstanceProfile as X
@@ -248,7 +260,9 @@
 import Stratosphere.Resources.SQSQueuePolicy as X
 import Stratosphere.Resources.SSMAssociation as X
 import Stratosphere.Resources.SSMDocument as X
+import Stratosphere.Resources.SSMMaintenanceWindowTask as X
 import Stratosphere.Resources.SSMParameter as X
+import Stratosphere.Resources.SSMPatchBaseline as X
 import Stratosphere.Resources.StepFunctionsActivity as X
 import Stratosphere.Resources.StepFunctionsStateMachine as X
 import Stratosphere.Resources.WAFByteMatchSet as X
@@ -285,6 +299,7 @@
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepAdjustment as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty as X
@@ -305,6 +320,7 @@
 import Stratosphere.ResourceProperties.BatchJobDefinitionVolumesHost as X
 import Stratosphere.ResourceProperties.BatchJobQueueComputeEnvironmentOrder as X
 import Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption as X
+import Stratosphere.ResourceProperties.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionCookies as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionCustomErrorResponse as X
@@ -313,12 +329,19 @@
 import Stratosphere.ResourceProperties.CloudFrontDistributionDistributionConfig as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionForwardedValues as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionGeoRestriction as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionLambdaFunctionAssociation as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionLegacyCustomOrigin as X
+import Stratosphere.ResourceProperties.CloudFrontDistributionLegacyS3Origin as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionLogging as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionOrigin as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionOriginCustomHeader as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionS3OriginConfig as X
 import Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionLogging as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionS3Origin as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionStreamingDistributionConfig as X
+import Stratosphere.ResourceProperties.CloudFrontStreamingDistributionTrustedSigners as X
 import Stratosphere.ResourceProperties.CloudTrailTrailDataResource as X
 import Stratosphere.ResourceProperties.CloudTrailTrailEventSelector as X
 import Stratosphere.ResourceProperties.CloudWatchAlarmDimension as X
@@ -341,6 +364,7 @@
 import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupRevisionLocation as X
 import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupS3Location as X
 import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTagFilter as X
+import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTargetGroupInfo as X
 import Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTriggerConfig as X
 import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeArtifactDetails as X
 import Stratosphere.ResourceProperties.CodePipelineCustomActionTypeConfigurationProperties as X
@@ -399,6 +423,7 @@
 import Stratosphere.ResourceProperties.EC2InstanceAssociationParameter as X
 import Stratosphere.ResourceProperties.EC2InstanceBlockDeviceMapping as X
 import Stratosphere.ResourceProperties.EC2InstanceEbs as X
+import Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification as X
 import Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address as X
 import Stratosphere.ResourceProperties.EC2InstanceNetworkInterface as X
 import Stratosphere.ResourceProperties.EC2InstanceNoDevice as X
@@ -422,6 +447,7 @@
 import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetMonitoring as X
 import Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetRequestConfigData as X
 import Stratosphere.ResourceProperties.EC2SpotFleetSpotPlacement as X
+import Stratosphere.ResourceProperties.EC2VPNConnectionVpnTunnelOptionsSpecification as X
 import Stratosphere.ResourceProperties.ECSServiceDeploymentConfiguration as X
 import Stratosphere.ResourceProperties.ECSServiceLoadBalancer as X
 import Stratosphere.ResourceProperties.ECSServicePlacementConstraint as X
@@ -521,6 +547,33 @@
 import Stratosphere.ResourceProperties.GameLiftAliasRoutingStrategy as X
 import Stratosphere.ResourceProperties.GameLiftBuildS3Location as X
 import Stratosphere.ResourceProperties.GameLiftFleetIpPermission as X
+import Stratosphere.ResourceProperties.GlueClassifierGrokClassifier as X
+import Stratosphere.ResourceProperties.GlueConnectionConnectionInput as X
+import Stratosphere.ResourceProperties.GlueConnectionPhysicalConnectionRequirements as X
+import Stratosphere.ResourceProperties.GlueCrawlerJdbcTarget as X
+import Stratosphere.ResourceProperties.GlueCrawlerS3Target as X
+import Stratosphere.ResourceProperties.GlueCrawlerSchedule as X
+import Stratosphere.ResourceProperties.GlueCrawlerSchemaChangePolicy as X
+import Stratosphere.ResourceProperties.GlueCrawlerTargets as X
+import Stratosphere.ResourceProperties.GlueDatabaseDatabaseInput as X
+import Stratosphere.ResourceProperties.GlueJobConnectionsList as X
+import Stratosphere.ResourceProperties.GlueJobExecutionProperty as X
+import Stratosphere.ResourceProperties.GlueJobJobCommand as X
+import Stratosphere.ResourceProperties.GluePartitionColumn as X
+import Stratosphere.ResourceProperties.GluePartitionOrder as X
+import Stratosphere.ResourceProperties.GluePartitionPartitionInput as X
+import Stratosphere.ResourceProperties.GluePartitionSerdeInfo as X
+import Stratosphere.ResourceProperties.GluePartitionSkewedInfo as X
+import Stratosphere.ResourceProperties.GluePartitionStorageDescriptor as X
+import Stratosphere.ResourceProperties.GlueTableColumn as X
+import Stratosphere.ResourceProperties.GlueTableOrder as X
+import Stratosphere.ResourceProperties.GlueTableSerdeInfo as X
+import Stratosphere.ResourceProperties.GlueTableSkewedInfo as X
+import Stratosphere.ResourceProperties.GlueTableStorageDescriptor as X
+import Stratosphere.ResourceProperties.GlueTableTableInput as X
+import Stratosphere.ResourceProperties.GlueTriggerAction as X
+import Stratosphere.ResourceProperties.GlueTriggerCondition as X
+import Stratosphere.ResourceProperties.GlueTriggerPredicate as X
 import Stratosphere.ResourceProperties.IAMGroupPolicy as X
 import Stratosphere.ResourceProperties.IAMRolePolicy as X
 import Stratosphere.ResourceProperties.IAMUserLoginProfile as X
@@ -543,7 +596,9 @@
 import Stratosphere.ResourceProperties.IoTTopicRuleTopicRulePayload as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputLambdaProcessor as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism as X
+import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputProcessingConfiguration as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputSchema as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationJSONMappingParameters as X
 import Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisFirehoseInput as X
@@ -578,6 +633,8 @@
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration as X
 import Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration as X
+import Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration as X
+import Stratosphere.ResourceProperties.LambdaAliasVersionWeight as X
 import Stratosphere.ResourceProperties.LambdaFunctionCode as X
 import Stratosphere.ResourceProperties.LambdaFunctionDeadLetterConfig as X
 import Stratosphere.ResourceProperties.LambdaFunctionEnvironment as X
@@ -653,6 +710,18 @@
 import Stratosphere.ResourceProperties.SNSTopicSubscription as X
 import Stratosphere.ResourceProperties.SSMAssociationParameterValues as X
 import Stratosphere.ResourceProperties.SSMAssociationTarget as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskLoggingInfo as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskNotificationConfig as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTarget as X
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTaskInvocationParameters as X
+import Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilter as X
+import Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilterGroup as X
+import Stratosphere.ResourceProperties.SSMPatchBaselineRule as X
+import Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup as X
 import Stratosphere.ResourceProperties.WAFByteMatchSetByteMatchTuple as X
 import Stratosphere.ResourceProperties.WAFByteMatchSetFieldToMatch as X
 import Stratosphere.ResourceProperties.WAFIPSetIPSetDescriptor as X
@@ -709,6 +778,7 @@
   | ApiGatewayUsagePlanKeyProperties ApiGatewayUsagePlanKey
   | ApplicationAutoScalingScalableTargetProperties ApplicationAutoScalingScalableTarget
   | ApplicationAutoScalingScalingPolicyProperties ApplicationAutoScalingScalingPolicy
+  | AthenaNamedQueryProperties AthenaNamedQuery
   | AutoScalingAutoScalingGroupProperties AutoScalingAutoScalingGroup
   | AutoScalingLaunchConfigurationProperties AutoScalingLaunchConfiguration
   | AutoScalingLifecycleHookProperties AutoScalingLifecycleHook
@@ -722,7 +792,9 @@
   | CloudFormationStackProperties CloudFormationStack
   | CloudFormationWaitConditionProperties CloudFormationWaitCondition
   | CloudFormationWaitConditionHandleProperties CloudFormationWaitConditionHandle
+  | CloudFrontCloudFrontOriginAccessIdentityProperties CloudFrontCloudFrontOriginAccessIdentity
   | CloudFrontDistributionProperties CloudFrontDistribution
+  | CloudFrontStreamingDistributionProperties CloudFrontStreamingDistribution
   | CloudTrailTrailProperties CloudTrailTrail
   | CloudWatchAlarmProperties CloudWatchAlarm
   | CloudWatchDashboardProperties CloudWatchDashboard
@@ -826,6 +898,15 @@
   | GameLiftAliasProperties GameLiftAlias
   | GameLiftBuildProperties GameLiftBuild
   | GameLiftFleetProperties GameLiftFleet
+  | GlueClassifierProperties GlueClassifier
+  | GlueConnectionProperties GlueConnection
+  | GlueCrawlerProperties GlueCrawler
+  | GlueDatabaseProperties GlueDatabase
+  | GlueDevEndpointProperties GlueDevEndpoint
+  | GlueJobProperties GlueJob
+  | GluePartitionProperties GluePartition
+  | GlueTableProperties GlueTable
+  | GlueTriggerProperties GlueTrigger
   | IAMAccessKeyProperties IAMAccessKey
   | IAMGroupProperties IAMGroup
   | IAMInstanceProfileProperties IAMInstanceProfile
@@ -892,7 +973,9 @@
   | SQSQueuePolicyProperties SQSQueuePolicy
   | SSMAssociationProperties SSMAssociation
   | SSMDocumentProperties SSMDocument
+  | SSMMaintenanceWindowTaskProperties SSMMaintenanceWindowTask
   | SSMParameterProperties SSMParameter
+  | SSMPatchBaselineProperties SSMPatchBaseline
   | StepFunctionsActivityProperties StepFunctionsActivity
   | StepFunctionsStateMachineProperties StepFunctionsStateMachine
   | WAFByteMatchSetProperties WAFByteMatchSet
@@ -1003,6 +1086,8 @@
   [ "Type" .= ("AWS::ApplicationAutoScaling::ScalableTarget" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (ApplicationAutoScalingScalingPolicyProperties x) =
   [ "Type" .= ("AWS::ApplicationAutoScaling::ScalingPolicy" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (AthenaNamedQueryProperties x) =
+  [ "Type" .= ("AWS::Athena::NamedQuery" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (AutoScalingAutoScalingGroupProperties x) =
   [ "Type" .= ("AWS::AutoScaling::AutoScalingGroup" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (AutoScalingLaunchConfigurationProperties x) =
@@ -1029,8 +1114,12 @@
   [ "Type" .= ("AWS::CloudFormation::WaitCondition" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CloudFormationWaitConditionHandleProperties x) =
   [ "Type" .= ("AWS::CloudFormation::WaitConditionHandle" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (CloudFrontCloudFrontOriginAccessIdentityProperties x) =
+  [ "Type" .= ("AWS::CloudFront::CloudFrontOriginAccessIdentity" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CloudFrontDistributionProperties x) =
   [ "Type" .= ("AWS::CloudFront::Distribution" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (CloudFrontStreamingDistributionProperties x) =
+  [ "Type" .= ("AWS::CloudFront::StreamingDistribution" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CloudTrailTrailProperties x) =
   [ "Type" .= ("AWS::CloudTrail::Trail" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CloudWatchAlarmProperties x) =
@@ -1237,6 +1326,24 @@
   [ "Type" .= ("AWS::GameLift::Build" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (GameLiftFleetProperties x) =
   [ "Type" .= ("AWS::GameLift::Fleet" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueClassifierProperties x) =
+  [ "Type" .= ("AWS::Glue::Classifier" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueConnectionProperties x) =
+  [ "Type" .= ("AWS::Glue::Connection" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueCrawlerProperties x) =
+  [ "Type" .= ("AWS::Glue::Crawler" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueDatabaseProperties x) =
+  [ "Type" .= ("AWS::Glue::Database" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueDevEndpointProperties x) =
+  [ "Type" .= ("AWS::Glue::DevEndpoint" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueJobProperties x) =
+  [ "Type" .= ("AWS::Glue::Job" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GluePartitionProperties x) =
+  [ "Type" .= ("AWS::Glue::Partition" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueTableProperties x) =
+  [ "Type" .= ("AWS::Glue::Table" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (GlueTriggerProperties x) =
+  [ "Type" .= ("AWS::Glue::Trigger" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (IAMAccessKeyProperties x) =
   [ "Type" .= ("AWS::IAM::AccessKey" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (IAMGroupProperties x) =
@@ -1369,8 +1476,12 @@
   [ "Type" .= ("AWS::SSM::Association" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (SSMDocumentProperties x) =
   [ "Type" .= ("AWS::SSM::Document" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SSMMaintenanceWindowTaskProperties x) =
+  [ "Type" .= ("AWS::SSM::MaintenanceWindowTask" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (SSMParameterProperties x) =
   [ "Type" .= ("AWS::SSM::Parameter" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (SSMPatchBaselineProperties x) =
+  [ "Type" .= ("AWS::SSM::PatchBaseline" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (StepFunctionsActivityProperties x) =
   [ "Type" .= ("AWS::StepFunctions::Activity" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (StepFunctionsStateMachineProperties x) =
@@ -1433,6 +1544,7 @@
          "AWS::ApiGateway::UsagePlanKey" -> ApiGatewayUsagePlanKeyProperties <$> (o .: "Properties")
          "AWS::ApplicationAutoScaling::ScalableTarget" -> ApplicationAutoScalingScalableTargetProperties <$> (o .: "Properties")
          "AWS::ApplicationAutoScaling::ScalingPolicy" -> ApplicationAutoScalingScalingPolicyProperties <$> (o .: "Properties")
+         "AWS::Athena::NamedQuery" -> AthenaNamedQueryProperties <$> (o .: "Properties")
          "AWS::AutoScaling::AutoScalingGroup" -> AutoScalingAutoScalingGroupProperties <$> (o .: "Properties")
          "AWS::AutoScaling::LaunchConfiguration" -> AutoScalingLaunchConfigurationProperties <$> (o .: "Properties")
          "AWS::AutoScaling::LifecycleHook" -> AutoScalingLifecycleHookProperties <$> (o .: "Properties")
@@ -1446,7 +1558,9 @@
          "AWS::CloudFormation::Stack" -> CloudFormationStackProperties <$> (o .: "Properties")
          "AWS::CloudFormation::WaitCondition" -> CloudFormationWaitConditionProperties <$> (o .: "Properties")
          "AWS::CloudFormation::WaitConditionHandle" -> CloudFormationWaitConditionHandleProperties <$> (o .: "Properties")
+         "AWS::CloudFront::CloudFrontOriginAccessIdentity" -> CloudFrontCloudFrontOriginAccessIdentityProperties <$> (o .: "Properties")
          "AWS::CloudFront::Distribution" -> CloudFrontDistributionProperties <$> (o .: "Properties")
+         "AWS::CloudFront::StreamingDistribution" -> CloudFrontStreamingDistributionProperties <$> (o .: "Properties")
          "AWS::CloudTrail::Trail" -> CloudTrailTrailProperties <$> (o .: "Properties")
          "AWS::CloudWatch::Alarm" -> CloudWatchAlarmProperties <$> (o .: "Properties")
          "AWS::CloudWatch::Dashboard" -> CloudWatchDashboardProperties <$> (o .: "Properties")
@@ -1550,6 +1664,15 @@
          "AWS::GameLift::Alias" -> GameLiftAliasProperties <$> (o .: "Properties")
          "AWS::GameLift::Build" -> GameLiftBuildProperties <$> (o .: "Properties")
          "AWS::GameLift::Fleet" -> GameLiftFleetProperties <$> (o .: "Properties")
+         "AWS::Glue::Classifier" -> GlueClassifierProperties <$> (o .: "Properties")
+         "AWS::Glue::Connection" -> GlueConnectionProperties <$> (o .: "Properties")
+         "AWS::Glue::Crawler" -> GlueCrawlerProperties <$> (o .: "Properties")
+         "AWS::Glue::Database" -> GlueDatabaseProperties <$> (o .: "Properties")
+         "AWS::Glue::DevEndpoint" -> GlueDevEndpointProperties <$> (o .: "Properties")
+         "AWS::Glue::Job" -> GlueJobProperties <$> (o .: "Properties")
+         "AWS::Glue::Partition" -> GluePartitionProperties <$> (o .: "Properties")
+         "AWS::Glue::Table" -> GlueTableProperties <$> (o .: "Properties")
+         "AWS::Glue::Trigger" -> GlueTriggerProperties <$> (o .: "Properties")
          "AWS::IAM::AccessKey" -> IAMAccessKeyProperties <$> (o .: "Properties")
          "AWS::IAM::Group" -> IAMGroupProperties <$> (o .: "Properties")
          "AWS::IAM::InstanceProfile" -> IAMInstanceProfileProperties <$> (o .: "Properties")
@@ -1616,7 +1739,9 @@
          "AWS::SQS::QueuePolicy" -> SQSQueuePolicyProperties <$> (o .: "Properties")
          "AWS::SSM::Association" -> SSMAssociationProperties <$> (o .: "Properties")
          "AWS::SSM::Document" -> SSMDocumentProperties <$> (o .: "Properties")
+         "AWS::SSM::MaintenanceWindowTask" -> SSMMaintenanceWindowTaskProperties <$> (o .: "Properties")
          "AWS::SSM::Parameter" -> SSMParameterProperties <$> (o .: "Properties")
+         "AWS::SSM::PatchBaseline" -> SSMPatchBaselineProperties <$> (o .: "Properties")
          "AWS::StepFunctions::Activity" -> StepFunctionsActivityProperties <$> (o .: "Properties")
          "AWS::StepFunctions::StateMachine" -> StepFunctionsStateMachineProperties <$> (o .: "Properties")
          "AWS::WAF::ByteMatchSet" -> WAFByteMatchSetProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs b/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayAuthorizer.hs
@@ -19,7 +19,8 @@
 -- 'apiGatewayAuthorizer' for a more convenient constructor.
 data ApiGatewayAuthorizer =
   ApiGatewayAuthorizer
-  { _apiGatewayAuthorizerAuthorizerCredentials :: Maybe (Val Text)
+  { _apiGatewayAuthorizerAuthType :: Maybe (Val Text)
+  , _apiGatewayAuthorizerAuthorizerCredentials :: Maybe (Val Text)
   , _apiGatewayAuthorizerAuthorizerResultTtlInSeconds :: Maybe (Val Integer)
   , _apiGatewayAuthorizerAuthorizerUri :: Maybe (Val Text)
   , _apiGatewayAuthorizerIdentitySource :: Maybe (Val Text)
@@ -34,7 +35,8 @@
   toJSON ApiGatewayAuthorizer{..} =
     object $
     catMaybes
-    [ fmap (("AuthorizerCredentials",) . toJSON) _apiGatewayAuthorizerAuthorizerCredentials
+    [ fmap (("AuthType",) . toJSON) _apiGatewayAuthorizerAuthType
+    , fmap (("AuthorizerCredentials",) . toJSON) _apiGatewayAuthorizerAuthorizerCredentials
     , fmap (("AuthorizerResultTtlInSeconds",) . toJSON . fmap Integer') _apiGatewayAuthorizerAuthorizerResultTtlInSeconds
     , fmap (("AuthorizerUri",) . toJSON) _apiGatewayAuthorizerAuthorizerUri
     , fmap (("IdentitySource",) . toJSON) _apiGatewayAuthorizerIdentitySource
@@ -48,6 +50,7 @@
 instance FromJSON ApiGatewayAuthorizer where
   parseJSON (Object obj) =
     ApiGatewayAuthorizer <$>
+      (obj .:? "AuthType") <*>
       (obj .:? "AuthorizerCredentials") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "AuthorizerResultTtlInSeconds") <*>
       (obj .:? "AuthorizerUri") <*>
@@ -66,7 +69,8 @@
   -> ApiGatewayAuthorizer
 apiGatewayAuthorizer restApiIdarg =
   ApiGatewayAuthorizer
-  { _apiGatewayAuthorizerAuthorizerCredentials = Nothing
+  { _apiGatewayAuthorizerAuthType = Nothing
+  , _apiGatewayAuthorizerAuthorizerCredentials = Nothing
   , _apiGatewayAuthorizerAuthorizerResultTtlInSeconds = Nothing
   , _apiGatewayAuthorizerAuthorizerUri = Nothing
   , _apiGatewayAuthorizerIdentitySource = Nothing
@@ -76,6 +80,10 @@
   , _apiGatewayAuthorizerRestApiId = restApiIdarg
   , _apiGatewayAuthorizerType = Nothing
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-authtype
+agaAuthType :: Lens' ApiGatewayAuthorizer (Maybe (Val Text))
+agaAuthType = lens _apiGatewayAuthorizerAuthType (\s a -> s { _apiGatewayAuthorizerAuthType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-authorizer.html#cfn-apigateway-authorizer-authorizercredentials
 agaAuthorizerCredentials :: Lens' ApiGatewayAuthorizer (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs b/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayMethod.hs
@@ -27,8 +27,10 @@
   , _apiGatewayMethodHttpMethod :: Val HttpMethod
   , _apiGatewayMethodIntegration :: Maybe ApiGatewayMethodIntegration
   , _apiGatewayMethodMethodResponses :: Maybe [ApiGatewayMethodMethodResponse]
+  , _apiGatewayMethodOperationName :: Maybe (Val Text)
   , _apiGatewayMethodRequestModels :: Maybe Object
   , _apiGatewayMethodRequestParameters :: Maybe Object
+  , _apiGatewayMethodRequestValidatorId :: Maybe (Val Text)
   , _apiGatewayMethodResourceId :: Val Text
   , _apiGatewayMethodRestApiId :: Val Text
   } deriving (Show, Eq)
@@ -43,8 +45,10 @@
     , (Just . ("HttpMethod",) . toJSON) _apiGatewayMethodHttpMethod
     , fmap (("Integration",) . toJSON) _apiGatewayMethodIntegration
     , fmap (("MethodResponses",) . toJSON) _apiGatewayMethodMethodResponses
+    , fmap (("OperationName",) . toJSON) _apiGatewayMethodOperationName
     , fmap (("RequestModels",) . toJSON) _apiGatewayMethodRequestModels
     , fmap (("RequestParameters",) . toJSON) _apiGatewayMethodRequestParameters
+    , fmap (("RequestValidatorId",) . toJSON) _apiGatewayMethodRequestValidatorId
     , (Just . ("ResourceId",) . toJSON) _apiGatewayMethodResourceId
     , (Just . ("RestApiId",) . toJSON) _apiGatewayMethodRestApiId
     ]
@@ -58,8 +62,10 @@
       (obj .: "HttpMethod") <*>
       (obj .:? "Integration") <*>
       (obj .:? "MethodResponses") <*>
+      (obj .:? "OperationName") <*>
       (obj .:? "RequestModels") <*>
       (obj .:? "RequestParameters") <*>
+      (obj .:? "RequestValidatorId") <*>
       (obj .: "ResourceId") <*>
       (obj .: "RestApiId")
   parseJSON _ = mempty
@@ -79,8 +85,10 @@
   , _apiGatewayMethodHttpMethod = httpMethodarg
   , _apiGatewayMethodIntegration = Nothing
   , _apiGatewayMethodMethodResponses = Nothing
+  , _apiGatewayMethodOperationName = Nothing
   , _apiGatewayMethodRequestModels = Nothing
   , _apiGatewayMethodRequestParameters = Nothing
+  , _apiGatewayMethodRequestValidatorId = Nothing
   , _apiGatewayMethodResourceId = resourceIdarg
   , _apiGatewayMethodRestApiId = restApiIdarg
   }
@@ -109,6 +117,10 @@
 agmeMethodResponses :: Lens' ApiGatewayMethod (Maybe [ApiGatewayMethodMethodResponse])
 agmeMethodResponses = lens _apiGatewayMethodMethodResponses (\s a -> s { _apiGatewayMethodMethodResponses = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-operationname
+agmeOperationName :: Lens' ApiGatewayMethod (Maybe (Val Text))
+agmeOperationName = lens _apiGatewayMethodOperationName (\s a -> s { _apiGatewayMethodOperationName = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-requestmodels
 agmeRequestModels :: Lens' ApiGatewayMethod (Maybe Object)
 agmeRequestModels = lens _apiGatewayMethodRequestModels (\s a -> s { _apiGatewayMethodRequestModels = a })
@@ -116,6 +128,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-requestparameters
 agmeRequestParameters :: Lens' ApiGatewayMethod (Maybe Object)
 agmeRequestParameters = lens _apiGatewayMethodRequestParameters (\s a -> s { _apiGatewayMethodRequestParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-requestvalidatorid
+agmeRequestValidatorId :: Lens' ApiGatewayMethod (Maybe (Val Text))
+agmeRequestValidatorId = lens _apiGatewayMethodRequestValidatorId (\s a -> s { _apiGatewayMethodRequestValidatorId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-resourceid
 agmeResourceId :: Lens' ApiGatewayMethod (Val Text)
diff --git a/library-gen/Stratosphere/Resources/AthenaNamedQuery.hs b/library-gen/Stratosphere/Resources/AthenaNamedQuery.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AthenaNamedQuery.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html
+
+module Stratosphere.Resources.AthenaNamedQuery 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 AthenaNamedQuery. See 'athenaNamedQuery'
+-- for a more convenient constructor.
+data AthenaNamedQuery =
+  AthenaNamedQuery
+  { _athenaNamedQueryDatabase :: Val Text
+  , _athenaNamedQueryDescription :: Maybe (Val Text)
+  , _athenaNamedQueryName :: Maybe (Val Text)
+  , _athenaNamedQueryQueryString :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AthenaNamedQuery where
+  toJSON AthenaNamedQuery{..} =
+    object $
+    catMaybes
+    [ (Just . ("Database",) . toJSON) _athenaNamedQueryDatabase
+    , fmap (("Description",) . toJSON) _athenaNamedQueryDescription
+    , fmap (("Name",) . toJSON) _athenaNamedQueryName
+    , (Just . ("QueryString",) . toJSON) _athenaNamedQueryQueryString
+    ]
+
+instance FromJSON AthenaNamedQuery where
+  parseJSON (Object obj) =
+    AthenaNamedQuery <$>
+      (obj .: "Database") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Name") <*>
+      (obj .: "QueryString")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AthenaNamedQuery' containing required fields as
+-- arguments.
+athenaNamedQuery
+  :: Val Text -- ^ 'anqDatabase'
+  -> Val Text -- ^ 'anqQueryString'
+  -> AthenaNamedQuery
+athenaNamedQuery databasearg queryStringarg =
+  AthenaNamedQuery
+  { _athenaNamedQueryDatabase = databasearg
+  , _athenaNamedQueryDescription = Nothing
+  , _athenaNamedQueryName = Nothing
+  , _athenaNamedQueryQueryString = queryStringarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-database
+anqDatabase :: Lens' AthenaNamedQuery (Val Text)
+anqDatabase = lens _athenaNamedQueryDatabase (\s a -> s { _athenaNamedQueryDatabase = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-description
+anqDescription :: Lens' AthenaNamedQuery (Maybe (Val Text))
+anqDescription = lens _athenaNamedQueryDescription (\s a -> s { _athenaNamedQueryDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-name
+anqName :: Lens' AthenaNamedQuery (Maybe (Val Text))
+anqName = lens _athenaNamedQueryName (\s a -> s { _athenaNamedQueryName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html#cfn-athena-namedquery-querystring
+anqQueryString :: Lens' AthenaNamedQuery (Val Text)
+anqQueryString = lens _athenaNamedQueryQueryString (\s a -> s { _athenaNamedQueryQueryString = a })
diff --git a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingAutoScalingGroup.hs
@@ -13,28 +13,30 @@
 import Data.Text
 
 import Stratosphere.Values
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration
-import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty
 
 -- | Full data type definition for AutoScalingAutoScalingGroup. See
 -- 'autoScalingAutoScalingGroup' for a more convenient constructor.
 data AutoScalingAutoScalingGroup =
   AutoScalingAutoScalingGroup
-  { _autoScalingAutoScalingGroupAvailabilityZones :: Maybe (ValList Text)
+  { _autoScalingAutoScalingGroupAsTags :: Maybe [AutoScalingAutoScalingGroupTagProperty]
+  , _autoScalingAutoScalingGroupAvailabilityZones :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupCooldown :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupDesiredCapacity :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupHealthCheckGracePeriod :: Maybe (Val Integer)
   , _autoScalingAutoScalingGroupHealthCheckType :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupInstanceId :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupLaunchConfigurationName :: Maybe (Val Text)
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationList :: Maybe [AutoScalingAutoScalingGroupLifecycleHookSpecification]
   , _autoScalingAutoScalingGroupLoadBalancerNames :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupMaxSize :: Val Text
   , _autoScalingAutoScalingGroupMetricsCollection :: Maybe [AutoScalingAutoScalingGroupMetricsCollection]
   , _autoScalingAutoScalingGroupMinSize :: Val Text
   , _autoScalingAutoScalingGroupNotificationConfigurations :: Maybe [AutoScalingAutoScalingGroupNotificationConfiguration]
   , _autoScalingAutoScalingGroupPlacementGroup :: Maybe (Val Text)
-  , _autoScalingAutoScalingGroupTags :: Maybe [AutoScalingAutoScalingGroupTagProperty]
   , _autoScalingAutoScalingGroupTargetGroupARNs :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupTerminationPolicies :: Maybe (ValList Text)
   , _autoScalingAutoScalingGroupVPCZoneIdentifier :: Maybe (ValList Text)
@@ -44,20 +46,21 @@
   toJSON AutoScalingAutoScalingGroup{..} =
     object $
     catMaybes
-    [ fmap (("AvailabilityZones",) . toJSON) _autoScalingAutoScalingGroupAvailabilityZones
+    [ fmap (("AsTags",) . toJSON) _autoScalingAutoScalingGroupAsTags
+    , fmap (("AvailabilityZones",) . toJSON) _autoScalingAutoScalingGroupAvailabilityZones
     , fmap (("Cooldown",) . toJSON) _autoScalingAutoScalingGroupCooldown
     , fmap (("DesiredCapacity",) . toJSON) _autoScalingAutoScalingGroupDesiredCapacity
     , fmap (("HealthCheckGracePeriod",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupHealthCheckGracePeriod
     , fmap (("HealthCheckType",) . toJSON) _autoScalingAutoScalingGroupHealthCheckType
     , fmap (("InstanceId",) . toJSON) _autoScalingAutoScalingGroupInstanceId
     , fmap (("LaunchConfigurationName",) . toJSON) _autoScalingAutoScalingGroupLaunchConfigurationName
+    , fmap (("LifecycleHookSpecificationList",) . toJSON) _autoScalingAutoScalingGroupLifecycleHookSpecificationList
     , fmap (("LoadBalancerNames",) . toJSON) _autoScalingAutoScalingGroupLoadBalancerNames
     , (Just . ("MaxSize",) . toJSON) _autoScalingAutoScalingGroupMaxSize
     , fmap (("MetricsCollection",) . toJSON) _autoScalingAutoScalingGroupMetricsCollection
     , (Just . ("MinSize",) . toJSON) _autoScalingAutoScalingGroupMinSize
     , fmap (("NotificationConfigurations",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurations
     , fmap (("PlacementGroup",) . toJSON) _autoScalingAutoScalingGroupPlacementGroup
-    , fmap (("Tags",) . toJSON) _autoScalingAutoScalingGroupTags
     , fmap (("TargetGroupARNs",) . toJSON) _autoScalingAutoScalingGroupTargetGroupARNs
     , fmap (("TerminationPolicies",) . toJSON) _autoScalingAutoScalingGroupTerminationPolicies
     , fmap (("VPCZoneIdentifier",) . toJSON) _autoScalingAutoScalingGroupVPCZoneIdentifier
@@ -66,6 +69,7 @@
 instance FromJSON AutoScalingAutoScalingGroup where
   parseJSON (Object obj) =
     AutoScalingAutoScalingGroup <$>
+      (obj .:? "AsTags") <*>
       (obj .:? "AvailabilityZones") <*>
       (obj .:? "Cooldown") <*>
       (obj .:? "DesiredCapacity") <*>
@@ -73,13 +77,13 @@
       (obj .:? "HealthCheckType") <*>
       (obj .:? "InstanceId") <*>
       (obj .:? "LaunchConfigurationName") <*>
+      (obj .:? "LifecycleHookSpecificationList") <*>
       (obj .:? "LoadBalancerNames") <*>
       (obj .: "MaxSize") <*>
       (obj .:? "MetricsCollection") <*>
       (obj .: "MinSize") <*>
       (obj .:? "NotificationConfigurations") <*>
       (obj .:? "PlacementGroup") <*>
-      (obj .:? "Tags") <*>
       (obj .:? "TargetGroupARNs") <*>
       (obj .:? "TerminationPolicies") <*>
       (obj .:? "VPCZoneIdentifier")
@@ -93,25 +97,30 @@
   -> AutoScalingAutoScalingGroup
 autoScalingAutoScalingGroup maxSizearg minSizearg =
   AutoScalingAutoScalingGroup
-  { _autoScalingAutoScalingGroupAvailabilityZones = Nothing
+  { _autoScalingAutoScalingGroupAsTags = Nothing
+  , _autoScalingAutoScalingGroupAvailabilityZones = Nothing
   , _autoScalingAutoScalingGroupCooldown = Nothing
   , _autoScalingAutoScalingGroupDesiredCapacity = Nothing
   , _autoScalingAutoScalingGroupHealthCheckGracePeriod = Nothing
   , _autoScalingAutoScalingGroupHealthCheckType = Nothing
   , _autoScalingAutoScalingGroupInstanceId = Nothing
   , _autoScalingAutoScalingGroupLaunchConfigurationName = Nothing
+  , _autoScalingAutoScalingGroupLifecycleHookSpecificationList = Nothing
   , _autoScalingAutoScalingGroupLoadBalancerNames = Nothing
   , _autoScalingAutoScalingGroupMaxSize = maxSizearg
   , _autoScalingAutoScalingGroupMetricsCollection = Nothing
   , _autoScalingAutoScalingGroupMinSize = minSizearg
   , _autoScalingAutoScalingGroupNotificationConfigurations = Nothing
   , _autoScalingAutoScalingGroupPlacementGroup = Nothing
-  , _autoScalingAutoScalingGroupTags = Nothing
   , _autoScalingAutoScalingGroupTargetGroupARNs = Nothing
   , _autoScalingAutoScalingGroupTerminationPolicies = Nothing
   , _autoScalingAutoScalingGroupVPCZoneIdentifier = Nothing
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-tags
+asasgAsTags :: Lens' AutoScalingAutoScalingGroup (Maybe [AutoScalingAutoScalingGroupTagProperty])
+asasgAsTags = lens _autoScalingAutoScalingGroupAsTags (\s a -> s { _autoScalingAutoScalingGroupAsTags = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-availabilityzones
 asasgAvailabilityZones :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
 asasgAvailabilityZones = lens _autoScalingAutoScalingGroupAvailabilityZones (\s a -> s { _autoScalingAutoScalingGroupAvailabilityZones = a })
@@ -140,6 +149,10 @@
 asasgLaunchConfigurationName :: Lens' AutoScalingAutoScalingGroup (Maybe (Val Text))
 asasgLaunchConfigurationName = lens _autoScalingAutoScalingGroupLaunchConfigurationName (\s a -> s { _autoScalingAutoScalingGroupLaunchConfigurationName = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecificationlist
+asasgLifecycleHookSpecificationList :: Lens' AutoScalingAutoScalingGroup (Maybe [AutoScalingAutoScalingGroupLifecycleHookSpecification])
+asasgLifecycleHookSpecificationList = lens _autoScalingAutoScalingGroupLifecycleHookSpecificationList (\s a -> s { _autoScalingAutoScalingGroupLifecycleHookSpecificationList = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-loadbalancernames
 asasgLoadBalancerNames :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
 asasgLoadBalancerNames = lens _autoScalingAutoScalingGroupLoadBalancerNames (\s a -> s { _autoScalingAutoScalingGroupLoadBalancerNames = a })
@@ -163,10 +176,6 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-placementgroup
 asasgPlacementGroup :: Lens' AutoScalingAutoScalingGroup (Maybe (Val Text))
 asasgPlacementGroup = lens _autoScalingAutoScalingGroupPlacementGroup (\s a -> s { _autoScalingAutoScalingGroupPlacementGroup = a })
-
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-tags
-asasgTags :: Lens' AutoScalingAutoScalingGroup (Maybe [AutoScalingAutoScalingGroupTagProperty])
-asasgTags = lens _autoScalingAutoScalingGroupTags (\s a -> s { _autoScalingAutoScalingGroupTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-targetgrouparns
 asasgTargetGroupARNs :: Lens' AutoScalingAutoScalingGroup (Maybe (ValList Text))
diff --git a/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs b/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
--- a/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
+++ b/library-gen/Stratosphere/Resources/AutoScalingLifecycleHook.hs
@@ -22,6 +22,7 @@
   { _autoScalingLifecycleHookAutoScalingGroupName :: Val Text
   , _autoScalingLifecycleHookDefaultResult :: Maybe (Val Text)
   , _autoScalingLifecycleHookHeartbeatTimeout :: Maybe (Val Integer)
+  , _autoScalingLifecycleHookLifecycleHookName :: Maybe (Val Text)
   , _autoScalingLifecycleHookLifecycleTransition :: Val Text
   , _autoScalingLifecycleHookNotificationMetadata :: Maybe (Val Text)
   , _autoScalingLifecycleHookNotificationTargetARN :: Maybe (Val Text)
@@ -35,6 +36,7 @@
     [ (Just . ("AutoScalingGroupName",) . toJSON) _autoScalingLifecycleHookAutoScalingGroupName
     , fmap (("DefaultResult",) . toJSON) _autoScalingLifecycleHookDefaultResult
     , fmap (("HeartbeatTimeout",) . toJSON . fmap Integer') _autoScalingLifecycleHookHeartbeatTimeout
+    , fmap (("LifecycleHookName",) . toJSON) _autoScalingLifecycleHookLifecycleHookName
     , (Just . ("LifecycleTransition",) . toJSON) _autoScalingLifecycleHookLifecycleTransition
     , fmap (("NotificationMetadata",) . toJSON) _autoScalingLifecycleHookNotificationMetadata
     , fmap (("NotificationTargetARN",) . toJSON) _autoScalingLifecycleHookNotificationTargetARN
@@ -47,6 +49,7 @@
       (obj .: "AutoScalingGroupName") <*>
       (obj .:? "DefaultResult") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "HeartbeatTimeout") <*>
+      (obj .:? "LifecycleHookName") <*>
       (obj .: "LifecycleTransition") <*>
       (obj .:? "NotificationMetadata") <*>
       (obj .:? "NotificationTargetARN") <*>
@@ -64,6 +67,7 @@
   { _autoScalingLifecycleHookAutoScalingGroupName = autoScalingGroupNamearg
   , _autoScalingLifecycleHookDefaultResult = Nothing
   , _autoScalingLifecycleHookHeartbeatTimeout = Nothing
+  , _autoScalingLifecycleHookLifecycleHookName = Nothing
   , _autoScalingLifecycleHookLifecycleTransition = lifecycleTransitionarg
   , _autoScalingLifecycleHookNotificationMetadata = Nothing
   , _autoScalingLifecycleHookNotificationTargetARN = Nothing
@@ -81,6 +85,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-heartbeattimeout
 aslhHeartbeatTimeout :: Lens' AutoScalingLifecycleHook (Maybe (Val Integer))
 aslhHeartbeatTimeout = lens _autoScalingLifecycleHookHeartbeatTimeout (\s a -> s { _autoScalingLifecycleHookHeartbeatTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-autoscaling-lifecyclehook-lifecyclehookname
+aslhLifecycleHookName :: Lens' AutoScalingLifecycleHook (Maybe (Val Text))
+aslhLifecycleHookName = lens _autoScalingLifecycleHookLifecycleHookName (\s a -> s { _autoScalingLifecycleHookLifecycleHookName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-as-lifecyclehook.html#cfn-as-lifecyclehook-lifecycletransition
 aslhLifecycleTransition :: Lens' AutoScalingLifecycleHook (Val Text)
diff --git a/library-gen/Stratosphere/Resources/CloudFrontCloudFrontOriginAccessIdentity.hs b/library-gen/Stratosphere/Resources/CloudFrontCloudFrontOriginAccessIdentity.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/CloudFrontCloudFrontOriginAccessIdentity.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-cloudfrontoriginaccessidentity.html
+
+module Stratosphere.Resources.CloudFrontCloudFrontOriginAccessIdentity 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.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+
+-- | Full data type definition for CloudFrontCloudFrontOriginAccessIdentity.
+-- See 'cloudFrontCloudFrontOriginAccessIdentity' for a more convenient
+-- constructor.
+data CloudFrontCloudFrontOriginAccessIdentity =
+  CloudFrontCloudFrontOriginAccessIdentity
+  { _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig :: CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontCloudFrontOriginAccessIdentity where
+  toJSON CloudFrontCloudFrontOriginAccessIdentity{..} =
+    object $
+    catMaybes
+    [ (Just . ("CloudFrontOriginAccessIdentityConfig",) . toJSON) _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+    ]
+
+instance FromJSON CloudFrontCloudFrontOriginAccessIdentity where
+  parseJSON (Object obj) =
+    CloudFrontCloudFrontOriginAccessIdentity <$>
+      (obj .: "CloudFrontOriginAccessIdentityConfig")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontCloudFrontOriginAccessIdentity' containing
+-- required fields as arguments.
+cloudFrontCloudFrontOriginAccessIdentity
+  :: CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig -- ^ 'cfcfoaiCloudFrontOriginAccessIdentityConfig'
+  -> CloudFrontCloudFrontOriginAccessIdentity
+cloudFrontCloudFrontOriginAccessIdentity cloudFrontOriginAccessIdentityConfigarg =
+  CloudFrontCloudFrontOriginAccessIdentity
+  { _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig = cloudFrontOriginAccessIdentityConfigarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-cloudfrontoriginaccessidentity.html#cfn-cloudfront-cloudfrontoriginaccessidentity-cloudfrontoriginaccessidentityconfig
+cfcfoaiCloudFrontOriginAccessIdentityConfig :: Lens' CloudFrontCloudFrontOriginAccessIdentity CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
+cfcfoaiCloudFrontOriginAccessIdentityConfig = lens _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig (\s a -> s { _cloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig = a })
diff --git a/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs b/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
--- a/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
+++ b/library-gen/Stratosphere/Resources/CloudFrontDistribution.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-distribution.html
 
 module Stratosphere.Resources.CloudFrontDistribution where
 
@@ -14,12 +14,14 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.CloudFrontDistributionDistributionConfig
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for CloudFrontDistribution. See
 -- 'cloudFrontDistribution' for a more convenient constructor.
 data CloudFrontDistribution =
   CloudFrontDistribution
   { _cloudFrontDistributionDistributionConfig :: CloudFrontDistributionDistributionConfig
+  , _cloudFrontDistributionTags :: Maybe [Tag]
   } deriving (Show, Eq)
 
 instance ToJSON CloudFrontDistribution where
@@ -27,12 +29,14 @@
     object $
     catMaybes
     [ (Just . ("DistributionConfig",) . toJSON) _cloudFrontDistributionDistributionConfig
+    , fmap (("Tags",) . toJSON) _cloudFrontDistributionTags
     ]
 
 instance FromJSON CloudFrontDistribution where
   parseJSON (Object obj) =
     CloudFrontDistribution <$>
-      (obj .: "DistributionConfig")
+      (obj .: "DistributionConfig") <*>
+      (obj .:? "Tags")
   parseJSON _ = mempty
 
 -- | Constructor for 'CloudFrontDistribution' containing required fields as
@@ -43,8 +47,13 @@
 cloudFrontDistribution distributionConfigarg =
   CloudFrontDistribution
   { _cloudFrontDistributionDistributionConfig = distributionConfigarg
+  , _cloudFrontDistributionTags = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution.html#cfn-cloudfront-distribution-distributionconfig
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-distribution.html#cfn-cloudfront-distribution-distributionconfig
 cfdDistributionConfig :: Lens' CloudFrontDistribution CloudFrontDistributionDistributionConfig
 cfdDistributionConfig = lens _cloudFrontDistributionDistributionConfig (\s a -> s { _cloudFrontDistributionDistributionConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-distribution.html#cfn-cloudfront-distribution-tags
+cfdTags :: Lens' CloudFrontDistribution (Maybe [Tag])
+cfdTags = lens _cloudFrontDistributionTags (\s a -> s { _cloudFrontDistributionTags = a })
diff --git a/library-gen/Stratosphere/Resources/CloudFrontStreamingDistribution.hs b/library-gen/Stratosphere/Resources/CloudFrontStreamingDistribution.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/CloudFrontStreamingDistribution.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html
+
+module Stratosphere.Resources.CloudFrontStreamingDistribution 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.CloudFrontStreamingDistributionStreamingDistributionConfig
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for CloudFrontStreamingDistribution. See
+-- 'cloudFrontStreamingDistribution' for a more convenient constructor.
+data CloudFrontStreamingDistribution =
+  CloudFrontStreamingDistribution
+  { _cloudFrontStreamingDistributionStreamingDistributionConfig :: CloudFrontStreamingDistributionStreamingDistributionConfig
+  , _cloudFrontStreamingDistributionTags :: [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFrontStreamingDistribution where
+  toJSON CloudFrontStreamingDistribution{..} =
+    object $
+    catMaybes
+    [ (Just . ("StreamingDistributionConfig",) . toJSON) _cloudFrontStreamingDistributionStreamingDistributionConfig
+    , (Just . ("Tags",) . toJSON) _cloudFrontStreamingDistributionTags
+    ]
+
+instance FromJSON CloudFrontStreamingDistribution where
+  parseJSON (Object obj) =
+    CloudFrontStreamingDistribution <$>
+      (obj .: "StreamingDistributionConfig") <*>
+      (obj .: "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFrontStreamingDistribution' containing required
+-- fields as arguments.
+cloudFrontStreamingDistribution
+  :: CloudFrontStreamingDistributionStreamingDistributionConfig -- ^ 'cfsdStreamingDistributionConfig'
+  -> [Tag] -- ^ 'cfsdTags'
+  -> CloudFrontStreamingDistribution
+cloudFrontStreamingDistribution streamingDistributionConfigarg tagsarg =
+  CloudFrontStreamingDistribution
+  { _cloudFrontStreamingDistributionStreamingDistributionConfig = streamingDistributionConfigarg
+  , _cloudFrontStreamingDistributionTags = tagsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html#cfn-cloudfront-streamingdistribution-streamingdistributionconfig
+cfsdStreamingDistributionConfig :: Lens' CloudFrontStreamingDistribution CloudFrontStreamingDistributionStreamingDistributionConfig
+cfsdStreamingDistributionConfig = lens _cloudFrontStreamingDistributionStreamingDistributionConfig (\s a -> s { _cloudFrontStreamingDistributionStreamingDistributionConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-streamingdistribution.html#cfn-cloudfront-streamingdistribution-tags
+cfsdTags :: Lens' CloudFrontStreamingDistribution [Tag]
+cfsdTags = lens _cloudFrontStreamingDistributionTags (\s a -> s { _cloudFrontStreamingDistributionTags = a })
diff --git a/library-gen/Stratosphere/Resources/EC2Instance.hs b/library-gen/Stratosphere/Resources/EC2Instance.hs
--- a/library-gen/Stratosphere/Resources/EC2Instance.hs
+++ b/library-gen/Stratosphere/Resources/EC2Instance.hs
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.EC2InstanceBlockDeviceMapping
+import Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification
 import Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address
 import Stratosphere.ResourceProperties.EC2InstanceNetworkInterface
 import Stratosphere.ResourceProperties.EC2InstanceSsmAssociation
@@ -30,6 +31,7 @@
   , _eC2InstanceBlockDeviceMappings :: Maybe [EC2InstanceBlockDeviceMapping]
   , _eC2InstanceDisableApiTermination :: Maybe (Val Bool)
   , _eC2InstanceEbsOptimized :: Maybe (Val Bool)
+  , _eC2InstanceElasticGpuSpecifications :: Maybe [EC2InstanceElasticGpuSpecification]
   , _eC2InstanceHostId :: Maybe (Val Text)
   , _eC2InstanceIamInstanceProfile :: Maybe (Val Text)
   , _eC2InstanceImageId :: Val Text
@@ -65,6 +67,7 @@
     , fmap (("BlockDeviceMappings",) . toJSON) _eC2InstanceBlockDeviceMappings
     , fmap (("DisableApiTermination",) . toJSON . fmap Bool') _eC2InstanceDisableApiTermination
     , fmap (("EbsOptimized",) . toJSON . fmap Bool') _eC2InstanceEbsOptimized
+    , fmap (("ElasticGpuSpecifications",) . toJSON) _eC2InstanceElasticGpuSpecifications
     , fmap (("HostId",) . toJSON) _eC2InstanceHostId
     , fmap (("IamInstanceProfile",) . toJSON) _eC2InstanceIamInstanceProfile
     , (Just . ("ImageId",) . toJSON) _eC2InstanceImageId
@@ -99,6 +102,7 @@
       (obj .:? "BlockDeviceMappings") <*>
       fmap (fmap (fmap unBool')) (obj .:? "DisableApiTermination") <*>
       fmap (fmap (fmap unBool')) (obj .:? "EbsOptimized") <*>
+      (obj .:? "ElasticGpuSpecifications") <*>
       (obj .:? "HostId") <*>
       (obj .:? "IamInstanceProfile") <*>
       (obj .: "ImageId") <*>
@@ -136,6 +140,7 @@
   , _eC2InstanceBlockDeviceMappings = Nothing
   , _eC2InstanceDisableApiTermination = Nothing
   , _eC2InstanceEbsOptimized = Nothing
+  , _eC2InstanceElasticGpuSpecifications = Nothing
   , _eC2InstanceHostId = Nothing
   , _eC2InstanceIamInstanceProfile = Nothing
   , _eC2InstanceImageId = imageIdarg
@@ -184,6 +189,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-ebsoptimized
 eciEbsOptimized :: Lens' EC2Instance (Maybe (Val Bool))
 eciEbsOptimized = lens _eC2InstanceEbsOptimized (\s a -> s { _eC2InstanceEbsOptimized = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-elasticgpuspecifications
+eciElasticGpuSpecifications :: Lens' EC2Instance (Maybe [EC2InstanceElasticGpuSpecification])
+eciElasticGpuSpecifications = lens _eC2InstanceElasticGpuSpecifications (\s a -> s { _eC2InstanceElasticGpuSpecifications = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-hostid
 eciHostId :: Lens' EC2Instance (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/EC2Route.hs b/library-gen/Stratosphere/Resources/EC2Route.hs
--- a/library-gen/Stratosphere/Resources/EC2Route.hs
+++ b/library-gen/Stratosphere/Resources/EC2Route.hs
@@ -21,6 +21,7 @@
   EC2Route
   { _eC2RouteDestinationCidrBlock :: Maybe (Val Text)
   , _eC2RouteDestinationIpv6CidrBlock :: Maybe (Val Text)
+  , _eC2RouteEgressOnlyInternetGatewayId :: Maybe (Val Text)
   , _eC2RouteGatewayId :: Maybe (Val Text)
   , _eC2RouteInstanceId :: Maybe (Val Text)
   , _eC2RouteNatGatewayId :: Maybe (Val Text)
@@ -35,6 +36,7 @@
     catMaybes
     [ fmap (("DestinationCidrBlock",) . toJSON) _eC2RouteDestinationCidrBlock
     , fmap (("DestinationIpv6CidrBlock",) . toJSON) _eC2RouteDestinationIpv6CidrBlock
+    , fmap (("EgressOnlyInternetGatewayId",) . toJSON) _eC2RouteEgressOnlyInternetGatewayId
     , fmap (("GatewayId",) . toJSON) _eC2RouteGatewayId
     , fmap (("InstanceId",) . toJSON) _eC2RouteInstanceId
     , fmap (("NatGatewayId",) . toJSON) _eC2RouteNatGatewayId
@@ -48,6 +50,7 @@
     EC2Route <$>
       (obj .:? "DestinationCidrBlock") <*>
       (obj .:? "DestinationIpv6CidrBlock") <*>
+      (obj .:? "EgressOnlyInternetGatewayId") <*>
       (obj .:? "GatewayId") <*>
       (obj .:? "InstanceId") <*>
       (obj .:? "NatGatewayId") <*>
@@ -64,6 +67,7 @@
   EC2Route
   { _eC2RouteDestinationCidrBlock = Nothing
   , _eC2RouteDestinationIpv6CidrBlock = Nothing
+  , _eC2RouteEgressOnlyInternetGatewayId = Nothing
   , _eC2RouteGatewayId = Nothing
   , _eC2RouteInstanceId = Nothing
   , _eC2RouteNatGatewayId = Nothing
@@ -79,6 +83,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-destinationipv6cidrblock
 ecrDestinationIpv6CidrBlock :: Lens' EC2Route (Maybe (Val Text))
 ecrDestinationIpv6CidrBlock = lens _eC2RouteDestinationIpv6CidrBlock (\s a -> s { _eC2RouteDestinationIpv6CidrBlock = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-egressonlyinternetgatewayid
+ecrEgressOnlyInternetGatewayId :: Lens' EC2Route (Maybe (Val Text))
+ecrEgressOnlyInternetGatewayId = lens _eC2RouteEgressOnlyInternetGatewayId (\s a -> s { _eC2RouteEgressOnlyInternetGatewayId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html#cfn-ec2-route-gatewayid
 ecrGatewayId :: Lens' EC2Route (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroupEgress.hs
@@ -21,6 +21,7 @@
   EC2SecurityGroupEgress
   { _eC2SecurityGroupEgressCidrIp :: Maybe (Val Text)
   , _eC2SecurityGroupEgressCidrIpv6 :: Maybe (Val Text)
+  , _eC2SecurityGroupEgressDescription :: Maybe (Val Text)
   , _eC2SecurityGroupEgressDestinationPrefixListId :: Maybe (Val Text)
   , _eC2SecurityGroupEgressDestinationSecurityGroupId :: Maybe (Val Text)
   , _eC2SecurityGroupEgressFromPort :: Maybe (Val Integer)
@@ -35,6 +36,7 @@
     catMaybes
     [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupEgressCidrIp
     , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupEgressCidrIpv6
+    , fmap (("Description",) . toJSON) _eC2SecurityGroupEgressDescription
     , fmap (("DestinationPrefixListId",) . toJSON) _eC2SecurityGroupEgressDestinationPrefixListId
     , fmap (("DestinationSecurityGroupId",) . toJSON) _eC2SecurityGroupEgressDestinationSecurityGroupId
     , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupEgressFromPort
@@ -48,6 +50,7 @@
     EC2SecurityGroupEgress <$>
       (obj .:? "CidrIp") <*>
       (obj .:? "CidrIpv6") <*>
+      (obj .:? "Description") <*>
       (obj .:? "DestinationPrefixListId") <*>
       (obj .:? "DestinationSecurityGroupId") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
@@ -66,6 +69,7 @@
   EC2SecurityGroupEgress
   { _eC2SecurityGroupEgressCidrIp = Nothing
   , _eC2SecurityGroupEgressCidrIpv6 = Nothing
+  , _eC2SecurityGroupEgressDescription = Nothing
   , _eC2SecurityGroupEgressDestinationPrefixListId = Nothing
   , _eC2SecurityGroupEgressDestinationSecurityGroupId = Nothing
   , _eC2SecurityGroupEgressFromPort = Nothing
@@ -81,6 +85,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-cidripv6
 ecsgeCidrIpv6 :: Lens' EC2SecurityGroupEgress (Maybe (Val Text))
 ecsgeCidrIpv6 = lens _eC2SecurityGroupEgressCidrIpv6 (\s a -> s { _eC2SecurityGroupEgressCidrIpv6 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-description
+ecsgeDescription :: Lens' EC2SecurityGroupEgress (Maybe (Val Text))
+ecsgeDescription = lens _eC2SecurityGroupEgressDescription (\s a -> s { _eC2SecurityGroupEgressDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-security-group-egress.html#cfn-ec2-securitygroupegress-destinationprefixlistid
 ecsgeDestinationPrefixListId :: Lens' EC2SecurityGroupEgress (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs b/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
--- a/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
+++ b/library-gen/Stratosphere/Resources/EC2SecurityGroupIngress.hs
@@ -21,6 +21,7 @@
   EC2SecurityGroupIngress
   { _eC2SecurityGroupIngressCidrIp :: Maybe (Val Text)
   , _eC2SecurityGroupIngressCidrIpv6 :: Maybe (Val Text)
+  , _eC2SecurityGroupIngressDescription :: Maybe (Val Text)
   , _eC2SecurityGroupIngressFromPort :: Maybe (Val Integer)
   , _eC2SecurityGroupIngressGroupId :: Maybe (Val Text)
   , _eC2SecurityGroupIngressGroupName :: Maybe (Val Text)
@@ -37,6 +38,7 @@
     catMaybes
     [ fmap (("CidrIp",) . toJSON) _eC2SecurityGroupIngressCidrIp
     , fmap (("CidrIpv6",) . toJSON) _eC2SecurityGroupIngressCidrIpv6
+    , fmap (("Description",) . toJSON) _eC2SecurityGroupIngressDescription
     , fmap (("FromPort",) . toJSON . fmap Integer') _eC2SecurityGroupIngressFromPort
     , fmap (("GroupId",) . toJSON) _eC2SecurityGroupIngressGroupId
     , fmap (("GroupName",) . toJSON) _eC2SecurityGroupIngressGroupName
@@ -52,6 +54,7 @@
     EC2SecurityGroupIngress <$>
       (obj .:? "CidrIp") <*>
       (obj .:? "CidrIpv6") <*>
+      (obj .:? "Description") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "FromPort") <*>
       (obj .:? "GroupId") <*>
       (obj .:? "GroupName") <*>
@@ -71,6 +74,7 @@
   EC2SecurityGroupIngress
   { _eC2SecurityGroupIngressCidrIp = Nothing
   , _eC2SecurityGroupIngressCidrIpv6 = Nothing
+  , _eC2SecurityGroupIngressDescription = Nothing
   , _eC2SecurityGroupIngressFromPort = Nothing
   , _eC2SecurityGroupIngressGroupId = Nothing
   , _eC2SecurityGroupIngressGroupName = Nothing
@@ -88,6 +92,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-cidripv6
 ecsgiCidrIpv6 :: Lens' EC2SecurityGroupIngress (Maybe (Val Text))
 ecsgiCidrIpv6 = lens _eC2SecurityGroupIngressCidrIpv6 (\s a -> s { _eC2SecurityGroupIngressCidrIpv6 = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-description
+ecsgiDescription :: Lens' EC2SecurityGroupIngress (Maybe (Val Text))
+ecsgiDescription = lens _eC2SecurityGroupIngressDescription (\s a -> s { _eC2SecurityGroupIngressDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-fromport
 ecsgiFromPort :: Lens' EC2SecurityGroupIngress (Maybe (Val Integer))
diff --git a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNConnection.hs
@@ -14,6 +14,7 @@
 
 import Stratosphere.Values
 import Stratosphere.ResourceProperties.Tag
+import Stratosphere.ResourceProperties.EC2VPNConnectionVpnTunnelOptionsSpecification
 
 -- | Full data type definition for EC2VPNConnection. See 'ec2VPNConnection'
 -- for a more convenient constructor.
@@ -24,6 +25,7 @@
   , _eC2VPNConnectionTags :: Maybe [Tag]
   , _eC2VPNConnectionType :: Val Text
   , _eC2VPNConnectionVpnGatewayId :: Val Text
+  , _eC2VPNConnectionVpnTunnelOptionsSpecifications :: Maybe [EC2VPNConnectionVpnTunnelOptionsSpecification]
   } deriving (Show, Eq)
 
 instance ToJSON EC2VPNConnection where
@@ -35,6 +37,7 @@
     , fmap (("Tags",) . toJSON) _eC2VPNConnectionTags
     , (Just . ("Type",) . toJSON) _eC2VPNConnectionType
     , (Just . ("VpnGatewayId",) . toJSON) _eC2VPNConnectionVpnGatewayId
+    , fmap (("VpnTunnelOptionsSpecifications",) . toJSON) _eC2VPNConnectionVpnTunnelOptionsSpecifications
     ]
 
 instance FromJSON EC2VPNConnection where
@@ -44,7 +47,8 @@
       fmap (fmap (fmap unBool')) (obj .:? "StaticRoutesOnly") <*>
       (obj .:? "Tags") <*>
       (obj .: "Type") <*>
-      (obj .: "VpnGatewayId")
+      (obj .: "VpnGatewayId") <*>
+      (obj .:? "VpnTunnelOptionsSpecifications")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2VPNConnection' containing required fields as
@@ -61,6 +65,7 @@
   , _eC2VPNConnectionTags = Nothing
   , _eC2VPNConnectionType = typearg
   , _eC2VPNConnectionVpnGatewayId = vpnGatewayIdarg
+  , _eC2VPNConnectionVpnTunnelOptionsSpecifications = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-customergatewayid
@@ -82,3 +87,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-vpngatewayid
 ecvpncVpnGatewayId :: Lens' EC2VPNConnection (Val Text)
 ecvpncVpnGatewayId = lens _eC2VPNConnectionVpnGatewayId (\s a -> s { _eC2VPNConnectionVpnGatewayId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-connection.html#cfn-ec2-vpnconnection-vpntunneloptionsspecifications
+ecvpncVpnTunnelOptionsSpecifications :: Lens' EC2VPNConnection (Maybe [EC2VPNConnectionVpnTunnelOptionsSpecification])
+ecvpncVpnTunnelOptionsSpecifications = lens _eC2VPNConnectionVpnTunnelOptionsSpecifications (\s a -> s { _eC2VPNConnectionVpnTunnelOptionsSpecifications = a })
diff --git a/library-gen/Stratosphere/Resources/EC2VPNGateway.hs b/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
--- a/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
+++ b/library-gen/Stratosphere/Resources/EC2VPNGateway.hs
@@ -19,7 +19,8 @@
 -- more convenient constructor.
 data EC2VPNGateway =
   EC2VPNGateway
-  { _eC2VPNGatewayTags :: Maybe [Tag]
+  { _eC2VPNGatewayAmazonSideAsn :: Maybe (Val Integer)
+  , _eC2VPNGatewayTags :: Maybe [Tag]
   , _eC2VPNGatewayType :: Val Text
   } deriving (Show, Eq)
 
@@ -27,13 +28,15 @@
   toJSON EC2VPNGateway{..} =
     object $
     catMaybes
-    [ fmap (("Tags",) . toJSON) _eC2VPNGatewayTags
+    [ fmap (("AmazonSideAsn",) . toJSON . fmap Integer') _eC2VPNGatewayAmazonSideAsn
+    , fmap (("Tags",) . toJSON) _eC2VPNGatewayTags
     , (Just . ("Type",) . toJSON) _eC2VPNGatewayType
     ]
 
 instance FromJSON EC2VPNGateway where
   parseJSON (Object obj) =
     EC2VPNGateway <$>
+      fmap (fmap (fmap unInteger')) (obj .:? "AmazonSideAsn") <*>
       (obj .:? "Tags") <*>
       (obj .: "Type")
   parseJSON _ = mempty
@@ -44,9 +47,14 @@
   -> EC2VPNGateway
 ec2VPNGateway typearg =
   EC2VPNGateway
-  { _eC2VPNGatewayTags = Nothing
+  { _eC2VPNGatewayAmazonSideAsn = Nothing
+  , _eC2VPNGatewayTags = Nothing
   , _eC2VPNGatewayType = typearg
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html#cfn-ec2-vpngateway-amazonsideasn
+ecvpngAmazonSideAsn :: Lens' EC2VPNGateway (Maybe (Val Integer))
+ecvpngAmazonSideAsn = lens _eC2VPNGatewayAmazonSideAsn (\s a -> s { _eC2VPNGatewayAmazonSideAsn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gateway.html#cfn-ec2-vpngateway-tags
 ecvpngTags :: Lens' EC2VPNGateway (Maybe [Tag])
diff --git a/library-gen/Stratosphere/Resources/EMRCluster.hs b/library-gen/Stratosphere/Resources/EMRCluster.hs
--- a/library-gen/Stratosphere/Resources/EMRCluster.hs
+++ b/library-gen/Stratosphere/Resources/EMRCluster.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TupleSections #-}
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html
 
 module Stratosphere.Resources.EMRCluster where
 
@@ -28,6 +28,7 @@
   , _eMRClusterAutoScalingRole :: Maybe (Val Text)
   , _eMRClusterBootstrapActions :: Maybe [EMRClusterBootstrapActionConfig]
   , _eMRClusterConfigurations :: Maybe [EMRClusterConfiguration]
+  , _eMRClusterCustomAmiId :: Maybe (Val Text)
   , _eMRClusterInstances :: EMRClusterJobFlowInstancesConfig
   , _eMRClusterJobFlowRole :: Val Text
   , _eMRClusterLogUri :: Maybe (Val Text)
@@ -49,6 +50,7 @@
     , fmap (("AutoScalingRole",) . toJSON) _eMRClusterAutoScalingRole
     , fmap (("BootstrapActions",) . toJSON) _eMRClusterBootstrapActions
     , fmap (("Configurations",) . toJSON) _eMRClusterConfigurations
+    , fmap (("CustomAmiId",) . toJSON) _eMRClusterCustomAmiId
     , (Just . ("Instances",) . toJSON) _eMRClusterInstances
     , (Just . ("JobFlowRole",) . toJSON) _eMRClusterJobFlowRole
     , fmap (("LogUri",) . toJSON) _eMRClusterLogUri
@@ -69,6 +71,7 @@
       (obj .:? "AutoScalingRole") <*>
       (obj .:? "BootstrapActions") <*>
       (obj .:? "Configurations") <*>
+      (obj .:? "CustomAmiId") <*>
       (obj .: "Instances") <*>
       (obj .: "JobFlowRole") <*>
       (obj .:? "LogUri") <*>
@@ -95,6 +98,7 @@
   , _eMRClusterAutoScalingRole = Nothing
   , _eMRClusterBootstrapActions = Nothing
   , _eMRClusterConfigurations = Nothing
+  , _eMRClusterCustomAmiId = Nothing
   , _eMRClusterInstances = instancesarg
   , _eMRClusterJobFlowRole = jobFlowRolearg
   , _eMRClusterLogUri = Nothing
@@ -107,62 +111,66 @@
   , _eMRClusterVisibleToAllUsers = Nothing
   }
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-additionalinfo
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-additionalinfo
 emrcAdditionalInfo :: Lens' EMRCluster (Maybe Object)
 emrcAdditionalInfo = lens _eMRClusterAdditionalInfo (\s a -> s { _eMRClusterAdditionalInfo = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-applications
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-applications
 emrcApplications :: Lens' EMRCluster (Maybe [EMRClusterApplication])
 emrcApplications = lens _eMRClusterApplications (\s a -> s { _eMRClusterApplications = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-elasticmapreduce-cluster-autoscalingrole
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-autoscalingrole
 emrcAutoScalingRole :: Lens' EMRCluster (Maybe (Val Text))
 emrcAutoScalingRole = lens _eMRClusterAutoScalingRole (\s a -> s { _eMRClusterAutoScalingRole = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-bootstrapactions
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-bootstrapactions
 emrcBootstrapActions :: Lens' EMRCluster (Maybe [EMRClusterBootstrapActionConfig])
 emrcBootstrapActions = lens _eMRClusterBootstrapActions (\s a -> s { _eMRClusterBootstrapActions = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-configurations
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-configurations
 emrcConfigurations :: Lens' EMRCluster (Maybe [EMRClusterConfiguration])
 emrcConfigurations = lens _eMRClusterConfigurations (\s a -> s { _eMRClusterConfigurations = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-instances
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-customamiid
+emrcCustomAmiId :: Lens' EMRCluster (Maybe (Val Text))
+emrcCustomAmiId = lens _eMRClusterCustomAmiId (\s a -> s { _eMRClusterCustomAmiId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-instances
 emrcInstances :: Lens' EMRCluster EMRClusterJobFlowInstancesConfig
 emrcInstances = lens _eMRClusterInstances (\s a -> s { _eMRClusterInstances = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-jobflowrole
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-jobflowrole
 emrcJobFlowRole :: Lens' EMRCluster (Val Text)
 emrcJobFlowRole = lens _eMRClusterJobFlowRole (\s a -> s { _eMRClusterJobFlowRole = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-loguri
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-loguri
 emrcLogUri :: Lens' EMRCluster (Maybe (Val Text))
 emrcLogUri = lens _eMRClusterLogUri (\s a -> s { _eMRClusterLogUri = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-name
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-name
 emrcName :: Lens' EMRCluster (Val Text)
 emrcName = lens _eMRClusterName (\s a -> s { _eMRClusterName = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-releaselabel
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-releaselabel
 emrcReleaseLabel :: Lens' EMRCluster (Maybe (Val Text))
 emrcReleaseLabel = lens _eMRClusterReleaseLabel (\s a -> s { _eMRClusterReleaseLabel = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-elasticmapreduce-cluster-scaledownbehavior
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-scaledownbehavior
 emrcScaleDownBehavior :: Lens' EMRCluster (Maybe (Val Text))
 emrcScaleDownBehavior = lens _eMRClusterScaleDownBehavior (\s a -> s { _eMRClusterScaleDownBehavior = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-securityconfiguration
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-securityconfiguration
 emrcSecurityConfiguration :: Lens' EMRCluster (Maybe (Val Text))
 emrcSecurityConfiguration = lens _eMRClusterSecurityConfiguration (\s a -> s { _eMRClusterSecurityConfiguration = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-servicerole
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-servicerole
 emrcServiceRole :: Lens' EMRCluster (Val Text)
 emrcServiceRole = lens _eMRClusterServiceRole (\s a -> s { _eMRClusterServiceRole = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-elasticmapreduce-cluster-tags
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-tags
 emrcTags :: Lens' EMRCluster (Maybe [Tag])
 emrcTags = lens _eMRClusterTags (\s a -> s { _eMRClusterTags = a })
 
--- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-cluster.html#cfn-emr-cluster-visibletoallusers
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-visibletoallusers
 emrcVisibleToAllUsers :: Lens' EMRCluster (Maybe (Val Bool))
 emrcVisibleToAllUsers = lens _eMRClusterVisibleToAllUsers (\s a -> s { _eMRClusterVisibleToAllUsers = a })
diff --git a/library-gen/Stratosphere/Resources/GlueClassifier.hs b/library-gen/Stratosphere/Resources/GlueClassifier.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueClassifier.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-classifier.html
+
+module Stratosphere.Resources.GlueClassifier 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.GlueClassifierGrokClassifier
+
+-- | Full data type definition for GlueClassifier. See 'glueClassifier' for a
+-- more convenient constructor.
+data GlueClassifier =
+  GlueClassifier
+  { _glueClassifierGrokClassifier :: Maybe GlueClassifierGrokClassifier
+  } deriving (Show, Eq)
+
+instance ToJSON GlueClassifier where
+  toJSON GlueClassifier{..} =
+    object $
+    catMaybes
+    [ fmap (("GrokClassifier",) . toJSON) _glueClassifierGrokClassifier
+    ]
+
+instance FromJSON GlueClassifier where
+  parseJSON (Object obj) =
+    GlueClassifier <$>
+      (obj .:? "GrokClassifier")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueClassifier' containing required fields as arguments.
+glueClassifier
+  :: GlueClassifier
+glueClassifier  =
+  GlueClassifier
+  { _glueClassifierGrokClassifier = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-classifier.html#cfn-glue-classifier-grokclassifier
+gcGrokClassifier :: Lens' GlueClassifier (Maybe GlueClassifierGrokClassifier)
+gcGrokClassifier = lens _glueClassifierGrokClassifier (\s a -> s { _glueClassifierGrokClassifier = a })
diff --git a/library-gen/Stratosphere/Resources/GlueConnection.hs b/library-gen/Stratosphere/Resources/GlueConnection.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueConnection.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-connection.html
+
+module Stratosphere.Resources.GlueConnection 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.GlueConnectionConnectionInput
+
+-- | Full data type definition for GlueConnection. See 'glueConnection' for a
+-- more convenient constructor.
+data GlueConnection =
+  GlueConnection
+  { _glueConnectionCatalogId :: Val Text
+  , _glueConnectionConnectionInput :: GlueConnectionConnectionInput
+  } deriving (Show, Eq)
+
+instance ToJSON GlueConnection where
+  toJSON GlueConnection{..} =
+    object $
+    catMaybes
+    [ (Just . ("CatalogId",) . toJSON) _glueConnectionCatalogId
+    , (Just . ("ConnectionInput",) . toJSON) _glueConnectionConnectionInput
+    ]
+
+instance FromJSON GlueConnection where
+  parseJSON (Object obj) =
+    GlueConnection <$>
+      (obj .: "CatalogId") <*>
+      (obj .: "ConnectionInput")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueConnection' containing required fields as arguments.
+glueConnection
+  :: Val Text -- ^ 'gcCatalogId'
+  -> GlueConnectionConnectionInput -- ^ 'gcConnectionInput'
+  -> GlueConnection
+glueConnection catalogIdarg connectionInputarg =
+  GlueConnection
+  { _glueConnectionCatalogId = catalogIdarg
+  , _glueConnectionConnectionInput = connectionInputarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-connection.html#cfn-glue-connection-catalogid
+gcCatalogId :: Lens' GlueConnection (Val Text)
+gcCatalogId = lens _glueConnectionCatalogId (\s a -> s { _glueConnectionCatalogId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-connection.html#cfn-glue-connection-connectioninput
+gcConnectionInput :: Lens' GlueConnection GlueConnectionConnectionInput
+gcConnectionInput = lens _glueConnectionConnectionInput (\s a -> s { _glueConnectionConnectionInput = a })
diff --git a/library-gen/Stratosphere/Resources/GlueCrawler.hs b/library-gen/Stratosphere/Resources/GlueCrawler.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueCrawler.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html
+
+module Stratosphere.Resources.GlueCrawler 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.GlueCrawlerSchedule
+import Stratosphere.ResourceProperties.GlueCrawlerSchemaChangePolicy
+import Stratosphere.ResourceProperties.GlueCrawlerTargets
+
+-- | Full data type definition for GlueCrawler. See 'glueCrawler' for a more
+-- convenient constructor.
+data GlueCrawler =
+  GlueCrawler
+  { _glueCrawlerClassifiers :: Maybe (ValList Text)
+  , _glueCrawlerDatabaseName :: Val Text
+  , _glueCrawlerDescription :: Maybe (Val Text)
+  , _glueCrawlerName :: Maybe (Val Text)
+  , _glueCrawlerRole :: Val Text
+  , _glueCrawlerSchedule :: Maybe GlueCrawlerSchedule
+  , _glueCrawlerSchemaChangePolicy :: Maybe GlueCrawlerSchemaChangePolicy
+  , _glueCrawlerTablePrefix :: Maybe (Val Text)
+  , _glueCrawlerTargets :: GlueCrawlerTargets
+  } deriving (Show, Eq)
+
+instance ToJSON GlueCrawler where
+  toJSON GlueCrawler{..} =
+    object $
+    catMaybes
+    [ fmap (("Classifiers",) . toJSON) _glueCrawlerClassifiers
+    , (Just . ("DatabaseName",) . toJSON) _glueCrawlerDatabaseName
+    , fmap (("Description",) . toJSON) _glueCrawlerDescription
+    , fmap (("Name",) . toJSON) _glueCrawlerName
+    , (Just . ("Role",) . toJSON) _glueCrawlerRole
+    , fmap (("Schedule",) . toJSON) _glueCrawlerSchedule
+    , fmap (("SchemaChangePolicy",) . toJSON) _glueCrawlerSchemaChangePolicy
+    , fmap (("TablePrefix",) . toJSON) _glueCrawlerTablePrefix
+    , (Just . ("Targets",) . toJSON) _glueCrawlerTargets
+    ]
+
+instance FromJSON GlueCrawler where
+  parseJSON (Object obj) =
+    GlueCrawler <$>
+      (obj .:? "Classifiers") <*>
+      (obj .: "DatabaseName") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Name") <*>
+      (obj .: "Role") <*>
+      (obj .:? "Schedule") <*>
+      (obj .:? "SchemaChangePolicy") <*>
+      (obj .:? "TablePrefix") <*>
+      (obj .: "Targets")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueCrawler' containing required fields as arguments.
+glueCrawler
+  :: Val Text -- ^ 'gcDatabaseName'
+  -> Val Text -- ^ 'gcRole'
+  -> GlueCrawlerTargets -- ^ 'gcTargets'
+  -> GlueCrawler
+glueCrawler databaseNamearg rolearg targetsarg =
+  GlueCrawler
+  { _glueCrawlerClassifiers = Nothing
+  , _glueCrawlerDatabaseName = databaseNamearg
+  , _glueCrawlerDescription = Nothing
+  , _glueCrawlerName = Nothing
+  , _glueCrawlerRole = rolearg
+  , _glueCrawlerSchedule = Nothing
+  , _glueCrawlerSchemaChangePolicy = Nothing
+  , _glueCrawlerTablePrefix = Nothing
+  , _glueCrawlerTargets = targetsarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-classifiers
+gcClassifiers :: Lens' GlueCrawler (Maybe (ValList Text))
+gcClassifiers = lens _glueCrawlerClassifiers (\s a -> s { _glueCrawlerClassifiers = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-databasename
+gcDatabaseName :: Lens' GlueCrawler (Val Text)
+gcDatabaseName = lens _glueCrawlerDatabaseName (\s a -> s { _glueCrawlerDatabaseName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-description
+gcDescription :: Lens' GlueCrawler (Maybe (Val Text))
+gcDescription = lens _glueCrawlerDescription (\s a -> s { _glueCrawlerDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-name
+gcName :: Lens' GlueCrawler (Maybe (Val Text))
+gcName = lens _glueCrawlerName (\s a -> s { _glueCrawlerName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-role
+gcRole :: Lens' GlueCrawler (Val Text)
+gcRole = lens _glueCrawlerRole (\s a -> s { _glueCrawlerRole = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-schedule
+gcSchedule :: Lens' GlueCrawler (Maybe GlueCrawlerSchedule)
+gcSchedule = lens _glueCrawlerSchedule (\s a -> s { _glueCrawlerSchedule = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-schemachangepolicy
+gcSchemaChangePolicy :: Lens' GlueCrawler (Maybe GlueCrawlerSchemaChangePolicy)
+gcSchemaChangePolicy = lens _glueCrawlerSchemaChangePolicy (\s a -> s { _glueCrawlerSchemaChangePolicy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-tableprefix
+gcTablePrefix :: Lens' GlueCrawler (Maybe (Val Text))
+gcTablePrefix = lens _glueCrawlerTablePrefix (\s a -> s { _glueCrawlerTablePrefix = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-targets
+gcTargets :: Lens' GlueCrawler GlueCrawlerTargets
+gcTargets = lens _glueCrawlerTargets (\s a -> s { _glueCrawlerTargets = a })
diff --git a/library-gen/Stratosphere/Resources/GlueDatabase.hs b/library-gen/Stratosphere/Resources/GlueDatabase.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueDatabase.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html
+
+module Stratosphere.Resources.GlueDatabase 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.GlueDatabaseDatabaseInput
+
+-- | Full data type definition for GlueDatabase. See 'glueDatabase' for a more
+-- convenient constructor.
+data GlueDatabase =
+  GlueDatabase
+  { _glueDatabaseCatalogId :: Val Text
+  , _glueDatabaseDatabaseInput :: GlueDatabaseDatabaseInput
+  } deriving (Show, Eq)
+
+instance ToJSON GlueDatabase where
+  toJSON GlueDatabase{..} =
+    object $
+    catMaybes
+    [ (Just . ("CatalogId",) . toJSON) _glueDatabaseCatalogId
+    , (Just . ("DatabaseInput",) . toJSON) _glueDatabaseDatabaseInput
+    ]
+
+instance FromJSON GlueDatabase where
+  parseJSON (Object obj) =
+    GlueDatabase <$>
+      (obj .: "CatalogId") <*>
+      (obj .: "DatabaseInput")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueDatabase' containing required fields as arguments.
+glueDatabase
+  :: Val Text -- ^ 'gdCatalogId'
+  -> GlueDatabaseDatabaseInput -- ^ 'gdDatabaseInput'
+  -> GlueDatabase
+glueDatabase catalogIdarg databaseInputarg =
+  GlueDatabase
+  { _glueDatabaseCatalogId = catalogIdarg
+  , _glueDatabaseDatabaseInput = databaseInputarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html#cfn-glue-database-catalogid
+gdCatalogId :: Lens' GlueDatabase (Val Text)
+gdCatalogId = lens _glueDatabaseCatalogId (\s a -> s { _glueDatabaseCatalogId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-database.html#cfn-glue-database-databaseinput
+gdDatabaseInput :: Lens' GlueDatabase GlueDatabaseDatabaseInput
+gdDatabaseInput = lens _glueDatabaseDatabaseInput (\s a -> s { _glueDatabaseDatabaseInput = a })
diff --git a/library-gen/Stratosphere/Resources/GlueDevEndpoint.hs b/library-gen/Stratosphere/Resources/GlueDevEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueDevEndpoint.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html
+
+module Stratosphere.Resources.GlueDevEndpoint 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 GlueDevEndpoint. See 'glueDevEndpoint' for
+-- a more convenient constructor.
+data GlueDevEndpoint =
+  GlueDevEndpoint
+  { _glueDevEndpointEndpointName :: Maybe (Val Text)
+  , _glueDevEndpointExtraJarsS3Path :: Maybe (Val Text)
+  , _glueDevEndpointExtraPythonLibsS3Path :: Maybe (Val Text)
+  , _glueDevEndpointNumberOfNodes :: Maybe (Val Integer)
+  , _glueDevEndpointPublicKey :: Val Text
+  , _glueDevEndpointRoleArn :: Val Text
+  , _glueDevEndpointSecurityGroupIds :: Maybe (ValList Text)
+  , _glueDevEndpointSubnetId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON GlueDevEndpoint where
+  toJSON GlueDevEndpoint{..} =
+    object $
+    catMaybes
+    [ fmap (("EndpointName",) . toJSON) _glueDevEndpointEndpointName
+    , fmap (("ExtraJarsS3Path",) . toJSON) _glueDevEndpointExtraJarsS3Path
+    , fmap (("ExtraPythonLibsS3Path",) . toJSON) _glueDevEndpointExtraPythonLibsS3Path
+    , fmap (("NumberOfNodes",) . toJSON . fmap Integer') _glueDevEndpointNumberOfNodes
+    , (Just . ("PublicKey",) . toJSON) _glueDevEndpointPublicKey
+    , (Just . ("RoleArn",) . toJSON) _glueDevEndpointRoleArn
+    , fmap (("SecurityGroupIds",) . toJSON) _glueDevEndpointSecurityGroupIds
+    , fmap (("SubnetId",) . toJSON) _glueDevEndpointSubnetId
+    ]
+
+instance FromJSON GlueDevEndpoint where
+  parseJSON (Object obj) =
+    GlueDevEndpoint <$>
+      (obj .:? "EndpointName") <*>
+      (obj .:? "ExtraJarsS3Path") <*>
+      (obj .:? "ExtraPythonLibsS3Path") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "NumberOfNodes") <*>
+      (obj .: "PublicKey") <*>
+      (obj .: "RoleArn") <*>
+      (obj .:? "SecurityGroupIds") <*>
+      (obj .:? "SubnetId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueDevEndpoint' containing required fields as
+-- arguments.
+glueDevEndpoint
+  :: Val Text -- ^ 'gdePublicKey'
+  -> Val Text -- ^ 'gdeRoleArn'
+  -> GlueDevEndpoint
+glueDevEndpoint publicKeyarg roleArnarg =
+  GlueDevEndpoint
+  { _glueDevEndpointEndpointName = Nothing
+  , _glueDevEndpointExtraJarsS3Path = Nothing
+  , _glueDevEndpointExtraPythonLibsS3Path = Nothing
+  , _glueDevEndpointNumberOfNodes = Nothing
+  , _glueDevEndpointPublicKey = publicKeyarg
+  , _glueDevEndpointRoleArn = roleArnarg
+  , _glueDevEndpointSecurityGroupIds = Nothing
+  , _glueDevEndpointSubnetId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-endpointname
+gdeEndpointName :: Lens' GlueDevEndpoint (Maybe (Val Text))
+gdeEndpointName = lens _glueDevEndpointEndpointName (\s a -> s { _glueDevEndpointEndpointName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-extrajarss3path
+gdeExtraJarsS3Path :: Lens' GlueDevEndpoint (Maybe (Val Text))
+gdeExtraJarsS3Path = lens _glueDevEndpointExtraJarsS3Path (\s a -> s { _glueDevEndpointExtraJarsS3Path = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-extrapythonlibss3path
+gdeExtraPythonLibsS3Path :: Lens' GlueDevEndpoint (Maybe (Val Text))
+gdeExtraPythonLibsS3Path = lens _glueDevEndpointExtraPythonLibsS3Path (\s a -> s { _glueDevEndpointExtraPythonLibsS3Path = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-numberofnodes
+gdeNumberOfNodes :: Lens' GlueDevEndpoint (Maybe (Val Integer))
+gdeNumberOfNodes = lens _glueDevEndpointNumberOfNodes (\s a -> s { _glueDevEndpointNumberOfNodes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-publickey
+gdePublicKey :: Lens' GlueDevEndpoint (Val Text)
+gdePublicKey = lens _glueDevEndpointPublicKey (\s a -> s { _glueDevEndpointPublicKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-rolearn
+gdeRoleArn :: Lens' GlueDevEndpoint (Val Text)
+gdeRoleArn = lens _glueDevEndpointRoleArn (\s a -> s { _glueDevEndpointRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-securitygroupids
+gdeSecurityGroupIds :: Lens' GlueDevEndpoint (Maybe (ValList Text))
+gdeSecurityGroupIds = lens _glueDevEndpointSecurityGroupIds (\s a -> s { _glueDevEndpointSecurityGroupIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-devendpoint.html#cfn-glue-devendpoint-subnetid
+gdeSubnetId :: Lens' GlueDevEndpoint (Maybe (Val Text))
+gdeSubnetId = lens _glueDevEndpointSubnetId (\s a -> s { _glueDevEndpointSubnetId = a })
diff --git a/library-gen/Stratosphere/Resources/GlueJob.hs b/library-gen/Stratosphere/Resources/GlueJob.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueJob.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html
+
+module Stratosphere.Resources.GlueJob 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.GlueJobJobCommand
+import Stratosphere.ResourceProperties.GlueJobConnectionsList
+import Stratosphere.ResourceProperties.GlueJobExecutionProperty
+
+-- | Full data type definition for GlueJob. See 'glueJob' for a more
+-- convenient constructor.
+data GlueJob =
+  GlueJob
+  { _glueJobAllocatedCapacity :: Maybe (Val Double)
+  , _glueJobCommand :: GlueJobJobCommand
+  , _glueJobConnections :: Maybe GlueJobConnectionsList
+  , _glueJobDefaultArguments :: Maybe Object
+  , _glueJobDescription :: Maybe (Val Text)
+  , _glueJobExecutionProperty :: Maybe GlueJobExecutionProperty
+  , _glueJobLogUri :: Maybe (Val Text)
+  , _glueJobMaxRetries :: Maybe (Val Double)
+  , _glueJobName :: Maybe (Val Text)
+  , _glueJobRole :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON GlueJob where
+  toJSON GlueJob{..} =
+    object $
+    catMaybes
+    [ fmap (("AllocatedCapacity",) . toJSON . fmap Double') _glueJobAllocatedCapacity
+    , (Just . ("Command",) . toJSON) _glueJobCommand
+    , fmap (("Connections",) . toJSON) _glueJobConnections
+    , fmap (("DefaultArguments",) . toJSON) _glueJobDefaultArguments
+    , fmap (("Description",) . toJSON) _glueJobDescription
+    , fmap (("ExecutionProperty",) . toJSON) _glueJobExecutionProperty
+    , fmap (("LogUri",) . toJSON) _glueJobLogUri
+    , fmap (("MaxRetries",) . toJSON . fmap Double') _glueJobMaxRetries
+    , fmap (("Name",) . toJSON) _glueJobName
+    , (Just . ("Role",) . toJSON) _glueJobRole
+    ]
+
+instance FromJSON GlueJob where
+  parseJSON (Object obj) =
+    GlueJob <$>
+      fmap (fmap (fmap unDouble')) (obj .:? "AllocatedCapacity") <*>
+      (obj .: "Command") <*>
+      (obj .:? "Connections") <*>
+      (obj .:? "DefaultArguments") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "ExecutionProperty") <*>
+      (obj .:? "LogUri") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "MaxRetries") <*>
+      (obj .:? "Name") <*>
+      (obj .: "Role")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueJob' containing required fields as arguments.
+glueJob
+  :: GlueJobJobCommand -- ^ 'gjCommand'
+  -> Val Text -- ^ 'gjRole'
+  -> GlueJob
+glueJob commandarg rolearg =
+  GlueJob
+  { _glueJobAllocatedCapacity = Nothing
+  , _glueJobCommand = commandarg
+  , _glueJobConnections = Nothing
+  , _glueJobDefaultArguments = Nothing
+  , _glueJobDescription = Nothing
+  , _glueJobExecutionProperty = Nothing
+  , _glueJobLogUri = Nothing
+  , _glueJobMaxRetries = Nothing
+  , _glueJobName = Nothing
+  , _glueJobRole = rolearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-allocatedcapacity
+gjAllocatedCapacity :: Lens' GlueJob (Maybe (Val Double))
+gjAllocatedCapacity = lens _glueJobAllocatedCapacity (\s a -> s { _glueJobAllocatedCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-command
+gjCommand :: Lens' GlueJob GlueJobJobCommand
+gjCommand = lens _glueJobCommand (\s a -> s { _glueJobCommand = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-connections
+gjConnections :: Lens' GlueJob (Maybe GlueJobConnectionsList)
+gjConnections = lens _glueJobConnections (\s a -> s { _glueJobConnections = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-defaultarguments
+gjDefaultArguments :: Lens' GlueJob (Maybe Object)
+gjDefaultArguments = lens _glueJobDefaultArguments (\s a -> s { _glueJobDefaultArguments = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-description
+gjDescription :: Lens' GlueJob (Maybe (Val Text))
+gjDescription = lens _glueJobDescription (\s a -> s { _glueJobDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-executionproperty
+gjExecutionProperty :: Lens' GlueJob (Maybe GlueJobExecutionProperty)
+gjExecutionProperty = lens _glueJobExecutionProperty (\s a -> s { _glueJobExecutionProperty = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-loguri
+gjLogUri :: Lens' GlueJob (Maybe (Val Text))
+gjLogUri = lens _glueJobLogUri (\s a -> s { _glueJobLogUri = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-maxretries
+gjMaxRetries :: Lens' GlueJob (Maybe (Val Double))
+gjMaxRetries = lens _glueJobMaxRetries (\s a -> s { _glueJobMaxRetries = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-name
+gjName :: Lens' GlueJob (Maybe (Val Text))
+gjName = lens _glueJobName (\s a -> s { _glueJobName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-job.html#cfn-glue-job-role
+gjRole :: Lens' GlueJob (Val Text)
+gjRole = lens _glueJobRole (\s a -> s { _glueJobRole = a })
diff --git a/library-gen/Stratosphere/Resources/GluePartition.hs b/library-gen/Stratosphere/Resources/GluePartition.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GluePartition.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html
+
+module Stratosphere.Resources.GluePartition 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.GluePartitionPartitionInput
+
+-- | Full data type definition for GluePartition. See 'gluePartition' for a
+-- more convenient constructor.
+data GluePartition =
+  GluePartition
+  { _gluePartitionCatalogId :: Val Text
+  , _gluePartitionDatabaseName :: Val Text
+  , _gluePartitionPartitionInput :: GluePartitionPartitionInput
+  , _gluePartitionTableName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON GluePartition where
+  toJSON GluePartition{..} =
+    object $
+    catMaybes
+    [ (Just . ("CatalogId",) . toJSON) _gluePartitionCatalogId
+    , (Just . ("DatabaseName",) . toJSON) _gluePartitionDatabaseName
+    , (Just . ("PartitionInput",) . toJSON) _gluePartitionPartitionInput
+    , (Just . ("TableName",) . toJSON) _gluePartitionTableName
+    ]
+
+instance FromJSON GluePartition where
+  parseJSON (Object obj) =
+    GluePartition <$>
+      (obj .: "CatalogId") <*>
+      (obj .: "DatabaseName") <*>
+      (obj .: "PartitionInput") <*>
+      (obj .: "TableName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GluePartition' containing required fields as arguments.
+gluePartition
+  :: Val Text -- ^ 'gpCatalogId'
+  -> Val Text -- ^ 'gpDatabaseName'
+  -> GluePartitionPartitionInput -- ^ 'gpPartitionInput'
+  -> Val Text -- ^ 'gpTableName'
+  -> GluePartition
+gluePartition catalogIdarg databaseNamearg partitionInputarg tableNamearg =
+  GluePartition
+  { _gluePartitionCatalogId = catalogIdarg
+  , _gluePartitionDatabaseName = databaseNamearg
+  , _gluePartitionPartitionInput = partitionInputarg
+  , _gluePartitionTableName = tableNamearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html#cfn-glue-partition-catalogid
+gpCatalogId :: Lens' GluePartition (Val Text)
+gpCatalogId = lens _gluePartitionCatalogId (\s a -> s { _gluePartitionCatalogId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html#cfn-glue-partition-databasename
+gpDatabaseName :: Lens' GluePartition (Val Text)
+gpDatabaseName = lens _gluePartitionDatabaseName (\s a -> s { _gluePartitionDatabaseName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html#cfn-glue-partition-partitioninput
+gpPartitionInput :: Lens' GluePartition GluePartitionPartitionInput
+gpPartitionInput = lens _gluePartitionPartitionInput (\s a -> s { _gluePartitionPartitionInput = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-partition.html#cfn-glue-partition-tablename
+gpTableName :: Lens' GluePartition (Val Text)
+gpTableName = lens _gluePartitionTableName (\s a -> s { _gluePartitionTableName = a })
diff --git a/library-gen/Stratosphere/Resources/GlueTable.hs b/library-gen/Stratosphere/Resources/GlueTable.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueTable.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html
+
+module Stratosphere.Resources.GlueTable 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.GlueTableTableInput
+
+-- | Full data type definition for GlueTable. See 'glueTable' for a more
+-- convenient constructor.
+data GlueTable =
+  GlueTable
+  { _glueTableCatalogId :: Val Text
+  , _glueTableDatabaseName :: Val Text
+  , _glueTableTableInput :: GlueTableTableInput
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTable where
+  toJSON GlueTable{..} =
+    object $
+    catMaybes
+    [ (Just . ("CatalogId",) . toJSON) _glueTableCatalogId
+    , (Just . ("DatabaseName",) . toJSON) _glueTableDatabaseName
+    , (Just . ("TableInput",) . toJSON) _glueTableTableInput
+    ]
+
+instance FromJSON GlueTable where
+  parseJSON (Object obj) =
+    GlueTable <$>
+      (obj .: "CatalogId") <*>
+      (obj .: "DatabaseName") <*>
+      (obj .: "TableInput")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTable' containing required fields as arguments.
+glueTable
+  :: Val Text -- ^ 'gtCatalogId'
+  -> Val Text -- ^ 'gtDatabaseName'
+  -> GlueTableTableInput -- ^ 'gtTableInput'
+  -> GlueTable
+glueTable catalogIdarg databaseNamearg tableInputarg =
+  GlueTable
+  { _glueTableCatalogId = catalogIdarg
+  , _glueTableDatabaseName = databaseNamearg
+  , _glueTableTableInput = tableInputarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html#cfn-glue-table-catalogid
+gtCatalogId :: Lens' GlueTable (Val Text)
+gtCatalogId = lens _glueTableCatalogId (\s a -> s { _glueTableCatalogId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html#cfn-glue-table-databasename
+gtDatabaseName :: Lens' GlueTable (Val Text)
+gtDatabaseName = lens _glueTableDatabaseName (\s a -> s { _glueTableDatabaseName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-table.html#cfn-glue-table-tableinput
+gtTableInput :: Lens' GlueTable GlueTableTableInput
+gtTableInput = lens _glueTableTableInput (\s a -> s { _glueTableTableInput = a })
diff --git a/library-gen/Stratosphere/Resources/GlueTrigger.hs b/library-gen/Stratosphere/Resources/GlueTrigger.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/GlueTrigger.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html
+
+module Stratosphere.Resources.GlueTrigger 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.GlueTriggerAction
+import Stratosphere.ResourceProperties.GlueTriggerPredicate
+
+-- | Full data type definition for GlueTrigger. See 'glueTrigger' for a more
+-- convenient constructor.
+data GlueTrigger =
+  GlueTrigger
+  { _glueTriggerActions :: [GlueTriggerAction]
+  , _glueTriggerDescription :: Maybe (Val Text)
+  , _glueTriggerName :: Maybe (Val Text)
+  , _glueTriggerPredicate :: Maybe GlueTriggerPredicate
+  , _glueTriggerSchedule :: Maybe (Val Text)
+  , _glueTriggerType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON GlueTrigger where
+  toJSON GlueTrigger{..} =
+    object $
+    catMaybes
+    [ (Just . ("Actions",) . toJSON) _glueTriggerActions
+    , fmap (("Description",) . toJSON) _glueTriggerDescription
+    , fmap (("Name",) . toJSON) _glueTriggerName
+    , fmap (("Predicate",) . toJSON) _glueTriggerPredicate
+    , fmap (("Schedule",) . toJSON) _glueTriggerSchedule
+    , (Just . ("Type",) . toJSON) _glueTriggerType
+    ]
+
+instance FromJSON GlueTrigger where
+  parseJSON (Object obj) =
+    GlueTrigger <$>
+      (obj .: "Actions") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "Predicate") <*>
+      (obj .:? "Schedule") <*>
+      (obj .: "Type")
+  parseJSON _ = mempty
+
+-- | Constructor for 'GlueTrigger' containing required fields as arguments.
+glueTrigger
+  :: [GlueTriggerAction] -- ^ 'gtActions'
+  -> Val Text -- ^ 'gtType'
+  -> GlueTrigger
+glueTrigger actionsarg typearg =
+  GlueTrigger
+  { _glueTriggerActions = actionsarg
+  , _glueTriggerDescription = Nothing
+  , _glueTriggerName = Nothing
+  , _glueTriggerPredicate = Nothing
+  , _glueTriggerSchedule = Nothing
+  , _glueTriggerType = typearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html#cfn-glue-trigger-actions
+gtActions :: Lens' GlueTrigger [GlueTriggerAction]
+gtActions = lens _glueTriggerActions (\s a -> s { _glueTriggerActions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html#cfn-glue-trigger-description
+gtDescription :: Lens' GlueTrigger (Maybe (Val Text))
+gtDescription = lens _glueTriggerDescription (\s a -> s { _glueTriggerDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html#cfn-glue-trigger-name
+gtName :: Lens' GlueTrigger (Maybe (Val Text))
+gtName = lens _glueTriggerName (\s a -> s { _glueTriggerName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html#cfn-glue-trigger-predicate
+gtPredicate :: Lens' GlueTrigger (Maybe GlueTriggerPredicate)
+gtPredicate = lens _glueTriggerPredicate (\s a -> s { _glueTriggerPredicate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html#cfn-glue-trigger-schedule
+gtSchedule :: Lens' GlueTrigger (Maybe (Val Text))
+gtSchedule = lens _glueTriggerSchedule (\s a -> s { _glueTriggerSchedule = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-trigger.html#cfn-glue-trigger-type
+gtType :: Lens' GlueTrigger (Val Text)
+gtType = lens _glueTriggerType (\s a -> s { _glueTriggerType = a })
diff --git a/library-gen/Stratosphere/Resources/LambdaAlias.hs b/library-gen/Stratosphere/Resources/LambdaAlias.hs
--- a/library-gen/Stratosphere/Resources/LambdaAlias.hs
+++ b/library-gen/Stratosphere/Resources/LambdaAlias.hs
@@ -13,7 +13,7 @@
 import Data.Text
 
 import Stratosphere.Values
-
+import Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration
 
 -- | Full data type definition for LambdaAlias. See 'lambdaAlias' for a more
 -- convenient constructor.
@@ -23,6 +23,7 @@
   , _lambdaAliasFunctionName :: Val Text
   , _lambdaAliasFunctionVersion :: Val Text
   , _lambdaAliasName :: Val Text
+  , _lambdaAliasRoutingConfig :: Maybe LambdaAliasAliasRoutingConfiguration
   } deriving (Show, Eq)
 
 instance ToJSON LambdaAlias where
@@ -33,6 +34,7 @@
     , (Just . ("FunctionName",) . toJSON) _lambdaAliasFunctionName
     , (Just . ("FunctionVersion",) . toJSON) _lambdaAliasFunctionVersion
     , (Just . ("Name",) . toJSON) _lambdaAliasName
+    , fmap (("RoutingConfig",) . toJSON) _lambdaAliasRoutingConfig
     ]
 
 instance FromJSON LambdaAlias where
@@ -41,7 +43,8 @@
       (obj .:? "Description") <*>
       (obj .: "FunctionName") <*>
       (obj .: "FunctionVersion") <*>
-      (obj .: "Name")
+      (obj .: "Name") <*>
+      (obj .:? "RoutingConfig")
   parseJSON _ = mempty
 
 -- | Constructor for 'LambdaAlias' containing required fields as arguments.
@@ -56,6 +59,7 @@
   , _lambdaAliasFunctionName = functionNamearg
   , _lambdaAliasFunctionVersion = functionVersionarg
   , _lambdaAliasName = namearg
+  , _lambdaAliasRoutingConfig = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-description
@@ -73,3 +77,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-name
 laName :: Lens' LambdaAlias (Val Text)
 laName = lens _lambdaAliasName (\s a -> s { _lambdaAliasName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-routingconfig
+laRoutingConfig :: Lens' LambdaAlias (Maybe LambdaAliasAliasRoutingConfiguration)
+laRoutingConfig = lens _lambdaAliasRoutingConfig (\s a -> s { _lambdaAliasRoutingConfig = a })
diff --git a/library-gen/Stratosphere/Resources/OpsWorksLayer.hs b/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksLayer.hs
@@ -16,6 +16,7 @@
 import Stratosphere.ResourceProperties.OpsWorksLayerRecipes
 import Stratosphere.ResourceProperties.OpsWorksLayerLifecycleEventConfiguration
 import Stratosphere.ResourceProperties.OpsWorksLayerLoadBasedAutoScaling
+import Stratosphere.ResourceProperties.Tag
 import Stratosphere.ResourceProperties.OpsWorksLayerVolumeConfiguration
 
 -- | Full data type definition for OpsWorksLayer. See 'opsWorksLayer' for a
@@ -37,6 +38,7 @@
   , _opsWorksLayerPackages :: Maybe (ValList Text)
   , _opsWorksLayerShortname :: Val Text
   , _opsWorksLayerStackId :: Val Text
+  , _opsWorksLayerTags :: Maybe [Tag]
   , _opsWorksLayerType :: Val Text
   , _opsWorksLayerUseEbsOptimizedInstances :: Maybe (Val Bool)
   , _opsWorksLayerVolumeConfigurations :: Maybe [OpsWorksLayerVolumeConfiguration]
@@ -61,6 +63,7 @@
     , fmap (("Packages",) . toJSON) _opsWorksLayerPackages
     , (Just . ("Shortname",) . toJSON) _opsWorksLayerShortname
     , (Just . ("StackId",) . toJSON) _opsWorksLayerStackId
+    , fmap (("Tags",) . toJSON) _opsWorksLayerTags
     , (Just . ("Type",) . toJSON) _opsWorksLayerType
     , fmap (("UseEbsOptimizedInstances",) . toJSON . fmap Bool') _opsWorksLayerUseEbsOptimizedInstances
     , fmap (("VolumeConfigurations",) . toJSON) _opsWorksLayerVolumeConfigurations
@@ -84,6 +87,7 @@
       (obj .:? "Packages") <*>
       (obj .: "Shortname") <*>
       (obj .: "StackId") <*>
+      (obj .:? "Tags") <*>
       (obj .: "Type") <*>
       fmap (fmap (fmap unBool')) (obj .:? "UseEbsOptimizedInstances") <*>
       (obj .:? "VolumeConfigurations")
@@ -116,6 +120,7 @@
   , _opsWorksLayerPackages = Nothing
   , _opsWorksLayerShortname = shortnamearg
   , _opsWorksLayerStackId = stackIdarg
+  , _opsWorksLayerTags = Nothing
   , _opsWorksLayerType = typearg
   , _opsWorksLayerUseEbsOptimizedInstances = Nothing
   , _opsWorksLayerVolumeConfigurations = Nothing
@@ -180,6 +185,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-stackid
 owlStackId :: Lens' OpsWorksLayer (Val Text)
 owlStackId = lens _opsWorksLayerStackId (\s a -> s { _opsWorksLayerStackId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-tags
+owlTags :: Lens' OpsWorksLayer (Maybe [Tag])
+owlTags = lens _opsWorksLayerTags (\s a -> s { _opsWorksLayerTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html#cfn-opsworks-layer-type
 owlType :: Lens' OpsWorksLayer (Val Text)
diff --git a/library-gen/Stratosphere/Resources/OpsWorksStack.hs b/library-gen/Stratosphere/Resources/OpsWorksStack.hs
--- a/library-gen/Stratosphere/Resources/OpsWorksStack.hs
+++ b/library-gen/Stratosphere/Resources/OpsWorksStack.hs
@@ -18,6 +18,7 @@
 import Stratosphere.ResourceProperties.OpsWorksStackSource
 import Stratosphere.ResourceProperties.OpsWorksStackElasticIp
 import Stratosphere.ResourceProperties.OpsWorksStackRdsDbInstance
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for OpsWorksStack. See 'opsWorksStack' for a
 -- more convenient constructor.
@@ -44,6 +45,7 @@
   , _opsWorksStackRdsDbInstances :: Maybe [OpsWorksStackRdsDbInstance]
   , _opsWorksStackServiceRoleArn :: Val Text
   , _opsWorksStackSourceStackId :: Maybe (Val Text)
+  , _opsWorksStackTags :: Maybe [Tag]
   , _opsWorksStackUseCustomCookbooks :: Maybe (Val Bool)
   , _opsWorksStackUseOpsworksSecurityGroups :: Maybe (Val Bool)
   , _opsWorksStackVpcId :: Maybe (Val Text)
@@ -74,6 +76,7 @@
     , fmap (("RdsDbInstances",) . toJSON) _opsWorksStackRdsDbInstances
     , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksStackServiceRoleArn
     , fmap (("SourceStackId",) . toJSON) _opsWorksStackSourceStackId
+    , fmap (("Tags",) . toJSON) _opsWorksStackTags
     , fmap (("UseCustomCookbooks",) . toJSON . fmap Bool') _opsWorksStackUseCustomCookbooks
     , fmap (("UseOpsworksSecurityGroups",) . toJSON . fmap Bool') _opsWorksStackUseOpsworksSecurityGroups
     , fmap (("VpcId",) . toJSON) _opsWorksStackVpcId
@@ -103,6 +106,7 @@
       (obj .:? "RdsDbInstances") <*>
       (obj .: "ServiceRoleArn") <*>
       (obj .:? "SourceStackId") <*>
+      (obj .:? "Tags") <*>
       fmap (fmap (fmap unBool')) (obj .:? "UseCustomCookbooks") <*>
       fmap (fmap (fmap unBool')) (obj .:? "UseOpsworksSecurityGroups") <*>
       (obj .:? "VpcId")
@@ -137,6 +141,7 @@
   , _opsWorksStackRdsDbInstances = Nothing
   , _opsWorksStackServiceRoleArn = serviceRoleArnarg
   , _opsWorksStackSourceStackId = Nothing
+  , _opsWorksStackTags = Nothing
   , _opsWorksStackUseCustomCookbooks = Nothing
   , _opsWorksStackUseOpsworksSecurityGroups = Nothing
   , _opsWorksStackVpcId = Nothing
@@ -225,6 +230,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-sourcestackid
 owsSourceStackId :: Lens' OpsWorksStack (Maybe (Val Text))
 owsSourceStackId = lens _opsWorksStackSourceStackId (\s a -> s { _opsWorksStackSourceStackId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-tags
+owsTags :: Lens' OpsWorksStack (Maybe [Tag])
+owsTags = lens _opsWorksStackTags (\s a -> s { _opsWorksStackTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#usecustcookbooks
 owsUseCustomCookbooks :: Lens' OpsWorksStack (Maybe (Val Bool))
diff --git a/library-gen/Stratosphere/Resources/SSMMaintenanceWindowTask.hs b/library-gen/Stratosphere/Resources/SSMMaintenanceWindowTask.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SSMMaintenanceWindowTask.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html
+
+module Stratosphere.Resources.SSMMaintenanceWindowTask 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.SSMMaintenanceWindowTaskLoggingInfo
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTarget
+import Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTaskInvocationParameters
+
+-- | Full data type definition for SSMMaintenanceWindowTask. See
+-- 'ssmMaintenanceWindowTask' for a more convenient constructor.
+data SSMMaintenanceWindowTask =
+  SSMMaintenanceWindowTask
+  { _sSMMaintenanceWindowTaskDescription :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskLoggingInfo :: Maybe SSMMaintenanceWindowTaskLoggingInfo
+  , _sSMMaintenanceWindowTaskMaxConcurrency :: Val Text
+  , _sSMMaintenanceWindowTaskMaxErrors :: Val Text
+  , _sSMMaintenanceWindowTaskName :: Maybe (Val Text)
+  , _sSMMaintenanceWindowTaskPriority :: Val Integer
+  , _sSMMaintenanceWindowTaskServiceRoleArn :: Val Text
+  , _sSMMaintenanceWindowTaskTargets :: [SSMMaintenanceWindowTaskTarget]
+  , _sSMMaintenanceWindowTaskTaskArn :: Val Text
+  , _sSMMaintenanceWindowTaskTaskInvocationParameters :: Maybe SSMMaintenanceWindowTaskTaskInvocationParameters
+  , _sSMMaintenanceWindowTaskTaskParameters :: Maybe Object
+  , _sSMMaintenanceWindowTaskTaskType :: Val Text
+  , _sSMMaintenanceWindowTaskWindowId :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMMaintenanceWindowTask where
+  toJSON SSMMaintenanceWindowTask{..} =
+    object $
+    catMaybes
+    [ fmap (("Description",) . toJSON) _sSMMaintenanceWindowTaskDescription
+    , fmap (("LoggingInfo",) . toJSON) _sSMMaintenanceWindowTaskLoggingInfo
+    , (Just . ("MaxConcurrency",) . toJSON) _sSMMaintenanceWindowTaskMaxConcurrency
+    , (Just . ("MaxErrors",) . toJSON) _sSMMaintenanceWindowTaskMaxErrors
+    , fmap (("Name",) . toJSON) _sSMMaintenanceWindowTaskName
+    , (Just . ("Priority",) . toJSON . fmap Integer') _sSMMaintenanceWindowTaskPriority
+    , (Just . ("ServiceRoleArn",) . toJSON) _sSMMaintenanceWindowTaskServiceRoleArn
+    , (Just . ("Targets",) . toJSON) _sSMMaintenanceWindowTaskTargets
+    , (Just . ("TaskArn",) . toJSON) _sSMMaintenanceWindowTaskTaskArn
+    , fmap (("TaskInvocationParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskInvocationParameters
+    , fmap (("TaskParameters",) . toJSON) _sSMMaintenanceWindowTaskTaskParameters
+    , (Just . ("TaskType",) . toJSON) _sSMMaintenanceWindowTaskTaskType
+    , fmap (("WindowId",) . toJSON) _sSMMaintenanceWindowTaskWindowId
+    ]
+
+instance FromJSON SSMMaintenanceWindowTask where
+  parseJSON (Object obj) =
+    SSMMaintenanceWindowTask <$>
+      (obj .:? "Description") <*>
+      (obj .:? "LoggingInfo") <*>
+      (obj .: "MaxConcurrency") <*>
+      (obj .: "MaxErrors") <*>
+      (obj .:? "Name") <*>
+      fmap (fmap unInteger') (obj .: "Priority") <*>
+      (obj .: "ServiceRoleArn") <*>
+      (obj .: "Targets") <*>
+      (obj .: "TaskArn") <*>
+      (obj .:? "TaskInvocationParameters") <*>
+      (obj .:? "TaskParameters") <*>
+      (obj .: "TaskType") <*>
+      (obj .:? "WindowId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMMaintenanceWindowTask' containing required fields as
+-- arguments.
+ssmMaintenanceWindowTask
+  :: Val Text -- ^ 'ssmmwtMaxConcurrency'
+  -> Val Text -- ^ 'ssmmwtMaxErrors'
+  -> Val Integer -- ^ 'ssmmwtPriority'
+  -> Val Text -- ^ 'ssmmwtServiceRoleArn'
+  -> [SSMMaintenanceWindowTaskTarget] -- ^ 'ssmmwtTargets'
+  -> Val Text -- ^ 'ssmmwtTaskArn'
+  -> Val Text -- ^ 'ssmmwtTaskType'
+  -> SSMMaintenanceWindowTask
+ssmMaintenanceWindowTask maxConcurrencyarg maxErrorsarg priorityarg serviceRoleArnarg targetsarg taskArnarg taskTypearg =
+  SSMMaintenanceWindowTask
+  { _sSMMaintenanceWindowTaskDescription = Nothing
+  , _sSMMaintenanceWindowTaskLoggingInfo = Nothing
+  , _sSMMaintenanceWindowTaskMaxConcurrency = maxConcurrencyarg
+  , _sSMMaintenanceWindowTaskMaxErrors = maxErrorsarg
+  , _sSMMaintenanceWindowTaskName = Nothing
+  , _sSMMaintenanceWindowTaskPriority = priorityarg
+  , _sSMMaintenanceWindowTaskServiceRoleArn = serviceRoleArnarg
+  , _sSMMaintenanceWindowTaskTargets = targetsarg
+  , _sSMMaintenanceWindowTaskTaskArn = taskArnarg
+  , _sSMMaintenanceWindowTaskTaskInvocationParameters = Nothing
+  , _sSMMaintenanceWindowTaskTaskParameters = Nothing
+  , _sSMMaintenanceWindowTaskTaskType = taskTypearg
+  , _sSMMaintenanceWindowTaskWindowId = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-description
+ssmmwtDescription :: Lens' SSMMaintenanceWindowTask (Maybe (Val Text))
+ssmmwtDescription = lens _sSMMaintenanceWindowTaskDescription (\s a -> s { _sSMMaintenanceWindowTaskDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-logginginfo
+ssmmwtLoggingInfo :: Lens' SSMMaintenanceWindowTask (Maybe SSMMaintenanceWindowTaskLoggingInfo)
+ssmmwtLoggingInfo = lens _sSMMaintenanceWindowTaskLoggingInfo (\s a -> s { _sSMMaintenanceWindowTaskLoggingInfo = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-maxconcurrency
+ssmmwtMaxConcurrency :: Lens' SSMMaintenanceWindowTask (Val Text)
+ssmmwtMaxConcurrency = lens _sSMMaintenanceWindowTaskMaxConcurrency (\s a -> s { _sSMMaintenanceWindowTaskMaxConcurrency = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-maxerrors
+ssmmwtMaxErrors :: Lens' SSMMaintenanceWindowTask (Val Text)
+ssmmwtMaxErrors = lens _sSMMaintenanceWindowTaskMaxErrors (\s a -> s { _sSMMaintenanceWindowTaskMaxErrors = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-name
+ssmmwtName :: Lens' SSMMaintenanceWindowTask (Maybe (Val Text))
+ssmmwtName = lens _sSMMaintenanceWindowTaskName (\s a -> s { _sSMMaintenanceWindowTaskName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-priority
+ssmmwtPriority :: Lens' SSMMaintenanceWindowTask (Val Integer)
+ssmmwtPriority = lens _sSMMaintenanceWindowTaskPriority (\s a -> s { _sSMMaintenanceWindowTaskPriority = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-servicerolearn
+ssmmwtServiceRoleArn :: Lens' SSMMaintenanceWindowTask (Val Text)
+ssmmwtServiceRoleArn = lens _sSMMaintenanceWindowTaskServiceRoleArn (\s a -> s { _sSMMaintenanceWindowTaskServiceRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-targets
+ssmmwtTargets :: Lens' SSMMaintenanceWindowTask [SSMMaintenanceWindowTaskTarget]
+ssmmwtTargets = lens _sSMMaintenanceWindowTaskTargets (\s a -> s { _sSMMaintenanceWindowTaskTargets = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-taskarn
+ssmmwtTaskArn :: Lens' SSMMaintenanceWindowTask (Val Text)
+ssmmwtTaskArn = lens _sSMMaintenanceWindowTaskTaskArn (\s a -> s { _sSMMaintenanceWindowTaskTaskArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-taskinvocationparameters
+ssmmwtTaskInvocationParameters :: Lens' SSMMaintenanceWindowTask (Maybe SSMMaintenanceWindowTaskTaskInvocationParameters)
+ssmmwtTaskInvocationParameters = lens _sSMMaintenanceWindowTaskTaskInvocationParameters (\s a -> s { _sSMMaintenanceWindowTaskTaskInvocationParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-taskparameters
+ssmmwtTaskParameters :: Lens' SSMMaintenanceWindowTask (Maybe Object)
+ssmmwtTaskParameters = lens _sSMMaintenanceWindowTaskTaskParameters (\s a -> s { _sSMMaintenanceWindowTaskTaskParameters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-tasktype
+ssmmwtTaskType :: Lens' SSMMaintenanceWindowTask (Val Text)
+ssmmwtTaskType = lens _sSMMaintenanceWindowTaskTaskType (\s a -> s { _sSMMaintenanceWindowTaskTaskType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-maintenancewindowtask.html#cfn-ssm-maintenancewindowtask-windowid
+ssmmwtWindowId :: Lens' SSMMaintenanceWindowTask (Maybe (Val Text))
+ssmmwtWindowId = lens _sSMMaintenanceWindowTaskWindowId (\s a -> s { _sSMMaintenanceWindowTaskWindowId = a })
diff --git a/library-gen/Stratosphere/Resources/SSMPatchBaseline.hs b/library-gen/Stratosphere/Resources/SSMPatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/SSMPatchBaseline.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html
+
+module Stratosphere.Resources.SSMPatchBaseline 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.SSMPatchBaselineRuleGroup
+import Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilterGroup
+
+-- | Full data type definition for SSMPatchBaseline. See 'ssmPatchBaseline'
+-- for a more convenient constructor.
+data SSMPatchBaseline =
+  SSMPatchBaseline
+  { _sSMPatchBaselineApprovalRules :: Maybe SSMPatchBaselineRuleGroup
+  , _sSMPatchBaselineApprovedPatches :: Maybe (ValList Text)
+  , _sSMPatchBaselineApprovedPatchesComplianceLevel :: Maybe (Val Text)
+  , _sSMPatchBaselineDescription :: Maybe (Val Text)
+  , _sSMPatchBaselineGlobalFilters :: Maybe SSMPatchBaselinePatchFilterGroup
+  , _sSMPatchBaselineName :: Val Text
+  , _sSMPatchBaselineOperatingSystem :: Maybe (Val Text)
+  , _sSMPatchBaselinePatchGroups :: Maybe (ValList Text)
+  , _sSMPatchBaselineRejectedPatches :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON SSMPatchBaseline where
+  toJSON SSMPatchBaseline{..} =
+    object $
+    catMaybes
+    [ fmap (("ApprovalRules",) . toJSON) _sSMPatchBaselineApprovalRules
+    , fmap (("ApprovedPatches",) . toJSON) _sSMPatchBaselineApprovedPatches
+    , fmap (("ApprovedPatchesComplianceLevel",) . toJSON) _sSMPatchBaselineApprovedPatchesComplianceLevel
+    , fmap (("Description",) . toJSON) _sSMPatchBaselineDescription
+    , fmap (("GlobalFilters",) . toJSON) _sSMPatchBaselineGlobalFilters
+    , (Just . ("Name",) . toJSON) _sSMPatchBaselineName
+    , fmap (("OperatingSystem",) . toJSON) _sSMPatchBaselineOperatingSystem
+    , fmap (("PatchGroups",) . toJSON) _sSMPatchBaselinePatchGroups
+    , fmap (("RejectedPatches",) . toJSON) _sSMPatchBaselineRejectedPatches
+    ]
+
+instance FromJSON SSMPatchBaseline where
+  parseJSON (Object obj) =
+    SSMPatchBaseline <$>
+      (obj .:? "ApprovalRules") <*>
+      (obj .:? "ApprovedPatches") <*>
+      (obj .:? "ApprovedPatchesComplianceLevel") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "GlobalFilters") <*>
+      (obj .: "Name") <*>
+      (obj .:? "OperatingSystem") <*>
+      (obj .:? "PatchGroups") <*>
+      (obj .:? "RejectedPatches")
+  parseJSON _ = mempty
+
+-- | Constructor for 'SSMPatchBaseline' containing required fields as
+-- arguments.
+ssmPatchBaseline
+  :: Val Text -- ^ 'ssmpbName'
+  -> SSMPatchBaseline
+ssmPatchBaseline namearg =
+  SSMPatchBaseline
+  { _sSMPatchBaselineApprovalRules = Nothing
+  , _sSMPatchBaselineApprovedPatches = Nothing
+  , _sSMPatchBaselineApprovedPatchesComplianceLevel = Nothing
+  , _sSMPatchBaselineDescription = Nothing
+  , _sSMPatchBaselineGlobalFilters = Nothing
+  , _sSMPatchBaselineName = namearg
+  , _sSMPatchBaselineOperatingSystem = Nothing
+  , _sSMPatchBaselinePatchGroups = Nothing
+  , _sSMPatchBaselineRejectedPatches = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-approvalrules
+ssmpbApprovalRules :: Lens' SSMPatchBaseline (Maybe SSMPatchBaselineRuleGroup)
+ssmpbApprovalRules = lens _sSMPatchBaselineApprovalRules (\s a -> s { _sSMPatchBaselineApprovalRules = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-approvedpatches
+ssmpbApprovedPatches :: Lens' SSMPatchBaseline (Maybe (ValList Text))
+ssmpbApprovedPatches = lens _sSMPatchBaselineApprovedPatches (\s a -> s { _sSMPatchBaselineApprovedPatches = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-approvedpatchescompliancelevel
+ssmpbApprovedPatchesComplianceLevel :: Lens' SSMPatchBaseline (Maybe (Val Text))
+ssmpbApprovedPatchesComplianceLevel = lens _sSMPatchBaselineApprovedPatchesComplianceLevel (\s a -> s { _sSMPatchBaselineApprovedPatchesComplianceLevel = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-description
+ssmpbDescription :: Lens' SSMPatchBaseline (Maybe (Val Text))
+ssmpbDescription = lens _sSMPatchBaselineDescription (\s a -> s { _sSMPatchBaselineDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-globalfilters
+ssmpbGlobalFilters :: Lens' SSMPatchBaseline (Maybe SSMPatchBaselinePatchFilterGroup)
+ssmpbGlobalFilters = lens _sSMPatchBaselineGlobalFilters (\s a -> s { _sSMPatchBaselineGlobalFilters = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-name
+ssmpbName :: Lens' SSMPatchBaseline (Val Text)
+ssmpbName = lens _sSMPatchBaselineName (\s a -> s { _sSMPatchBaselineName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-operatingsystem
+ssmpbOperatingSystem :: Lens' SSMPatchBaseline (Maybe (Val Text))
+ssmpbOperatingSystem = lens _sSMPatchBaselineOperatingSystem (\s a -> s { _sSMPatchBaselineOperatingSystem = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-patchgroups
+ssmpbPatchGroups :: Lens' SSMPatchBaseline (Maybe (ValList Text))
+ssmpbPatchGroups = lens _sSMPatchBaselinePatchGroups (\s a -> s { _sSMPatchBaselinePatchGroups = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-patchbaseline.html#cfn-ssm-patchbaseline-rejectedpatches
+ssmpbRejectedPatches :: Lens' SSMPatchBaseline (Maybe (ValList Text))
+ssmpbRejectedPatches = lens _sSMPatchBaselineRejectedPatches (\s a -> s { _sSMPatchBaselineRejectedPatches = a })
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,3 +1,3 @@
-resolver: nightly-2017-07-31
+resolver: nightly-2017-10-11
 packages:
   - '.'
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.10.0
+version:        0.11.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -78,6 +78,7 @@
       Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepAdjustment
       Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration
       Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration
+      Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty
@@ -98,6 +99,7 @@
       Stratosphere.ResourceProperties.BatchJobDefinitionVolumesHost
       Stratosphere.ResourceProperties.BatchJobQueueComputeEnvironmentOrder
       Stratosphere.ResourceProperties.CertificateManagerCertificateDomainValidationOption
+      Stratosphere.ResourceProperties.CloudFrontCloudFrontOriginAccessIdentityCloudFrontOriginAccessIdentityConfig
       Stratosphere.ResourceProperties.CloudFrontDistributionCacheBehavior
       Stratosphere.ResourceProperties.CloudFrontDistributionCookies
       Stratosphere.ResourceProperties.CloudFrontDistributionCustomErrorResponse
@@ -106,12 +108,19 @@
       Stratosphere.ResourceProperties.CloudFrontDistributionDistributionConfig
       Stratosphere.ResourceProperties.CloudFrontDistributionForwardedValues
       Stratosphere.ResourceProperties.CloudFrontDistributionGeoRestriction
+      Stratosphere.ResourceProperties.CloudFrontDistributionLambdaFunctionAssociation
+      Stratosphere.ResourceProperties.CloudFrontDistributionLegacyCustomOrigin
+      Stratosphere.ResourceProperties.CloudFrontDistributionLegacyS3Origin
       Stratosphere.ResourceProperties.CloudFrontDistributionLogging
       Stratosphere.ResourceProperties.CloudFrontDistributionOrigin
       Stratosphere.ResourceProperties.CloudFrontDistributionOriginCustomHeader
       Stratosphere.ResourceProperties.CloudFrontDistributionRestrictions
       Stratosphere.ResourceProperties.CloudFrontDistributionS3OriginConfig
       Stratosphere.ResourceProperties.CloudFrontDistributionViewerCertificate
+      Stratosphere.ResourceProperties.CloudFrontStreamingDistributionLogging
+      Stratosphere.ResourceProperties.CloudFrontStreamingDistributionS3Origin
+      Stratosphere.ResourceProperties.CloudFrontStreamingDistributionStreamingDistributionConfig
+      Stratosphere.ResourceProperties.CloudFrontStreamingDistributionTrustedSigners
       Stratosphere.ResourceProperties.CloudTrailTrailDataResource
       Stratosphere.ResourceProperties.CloudTrailTrailEventSelector
       Stratosphere.ResourceProperties.CloudWatchAlarmDimension
@@ -134,6 +143,7 @@
       Stratosphere.ResourceProperties.CodeDeployDeploymentGroupRevisionLocation
       Stratosphere.ResourceProperties.CodeDeployDeploymentGroupS3Location
       Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTagFilter
+      Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTargetGroupInfo
       Stratosphere.ResourceProperties.CodeDeployDeploymentGroupTriggerConfig
       Stratosphere.ResourceProperties.CodePipelineCustomActionTypeArtifactDetails
       Stratosphere.ResourceProperties.CodePipelineCustomActionTypeConfigurationProperties
@@ -192,6 +202,7 @@
       Stratosphere.ResourceProperties.EC2InstanceAssociationParameter
       Stratosphere.ResourceProperties.EC2InstanceBlockDeviceMapping
       Stratosphere.ResourceProperties.EC2InstanceEbs
+      Stratosphere.ResourceProperties.EC2InstanceElasticGpuSpecification
       Stratosphere.ResourceProperties.EC2InstanceInstanceIpv6Address
       Stratosphere.ResourceProperties.EC2InstanceNetworkInterface
       Stratosphere.ResourceProperties.EC2InstanceNoDevice
@@ -215,6 +226,7 @@
       Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetMonitoring
       Stratosphere.ResourceProperties.EC2SpotFleetSpotFleetRequestConfigData
       Stratosphere.ResourceProperties.EC2SpotFleetSpotPlacement
+      Stratosphere.ResourceProperties.EC2VPNConnectionVpnTunnelOptionsSpecification
       Stratosphere.ResourceProperties.ECSServiceDeploymentConfiguration
       Stratosphere.ResourceProperties.ECSServiceLoadBalancer
       Stratosphere.ResourceProperties.ECSServicePlacementConstraint
@@ -314,6 +326,33 @@
       Stratosphere.ResourceProperties.GameLiftAliasRoutingStrategy
       Stratosphere.ResourceProperties.GameLiftBuildS3Location
       Stratosphere.ResourceProperties.GameLiftFleetIpPermission
+      Stratosphere.ResourceProperties.GlueClassifierGrokClassifier
+      Stratosphere.ResourceProperties.GlueConnectionConnectionInput
+      Stratosphere.ResourceProperties.GlueConnectionPhysicalConnectionRequirements
+      Stratosphere.ResourceProperties.GlueCrawlerJdbcTarget
+      Stratosphere.ResourceProperties.GlueCrawlerS3Target
+      Stratosphere.ResourceProperties.GlueCrawlerSchedule
+      Stratosphere.ResourceProperties.GlueCrawlerSchemaChangePolicy
+      Stratosphere.ResourceProperties.GlueCrawlerTargets
+      Stratosphere.ResourceProperties.GlueDatabaseDatabaseInput
+      Stratosphere.ResourceProperties.GlueJobConnectionsList
+      Stratosphere.ResourceProperties.GlueJobExecutionProperty
+      Stratosphere.ResourceProperties.GlueJobJobCommand
+      Stratosphere.ResourceProperties.GluePartitionColumn
+      Stratosphere.ResourceProperties.GluePartitionOrder
+      Stratosphere.ResourceProperties.GluePartitionPartitionInput
+      Stratosphere.ResourceProperties.GluePartitionSerdeInfo
+      Stratosphere.ResourceProperties.GluePartitionSkewedInfo
+      Stratosphere.ResourceProperties.GluePartitionStorageDescriptor
+      Stratosphere.ResourceProperties.GlueTableColumn
+      Stratosphere.ResourceProperties.GlueTableOrder
+      Stratosphere.ResourceProperties.GlueTableSerdeInfo
+      Stratosphere.ResourceProperties.GlueTableSkewedInfo
+      Stratosphere.ResourceProperties.GlueTableStorageDescriptor
+      Stratosphere.ResourceProperties.GlueTableTableInput
+      Stratosphere.ResourceProperties.GlueTriggerAction
+      Stratosphere.ResourceProperties.GlueTriggerCondition
+      Stratosphere.ResourceProperties.GlueTriggerPredicate
       Stratosphere.ResourceProperties.IAMGroupPolicy
       Stratosphere.ResourceProperties.IAMRolePolicy
       Stratosphere.ResourceProperties.IAMUserLoginProfile
@@ -336,7 +375,9 @@
       Stratosphere.ResourceProperties.IoTTopicRuleTopicRulePayload
       Stratosphere.ResourceProperties.KinesisAnalyticsApplicationCSVMappingParameters
       Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInput
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputLambdaProcessor
       Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputParallelism
+      Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputProcessingConfiguration
       Stratosphere.ResourceProperties.KinesisAnalyticsApplicationInputSchema
       Stratosphere.ResourceProperties.KinesisAnalyticsApplicationJSONMappingParameters
       Stratosphere.ResourceProperties.KinesisAnalyticsApplicationKinesisFirehoseInput
@@ -371,6 +412,8 @@
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamProcessorParameter
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamRedshiftDestinationConfiguration
       Stratosphere.ResourceProperties.KinesisFirehoseDeliveryStreamS3DestinationConfiguration
+      Stratosphere.ResourceProperties.LambdaAliasAliasRoutingConfiguration
+      Stratosphere.ResourceProperties.LambdaAliasVersionWeight
       Stratosphere.ResourceProperties.LambdaFunctionCode
       Stratosphere.ResourceProperties.LambdaFunctionDeadLetterConfig
       Stratosphere.ResourceProperties.LambdaFunctionEnvironment
@@ -446,6 +489,18 @@
       Stratosphere.ResourceProperties.SNSTopicSubscription
       Stratosphere.ResourceProperties.SSMAssociationParameterValues
       Stratosphere.ResourceProperties.SSMAssociationTarget
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskLoggingInfo
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowAutomationParameters
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowLambdaParameters
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowRunCommandParameters
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskMaintenanceWindowStepFunctionsParameters
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskNotificationConfig
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTarget
+      Stratosphere.ResourceProperties.SSMMaintenanceWindowTaskTaskInvocationParameters
+      Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilter
+      Stratosphere.ResourceProperties.SSMPatchBaselinePatchFilterGroup
+      Stratosphere.ResourceProperties.SSMPatchBaselineRule
+      Stratosphere.ResourceProperties.SSMPatchBaselineRuleGroup
       Stratosphere.ResourceProperties.Tag
       Stratosphere.ResourceProperties.WAFByteMatchSetByteMatchTuple
       Stratosphere.ResourceProperties.WAFByteMatchSetFieldToMatch
@@ -492,6 +547,7 @@
       Stratosphere.Resources.ApiGatewayUsagePlanKey
       Stratosphere.Resources.ApplicationAutoScalingScalableTarget
       Stratosphere.Resources.ApplicationAutoScalingScalingPolicy
+      Stratosphere.Resources.AthenaNamedQuery
       Stratosphere.Resources.AutoScalingAutoScalingGroup
       Stratosphere.Resources.AutoScalingLaunchConfiguration
       Stratosphere.Resources.AutoScalingLifecycleHook
@@ -505,7 +561,9 @@
       Stratosphere.Resources.CloudFormationStack
       Stratosphere.Resources.CloudFormationWaitCondition
       Stratosphere.Resources.CloudFormationWaitConditionHandle
+      Stratosphere.Resources.CloudFrontCloudFrontOriginAccessIdentity
       Stratosphere.Resources.CloudFrontDistribution
+      Stratosphere.Resources.CloudFrontStreamingDistribution
       Stratosphere.Resources.CloudTrailTrail
       Stratosphere.Resources.CloudWatchAlarm
       Stratosphere.Resources.CloudWatchDashboard
@@ -609,6 +667,15 @@
       Stratosphere.Resources.GameLiftAlias
       Stratosphere.Resources.GameLiftBuild
       Stratosphere.Resources.GameLiftFleet
+      Stratosphere.Resources.GlueClassifier
+      Stratosphere.Resources.GlueConnection
+      Stratosphere.Resources.GlueCrawler
+      Stratosphere.Resources.GlueDatabase
+      Stratosphere.Resources.GlueDevEndpoint
+      Stratosphere.Resources.GlueJob
+      Stratosphere.Resources.GluePartition
+      Stratosphere.Resources.GlueTable
+      Stratosphere.Resources.GlueTrigger
       Stratosphere.Resources.IAMAccessKey
       Stratosphere.Resources.IAMGroup
       Stratosphere.Resources.IAMInstanceProfile
@@ -675,7 +742,9 @@
       Stratosphere.Resources.SQSQueuePolicy
       Stratosphere.Resources.SSMAssociation
       Stratosphere.Resources.SSMDocument
+      Stratosphere.Resources.SSMMaintenanceWindowTask
       Stratosphere.Resources.SSMParameter
+      Stratosphere.Resources.SSMPatchBaseline
       Stratosphere.Resources.StepFunctionsActivity
       Stratosphere.Resources.StepFunctionsStateMachine
       Stratosphere.Resources.WAFByteMatchSet
