diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.28.0
+
+* Update resource specification document to version 2.15.0
+
 ## 0.27.0
 
 * Update resource specification document to version 2.12.0
diff --git a/examples/apigw-lambda-dynamodb.hs b/examples/apigw-lambda-dynamodb.hs
deleted file mode 100644
--- a/examples/apigw-lambda-dynamodb.hs
+++ /dev/null
@@ -1,354 +0,0 @@
-{-# LANGUAGE OverloadedLists #-}
-{-# LANGUAGE OverloadedStrings #-}
-
-module Main where
-
-import Control.Lens
-import Data.Aeson (Value (Array), object)
-import qualified Data.ByteString.Lazy.Char8 as B
-import Data.Text (Text)
-import Stratosphere
-
-
--- to curl the endpoints: (substitute your APIGW deployment URL)
--- curl -v -X POST -H "Content-Type: application/json" -d "{\"property\": 3}" "https://k99jn3an8a.execute-api.us-east-1.amazonaws.com/v1/thing"
--- curl -v "https://k99jn3an8a.execute-api.us-east-1.amazonaws.com/v1/thing"
-
-main :: IO ()
-main = B.putStrLn $ encodeTemplate myTemplate
-
-myTemplate :: Template
-myTemplate = template
-  [ readLambdaRole
-  , writeLambdaRole
-  , readLambda
-  , writeLambda
-  , readLambdaPermission
-  , writeLambdaPermission
-  , dynamoDbTable
-  , apiGWRestApi
-  , apiGWResource
-  , getMethod
-  , postMethod
-  , apiGWDeployment
-  ]
-  & templateDescription ?~ "Simple restful API gateway attached to a Lambda that reads from and writes the request body to a DynamoDB table"
-  & templateFormatVersion ?~ "2010-09-09"
-
-apiGWRestApi :: Resource
-apiGWRestApi =
-  resource "ApiGWRestApi" $
-  ApiGatewayRestApiProperties $
-  apiGatewayRestApi
-  & agraName ?~ "myApi"
-
-apiGWResource :: Resource
-apiGWResource =
-  resource "ApiGWResource" $
-  ApiGatewayResourceProperties $
-  apiGatewayResource
-    (GetAtt "ApiGWRestApi" "RootResourceId")
-    "thing"
-    (toRef apiGWRestApi)
-
-
-getMethod :: Resource
-getMethod = (
-  resource "ApiGWGetMethod" $
-  ApiGatewayMethodProperties $
-  apiGatewayMethod
-    (Literal GET)
-    (toRef apiGWResource)
-    (toRef apiGWRestApi)
-    & agmeAuthorizationType ?~ Literal NONE
-    & agmeAuthorizerId ?~ toRef apiGWRestApi
-    & agmeIntegration ?~ integration
-    & agmeMethodResponses ?~ [ methodResponse ]
-  )
-  & resourceDependsOn ?~ deps [readLambdaPermission]
-
-  where
-    integration =
-      apiGatewayMethodIntegration
-      & agmiType ?~ Literal AWS
-      & agmiIntegrationHttpMethod ?~ Literal POST
-      & agmiUri ?~ Join "" [
-          "arn:aws:apigateway:"
-        , Ref "AWS::Region"
-        , ":lambda:path/2015-03-31/functions/"
-        , GetAtt "ReadTableLambda" "Arn"
-        , "/invocations"]
-      & agmiIntegrationResponses ?~ [ integrationResponse ]
-      & agmiPassthroughBehavior ?~ Literal WHEN_NO_TEMPLATES
-      & agmiRequestTemplates ?~ [ ]
-
-    integrationResponse =
-      apiGatewayMethodIntegrationResponse
-      "200"
-      & agmirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]
-
-    methodResponse =
-      apiGatewayMethodMethodResponse
-      "200"
-
-postMethod :: Resource
-postMethod = (
-  resource "ApiGWPutMethod" $
-  ApiGatewayMethodProperties $
-  apiGatewayMethod
-    (Literal POST)
-    (toRef apiGWResource)
-    (toRef apiGWRestApi)
-    & agmeAuthorizationType ?~ Literal NONE
-    & agmeAuthorizerId ?~ toRef apiGWRestApi
-    & agmeIntegration ?~ integration
-    & agmeMethodResponses ?~ [ methodResponse ]
-  )
-  & resourceDependsOn ?~ deps [writeLambdaPermission]
-
-  where
-    integration =
-      apiGatewayMethodIntegration
-      & agmiType ?~ Literal AWS
-      & agmiIntegrationHttpMethod ?~ Literal POST
-      & agmiUri ?~ Join "" [
-          "arn:aws:apigateway:"
-        , Ref "AWS::Region"
-        , ":lambda:path/2015-03-31/functions/"
-        , GetAtt "WriteTableLambda" "Arn"
-        , "/invocations"]
-      & agmiIntegrationResponses ?~ [integrationResponse]
-      & agmiPassthroughBehavior ?~ Literal WHEN_NO_TEMPLATES
-      & agmiRequestTemplates ?~ [ ("application/json", "{\"body\": $input.body}") ]
-
-    integrationResponse =
-      apiGatewayMethodIntegrationResponse
-      "200"
-      & agmirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]
-
-    methodResponse =
-      apiGatewayMethodMethodResponse
-      "200"
-
-apiGWDeployment :: Resource
-apiGWDeployment = (resource "ApiGWDeployment" $
-  ApiGatewayDeploymentProperties $
-  apiGatewayDeployment
-    (toRef apiGWRestApi)
-    & agdStageName ?~ "v1"
-  )
-  & resourceDependsOn ?~ deps [
-      apiGWResource
-    , getMethod
-    , postMethod
-    ]
-
-readLambda :: Resource
-readLambda = (resource "ReadTableLambda" $
-  LambdaFunctionProperties $
-  lambdaFunction
-    lambdaCode
-    "index.handler"
-    (GetAtt "ReadLambdaRole" "Arn")
-    (Literal NodeJS43)
-    & lfFunctionName ?~ "readTable"
-  )
-
-  where
-    lambdaCode :: LambdaFunctionCode
-    lambdaCode = lambdaFunctionCode
-      & lfcZipFile ?~ code
-
-    code :: Val Text
-    code = "\
-    \ var AWS = require('aws-sdk');\n\
-    \ var awsConfig = { region: 'us-east-1' }; \n\
-    \ AWS.config.apiVersions = { dynamodb: '2012-08-10' }; \n\
-    \ var dynamoDoc = new AWS.DynamoDB.DocumentClient(awsConfig); \n\
-    \ exports.handler = function(event, context, callback) {\n\
-    \   console.log(JSON.stringify(event));\n\
-    \   var params = { TableName : 'stratosphere-dynamodb-table', Key: { Id: 'abc123' } }; \n\
-    \   dynamoDoc.get(params, function(err, data) { \n\
-    \     if (err) { \n\
-    \       console.log(\"Error:\", err); \n\
-    \       callback(err) \n\
-    \     } else { \n\
-    \       callback(null, {\"body\": data.Item.Data});\n\
-    \     } \n\
-    \   });\n\
-    \ }\n\
-    \ "
-
-
-writeLambda :: Resource
-writeLambda =
-  resource "WriteTableLambda" $
-  LambdaFunctionProperties $
-  lambdaFunction
-    lambdaCode
-    "index.handler"
-    (GetAtt "WriteLambdaRole" "Arn")
-    (Literal NodeJS43)
-    & lfFunctionName ?~ "writeTable"
-
-  where
-    lambdaCode :: LambdaFunctionCode
-    lambdaCode = lambdaFunctionCode
-      & lfcZipFile ?~ code
-
-    code :: Val Text
-    code = "\
-    \ var AWS = require('aws-sdk');\n\
-    \ var awsConfig = { region: 'us-east-1' }; \n\
-    \ AWS.config.apiVersions = { dynamodb: '2012-08-10' }; \n\
-    \ var dynamoDoc = new AWS.DynamoDB.DocumentClient(awsConfig); \n\
-    \ exports.handler = function(event, context, callback) {\n\
-    \   console.log(JSON.stringify(event));\n\
-    \   var params = { TableName : 'stratosphere-dynamodb-table', Item: { Id: 'abc123', Data: event.body } }; \n\
-    \   dynamoDoc.put(params, function(err, data) { \n\
-    \     if (err) { \n\
-    \       console.log(\"Error:\", err); \n\
-    \       callback(err) \n\
-    \     } else { \n\
-    \       callback(null, {\"body\": 'success!'});\n\
-    \     } \n\
-    \   });\n\
-    \ }\n\
-    \ "
-
-readLambdaRole :: Resource
-readLambdaRole = resource "ReadLambdaRole" $
-  IAMRoleProperties $
-  iamRole
-  rolePolicyDocumentObject
-  & iamrPolicies ?~ [ executePolicy ]
-  & iamrRoleName ?~ "ReadLambdaRole"
-  & iamrPath ?~ "/"
-
-  where
-    executePolicy =
-      iamRolePolicy
-      [ ("Version", "2012-10-17")
-      , ("Statement", statement)
-      ]
-      "MyLambdaExecutionPolicy"
-
-      where
-        statement = object
-          [ ("Effect", "Allow")
-          , ("Action", actions)
-          , ("Resource", "*")
-          ]
-
-        actions = Array
-          [ "logs:CreateLogGroup"
-          , "logs:CreateLogStream"
-          , "logs:PutLogEvents"
-          , "dynamodb:GetItem"
-          ]
-
-    rolePolicyDocumentObject =
-      [ ("Version", "2012-10-17")
-      , ("Statement", statement)
-      ]
-
-      where
-        statement = object
-          [ ("Effect", "Allow")
-          , ("Principal", principal)
-          , ("Action", "sts:AssumeRole")
-          ]
-
-        principal = object
-          [ ("Service", "lambda.amazonaws.com") ]
-
-writeLambdaRole :: Resource
-writeLambdaRole = resource "WriteLambdaRole" $
-  IAMRoleProperties $
-  iamRole
-  rolePolicyDocumentObject
-  & iamrPolicies ?~ [ executePolicy ]
-  & iamrRoleName ?~ "WriteLambdaRole"
-  & iamrPath ?~ "/"
-
-  where
-    executePolicy =
-      iamRolePolicy
-      [ ("Version", "2012-10-17")
-      , ("Statement", statement)
-      ]
-      "MyLambdaExecutionPolicy"
-
-      where
-        statement = object
-          [ ("Effect", "Allow")
-          , ("Action", actions)
-          , ("Resource", "*")
-          ]
-
-        actions = Array
-          [ "logs:CreateLogGroup"
-          , "logs:CreateLogStream"
-          , "logs:PutLogEvents"
-          , "dynamodb:PutItem"
-          ]
-
-
-    rolePolicyDocumentObject =
-      [ ("Version", "2012-10-17")
-      , ("Statement", statement)
-      ]
-
-      where
-        statement = object
-          [ ("Effect", "Allow")
-          , ("Principal", principal)
-          , ("Action", "sts:AssumeRole")
-          ]
-
-        principal = object
-          [ ("Service", "lambda.amazonaws.com") ]
-
-readLambdaPermission :: Resource
-readLambdaPermission = resource "ReadLambdaPermission" $
-  LambdaPermissionProperties $
-  lambdaPermission
-    "lambda:*"
-    (GetAtt "ReadTableLambda" "Arn")
-    "apigateway.amazonaws.com"
-
-writeLambdaPermission :: Resource
-writeLambdaPermission = resource "WriteLambdaPermission" $
-  LambdaPermissionProperties $
-  lambdaPermission
-    "lambda:*"
-    (GetAtt "WriteTableLambda" "Arn")
-    "apigateway.amazonaws.com"
-
-dynamoDbTable :: Resource
-dynamoDbTable = resource "Table" $
-  DynamoDBTableProperties $
-  dynamoDBTable
-    keySchema
-    provisionedThroughput
-  & ddbtAttributeDefinitions ?~ attributeDefinitions
-  & ddbtTableName ?~ "stratosphere-dynamodb-table"
-
-  where
-    attributeDefinitions = [
-        dynamoDBTableAttributeDefinition
-        (Literal "Id")
-        (Literal S)
-      ]
-    keySchema = [
-        dynamoDBTableKeySchema
-        (Literal "Id")
-        (Literal HASH)
-      ]
-    provisionedThroughput =
-      dynamoDBTableProvisionedThroughput
-      (Literal 1)
-      (Literal 1)
-
-deps :: [Resource] -> [Text]
-deps = map (^. resourceName)
diff --git a/library-gen/Stratosphere/ResourceProperties/ASKSkillAuthenticationConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/ASKSkillAuthenticationConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ASKSkillAuthenticationConfiguration.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html
+
+module Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ASKSkillAuthenticationConfiguration. See
+-- 'askSkillAuthenticationConfiguration' for a more convenient constructor.
+data ASKSkillAuthenticationConfiguration =
+  ASKSkillAuthenticationConfiguration
+  { _aSKSkillAuthenticationConfigurationClientId :: Val Text
+  , _aSKSkillAuthenticationConfigurationClientSecret :: Val Text
+  , _aSKSkillAuthenticationConfigurationRefreshToken :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ASKSkillAuthenticationConfiguration where
+  toJSON ASKSkillAuthenticationConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("ClientId",) . toJSON) _aSKSkillAuthenticationConfigurationClientId
+    , (Just . ("ClientSecret",) . toJSON) _aSKSkillAuthenticationConfigurationClientSecret
+    , (Just . ("RefreshToken",) . toJSON) _aSKSkillAuthenticationConfigurationRefreshToken
+    ]
+
+instance FromJSON ASKSkillAuthenticationConfiguration where
+  parseJSON (Object obj) =
+    ASKSkillAuthenticationConfiguration <$>
+      (obj .: "ClientId") <*>
+      (obj .: "ClientSecret") <*>
+      (obj .: "RefreshToken")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ASKSkillAuthenticationConfiguration' containing required
+-- fields as arguments.
+askSkillAuthenticationConfiguration
+  :: Val Text -- ^ 'asksacClientId'
+  -> Val Text -- ^ 'asksacClientSecret'
+  -> Val Text -- ^ 'asksacRefreshToken'
+  -> ASKSkillAuthenticationConfiguration
+askSkillAuthenticationConfiguration clientIdarg clientSecretarg refreshTokenarg =
+  ASKSkillAuthenticationConfiguration
+  { _aSKSkillAuthenticationConfigurationClientId = clientIdarg
+  , _aSKSkillAuthenticationConfigurationClientSecret = clientSecretarg
+  , _aSKSkillAuthenticationConfigurationRefreshToken = refreshTokenarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html#cfn-ask-skill-authenticationconfiguration-clientid
+asksacClientId :: Lens' ASKSkillAuthenticationConfiguration (Val Text)
+asksacClientId = lens _aSKSkillAuthenticationConfigurationClientId (\s a -> s { _aSKSkillAuthenticationConfigurationClientId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html#cfn-ask-skill-authenticationconfiguration-clientsecret
+asksacClientSecret :: Lens' ASKSkillAuthenticationConfiguration (Val Text)
+asksacClientSecret = lens _aSKSkillAuthenticationConfigurationClientSecret (\s a -> s { _aSKSkillAuthenticationConfigurationClientSecret = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html#cfn-ask-skill-authenticationconfiguration-refreshtoken
+asksacRefreshToken :: Lens' ASKSkillAuthenticationConfiguration (Val Text)
+asksacRefreshToken = lens _aSKSkillAuthenticationConfigurationRefreshToken (\s a -> s { _aSKSkillAuthenticationConfigurationRefreshToken = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ASKSkillOverrides.hs b/library-gen/Stratosphere/ResourceProperties/ASKSkillOverrides.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ASKSkillOverrides.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-overrides.html
+
+module Stratosphere.ResourceProperties.ASKSkillOverrides where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for ASKSkillOverrides. See 'askSkillOverrides'
+-- for a more convenient constructor.
+data ASKSkillOverrides =
+  ASKSkillOverrides
+  { _aSKSkillOverridesManifest :: Maybe Object
+  } deriving (Show, Eq)
+
+instance ToJSON ASKSkillOverrides where
+  toJSON ASKSkillOverrides{..} =
+    object $
+    catMaybes
+    [ fmap (("Manifest",) . toJSON) _aSKSkillOverridesManifest
+    ]
+
+instance FromJSON ASKSkillOverrides where
+  parseJSON (Object obj) =
+    ASKSkillOverrides <$>
+      (obj .:? "Manifest")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ASKSkillOverrides' containing required fields as
+-- arguments.
+askSkillOverrides
+  :: ASKSkillOverrides
+askSkillOverrides  =
+  ASKSkillOverrides
+  { _aSKSkillOverridesManifest = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-overrides.html#cfn-ask-skill-overrides-manifest
+asksoManifest :: Lens' ASKSkillOverrides (Maybe Object)
+asksoManifest = lens _aSKSkillOverridesManifest (\s a -> s { _aSKSkillOverridesManifest = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ASKSkillSkillPackage.hs b/library-gen/Stratosphere/ResourceProperties/ASKSkillSkillPackage.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ASKSkillSkillPackage.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html
+
+module Stratosphere.ResourceProperties.ASKSkillSkillPackage where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ASKSkillOverrides
+
+-- | Full data type definition for ASKSkillSkillPackage. See
+-- 'askSkillSkillPackage' for a more convenient constructor.
+data ASKSkillSkillPackage =
+  ASKSkillSkillPackage
+  { _aSKSkillSkillPackageOverrides :: Maybe ASKSkillOverrides
+  , _aSKSkillSkillPackageS3Bucket :: Val Text
+  , _aSKSkillSkillPackageS3BucketRole :: Maybe (Val Text)
+  , _aSKSkillSkillPackageS3Key :: Val Text
+  , _aSKSkillSkillPackageS3ObjectVersion :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON ASKSkillSkillPackage where
+  toJSON ASKSkillSkillPackage{..} =
+    object $
+    catMaybes
+    [ fmap (("Overrides",) . toJSON) _aSKSkillSkillPackageOverrides
+    , (Just . ("S3Bucket",) . toJSON) _aSKSkillSkillPackageS3Bucket
+    , fmap (("S3BucketRole",) . toJSON) _aSKSkillSkillPackageS3BucketRole
+    , (Just . ("S3Key",) . toJSON) _aSKSkillSkillPackageS3Key
+    , fmap (("S3ObjectVersion",) . toJSON) _aSKSkillSkillPackageS3ObjectVersion
+    ]
+
+instance FromJSON ASKSkillSkillPackage where
+  parseJSON (Object obj) =
+    ASKSkillSkillPackage <$>
+      (obj .:? "Overrides") <*>
+      (obj .: "S3Bucket") <*>
+      (obj .:? "S3BucketRole") <*>
+      (obj .: "S3Key") <*>
+      (obj .:? "S3ObjectVersion")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ASKSkillSkillPackage' containing required fields as
+-- arguments.
+askSkillSkillPackage
+  :: Val Text -- ^ 'asksspS3Bucket'
+  -> Val Text -- ^ 'asksspS3Key'
+  -> ASKSkillSkillPackage
+askSkillSkillPackage s3Bucketarg s3Keyarg =
+  ASKSkillSkillPackage
+  { _aSKSkillSkillPackageOverrides = Nothing
+  , _aSKSkillSkillPackageS3Bucket = s3Bucketarg
+  , _aSKSkillSkillPackageS3BucketRole = Nothing
+  , _aSKSkillSkillPackageS3Key = s3Keyarg
+  , _aSKSkillSkillPackageS3ObjectVersion = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-overrides
+asksspOverrides :: Lens' ASKSkillSkillPackage (Maybe ASKSkillOverrides)
+asksspOverrides = lens _aSKSkillSkillPackageOverrides (\s a -> s { _aSKSkillSkillPackageOverrides = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3bucket
+asksspS3Bucket :: Lens' ASKSkillSkillPackage (Val Text)
+asksspS3Bucket = lens _aSKSkillSkillPackageS3Bucket (\s a -> s { _aSKSkillSkillPackageS3Bucket = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3bucketrole
+asksspS3BucketRole :: Lens' ASKSkillSkillPackage (Maybe (Val Text))
+asksspS3BucketRole = lens _aSKSkillSkillPackageS3BucketRole (\s a -> s { _aSKSkillSkillPackageS3BucketRole = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3key
+asksspS3Key :: Lens' ASKSkillSkillPackage (Val Text)
+asksspS3Key = lens _aSKSkillSkillPackageS3Key (\s a -> s { _aSKSkillSkillPackageS3Key = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3objectversion
+asksspS3ObjectVersion :: Lens' ASKSkillSkillPackage (Maybe (Val Text))
+asksspS3ObjectVersion = lens _aSKSkillSkillPackageS3ObjectVersion (\s a -> s { _aSKSkillSkillPackageS3ObjectVersion = a })
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
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentAccessLogSetting
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentCanarySetting
 import Stratosphere.ResourceProperties.ApiGatewayDeploymentMethodSetting
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ApiGatewayDeploymentStageDescription. See
 -- 'apiGatewayDeploymentStageDescription' for a more convenient constructor.
@@ -30,6 +31,7 @@
   , _apiGatewayDeploymentStageDescriptionLoggingLevel :: Maybe (Val LoggingLevel)
   , _apiGatewayDeploymentStageDescriptionMethodSettings :: Maybe [ApiGatewayDeploymentMethodSetting]
   , _apiGatewayDeploymentStageDescriptionMetricsEnabled :: Maybe (Val Bool)
+  , _apiGatewayDeploymentStageDescriptionTags :: Maybe [Tag]
   , _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit :: Maybe (Val Integer)
   , _apiGatewayDeploymentStageDescriptionThrottlingRateLimit :: Maybe (Val Double)
   , _apiGatewayDeploymentStageDescriptionTracingEnabled :: Maybe (Val Bool)
@@ -54,6 +56,7 @@
     , fmap (("LoggingLevel",) . toJSON) _apiGatewayDeploymentStageDescriptionLoggingLevel
     , fmap (("MethodSettings",) . toJSON) _apiGatewayDeploymentStageDescriptionMethodSettings
     , fmap (("MetricsEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionMetricsEnabled
+    , fmap (("Tags",) . toJSON) _apiGatewayDeploymentStageDescriptionTags
     , fmap (("ThrottlingBurstLimit",) . toJSON . fmap Integer') _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit
     , fmap (("ThrottlingRateLimit",) . toJSON . fmap Double') _apiGatewayDeploymentStageDescriptionThrottlingRateLimit
     , fmap (("TracingEnabled",) . toJSON . fmap Bool') _apiGatewayDeploymentStageDescriptionTracingEnabled
@@ -77,6 +80,7 @@
       (obj .:? "LoggingLevel") <*>
       (obj .:? "MethodSettings") <*>
       fmap (fmap (fmap unBool')) (obj .:? "MetricsEnabled") <*>
+      (obj .:? "Tags") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "ThrottlingBurstLimit") <*>
       fmap (fmap (fmap unDouble')) (obj .:? "ThrottlingRateLimit") <*>
       fmap (fmap (fmap unBool')) (obj .:? "TracingEnabled") <*>
@@ -103,6 +107,7 @@
   , _apiGatewayDeploymentStageDescriptionLoggingLevel = Nothing
   , _apiGatewayDeploymentStageDescriptionMethodSettings = Nothing
   , _apiGatewayDeploymentStageDescriptionMetricsEnabled = Nothing
+  , _apiGatewayDeploymentStageDescriptionTags = Nothing
   , _apiGatewayDeploymentStageDescriptionThrottlingBurstLimit = Nothing
   , _apiGatewayDeploymentStageDescriptionThrottlingRateLimit = Nothing
   , _apiGatewayDeploymentStageDescriptionTracingEnabled = Nothing
@@ -164,6 +169,10 @@
 -- | 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-tags
+agdsdTags :: Lens' ApiGatewayDeploymentStageDescription (Maybe [Tag])
+agdsdTags = lens _apiGatewayDeploymentStageDescriptionTags (\s a -> s { _apiGatewayDeploymentStageDescriptionTags = 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/AppSyncDataSourceAuthorizationConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAuthorizationConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAuthorizationConfig.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-authorizationconfig.html
+
+module Stratosphere.ResourceProperties.AppSyncDataSourceAuthorizationConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppSyncDataSourceAwsIamConfig
+
+-- | Full data type definition for AppSyncDataSourceAuthorizationConfig. See
+-- 'appSyncDataSourceAuthorizationConfig' for a more convenient constructor.
+data AppSyncDataSourceAuthorizationConfig =
+  AppSyncDataSourceAuthorizationConfig
+  { _appSyncDataSourceAuthorizationConfigAuthorizationType :: Val Text
+  , _appSyncDataSourceAuthorizationConfigAwsIamConfig :: Maybe AppSyncDataSourceAwsIamConfig
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncDataSourceAuthorizationConfig where
+  toJSON AppSyncDataSourceAuthorizationConfig{..} =
+    object $
+    catMaybes
+    [ (Just . ("AuthorizationType",) . toJSON) _appSyncDataSourceAuthorizationConfigAuthorizationType
+    , fmap (("AwsIamConfig",) . toJSON) _appSyncDataSourceAuthorizationConfigAwsIamConfig
+    ]
+
+instance FromJSON AppSyncDataSourceAuthorizationConfig where
+  parseJSON (Object obj) =
+    AppSyncDataSourceAuthorizationConfig <$>
+      (obj .: "AuthorizationType") <*>
+      (obj .:? "AwsIamConfig")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncDataSourceAuthorizationConfig' containing
+-- required fields as arguments.
+appSyncDataSourceAuthorizationConfig
+  :: Val Text -- ^ 'asdsacAuthorizationType'
+  -> AppSyncDataSourceAuthorizationConfig
+appSyncDataSourceAuthorizationConfig authorizationTypearg =
+  AppSyncDataSourceAuthorizationConfig
+  { _appSyncDataSourceAuthorizationConfigAuthorizationType = authorizationTypearg
+  , _appSyncDataSourceAuthorizationConfigAwsIamConfig = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-authorizationconfig.html#cfn-appsync-datasource-authorizationconfig-authorizationtype
+asdsacAuthorizationType :: Lens' AppSyncDataSourceAuthorizationConfig (Val Text)
+asdsacAuthorizationType = lens _appSyncDataSourceAuthorizationConfigAuthorizationType (\s a -> s { _appSyncDataSourceAuthorizationConfigAuthorizationType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-authorizationconfig.html#cfn-appsync-datasource-authorizationconfig-awsiamconfig
+asdsacAwsIamConfig :: Lens' AppSyncDataSourceAuthorizationConfig (Maybe AppSyncDataSourceAwsIamConfig)
+asdsacAwsIamConfig = lens _appSyncDataSourceAuthorizationConfigAwsIamConfig (\s a -> s { _appSyncDataSourceAuthorizationConfigAwsIamConfig = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAwsIamConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAwsIamConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceAwsIamConfig.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-awsiamconfig.html
+
+module Stratosphere.ResourceProperties.AppSyncDataSourceAwsIamConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppSyncDataSourceAwsIamConfig. See
+-- 'appSyncDataSourceAwsIamConfig' for a more convenient constructor.
+data AppSyncDataSourceAwsIamConfig =
+  AppSyncDataSourceAwsIamConfig
+  { _appSyncDataSourceAwsIamConfigSigningRegion :: Maybe (Val Text)
+  , _appSyncDataSourceAwsIamConfigSigningServiceName :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncDataSourceAwsIamConfig where
+  toJSON AppSyncDataSourceAwsIamConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("SigningRegion",) . toJSON) _appSyncDataSourceAwsIamConfigSigningRegion
+    , fmap (("SigningServiceName",) . toJSON) _appSyncDataSourceAwsIamConfigSigningServiceName
+    ]
+
+instance FromJSON AppSyncDataSourceAwsIamConfig where
+  parseJSON (Object obj) =
+    AppSyncDataSourceAwsIamConfig <$>
+      (obj .:? "SigningRegion") <*>
+      (obj .:? "SigningServiceName")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncDataSourceAwsIamConfig' containing required
+-- fields as arguments.
+appSyncDataSourceAwsIamConfig
+  :: AppSyncDataSourceAwsIamConfig
+appSyncDataSourceAwsIamConfig  =
+  AppSyncDataSourceAwsIamConfig
+  { _appSyncDataSourceAwsIamConfigSigningRegion = Nothing
+  , _appSyncDataSourceAwsIamConfigSigningServiceName = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-awsiamconfig.html#cfn-appsync-datasource-awsiamconfig-signingregion
+asdsaicSigningRegion :: Lens' AppSyncDataSourceAwsIamConfig (Maybe (Val Text))
+asdsaicSigningRegion = lens _appSyncDataSourceAwsIamConfigSigningRegion (\s a -> s { _appSyncDataSourceAwsIamConfigSigningRegion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-awsiamconfig.html#cfn-appsync-datasource-awsiamconfig-signingservicename
+asdsaicSigningServiceName :: Lens' AppSyncDataSourceAwsIamConfig (Maybe (Val Text))
+asdsaicSigningServiceName = lens _appSyncDataSourceAwsIamConfigSigningServiceName (\s a -> s { _appSyncDataSourceAwsIamConfigSigningServiceName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceHttpConfig.hs
@@ -7,25 +7,28 @@
 module Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.AppSyncDataSourceAuthorizationConfig
 
 -- | Full data type definition for AppSyncDataSourceHttpConfig. See
 -- 'appSyncDataSourceHttpConfig' for a more convenient constructor.
 data AppSyncDataSourceHttpConfig =
   AppSyncDataSourceHttpConfig
-  { _appSyncDataSourceHttpConfigEndpoint :: Val Text
+  { _appSyncDataSourceHttpConfigAuthorizationConfig :: Maybe AppSyncDataSourceAuthorizationConfig
+  , _appSyncDataSourceHttpConfigEndpoint :: Val Text
   } deriving (Show, Eq)
 
 instance ToJSON AppSyncDataSourceHttpConfig where
   toJSON AppSyncDataSourceHttpConfig{..} =
     object $
     catMaybes
-    [ (Just . ("Endpoint",) . toJSON) _appSyncDataSourceHttpConfigEndpoint
+    [ fmap (("AuthorizationConfig",) . toJSON) _appSyncDataSourceHttpConfigAuthorizationConfig
+    , (Just . ("Endpoint",) . toJSON) _appSyncDataSourceHttpConfigEndpoint
     ]
 
 instance FromJSON AppSyncDataSourceHttpConfig where
   parseJSON (Object obj) =
     AppSyncDataSourceHttpConfig <$>
+      (obj .:? "AuthorizationConfig") <*>
       (obj .: "Endpoint")
   parseJSON _ = mempty
 
@@ -36,8 +39,13 @@
   -> AppSyncDataSourceHttpConfig
 appSyncDataSourceHttpConfig endpointarg =
   AppSyncDataSourceHttpConfig
-  { _appSyncDataSourceHttpConfigEndpoint = endpointarg
+  { _appSyncDataSourceHttpConfigAuthorizationConfig = Nothing
+  , _appSyncDataSourceHttpConfigEndpoint = endpointarg
   }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-httpconfig.html#cfn-appsync-datasource-httpconfig-authorizationconfig
+asdshcAuthorizationConfig :: Lens' AppSyncDataSourceHttpConfig (Maybe AppSyncDataSourceAuthorizationConfig)
+asdshcAuthorizationConfig = lens _appSyncDataSourceHttpConfigAuthorizationConfig (\s a -> s { _appSyncDataSourceHttpConfigAuthorizationConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-httpconfig.html#cfn-appsync-datasource-httpconfig-endpoint
 asdshcEndpoint :: Lens' AppSyncDataSourceHttpConfig (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRdsHttpEndpointConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRdsHttpEndpointConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRdsHttpEndpointConfig.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-rdshttpendpointconfig.html
+
+module Stratosphere.ResourceProperties.AppSyncDataSourceRdsHttpEndpointConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppSyncDataSourceRdsHttpEndpointConfig. See
+-- 'appSyncDataSourceRdsHttpEndpointConfig' for a more convenient
+-- constructor.
+data AppSyncDataSourceRdsHttpEndpointConfig =
+  AppSyncDataSourceRdsHttpEndpointConfig
+  { _appSyncDataSourceRdsHttpEndpointConfigAwsRegion :: Val Text
+  , _appSyncDataSourceRdsHttpEndpointConfigAwsSecretStoreArn :: Val Text
+  , _appSyncDataSourceRdsHttpEndpointConfigDatabaseName :: Maybe (Val Text)
+  , _appSyncDataSourceRdsHttpEndpointConfigDbClusterIdentifier :: Val Text
+  , _appSyncDataSourceRdsHttpEndpointConfigSchema :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncDataSourceRdsHttpEndpointConfig where
+  toJSON AppSyncDataSourceRdsHttpEndpointConfig{..} =
+    object $
+    catMaybes
+    [ (Just . ("AwsRegion",) . toJSON) _appSyncDataSourceRdsHttpEndpointConfigAwsRegion
+    , (Just . ("AwsSecretStoreArn",) . toJSON) _appSyncDataSourceRdsHttpEndpointConfigAwsSecretStoreArn
+    , fmap (("DatabaseName",) . toJSON) _appSyncDataSourceRdsHttpEndpointConfigDatabaseName
+    , (Just . ("DbClusterIdentifier",) . toJSON) _appSyncDataSourceRdsHttpEndpointConfigDbClusterIdentifier
+    , fmap (("Schema",) . toJSON) _appSyncDataSourceRdsHttpEndpointConfigSchema
+    ]
+
+instance FromJSON AppSyncDataSourceRdsHttpEndpointConfig where
+  parseJSON (Object obj) =
+    AppSyncDataSourceRdsHttpEndpointConfig <$>
+      (obj .: "AwsRegion") <*>
+      (obj .: "AwsSecretStoreArn") <*>
+      (obj .:? "DatabaseName") <*>
+      (obj .: "DbClusterIdentifier") <*>
+      (obj .:? "Schema")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncDataSourceRdsHttpEndpointConfig' containing
+-- required fields as arguments.
+appSyncDataSourceRdsHttpEndpointConfig
+  :: Val Text -- ^ 'asdsrhecAwsRegion'
+  -> Val Text -- ^ 'asdsrhecAwsSecretStoreArn'
+  -> Val Text -- ^ 'asdsrhecDbClusterIdentifier'
+  -> AppSyncDataSourceRdsHttpEndpointConfig
+appSyncDataSourceRdsHttpEndpointConfig awsRegionarg awsSecretStoreArnarg dbClusterIdentifierarg =
+  AppSyncDataSourceRdsHttpEndpointConfig
+  { _appSyncDataSourceRdsHttpEndpointConfigAwsRegion = awsRegionarg
+  , _appSyncDataSourceRdsHttpEndpointConfigAwsSecretStoreArn = awsSecretStoreArnarg
+  , _appSyncDataSourceRdsHttpEndpointConfigDatabaseName = Nothing
+  , _appSyncDataSourceRdsHttpEndpointConfigDbClusterIdentifier = dbClusterIdentifierarg
+  , _appSyncDataSourceRdsHttpEndpointConfigSchema = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-rdshttpendpointconfig.html#cfn-appsync-datasource-rdshttpendpointconfig-awsregion
+asdsrhecAwsRegion :: Lens' AppSyncDataSourceRdsHttpEndpointConfig (Val Text)
+asdsrhecAwsRegion = lens _appSyncDataSourceRdsHttpEndpointConfigAwsRegion (\s a -> s { _appSyncDataSourceRdsHttpEndpointConfigAwsRegion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-rdshttpendpointconfig.html#cfn-appsync-datasource-rdshttpendpointconfig-awssecretstorearn
+asdsrhecAwsSecretStoreArn :: Lens' AppSyncDataSourceRdsHttpEndpointConfig (Val Text)
+asdsrhecAwsSecretStoreArn = lens _appSyncDataSourceRdsHttpEndpointConfigAwsSecretStoreArn (\s a -> s { _appSyncDataSourceRdsHttpEndpointConfigAwsSecretStoreArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-rdshttpendpointconfig.html#cfn-appsync-datasource-rdshttpendpointconfig-databasename
+asdsrhecDatabaseName :: Lens' AppSyncDataSourceRdsHttpEndpointConfig (Maybe (Val Text))
+asdsrhecDatabaseName = lens _appSyncDataSourceRdsHttpEndpointConfigDatabaseName (\s a -> s { _appSyncDataSourceRdsHttpEndpointConfigDatabaseName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-rdshttpendpointconfig.html#cfn-appsync-datasource-rdshttpendpointconfig-dbclusteridentifier
+asdsrhecDbClusterIdentifier :: Lens' AppSyncDataSourceRdsHttpEndpointConfig (Val Text)
+asdsrhecDbClusterIdentifier = lens _appSyncDataSourceRdsHttpEndpointConfigDbClusterIdentifier (\s a -> s { _appSyncDataSourceRdsHttpEndpointConfigDbClusterIdentifier = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-rdshttpendpointconfig.html#cfn-appsync-datasource-rdshttpendpointconfig-schema
+asdsrhecSchema :: Lens' AppSyncDataSourceRdsHttpEndpointConfig (Maybe (Val Text))
+asdsrhecSchema = lens _appSyncDataSourceRdsHttpEndpointConfigSchema (\s a -> s { _appSyncDataSourceRdsHttpEndpointConfigSchema = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRelationalDatabaseConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRelationalDatabaseConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceRelationalDatabaseConfig.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-relationaldatabaseconfig.html
+
+module Stratosphere.ResourceProperties.AppSyncDataSourceRelationalDatabaseConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AppSyncDataSourceRdsHttpEndpointConfig
+
+-- | Full data type definition for AppSyncDataSourceRelationalDatabaseConfig.
+-- See 'appSyncDataSourceRelationalDatabaseConfig' for a more convenient
+-- constructor.
+data AppSyncDataSourceRelationalDatabaseConfig =
+  AppSyncDataSourceRelationalDatabaseConfig
+  { _appSyncDataSourceRelationalDatabaseConfigRdsHttpEndpointConfig :: Maybe AppSyncDataSourceRdsHttpEndpointConfig
+  , _appSyncDataSourceRelationalDatabaseConfigRelationalDatabaseSourceType :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncDataSourceRelationalDatabaseConfig where
+  toJSON AppSyncDataSourceRelationalDatabaseConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("RdsHttpEndpointConfig",) . toJSON) _appSyncDataSourceRelationalDatabaseConfigRdsHttpEndpointConfig
+    , (Just . ("RelationalDatabaseSourceType",) . toJSON) _appSyncDataSourceRelationalDatabaseConfigRelationalDatabaseSourceType
+    ]
+
+instance FromJSON AppSyncDataSourceRelationalDatabaseConfig where
+  parseJSON (Object obj) =
+    AppSyncDataSourceRelationalDatabaseConfig <$>
+      (obj .:? "RdsHttpEndpointConfig") <*>
+      (obj .: "RelationalDatabaseSourceType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncDataSourceRelationalDatabaseConfig' containing
+-- required fields as arguments.
+appSyncDataSourceRelationalDatabaseConfig
+  :: Val Text -- ^ 'asdsrdcRelationalDatabaseSourceType'
+  -> AppSyncDataSourceRelationalDatabaseConfig
+appSyncDataSourceRelationalDatabaseConfig relationalDatabaseSourceTypearg =
+  AppSyncDataSourceRelationalDatabaseConfig
+  { _appSyncDataSourceRelationalDatabaseConfigRdsHttpEndpointConfig = Nothing
+  , _appSyncDataSourceRelationalDatabaseConfigRelationalDatabaseSourceType = relationalDatabaseSourceTypearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-relationaldatabaseconfig.html#cfn-appsync-datasource-relationaldatabaseconfig-rdshttpendpointconfig
+asdsrdcRdsHttpEndpointConfig :: Lens' AppSyncDataSourceRelationalDatabaseConfig (Maybe AppSyncDataSourceRdsHttpEndpointConfig)
+asdsrdcRdsHttpEndpointConfig = lens _appSyncDataSourceRelationalDatabaseConfigRdsHttpEndpointConfig (\s a -> s { _appSyncDataSourceRelationalDatabaseConfigRdsHttpEndpointConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-relationaldatabaseconfig.html#cfn-appsync-datasource-relationaldatabaseconfig-relationaldatabasesourcetype
+asdsrdcRelationalDatabaseSourceType :: Lens' AppSyncDataSourceRelationalDatabaseConfig (Val Text)
+asdsrdcRelationalDatabaseSourceType = lens _appSyncDataSourceRelationalDatabaseConfigRelationalDatabaseSourceType (\s a -> s { _appSyncDataSourceRelationalDatabaseConfigRelationalDatabaseSourceType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AppSyncResolverPipelineConfig.hs b/library-gen/Stratosphere/ResourceProperties/AppSyncResolverPipelineConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AppSyncResolverPipelineConfig.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-pipelineconfig.html
+
+module Stratosphere.ResourceProperties.AppSyncResolverPipelineConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppSyncResolverPipelineConfig. See
+-- 'appSyncResolverPipelineConfig' for a more convenient constructor.
+data AppSyncResolverPipelineConfig =
+  AppSyncResolverPipelineConfig
+  { _appSyncResolverPipelineConfigFunctions :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncResolverPipelineConfig where
+  toJSON AppSyncResolverPipelineConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Functions",) . toJSON) _appSyncResolverPipelineConfigFunctions
+    ]
+
+instance FromJSON AppSyncResolverPipelineConfig where
+  parseJSON (Object obj) =
+    AppSyncResolverPipelineConfig <$>
+      (obj .:? "Functions")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncResolverPipelineConfig' containing required
+-- fields as arguments.
+appSyncResolverPipelineConfig
+  :: AppSyncResolverPipelineConfig
+appSyncResolverPipelineConfig  =
+  AppSyncResolverPipelineConfig
+  { _appSyncResolverPipelineConfigFunctions = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-resolver-pipelineconfig.html#cfn-appsync-resolver-pipelineconfig-functions
+asrpcFunctions :: Lens' AppSyncResolverPipelineConfig (Maybe (ValList Text))
+asrpcFunctions = lens _appSyncResolverPipelineConfigFunctions (\s a -> s { _appSyncResolverPipelineConfigFunctions = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupInstancesDistribution.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupInstancesDistribution.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupInstancesDistribution.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html
+
+module Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AutoScalingAutoScalingGroupInstancesDistribution. See
+-- 'autoScalingAutoScalingGroupInstancesDistribution' for a more convenient
+-- constructor.
+data AutoScalingAutoScalingGroupInstancesDistribution =
+  AutoScalingAutoScalingGroupInstancesDistribution
+  { _autoScalingAutoScalingGroupInstancesDistributionOnDemandAllocationStrategy :: Maybe (Val Text)
+  , _autoScalingAutoScalingGroupInstancesDistributionOnDemandBaseCapacity :: Maybe (Val Integer)
+  , _autoScalingAutoScalingGroupInstancesDistributionOnDemandPercentageAboveBaseCapacity :: Maybe (Val Integer)
+  , _autoScalingAutoScalingGroupInstancesDistributionSpotAllocationStrategy :: Maybe (Val Text)
+  , _autoScalingAutoScalingGroupInstancesDistributionSpotInstancePools :: Maybe (Val Integer)
+  , _autoScalingAutoScalingGroupInstancesDistributionSpotMaxPrice :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingAutoScalingGroupInstancesDistribution where
+  toJSON AutoScalingAutoScalingGroupInstancesDistribution{..} =
+    object $
+    catMaybes
+    [ fmap (("OnDemandAllocationStrategy",) . toJSON) _autoScalingAutoScalingGroupInstancesDistributionOnDemandAllocationStrategy
+    , fmap (("OnDemandBaseCapacity",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupInstancesDistributionOnDemandBaseCapacity
+    , fmap (("OnDemandPercentageAboveBaseCapacity",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupInstancesDistributionOnDemandPercentageAboveBaseCapacity
+    , fmap (("SpotAllocationStrategy",) . toJSON) _autoScalingAutoScalingGroupInstancesDistributionSpotAllocationStrategy
+    , fmap (("SpotInstancePools",) . toJSON . fmap Integer') _autoScalingAutoScalingGroupInstancesDistributionSpotInstancePools
+    , fmap (("SpotMaxPrice",) . toJSON) _autoScalingAutoScalingGroupInstancesDistributionSpotMaxPrice
+    ]
+
+instance FromJSON AutoScalingAutoScalingGroupInstancesDistribution where
+  parseJSON (Object obj) =
+    AutoScalingAutoScalingGroupInstancesDistribution <$>
+      (obj .:? "OnDemandAllocationStrategy") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "OnDemandBaseCapacity") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "OnDemandPercentageAboveBaseCapacity") <*>
+      (obj .:? "SpotAllocationStrategy") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SpotInstancePools") <*>
+      (obj .:? "SpotMaxPrice")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingAutoScalingGroupInstancesDistribution'
+-- containing required fields as arguments.
+autoScalingAutoScalingGroupInstancesDistribution
+  :: AutoScalingAutoScalingGroupInstancesDistribution
+autoScalingAutoScalingGroupInstancesDistribution  =
+  AutoScalingAutoScalingGroupInstancesDistribution
+  { _autoScalingAutoScalingGroupInstancesDistributionOnDemandAllocationStrategy = Nothing
+  , _autoScalingAutoScalingGroupInstancesDistributionOnDemandBaseCapacity = Nothing
+  , _autoScalingAutoScalingGroupInstancesDistributionOnDemandPercentageAboveBaseCapacity = Nothing
+  , _autoScalingAutoScalingGroupInstancesDistributionSpotAllocationStrategy = Nothing
+  , _autoScalingAutoScalingGroupInstancesDistributionSpotInstancePools = Nothing
+  , _autoScalingAutoScalingGroupInstancesDistributionSpotMaxPrice = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-ondemandallocationstrategy
+asasgidOnDemandAllocationStrategy :: Lens' AutoScalingAutoScalingGroupInstancesDistribution (Maybe (Val Text))
+asasgidOnDemandAllocationStrategy = lens _autoScalingAutoScalingGroupInstancesDistributionOnDemandAllocationStrategy (\s a -> s { _autoScalingAutoScalingGroupInstancesDistributionOnDemandAllocationStrategy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-ondemandbasecapacity
+asasgidOnDemandBaseCapacity :: Lens' AutoScalingAutoScalingGroupInstancesDistribution (Maybe (Val Integer))
+asasgidOnDemandBaseCapacity = lens _autoScalingAutoScalingGroupInstancesDistributionOnDemandBaseCapacity (\s a -> s { _autoScalingAutoScalingGroupInstancesDistributionOnDemandBaseCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-ondemandpercentageabovebasecapacity
+asasgidOnDemandPercentageAboveBaseCapacity :: Lens' AutoScalingAutoScalingGroupInstancesDistribution (Maybe (Val Integer))
+asasgidOnDemandPercentageAboveBaseCapacity = lens _autoScalingAutoScalingGroupInstancesDistributionOnDemandPercentageAboveBaseCapacity (\s a -> s { _autoScalingAutoScalingGroupInstancesDistributionOnDemandPercentageAboveBaseCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-spotallocationstrategy
+asasgidSpotAllocationStrategy :: Lens' AutoScalingAutoScalingGroupInstancesDistribution (Maybe (Val Text))
+asasgidSpotAllocationStrategy = lens _autoScalingAutoScalingGroupInstancesDistributionSpotAllocationStrategy (\s a -> s { _autoScalingAutoScalingGroupInstancesDistributionSpotAllocationStrategy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-spotinstancepools
+asasgidSpotInstancePools :: Lens' AutoScalingAutoScalingGroupInstancesDistribution (Maybe (Val Integer))
+asasgidSpotInstancePools = lens _autoScalingAutoScalingGroupInstancesDistributionSpotInstancePools (\s a -> s { _autoScalingAutoScalingGroupInstancesDistributionSpotInstancePools = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-spotmaxprice
+asasgidSpotMaxPrice :: Lens' AutoScalingAutoScalingGroupInstancesDistribution (Maybe (Val Text))
+asasgidSpotMaxPrice = lens _autoScalingAutoScalingGroupInstancesDistributionSpotMaxPrice (\s a -> s { _autoScalingAutoScalingGroupInstancesDistributionSpotMaxPrice = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplate.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplate.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplate.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplate.html
+
+module Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateSpecification
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides
+
+-- | Full data type definition for AutoScalingAutoScalingGroupLaunchTemplate.
+-- See 'autoScalingAutoScalingGroupLaunchTemplate' for a more convenient
+-- constructor.
+data AutoScalingAutoScalingGroupLaunchTemplate =
+  AutoScalingAutoScalingGroupLaunchTemplate
+  { _autoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification :: AutoScalingAutoScalingGroupLaunchTemplateSpecification
+  , _autoScalingAutoScalingGroupLaunchTemplateOverrides :: Maybe [AutoScalingAutoScalingGroupLaunchTemplateOverrides]
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingAutoScalingGroupLaunchTemplate where
+  toJSON AutoScalingAutoScalingGroupLaunchTemplate{..} =
+    object $
+    catMaybes
+    [ (Just . ("LaunchTemplateSpecification",) . toJSON) _autoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification
+    , fmap (("Overrides",) . toJSON) _autoScalingAutoScalingGroupLaunchTemplateOverrides
+    ]
+
+instance FromJSON AutoScalingAutoScalingGroupLaunchTemplate where
+  parseJSON (Object obj) =
+    AutoScalingAutoScalingGroupLaunchTemplate <$>
+      (obj .: "LaunchTemplateSpecification") <*>
+      (obj .:? "Overrides")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingAutoScalingGroupLaunchTemplate' containing
+-- required fields as arguments.
+autoScalingAutoScalingGroupLaunchTemplate
+  :: AutoScalingAutoScalingGroupLaunchTemplateSpecification -- ^ 'asasgltLaunchTemplateSpecification'
+  -> AutoScalingAutoScalingGroupLaunchTemplate
+autoScalingAutoScalingGroupLaunchTemplate launchTemplateSpecificationarg =
+  AutoScalingAutoScalingGroupLaunchTemplate
+  { _autoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification = launchTemplateSpecificationarg
+  , _autoScalingAutoScalingGroupLaunchTemplateOverrides = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplate.html#cfn-as-group-launchtemplate
+asasgltLaunchTemplateSpecification :: Lens' AutoScalingAutoScalingGroupLaunchTemplate AutoScalingAutoScalingGroupLaunchTemplateSpecification
+asasgltLaunchTemplateSpecification = lens _autoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification (\s a -> s { _autoScalingAutoScalingGroupLaunchTemplateLaunchTemplateSpecification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplate.html#cfn-as-mixedinstancespolicy-overrides
+asasgltOverrides :: Lens' AutoScalingAutoScalingGroupLaunchTemplate (Maybe [AutoScalingAutoScalingGroupLaunchTemplateOverrides])
+asasgltOverrides = lens _autoScalingAutoScalingGroupLaunchTemplateOverrides (\s a -> s { _autoScalingAutoScalingGroupLaunchTemplateOverrides = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateOverrides.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateOverrides.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupLaunchTemplateOverrides.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplateoverrides.html
+
+module Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- AutoScalingAutoScalingGroupLaunchTemplateOverrides. See
+-- 'autoScalingAutoScalingGroupLaunchTemplateOverrides' for a more
+-- convenient constructor.
+data AutoScalingAutoScalingGroupLaunchTemplateOverrides =
+  AutoScalingAutoScalingGroupLaunchTemplateOverrides
+  { _autoScalingAutoScalingGroupLaunchTemplateOverridesInstanceType :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingAutoScalingGroupLaunchTemplateOverrides where
+  toJSON AutoScalingAutoScalingGroupLaunchTemplateOverrides{..} =
+    object $
+    catMaybes
+    [ fmap (("InstanceType",) . toJSON) _autoScalingAutoScalingGroupLaunchTemplateOverridesInstanceType
+    ]
+
+instance FromJSON AutoScalingAutoScalingGroupLaunchTemplateOverrides where
+  parseJSON (Object obj) =
+    AutoScalingAutoScalingGroupLaunchTemplateOverrides <$>
+      (obj .:? "InstanceType")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingAutoScalingGroupLaunchTemplateOverrides'
+-- containing required fields as arguments.
+autoScalingAutoScalingGroupLaunchTemplateOverrides
+  :: AutoScalingAutoScalingGroupLaunchTemplateOverrides
+autoScalingAutoScalingGroupLaunchTemplateOverrides  =
+  AutoScalingAutoScalingGroupLaunchTemplateOverrides
+  { _autoScalingAutoScalingGroupLaunchTemplateOverridesInstanceType = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-mixedinstancespolicy-launchtemplateoverrides.html#cfn-autoscaling-autoscalinggroup-launchtemplateoverrides-instancetype
+asasgltoInstanceType :: Lens' AutoScalingAutoScalingGroupLaunchTemplateOverrides (Maybe (Val Text))
+asasgltoInstanceType = lens _autoScalingAutoScalingGroupLaunchTemplateOverridesInstanceType (\s a -> s { _autoScalingAutoScalingGroupLaunchTemplateOverridesInstanceType = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMixedInstancesPolicy.hs b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMixedInstancesPolicy.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/AutoScalingAutoScalingGroupMixedInstancesPolicy.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-group-mixedinstancespolicy.html
+
+module Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMixedInstancesPolicy where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate
+
+-- | Full data type definition for
+-- AutoScalingAutoScalingGroupMixedInstancesPolicy. See
+-- 'autoScalingAutoScalingGroupMixedInstancesPolicy' for a more convenient
+-- constructor.
+data AutoScalingAutoScalingGroupMixedInstancesPolicy =
+  AutoScalingAutoScalingGroupMixedInstancesPolicy
+  { _autoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistribution :: Maybe AutoScalingAutoScalingGroupInstancesDistribution
+  , _autoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplate :: AutoScalingAutoScalingGroupLaunchTemplate
+  } deriving (Show, Eq)
+
+instance ToJSON AutoScalingAutoScalingGroupMixedInstancesPolicy where
+  toJSON AutoScalingAutoScalingGroupMixedInstancesPolicy{..} =
+    object $
+    catMaybes
+    [ fmap (("InstancesDistribution",) . toJSON) _autoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistribution
+    , (Just . ("LaunchTemplate",) . toJSON) _autoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplate
+    ]
+
+instance FromJSON AutoScalingAutoScalingGroupMixedInstancesPolicy where
+  parseJSON (Object obj) =
+    AutoScalingAutoScalingGroupMixedInstancesPolicy <$>
+      (obj .:? "InstancesDistribution") <*>
+      (obj .: "LaunchTemplate")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AutoScalingAutoScalingGroupMixedInstancesPolicy'
+-- containing required fields as arguments.
+autoScalingAutoScalingGroupMixedInstancesPolicy
+  :: AutoScalingAutoScalingGroupLaunchTemplate -- ^ 'asasgmipLaunchTemplate'
+  -> AutoScalingAutoScalingGroupMixedInstancesPolicy
+autoScalingAutoScalingGroupMixedInstancesPolicy launchTemplatearg =
+  AutoScalingAutoScalingGroupMixedInstancesPolicy
+  { _autoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistribution = Nothing
+  , _autoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplate = launchTemplatearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-group-mixedinstancespolicy.html#cfn-as-mixedinstancespolicy-instancesdistribution
+asasgmipInstancesDistribution :: Lens' AutoScalingAutoScalingGroupMixedInstancesPolicy (Maybe AutoScalingAutoScalingGroupInstancesDistribution)
+asasgmipInstancesDistribution = lens _autoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistribution (\s a -> s { _autoScalingAutoScalingGroupMixedInstancesPolicyInstancesDistribution = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-as-group-mixedinstancespolicy.html#cfn-as-mixedinstancespolicy-launchtemplate
+asasgmipLaunchTemplate :: Lens' AutoScalingAutoScalingGroupMixedInstancesPolicy AutoScalingAutoScalingGroupLaunchTemplate
+asasgmipLaunchTemplate = lens _autoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplate (\s a -> s { _autoScalingAutoScalingGroupMixedInstancesPolicyLaunchTemplate = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentComputeResources.hs
@@ -7,7 +7,7 @@
 module Stratosphere.ResourceProperties.BatchComputeEnvironmentComputeResources where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.BatchComputeEnvironmentLaunchTemplateSpecification
 
 -- | Full data type definition for BatchComputeEnvironmentComputeResources.
 -- See 'batchComputeEnvironmentComputeResources' for a more convenient
@@ -20,8 +20,10 @@
   , _batchComputeEnvironmentComputeResourcesImageId :: Maybe (Val Text)
   , _batchComputeEnvironmentComputeResourcesInstanceRole :: Val Text
   , _batchComputeEnvironmentComputeResourcesInstanceTypes :: ValList Text
+  , _batchComputeEnvironmentComputeResourcesLaunchTemplate :: Maybe BatchComputeEnvironmentLaunchTemplateSpecification
   , _batchComputeEnvironmentComputeResourcesMaxvCpus :: Val Integer
   , _batchComputeEnvironmentComputeResourcesMinvCpus :: Val Integer
+  , _batchComputeEnvironmentComputeResourcesPlacementGroup :: Maybe (Val Text)
   , _batchComputeEnvironmentComputeResourcesSecurityGroupIds :: ValList Text
   , _batchComputeEnvironmentComputeResourcesSpotIamFleetRole :: Maybe (Val Text)
   , _batchComputeEnvironmentComputeResourcesSubnets :: ValList Text
@@ -39,8 +41,10 @@
     , fmap (("ImageId",) . toJSON) _batchComputeEnvironmentComputeResourcesImageId
     , (Just . ("InstanceRole",) . toJSON) _batchComputeEnvironmentComputeResourcesInstanceRole
     , (Just . ("InstanceTypes",) . toJSON) _batchComputeEnvironmentComputeResourcesInstanceTypes
+    , fmap (("LaunchTemplate",) . toJSON) _batchComputeEnvironmentComputeResourcesLaunchTemplate
     , (Just . ("MaxvCpus",) . toJSON . fmap Integer') _batchComputeEnvironmentComputeResourcesMaxvCpus
     , (Just . ("MinvCpus",) . toJSON . fmap Integer') _batchComputeEnvironmentComputeResourcesMinvCpus
+    , fmap (("PlacementGroup",) . toJSON) _batchComputeEnvironmentComputeResourcesPlacementGroup
     , (Just . ("SecurityGroupIds",) . toJSON) _batchComputeEnvironmentComputeResourcesSecurityGroupIds
     , fmap (("SpotIamFleetRole",) . toJSON) _batchComputeEnvironmentComputeResourcesSpotIamFleetRole
     , (Just . ("Subnets",) . toJSON) _batchComputeEnvironmentComputeResourcesSubnets
@@ -57,8 +61,10 @@
       (obj .:? "ImageId") <*>
       (obj .: "InstanceRole") <*>
       (obj .: "InstanceTypes") <*>
+      (obj .:? "LaunchTemplate") <*>
       fmap (fmap unInteger') (obj .: "MaxvCpus") <*>
       fmap (fmap unInteger') (obj .: "MinvCpus") <*>
+      (obj .:? "PlacementGroup") <*>
       (obj .: "SecurityGroupIds") <*>
       (obj .:? "SpotIamFleetRole") <*>
       (obj .: "Subnets") <*>
@@ -85,8 +91,10 @@
   , _batchComputeEnvironmentComputeResourcesImageId = Nothing
   , _batchComputeEnvironmentComputeResourcesInstanceRole = instanceRolearg
   , _batchComputeEnvironmentComputeResourcesInstanceTypes = instanceTypesarg
+  , _batchComputeEnvironmentComputeResourcesLaunchTemplate = Nothing
   , _batchComputeEnvironmentComputeResourcesMaxvCpus = maxvCpusarg
   , _batchComputeEnvironmentComputeResourcesMinvCpus = minvCpusarg
+  , _batchComputeEnvironmentComputeResourcesPlacementGroup = Nothing
   , _batchComputeEnvironmentComputeResourcesSecurityGroupIds = securityGroupIdsarg
   , _batchComputeEnvironmentComputeResourcesSpotIamFleetRole = Nothing
   , _batchComputeEnvironmentComputeResourcesSubnets = subnetsarg
@@ -118,6 +126,10 @@
 bcecrInstanceTypes :: Lens' BatchComputeEnvironmentComputeResources (ValList Text)
 bcecrInstanceTypes = lens _batchComputeEnvironmentComputeResourcesInstanceTypes (\s a -> s { _batchComputeEnvironmentComputeResourcesInstanceTypes = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-launchtemplate
+bcecrLaunchTemplate :: Lens' BatchComputeEnvironmentComputeResources (Maybe BatchComputeEnvironmentLaunchTemplateSpecification)
+bcecrLaunchTemplate = lens _batchComputeEnvironmentComputeResourcesLaunchTemplate (\s a -> s { _batchComputeEnvironmentComputeResourcesLaunchTemplate = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-maxvcpus
 bcecrMaxvCpus :: Lens' BatchComputeEnvironmentComputeResources (Val Integer)
 bcecrMaxvCpus = lens _batchComputeEnvironmentComputeResourcesMaxvCpus (\s a -> s { _batchComputeEnvironmentComputeResourcesMaxvCpus = a })
@@ -125,6 +137,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-minvcpus
 bcecrMinvCpus :: Lens' BatchComputeEnvironmentComputeResources (Val Integer)
 bcecrMinvCpus = lens _batchComputeEnvironmentComputeResourcesMinvCpus (\s a -> s { _batchComputeEnvironmentComputeResourcesMinvCpus = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-placementgroup
+bcecrPlacementGroup :: Lens' BatchComputeEnvironmentComputeResources (Maybe (Val Text))
+bcecrPlacementGroup = lens _batchComputeEnvironmentComputeResourcesPlacementGroup (\s a -> s { _batchComputeEnvironmentComputeResourcesPlacementGroup = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-securitygroupids
 bcecrSecurityGroupIds :: Lens' BatchComputeEnvironmentComputeResources (ValList Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentLaunchTemplateSpecification.hs b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentLaunchTemplateSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BatchComputeEnvironmentLaunchTemplateSpecification.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html
+
+module Stratosphere.ResourceProperties.BatchComputeEnvironmentLaunchTemplateSpecification where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- BatchComputeEnvironmentLaunchTemplateSpecification. See
+-- 'batchComputeEnvironmentLaunchTemplateSpecification' for a more
+-- convenient constructor.
+data BatchComputeEnvironmentLaunchTemplateSpecification =
+  BatchComputeEnvironmentLaunchTemplateSpecification
+  { _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateId :: Maybe (Val Text)
+  , _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateName :: Maybe (Val Text)
+  , _batchComputeEnvironmentLaunchTemplateSpecificationVersion :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON BatchComputeEnvironmentLaunchTemplateSpecification where
+  toJSON BatchComputeEnvironmentLaunchTemplateSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("LaunchTemplateId",) . toJSON) _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateId
+    , fmap (("LaunchTemplateName",) . toJSON) _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateName
+    , fmap (("Version",) . toJSON) _batchComputeEnvironmentLaunchTemplateSpecificationVersion
+    ]
+
+instance FromJSON BatchComputeEnvironmentLaunchTemplateSpecification where
+  parseJSON (Object obj) =
+    BatchComputeEnvironmentLaunchTemplateSpecification <$>
+      (obj .:? "LaunchTemplateId") <*>
+      (obj .:? "LaunchTemplateName") <*>
+      (obj .:? "Version")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BatchComputeEnvironmentLaunchTemplateSpecification'
+-- containing required fields as arguments.
+batchComputeEnvironmentLaunchTemplateSpecification
+  :: BatchComputeEnvironmentLaunchTemplateSpecification
+batchComputeEnvironmentLaunchTemplateSpecification  =
+  BatchComputeEnvironmentLaunchTemplateSpecification
+  { _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateId = Nothing
+  , _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateName = Nothing
+  , _batchComputeEnvironmentLaunchTemplateSpecificationVersion = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html#cfn-batch-computeenvironment-launchtemplatespecification-launchtemplateid
+bceltsLaunchTemplateId :: Lens' BatchComputeEnvironmentLaunchTemplateSpecification (Maybe (Val Text))
+bceltsLaunchTemplateId = lens _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateId (\s a -> s { _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html#cfn-batch-computeenvironment-launchtemplatespecification-launchtemplatename
+bceltsLaunchTemplateName :: Lens' BatchComputeEnvironmentLaunchTemplateSpecification (Maybe (Val Text))
+bceltsLaunchTemplateName = lens _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateName (\s a -> s { _batchComputeEnvironmentLaunchTemplateSpecificationLaunchTemplateName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html#cfn-batch-computeenvironment-launchtemplatespecification-version
+bceltsVersion :: Lens' BatchComputeEnvironmentLaunchTemplateSpecification (Maybe (Val Text))
+bceltsVersion = lens _batchComputeEnvironmentLaunchTemplateSpecificationVersion (\s a -> s { _batchComputeEnvironmentLaunchTemplateSpecificationVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs
--- a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionContainerProperties.hs
@@ -20,6 +20,7 @@
   { _batchJobDefinitionContainerPropertiesCommand :: Maybe (ValList Text)
   , _batchJobDefinitionContainerPropertiesEnvironment :: Maybe [BatchJobDefinitionEnvironment]
   , _batchJobDefinitionContainerPropertiesImage :: Val Text
+  , _batchJobDefinitionContainerPropertiesInstanceType :: Maybe (Val Text)
   , _batchJobDefinitionContainerPropertiesJobRoleArn :: Maybe (Val Text)
   , _batchJobDefinitionContainerPropertiesMemory :: Val Integer
   , _batchJobDefinitionContainerPropertiesMountPoints :: Maybe [BatchJobDefinitionMountPoints]
@@ -38,6 +39,7 @@
     [ fmap (("Command",) . toJSON) _batchJobDefinitionContainerPropertiesCommand
     , fmap (("Environment",) . toJSON) _batchJobDefinitionContainerPropertiesEnvironment
     , (Just . ("Image",) . toJSON) _batchJobDefinitionContainerPropertiesImage
+    , fmap (("InstanceType",) . toJSON) _batchJobDefinitionContainerPropertiesInstanceType
     , fmap (("JobRoleArn",) . toJSON) _batchJobDefinitionContainerPropertiesJobRoleArn
     , (Just . ("Memory",) . toJSON . fmap Integer') _batchJobDefinitionContainerPropertiesMemory
     , fmap (("MountPoints",) . toJSON) _batchJobDefinitionContainerPropertiesMountPoints
@@ -55,6 +57,7 @@
       (obj .:? "Command") <*>
       (obj .:? "Environment") <*>
       (obj .: "Image") <*>
+      (obj .:? "InstanceType") <*>
       (obj .:? "JobRoleArn") <*>
       fmap (fmap unInteger') (obj .: "Memory") <*>
       (obj .:? "MountPoints") <*>
@@ -78,6 +81,7 @@
   { _batchJobDefinitionContainerPropertiesCommand = Nothing
   , _batchJobDefinitionContainerPropertiesEnvironment = Nothing
   , _batchJobDefinitionContainerPropertiesImage = imagearg
+  , _batchJobDefinitionContainerPropertiesInstanceType = Nothing
   , _batchJobDefinitionContainerPropertiesJobRoleArn = Nothing
   , _batchJobDefinitionContainerPropertiesMemory = memoryarg
   , _batchJobDefinitionContainerPropertiesMountPoints = Nothing
@@ -100,6 +104,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-image
 bjdcpImage :: Lens' BatchJobDefinitionContainerProperties (Val Text)
 bjdcpImage = lens _batchJobDefinitionContainerPropertiesImage (\s a -> s { _batchJobDefinitionContainerPropertiesImage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-instancetype
+bjdcpInstanceType :: Lens' BatchJobDefinitionContainerProperties (Maybe (Val Text))
+bjdcpInstanceType = lens _batchJobDefinitionContainerPropertiesInstanceType (\s a -> s { _batchJobDefinitionContainerPropertiesInstanceType = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-containerproperties.html#cfn-batch-jobdefinition-containerproperties-jobrolearn
 bjdcpJobRoleArn :: Lens' BatchJobDefinitionContainerProperties (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeProperties.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeProperties.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeProperties.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-nodeproperties.html
+
+module Stratosphere.ResourceProperties.BatchJobDefinitionNodeProperties where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.BatchJobDefinitionNodeRangeProperty
+
+-- | Full data type definition for BatchJobDefinitionNodeProperties. See
+-- 'batchJobDefinitionNodeProperties' for a more convenient constructor.
+data BatchJobDefinitionNodeProperties =
+  BatchJobDefinitionNodeProperties
+  { _batchJobDefinitionNodePropertiesMainNode :: Val Integer
+  , _batchJobDefinitionNodePropertiesNodeRangeProperties :: [BatchJobDefinitionNodeRangeProperty]
+  , _batchJobDefinitionNodePropertiesNumNodes :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON BatchJobDefinitionNodeProperties where
+  toJSON BatchJobDefinitionNodeProperties{..} =
+    object $
+    catMaybes
+    [ (Just . ("MainNode",) . toJSON . fmap Integer') _batchJobDefinitionNodePropertiesMainNode
+    , (Just . ("NodeRangeProperties",) . toJSON) _batchJobDefinitionNodePropertiesNodeRangeProperties
+    , (Just . ("NumNodes",) . toJSON . fmap Integer') _batchJobDefinitionNodePropertiesNumNodes
+    ]
+
+instance FromJSON BatchJobDefinitionNodeProperties where
+  parseJSON (Object obj) =
+    BatchJobDefinitionNodeProperties <$>
+      fmap (fmap unInteger') (obj .: "MainNode") <*>
+      (obj .: "NodeRangeProperties") <*>
+      fmap (fmap unInteger') (obj .: "NumNodes")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BatchJobDefinitionNodeProperties' containing required
+-- fields as arguments.
+batchJobDefinitionNodeProperties
+  :: Val Integer -- ^ 'bjdnpMainNode'
+  -> [BatchJobDefinitionNodeRangeProperty] -- ^ 'bjdnpNodeRangeProperties'
+  -> Val Integer -- ^ 'bjdnpNumNodes'
+  -> BatchJobDefinitionNodeProperties
+batchJobDefinitionNodeProperties mainNodearg nodeRangePropertiesarg numNodesarg =
+  BatchJobDefinitionNodeProperties
+  { _batchJobDefinitionNodePropertiesMainNode = mainNodearg
+  , _batchJobDefinitionNodePropertiesNodeRangeProperties = nodeRangePropertiesarg
+  , _batchJobDefinitionNodePropertiesNumNodes = numNodesarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-nodeproperties.html#cfn-batch-jobdefinition-nodeproperties-mainnode
+bjdnpMainNode :: Lens' BatchJobDefinitionNodeProperties (Val Integer)
+bjdnpMainNode = lens _batchJobDefinitionNodePropertiesMainNode (\s a -> s { _batchJobDefinitionNodePropertiesMainNode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-nodeproperties.html#cfn-batch-jobdefinition-nodeproperties-noderangeproperties
+bjdnpNodeRangeProperties :: Lens' BatchJobDefinitionNodeProperties [BatchJobDefinitionNodeRangeProperty]
+bjdnpNodeRangeProperties = lens _batchJobDefinitionNodePropertiesNodeRangeProperties (\s a -> s { _batchJobDefinitionNodePropertiesNodeRangeProperties = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-nodeproperties.html#cfn-batch-jobdefinition-nodeproperties-numnodes
+bjdnpNumNodes :: Lens' BatchJobDefinitionNodeProperties (Val Integer)
+bjdnpNumNodes = lens _batchJobDefinitionNodePropertiesNumNodes (\s a -> s { _batchJobDefinitionNodePropertiesNumNodes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeRangeProperty.hs b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeRangeProperty.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/BatchJobDefinitionNodeRangeProperty.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-noderangeproperty.html
+
+module Stratosphere.ResourceProperties.BatchJobDefinitionNodeRangeProperty where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties
+
+-- | Full data type definition for BatchJobDefinitionNodeRangeProperty. See
+-- 'batchJobDefinitionNodeRangeProperty' for a more convenient constructor.
+data BatchJobDefinitionNodeRangeProperty =
+  BatchJobDefinitionNodeRangeProperty
+  { _batchJobDefinitionNodeRangePropertyContainer :: Maybe BatchJobDefinitionContainerProperties
+  , _batchJobDefinitionNodeRangePropertyTargetNodes :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON BatchJobDefinitionNodeRangeProperty where
+  toJSON BatchJobDefinitionNodeRangeProperty{..} =
+    object $
+    catMaybes
+    [ fmap (("Container",) . toJSON) _batchJobDefinitionNodeRangePropertyContainer
+    , (Just . ("TargetNodes",) . toJSON) _batchJobDefinitionNodeRangePropertyTargetNodes
+    ]
+
+instance FromJSON BatchJobDefinitionNodeRangeProperty where
+  parseJSON (Object obj) =
+    BatchJobDefinitionNodeRangeProperty <$>
+      (obj .:? "Container") <*>
+      (obj .: "TargetNodes")
+  parseJSON _ = mempty
+
+-- | Constructor for 'BatchJobDefinitionNodeRangeProperty' containing required
+-- fields as arguments.
+batchJobDefinitionNodeRangeProperty
+  :: Val Text -- ^ 'bjdnrpTargetNodes'
+  -> BatchJobDefinitionNodeRangeProperty
+batchJobDefinitionNodeRangeProperty targetNodesarg =
+  BatchJobDefinitionNodeRangeProperty
+  { _batchJobDefinitionNodeRangePropertyContainer = Nothing
+  , _batchJobDefinitionNodeRangePropertyTargetNodes = targetNodesarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-noderangeproperty.html#cfn-batch-jobdefinition-noderangeproperty-container
+bjdnrpContainer :: Lens' BatchJobDefinitionNodeRangeProperty (Maybe BatchJobDefinitionContainerProperties)
+bjdnrpContainer = lens _batchJobDefinitionNodeRangePropertyContainer (\s a -> s { _batchJobDefinitionNodeRangePropertyContainer = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-jobdefinition-noderangeproperty.html#cfn-batch-jobdefinition-noderangeproperty-targetnodes
+bjdnrpTargetNodes :: Lens' BatchJobDefinitionNodeRangeProperty (Val Text)
+bjdnrpTargetNodes = lens _batchJobDefinitionNodeRangePropertyTargetNodes (\s a -> s { _batchJobDefinitionNodeRangePropertyTargetNodes = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineActionDeclaration.hs
@@ -21,6 +21,7 @@
   , _codePipelinePipelineActionDeclarationInputArtifacts :: Maybe [CodePipelinePipelineInputArtifact]
   , _codePipelinePipelineActionDeclarationName :: Val Text
   , _codePipelinePipelineActionDeclarationOutputArtifacts :: Maybe [CodePipelinePipelineOutputArtifact]
+  , _codePipelinePipelineActionDeclarationRegion :: Maybe (Val Text)
   , _codePipelinePipelineActionDeclarationRoleArn :: Maybe (Val Text)
   , _codePipelinePipelineActionDeclarationRunOrder :: Maybe (Val Integer)
   } deriving (Show, Eq)
@@ -34,6 +35,7 @@
     , fmap (("InputArtifacts",) . toJSON) _codePipelinePipelineActionDeclarationInputArtifacts
     , (Just . ("Name",) . toJSON) _codePipelinePipelineActionDeclarationName
     , fmap (("OutputArtifacts",) . toJSON) _codePipelinePipelineActionDeclarationOutputArtifacts
+    , fmap (("Region",) . toJSON) _codePipelinePipelineActionDeclarationRegion
     , fmap (("RoleArn",) . toJSON) _codePipelinePipelineActionDeclarationRoleArn
     , fmap (("RunOrder",) . toJSON . fmap Integer') _codePipelinePipelineActionDeclarationRunOrder
     ]
@@ -46,6 +48,7 @@
       (obj .:? "InputArtifacts") <*>
       (obj .: "Name") <*>
       (obj .:? "OutputArtifacts") <*>
+      (obj .:? "Region") <*>
       (obj .:? "RoleArn") <*>
       fmap (fmap (fmap unInteger')) (obj .:? "RunOrder")
   parseJSON _ = mempty
@@ -63,6 +66,7 @@
   , _codePipelinePipelineActionDeclarationInputArtifacts = Nothing
   , _codePipelinePipelineActionDeclarationName = namearg
   , _codePipelinePipelineActionDeclarationOutputArtifacts = Nothing
+  , _codePipelinePipelineActionDeclarationRegion = Nothing
   , _codePipelinePipelineActionDeclarationRoleArn = Nothing
   , _codePipelinePipelineActionDeclarationRunOrder = Nothing
   }
@@ -86,6 +90,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-outputartifacts
 cppadOutputArtifacts :: Lens' CodePipelinePipelineActionDeclaration (Maybe [CodePipelinePipelineOutputArtifact])
 cppadOutputArtifacts = lens _codePipelinePipelineActionDeclarationOutputArtifacts (\s a -> s { _codePipelinePipelineActionDeclarationOutputArtifacts = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-region
+cppadRegion :: Lens' CodePipelinePipelineActionDeclaration (Maybe (Val Text))
+cppadRegion = lens _codePipelinePipelineActionDeclarationRegion (\s a -> s { _codePipelinePipelineActionDeclarationRegion = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stages-actions.html#cfn-codepipeline-pipeline-stages-actions-rolearn
 cppadRoleArn :: Lens' CodePipelinePipelineActionDeclaration (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStoreMap.hs b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStoreMap.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CodePipelinePipelineArtifactStoreMap.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstoremap.html
+
+module Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStoreMap where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStore
+
+-- | Full data type definition for CodePipelinePipelineArtifactStoreMap. See
+-- 'codePipelinePipelineArtifactStoreMap' for a more convenient constructor.
+data CodePipelinePipelineArtifactStoreMap =
+  CodePipelinePipelineArtifactStoreMap
+  { _codePipelinePipelineArtifactStoreMapArtifactStore :: CodePipelinePipelineArtifactStore
+  , _codePipelinePipelineArtifactStoreMapRegion :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON CodePipelinePipelineArtifactStoreMap where
+  toJSON CodePipelinePipelineArtifactStoreMap{..} =
+    object $
+    catMaybes
+    [ (Just . ("ArtifactStore",) . toJSON) _codePipelinePipelineArtifactStoreMapArtifactStore
+    , (Just . ("Region",) . toJSON) _codePipelinePipelineArtifactStoreMapRegion
+    ]
+
+instance FromJSON CodePipelinePipelineArtifactStoreMap where
+  parseJSON (Object obj) =
+    CodePipelinePipelineArtifactStoreMap <$>
+      (obj .: "ArtifactStore") <*>
+      (obj .: "Region")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CodePipelinePipelineArtifactStoreMap' containing
+-- required fields as arguments.
+codePipelinePipelineArtifactStoreMap
+  :: CodePipelinePipelineArtifactStore -- ^ 'cppasmArtifactStore'
+  -> Val Text -- ^ 'cppasmRegion'
+  -> CodePipelinePipelineArtifactStoreMap
+codePipelinePipelineArtifactStoreMap artifactStorearg regionarg =
+  CodePipelinePipelineArtifactStoreMap
+  { _codePipelinePipelineArtifactStoreMapArtifactStore = artifactStorearg
+  , _codePipelinePipelineArtifactStoreMapRegion = regionarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstoremap.html#cfn-codepipeline-pipeline-artifactstoremap-artifactstore
+cppasmArtifactStore :: Lens' CodePipelinePipelineArtifactStoreMap CodePipelinePipelineArtifactStore
+cppasmArtifactStore = lens _codePipelinePipelineArtifactStoreMapArtifactStore (\s a -> s { _codePipelinePipelineArtifactStoreMapArtifactStore = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-artifactstoremap.html#cfn-codepipeline-pipeline-artifactstoremap-region
+cppasmRegion :: Lens' CodePipelinePipelineArtifactStoreMap (Val Text)
+cppasmRegion = lens _codePipelinePipelineArtifactStoreMapRegion (\s a -> s { _codePipelinePipelineArtifactStoreMapRegion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
--- a/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
+++ b/library-gen/Stratosphere/ResourceProperties/DynamoDBTableGlobalSecondaryIndex.hs
@@ -18,7 +18,7 @@
   { _dynamoDBTableGlobalSecondaryIndexIndexName :: Val Text
   , _dynamoDBTableGlobalSecondaryIndexKeySchema :: [DynamoDBTableKeySchema]
   , _dynamoDBTableGlobalSecondaryIndexProjection :: DynamoDBTableProjection
-  , _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput :: DynamoDBTableProvisionedThroughput
+  , _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput :: Maybe DynamoDBTableProvisionedThroughput
   } deriving (Show, Eq)
 
 instance ToJSON DynamoDBTableGlobalSecondaryIndex where
@@ -28,7 +28,7 @@
     [ (Just . ("IndexName",) . toJSON) _dynamoDBTableGlobalSecondaryIndexIndexName
     , (Just . ("KeySchema",) . toJSON) _dynamoDBTableGlobalSecondaryIndexKeySchema
     , (Just . ("Projection",) . toJSON) _dynamoDBTableGlobalSecondaryIndexProjection
-    , (Just . ("ProvisionedThroughput",) . toJSON) _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput
+    , fmap (("ProvisionedThroughput",) . toJSON) _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput
     ]
 
 instance FromJSON DynamoDBTableGlobalSecondaryIndex where
@@ -37,7 +37,7 @@
       (obj .: "IndexName") <*>
       (obj .: "KeySchema") <*>
       (obj .: "Projection") <*>
-      (obj .: "ProvisionedThroughput")
+      (obj .:? "ProvisionedThroughput")
   parseJSON _ = mempty
 
 -- | Constructor for 'DynamoDBTableGlobalSecondaryIndex' containing required
@@ -46,14 +46,13 @@
   :: Val Text -- ^ 'ddbtgsiIndexName'
   -> [DynamoDBTableKeySchema] -- ^ 'ddbtgsiKeySchema'
   -> DynamoDBTableProjection -- ^ 'ddbtgsiProjection'
-  -> DynamoDBTableProvisionedThroughput -- ^ 'ddbtgsiProvisionedThroughput'
   -> DynamoDBTableGlobalSecondaryIndex
-dynamoDBTableGlobalSecondaryIndex indexNamearg keySchemaarg projectionarg provisionedThroughputarg =
+dynamoDBTableGlobalSecondaryIndex indexNamearg keySchemaarg projectionarg =
   DynamoDBTableGlobalSecondaryIndex
   { _dynamoDBTableGlobalSecondaryIndexIndexName = indexNamearg
   , _dynamoDBTableGlobalSecondaryIndexKeySchema = keySchemaarg
   , _dynamoDBTableGlobalSecondaryIndexProjection = projectionarg
-  , _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput = provisionedThroughputarg
+  , _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-indexname
@@ -69,5 +68,5 @@
 ddbtgsiProjection = lens _dynamoDBTableGlobalSecondaryIndexProjection (\s a -> s { _dynamoDBTableGlobalSecondaryIndexProjection = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-provisionedthroughput
-ddbtgsiProvisionedThroughput :: Lens' DynamoDBTableGlobalSecondaryIndex DynamoDBTableProvisionedThroughput
+ddbtgsiProvisionedThroughput :: Lens' DynamoDBTableGlobalSecondaryIndex (Maybe DynamoDBTableProvisionedThroughput)
 ddbtgsiProvisionedThroughput = lens _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput (\s a -> s { _dynamoDBTableGlobalSecondaryIndexProvisionedThroughput = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateConfigRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateConfigRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateConfigRequest.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest
+
+-- | Full data type definition for
+-- EC2EC2FleetFleetLaunchTemplateConfigRequest. See
+-- 'ec2EC2FleetFleetLaunchTemplateConfigRequest' for a more convenient
+-- constructor.
+data EC2EC2FleetFleetLaunchTemplateConfigRequest =
+  EC2EC2FleetFleetLaunchTemplateConfigRequest
+  { _eC2EC2FleetFleetLaunchTemplateConfigRequestLaunchTemplateSpecification :: Maybe EC2EC2FleetFleetLaunchTemplateSpecificationRequest
+  , _eC2EC2FleetFleetLaunchTemplateConfigRequestOverrides :: Maybe [EC2EC2FleetFleetLaunchTemplateOverridesRequest]
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetFleetLaunchTemplateConfigRequest where
+  toJSON EC2EC2FleetFleetLaunchTemplateConfigRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("LaunchTemplateSpecification",) . toJSON) _eC2EC2FleetFleetLaunchTemplateConfigRequestLaunchTemplateSpecification
+    , fmap (("Overrides",) . toJSON) _eC2EC2FleetFleetLaunchTemplateConfigRequestOverrides
+    ]
+
+instance FromJSON EC2EC2FleetFleetLaunchTemplateConfigRequest where
+  parseJSON (Object obj) =
+    EC2EC2FleetFleetLaunchTemplateConfigRequest <$>
+      (obj .:? "LaunchTemplateSpecification") <*>
+      (obj .:? "Overrides")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetFleetLaunchTemplateConfigRequest' containing
+-- required fields as arguments.
+ec2EC2FleetFleetLaunchTemplateConfigRequest
+  :: EC2EC2FleetFleetLaunchTemplateConfigRequest
+ec2EC2FleetFleetLaunchTemplateConfigRequest  =
+  EC2EC2FleetFleetLaunchTemplateConfigRequest
+  { _eC2EC2FleetFleetLaunchTemplateConfigRequestLaunchTemplateSpecification = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateConfigRequestOverrides = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-launchtemplatespecification
+ececffltcrLaunchTemplateSpecification :: Lens' EC2EC2FleetFleetLaunchTemplateConfigRequest (Maybe EC2EC2FleetFleetLaunchTemplateSpecificationRequest)
+ececffltcrLaunchTemplateSpecification = lens _eC2EC2FleetFleetLaunchTemplateConfigRequestLaunchTemplateSpecification (\s a -> s { _eC2EC2FleetFleetLaunchTemplateConfigRequestLaunchTemplateSpecification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-overrides
+ececffltcrOverrides :: Lens' EC2EC2FleetFleetLaunchTemplateConfigRequest (Maybe [EC2EC2FleetFleetLaunchTemplateOverridesRequest])
+ececffltcrOverrides = lens _eC2EC2FleetFleetLaunchTemplateConfigRequestOverrides (\s a -> s { _eC2EC2FleetFleetLaunchTemplateConfigRequestOverrides = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateOverridesRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateOverridesRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateOverridesRequest.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- EC2EC2FleetFleetLaunchTemplateOverridesRequest. See
+-- 'ec2EC2FleetFleetLaunchTemplateOverridesRequest' for a more convenient
+-- constructor.
+data EC2EC2FleetFleetLaunchTemplateOverridesRequest =
+  EC2EC2FleetFleetLaunchTemplateOverridesRequest
+  { _eC2EC2FleetFleetLaunchTemplateOverridesRequestAvailabilityZone :: Maybe (Val Text)
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestInstanceType :: Maybe (Val Text)
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestMaxPrice :: Maybe (Val Text)
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestPriority :: Maybe (Val Double)
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestSubnetId :: Maybe (Val Text)
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestWeightedCapacity :: Maybe (Val Double)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetFleetLaunchTemplateOverridesRequest where
+  toJSON EC2EC2FleetFleetLaunchTemplateOverridesRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("AvailabilityZone",) . toJSON) _eC2EC2FleetFleetLaunchTemplateOverridesRequestAvailabilityZone
+    , fmap (("InstanceType",) . toJSON) _eC2EC2FleetFleetLaunchTemplateOverridesRequestInstanceType
+    , fmap (("MaxPrice",) . toJSON) _eC2EC2FleetFleetLaunchTemplateOverridesRequestMaxPrice
+    , fmap (("Priority",) . toJSON . fmap Double') _eC2EC2FleetFleetLaunchTemplateOverridesRequestPriority
+    , fmap (("SubnetId",) . toJSON) _eC2EC2FleetFleetLaunchTemplateOverridesRequestSubnetId
+    , fmap (("WeightedCapacity",) . toJSON . fmap Double') _eC2EC2FleetFleetLaunchTemplateOverridesRequestWeightedCapacity
+    ]
+
+instance FromJSON EC2EC2FleetFleetLaunchTemplateOverridesRequest where
+  parseJSON (Object obj) =
+    EC2EC2FleetFleetLaunchTemplateOverridesRequest <$>
+      (obj .:? "AvailabilityZone") <*>
+      (obj .:? "InstanceType") <*>
+      (obj .:? "MaxPrice") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "Priority") <*>
+      (obj .:? "SubnetId") <*>
+      fmap (fmap (fmap unDouble')) (obj .:? "WeightedCapacity")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetFleetLaunchTemplateOverridesRequest'
+-- containing required fields as arguments.
+ec2EC2FleetFleetLaunchTemplateOverridesRequest
+  :: EC2EC2FleetFleetLaunchTemplateOverridesRequest
+ec2EC2FleetFleetLaunchTemplateOverridesRequest  =
+  EC2EC2FleetFleetLaunchTemplateOverridesRequest
+  { _eC2EC2FleetFleetLaunchTemplateOverridesRequestAvailabilityZone = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestInstanceType = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestMaxPrice = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestPriority = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestSubnetId = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateOverridesRequestWeightedCapacity = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-availabilityzone
+ececffltorAvailabilityZone :: Lens' EC2EC2FleetFleetLaunchTemplateOverridesRequest (Maybe (Val Text))
+ececffltorAvailabilityZone = lens _eC2EC2FleetFleetLaunchTemplateOverridesRequestAvailabilityZone (\s a -> s { _eC2EC2FleetFleetLaunchTemplateOverridesRequestAvailabilityZone = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-instancetype
+ececffltorInstanceType :: Lens' EC2EC2FleetFleetLaunchTemplateOverridesRequest (Maybe (Val Text))
+ececffltorInstanceType = lens _eC2EC2FleetFleetLaunchTemplateOverridesRequestInstanceType (\s a -> s { _eC2EC2FleetFleetLaunchTemplateOverridesRequestInstanceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-maxprice
+ececffltorMaxPrice :: Lens' EC2EC2FleetFleetLaunchTemplateOverridesRequest (Maybe (Val Text))
+ececffltorMaxPrice = lens _eC2EC2FleetFleetLaunchTemplateOverridesRequestMaxPrice (\s a -> s { _eC2EC2FleetFleetLaunchTemplateOverridesRequestMaxPrice = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-priority
+ececffltorPriority :: Lens' EC2EC2FleetFleetLaunchTemplateOverridesRequest (Maybe (Val Double))
+ececffltorPriority = lens _eC2EC2FleetFleetLaunchTemplateOverridesRequestPriority (\s a -> s { _eC2EC2FleetFleetLaunchTemplateOverridesRequestPriority = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-subnetid
+ececffltorSubnetId :: Lens' EC2EC2FleetFleetLaunchTemplateOverridesRequest (Maybe (Val Text))
+ececffltorSubnetId = lens _eC2EC2FleetFleetLaunchTemplateOverridesRequestSubnetId (\s a -> s { _eC2EC2FleetFleetLaunchTemplateOverridesRequestSubnetId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-weightedcapacity
+ececffltorWeightedCapacity :: Lens' EC2EC2FleetFleetLaunchTemplateOverridesRequest (Maybe (Val Double))
+ececffltorWeightedCapacity = lens _eC2EC2FleetFleetLaunchTemplateOverridesRequestWeightedCapacity (\s a -> s { _eC2EC2FleetFleetLaunchTemplateOverridesRequestWeightedCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateSpecificationRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateSpecificationRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetFleetLaunchTemplateSpecificationRequest.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- EC2EC2FleetFleetLaunchTemplateSpecificationRequest. See
+-- 'ec2EC2FleetFleetLaunchTemplateSpecificationRequest' for a more
+-- convenient constructor.
+data EC2EC2FleetFleetLaunchTemplateSpecificationRequest =
+  EC2EC2FleetFleetLaunchTemplateSpecificationRequest
+  { _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateId :: Maybe (Val Text)
+  , _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateName :: Maybe (Val Text)
+  , _eC2EC2FleetFleetLaunchTemplateSpecificationRequestVersion :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetFleetLaunchTemplateSpecificationRequest where
+  toJSON EC2EC2FleetFleetLaunchTemplateSpecificationRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("LaunchTemplateId",) . toJSON) _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateId
+    , fmap (("LaunchTemplateName",) . toJSON) _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateName
+    , fmap (("Version",) . toJSON) _eC2EC2FleetFleetLaunchTemplateSpecificationRequestVersion
+    ]
+
+instance FromJSON EC2EC2FleetFleetLaunchTemplateSpecificationRequest where
+  parseJSON (Object obj) =
+    EC2EC2FleetFleetLaunchTemplateSpecificationRequest <$>
+      (obj .:? "LaunchTemplateId") <*>
+      (obj .:? "LaunchTemplateName") <*>
+      (obj .:? "Version")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetFleetLaunchTemplateSpecificationRequest'
+-- containing required fields as arguments.
+ec2EC2FleetFleetLaunchTemplateSpecificationRequest
+  :: EC2EC2FleetFleetLaunchTemplateSpecificationRequest
+ec2EC2FleetFleetLaunchTemplateSpecificationRequest  =
+  EC2EC2FleetFleetLaunchTemplateSpecificationRequest
+  { _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateId = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateName = Nothing
+  , _eC2EC2FleetFleetLaunchTemplateSpecificationRequestVersion = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplateid
+ececffltsrLaunchTemplateId :: Lens' EC2EC2FleetFleetLaunchTemplateSpecificationRequest (Maybe (Val Text))
+ececffltsrLaunchTemplateId = lens _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateId (\s a -> s { _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplatename
+ececffltsrLaunchTemplateName :: Lens' EC2EC2FleetFleetLaunchTemplateSpecificationRequest (Maybe (Val Text))
+ececffltsrLaunchTemplateName = lens _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateName (\s a -> s { _eC2EC2FleetFleetLaunchTemplateSpecificationRequestLaunchTemplateName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-version
+ececffltsrVersion :: Lens' EC2EC2FleetFleetLaunchTemplateSpecificationRequest (Maybe (Val Text))
+ececffltsrVersion = lens _eC2EC2FleetFleetLaunchTemplateSpecificationRequestVersion (\s a -> s { _eC2EC2FleetFleetLaunchTemplateSpecificationRequestVersion = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetOnDemandOptionsRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetOnDemandOptionsRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetOnDemandOptionsRequest.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetOnDemandOptionsRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2EC2FleetOnDemandOptionsRequest. See
+-- 'ec2EC2FleetOnDemandOptionsRequest' for a more convenient constructor.
+data EC2EC2FleetOnDemandOptionsRequest =
+  EC2EC2FleetOnDemandOptionsRequest
+  { _eC2EC2FleetOnDemandOptionsRequestAllocationStrategy :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetOnDemandOptionsRequest where
+  toJSON EC2EC2FleetOnDemandOptionsRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("AllocationStrategy",) . toJSON) _eC2EC2FleetOnDemandOptionsRequestAllocationStrategy
+    ]
+
+instance FromJSON EC2EC2FleetOnDemandOptionsRequest where
+  parseJSON (Object obj) =
+    EC2EC2FleetOnDemandOptionsRequest <$>
+      (obj .:? "AllocationStrategy")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetOnDemandOptionsRequest' containing required
+-- fields as arguments.
+ec2EC2FleetOnDemandOptionsRequest
+  :: EC2EC2FleetOnDemandOptionsRequest
+ec2EC2FleetOnDemandOptionsRequest  =
+  EC2EC2FleetOnDemandOptionsRequest
+  { _eC2EC2FleetOnDemandOptionsRequestAllocationStrategy = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-allocationstrategy
+ececfodorAllocationStrategy :: Lens' EC2EC2FleetOnDemandOptionsRequest (Maybe (Val Text))
+ececfodorAllocationStrategy = lens _eC2EC2FleetOnDemandOptionsRequestAllocationStrategy (\s a -> s { _eC2EC2FleetOnDemandOptionsRequestAllocationStrategy = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetSpotOptionsRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetSpotOptionsRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetSpotOptionsRequest.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetSpotOptionsRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2EC2FleetSpotOptionsRequest. See
+-- 'ec2EC2FleetSpotOptionsRequest' for a more convenient constructor.
+data EC2EC2FleetSpotOptionsRequest =
+  EC2EC2FleetSpotOptionsRequest
+  { _eC2EC2FleetSpotOptionsRequestAllocationStrategy :: Maybe (Val Text)
+  , _eC2EC2FleetSpotOptionsRequestInstanceInterruptionBehavior :: Maybe (Val Text)
+  , _eC2EC2FleetSpotOptionsRequestInstancePoolsToUseCount :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetSpotOptionsRequest where
+  toJSON EC2EC2FleetSpotOptionsRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("AllocationStrategy",) . toJSON) _eC2EC2FleetSpotOptionsRequestAllocationStrategy
+    , fmap (("InstanceInterruptionBehavior",) . toJSON) _eC2EC2FleetSpotOptionsRequestInstanceInterruptionBehavior
+    , fmap (("InstancePoolsToUseCount",) . toJSON . fmap Integer') _eC2EC2FleetSpotOptionsRequestInstancePoolsToUseCount
+    ]
+
+instance FromJSON EC2EC2FleetSpotOptionsRequest where
+  parseJSON (Object obj) =
+    EC2EC2FleetSpotOptionsRequest <$>
+      (obj .:? "AllocationStrategy") <*>
+      (obj .:? "InstanceInterruptionBehavior") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "InstancePoolsToUseCount")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetSpotOptionsRequest' containing required
+-- fields as arguments.
+ec2EC2FleetSpotOptionsRequest
+  :: EC2EC2FleetSpotOptionsRequest
+ec2EC2FleetSpotOptionsRequest  =
+  EC2EC2FleetSpotOptionsRequest
+  { _eC2EC2FleetSpotOptionsRequestAllocationStrategy = Nothing
+  , _eC2EC2FleetSpotOptionsRequestInstanceInterruptionBehavior = Nothing
+  , _eC2EC2FleetSpotOptionsRequestInstancePoolsToUseCount = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-allocationstrategy
+ececfsorAllocationStrategy :: Lens' EC2EC2FleetSpotOptionsRequest (Maybe (Val Text))
+ececfsorAllocationStrategy = lens _eC2EC2FleetSpotOptionsRequestAllocationStrategy (\s a -> s { _eC2EC2FleetSpotOptionsRequestAllocationStrategy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instanceinterruptionbehavior
+ececfsorInstanceInterruptionBehavior :: Lens' EC2EC2FleetSpotOptionsRequest (Maybe (Val Text))
+ececfsorInstanceInterruptionBehavior = lens _eC2EC2FleetSpotOptionsRequestInstanceInterruptionBehavior (\s a -> s { _eC2EC2FleetSpotOptionsRequestInstanceInterruptionBehavior = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instancepoolstousecount
+ececfsorInstancePoolsToUseCount :: Lens' EC2EC2FleetSpotOptionsRequest (Maybe (Val Integer))
+ececfsorInstancePoolsToUseCount = lens _eC2EC2FleetSpotOptionsRequestInstancePoolsToUseCount (\s a -> s { _eC2EC2FleetSpotOptionsRequestInstancePoolsToUseCount = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagRequest.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagrequest.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetTagRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EC2EC2FleetTagRequest. See
+-- 'ec2EC2FleetTagRequest' for a more convenient constructor.
+data EC2EC2FleetTagRequest =
+  EC2EC2FleetTagRequest
+  { _eC2EC2FleetTagRequestKey :: Maybe (Val Text)
+  , _eC2EC2FleetTagRequestValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetTagRequest where
+  toJSON EC2EC2FleetTagRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _eC2EC2FleetTagRequestKey
+    , fmap (("Value",) . toJSON) _eC2EC2FleetTagRequestValue
+    ]
+
+instance FromJSON EC2EC2FleetTagRequest where
+  parseJSON (Object obj) =
+    EC2EC2FleetTagRequest <$>
+      (obj .:? "Key") <*>
+      (obj .:? "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetTagRequest' containing required fields as
+-- arguments.
+ec2EC2FleetTagRequest
+  :: EC2EC2FleetTagRequest
+ec2EC2FleetTagRequest  =
+  EC2EC2FleetTagRequest
+  { _eC2EC2FleetTagRequestKey = Nothing
+  , _eC2EC2FleetTagRequestValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagrequest.html#cfn-ec2-ec2fleet-tagrequest-key
+ececftrKey :: Lens' EC2EC2FleetTagRequest (Maybe (Val Text))
+ececftrKey = lens _eC2EC2FleetTagRequestKey (\s a -> s { _eC2EC2FleetTagRequestKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagrequest.html#cfn-ec2-ec2fleet-tagrequest-value
+ececftrValue :: Lens' EC2EC2FleetTagRequest (Maybe (Val Text))
+ececftrValue = lens _eC2EC2FleetTagRequestValue (\s a -> s { _eC2EC2FleetTagRequestValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagSpecification.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagSpecification.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTagSpecification.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetTagSpecification where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EC2EC2FleetTagRequest
+
+-- | Full data type definition for EC2EC2FleetTagSpecification. See
+-- 'ec2EC2FleetTagSpecification' for a more convenient constructor.
+data EC2EC2FleetTagSpecification =
+  EC2EC2FleetTagSpecification
+  { _eC2EC2FleetTagSpecificationResourceType :: Maybe (Val Text)
+  , _eC2EC2FleetTagSpecificationTags :: Maybe [EC2EC2FleetTagRequest]
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetTagSpecification where
+  toJSON EC2EC2FleetTagSpecification{..} =
+    object $
+    catMaybes
+    [ fmap (("ResourceType",) . toJSON) _eC2EC2FleetTagSpecificationResourceType
+    , fmap (("Tags",) . toJSON) _eC2EC2FleetTagSpecificationTags
+    ]
+
+instance FromJSON EC2EC2FleetTagSpecification where
+  parseJSON (Object obj) =
+    EC2EC2FleetTagSpecification <$>
+      (obj .:? "ResourceType") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetTagSpecification' containing required fields
+-- as arguments.
+ec2EC2FleetTagSpecification
+  :: EC2EC2FleetTagSpecification
+ec2EC2FleetTagSpecification  =
+  EC2EC2FleetTagSpecification
+  { _eC2EC2FleetTagSpecificationResourceType = Nothing
+  , _eC2EC2FleetTagSpecificationTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-resourcetype
+ececftsResourceType :: Lens' EC2EC2FleetTagSpecification (Maybe (Val Text))
+ececftsResourceType = lens _eC2EC2FleetTagSpecificationResourceType (\s a -> s { _eC2EC2FleetTagSpecificationResourceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-tags
+ececftsTags :: Lens' EC2EC2FleetTagSpecification (Maybe [EC2EC2FleetTagRequest])
+ececftsTags = lens _eC2EC2FleetTagSpecificationTags (\s a -> s { _eC2EC2FleetTagSpecificationTags = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTargetCapacitySpecificationRequest.hs b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTargetCapacitySpecificationRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EC2EC2FleetTargetCapacitySpecificationRequest.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html
+
+module Stratosphere.ResourceProperties.EC2EC2FleetTargetCapacitySpecificationRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- EC2EC2FleetTargetCapacitySpecificationRequest. See
+-- 'ec2EC2FleetTargetCapacitySpecificationRequest' for a more convenient
+-- constructor.
+data EC2EC2FleetTargetCapacitySpecificationRequest =
+  EC2EC2FleetTargetCapacitySpecificationRequest
+  { _eC2EC2FleetTargetCapacitySpecificationRequestDefaultTargetCapacityType :: Maybe (Val Text)
+  , _eC2EC2FleetTargetCapacitySpecificationRequestOnDemandTargetCapacity :: Maybe (Val Integer)
+  , _eC2EC2FleetTargetCapacitySpecificationRequestSpotTargetCapacity :: Maybe (Val Integer)
+  , _eC2EC2FleetTargetCapacitySpecificationRequestTotalTargetCapacity :: Val Integer
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2FleetTargetCapacitySpecificationRequest where
+  toJSON EC2EC2FleetTargetCapacitySpecificationRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("DefaultTargetCapacityType",) . toJSON) _eC2EC2FleetTargetCapacitySpecificationRequestDefaultTargetCapacityType
+    , fmap (("OnDemandTargetCapacity",) . toJSON . fmap Integer') _eC2EC2FleetTargetCapacitySpecificationRequestOnDemandTargetCapacity
+    , fmap (("SpotTargetCapacity",) . toJSON . fmap Integer') _eC2EC2FleetTargetCapacitySpecificationRequestSpotTargetCapacity
+    , (Just . ("TotalTargetCapacity",) . toJSON . fmap Integer') _eC2EC2FleetTargetCapacitySpecificationRequestTotalTargetCapacity
+    ]
+
+instance FromJSON EC2EC2FleetTargetCapacitySpecificationRequest where
+  parseJSON (Object obj) =
+    EC2EC2FleetTargetCapacitySpecificationRequest <$>
+      (obj .:? "DefaultTargetCapacityType") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "OnDemandTargetCapacity") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SpotTargetCapacity") <*>
+      fmap (fmap unInteger') (obj .: "TotalTargetCapacity")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2FleetTargetCapacitySpecificationRequest'
+-- containing required fields as arguments.
+ec2EC2FleetTargetCapacitySpecificationRequest
+  :: Val Integer -- ^ 'ececftcsrTotalTargetCapacity'
+  -> EC2EC2FleetTargetCapacitySpecificationRequest
+ec2EC2FleetTargetCapacitySpecificationRequest totalTargetCapacityarg =
+  EC2EC2FleetTargetCapacitySpecificationRequest
+  { _eC2EC2FleetTargetCapacitySpecificationRequestDefaultTargetCapacityType = Nothing
+  , _eC2EC2FleetTargetCapacitySpecificationRequestOnDemandTargetCapacity = Nothing
+  , _eC2EC2FleetTargetCapacitySpecificationRequestSpotTargetCapacity = Nothing
+  , _eC2EC2FleetTargetCapacitySpecificationRequestTotalTargetCapacity = totalTargetCapacityarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-defaulttargetcapacitytype
+ececftcsrDefaultTargetCapacityType :: Lens' EC2EC2FleetTargetCapacitySpecificationRequest (Maybe (Val Text))
+ececftcsrDefaultTargetCapacityType = lens _eC2EC2FleetTargetCapacitySpecificationRequestDefaultTargetCapacityType (\s a -> s { _eC2EC2FleetTargetCapacitySpecificationRequestDefaultTargetCapacityType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-ondemandtargetcapacity
+ececftcsrOnDemandTargetCapacity :: Lens' EC2EC2FleetTargetCapacitySpecificationRequest (Maybe (Val Integer))
+ececftcsrOnDemandTargetCapacity = lens _eC2EC2FleetTargetCapacitySpecificationRequestOnDemandTargetCapacity (\s a -> s { _eC2EC2FleetTargetCapacitySpecificationRequestOnDemandTargetCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-spottargetcapacity
+ececftcsrSpotTargetCapacity :: Lens' EC2EC2FleetTargetCapacitySpecificationRequest (Maybe (Val Integer))
+ececftcsrSpotTargetCapacity = lens _eC2EC2FleetTargetCapacitySpecificationRequestSpotTargetCapacity (\s a -> s { _eC2EC2FleetTargetCapacitySpecificationRequestSpotTargetCapacity = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-totaltargetcapacity
+ececftcsrTotalTargetCapacity :: Lens' EC2EC2FleetTargetCapacitySpecificationRequest (Val Integer)
+ececftcsrTotalTargetCapacity = lens _eC2EC2FleetTargetCapacitySpecificationRequestTotalTargetCapacity (\s a -> s { _eC2EC2FleetTargetCapacitySpecificationRequestTotalTargetCapacity = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterHadoopJarStepConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterHadoopJarStepConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterHadoopJarStepConfig.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-hadoopjarstepconfig.html
+
+module Stratosphere.ResourceProperties.EMRClusterHadoopJarStepConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EMRClusterKeyValue
+
+-- | Full data type definition for EMRClusterHadoopJarStepConfig. See
+-- 'emrClusterHadoopJarStepConfig' for a more convenient constructor.
+data EMRClusterHadoopJarStepConfig =
+  EMRClusterHadoopJarStepConfig
+  { _eMRClusterHadoopJarStepConfigArgs :: Maybe (ValList Text)
+  , _eMRClusterHadoopJarStepConfigJar :: Val Text
+  , _eMRClusterHadoopJarStepConfigMainClass :: Maybe (Val Text)
+  , _eMRClusterHadoopJarStepConfigStepProperties :: Maybe [EMRClusterKeyValue]
+  } deriving (Show, Eq)
+
+instance ToJSON EMRClusterHadoopJarStepConfig where
+  toJSON EMRClusterHadoopJarStepConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Args",) . toJSON) _eMRClusterHadoopJarStepConfigArgs
+    , (Just . ("Jar",) . toJSON) _eMRClusterHadoopJarStepConfigJar
+    , fmap (("MainClass",) . toJSON) _eMRClusterHadoopJarStepConfigMainClass
+    , fmap (("StepProperties",) . toJSON) _eMRClusterHadoopJarStepConfigStepProperties
+    ]
+
+instance FromJSON EMRClusterHadoopJarStepConfig where
+  parseJSON (Object obj) =
+    EMRClusterHadoopJarStepConfig <$>
+      (obj .:? "Args") <*>
+      (obj .: "Jar") <*>
+      (obj .:? "MainClass") <*>
+      (obj .:? "StepProperties")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EMRClusterHadoopJarStepConfig' containing required
+-- fields as arguments.
+emrClusterHadoopJarStepConfig
+  :: Val Text -- ^ 'emrchjscJar'
+  -> EMRClusterHadoopJarStepConfig
+emrClusterHadoopJarStepConfig jararg =
+  EMRClusterHadoopJarStepConfig
+  { _eMRClusterHadoopJarStepConfigArgs = Nothing
+  , _eMRClusterHadoopJarStepConfigJar = jararg
+  , _eMRClusterHadoopJarStepConfigMainClass = Nothing
+  , _eMRClusterHadoopJarStepConfigStepProperties = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-hadoopjarstepconfig.html#cfn-elasticmapreduce-cluster-hadoopjarstepconfig-args
+emrchjscArgs :: Lens' EMRClusterHadoopJarStepConfig (Maybe (ValList Text))
+emrchjscArgs = lens _eMRClusterHadoopJarStepConfigArgs (\s a -> s { _eMRClusterHadoopJarStepConfigArgs = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-hadoopjarstepconfig.html#cfn-elasticmapreduce-cluster-hadoopjarstepconfig-jar
+emrchjscJar :: Lens' EMRClusterHadoopJarStepConfig (Val Text)
+emrchjscJar = lens _eMRClusterHadoopJarStepConfigJar (\s a -> s { _eMRClusterHadoopJarStepConfigJar = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-hadoopjarstepconfig.html#cfn-elasticmapreduce-cluster-hadoopjarstepconfig-mainclass
+emrchjscMainClass :: Lens' EMRClusterHadoopJarStepConfig (Maybe (Val Text))
+emrchjscMainClass = lens _eMRClusterHadoopJarStepConfigMainClass (\s a -> s { _eMRClusterHadoopJarStepConfigMainClass = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-hadoopjarstepconfig.html#cfn-elasticmapreduce-cluster-hadoopjarstepconfig-stepproperties
+emrchjscStepProperties :: Lens' EMRClusterHadoopJarStepConfig (Maybe [EMRClusterKeyValue])
+emrchjscStepProperties = lens _eMRClusterHadoopJarStepConfigStepProperties (\s a -> s { _eMRClusterHadoopJarStepConfigStepProperties = 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
@@ -24,6 +24,7 @@
   , _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup :: Maybe (Val Text)
   , _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup :: Maybe (Val Text)
   , _eMRClusterJobFlowInstancesConfigHadoopVersion :: Maybe (Val Text)
+  , _eMRClusterJobFlowInstancesConfigKeepJobFlowAliveWhenNoSteps :: Maybe (Val Bool)
   , _eMRClusterJobFlowInstancesConfigMasterInstanceFleet :: Maybe EMRClusterInstanceFleetConfig
   , _eMRClusterJobFlowInstancesConfigMasterInstanceGroup :: Maybe EMRClusterInstanceGroupConfig
   , _eMRClusterJobFlowInstancesConfigPlacement :: Maybe EMRClusterPlacementType
@@ -44,6 +45,7 @@
     , fmap (("EmrManagedMasterSecurityGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup
     , fmap (("EmrManagedSlaveSecurityGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup
     , fmap (("HadoopVersion",) . toJSON) _eMRClusterJobFlowInstancesConfigHadoopVersion
+    , fmap (("KeepJobFlowAliveWhenNoSteps",) . toJSON . fmap Bool') _eMRClusterJobFlowInstancesConfigKeepJobFlowAliveWhenNoSteps
     , fmap (("MasterInstanceFleet",) . toJSON) _eMRClusterJobFlowInstancesConfigMasterInstanceFleet
     , fmap (("MasterInstanceGroup",) . toJSON) _eMRClusterJobFlowInstancesConfigMasterInstanceGroup
     , fmap (("Placement",) . toJSON) _eMRClusterJobFlowInstancesConfigPlacement
@@ -63,6 +65,7 @@
       (obj .:? "EmrManagedMasterSecurityGroup") <*>
       (obj .:? "EmrManagedSlaveSecurityGroup") <*>
       (obj .:? "HadoopVersion") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "KeepJobFlowAliveWhenNoSteps") <*>
       (obj .:? "MasterInstanceFleet") <*>
       (obj .:? "MasterInstanceGroup") <*>
       (obj .:? "Placement") <*>
@@ -85,6 +88,7 @@
   , _eMRClusterJobFlowInstancesConfigEmrManagedMasterSecurityGroup = Nothing
   , _eMRClusterJobFlowInstancesConfigEmrManagedSlaveSecurityGroup = Nothing
   , _eMRClusterJobFlowInstancesConfigHadoopVersion = Nothing
+  , _eMRClusterJobFlowInstancesConfigKeepJobFlowAliveWhenNoSteps = Nothing
   , _eMRClusterJobFlowInstancesConfigMasterInstanceFleet = Nothing
   , _eMRClusterJobFlowInstancesConfigMasterInstanceGroup = Nothing
   , _eMRClusterJobFlowInstancesConfigPlacement = Nothing
@@ -127,6 +131,10 @@
 -- | 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-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-keepjobflowalivewhennosteps
+emrcjficKeepJobFlowAliveWhenNoSteps :: Lens' EMRClusterJobFlowInstancesConfig (Maybe (Val Bool))
+emrcjficKeepJobFlowAliveWhenNoSteps = lens _eMRClusterJobFlowInstancesConfigKeepJobFlowAliveWhenNoSteps (\s a -> s { _eMRClusterJobFlowInstancesConfigKeepJobFlowAliveWhenNoSteps = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html#cfn-elasticmapreduce-cluster-jobflowinstancesconfig-masterinstancefleet
 emrcjficMasterInstanceFleet :: Lens' EMRClusterJobFlowInstancesConfig (Maybe EMRClusterInstanceFleetConfig)
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterKeyValue.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterKeyValue.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterKeyValue.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-keyvalue.html
+
+module Stratosphere.ResourceProperties.EMRClusterKeyValue where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for EMRClusterKeyValue. See
+-- 'emrClusterKeyValue' for a more convenient constructor.
+data EMRClusterKeyValue =
+  EMRClusterKeyValue
+  { _eMRClusterKeyValueKey :: Maybe (Val Text)
+  , _eMRClusterKeyValueValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON EMRClusterKeyValue where
+  toJSON EMRClusterKeyValue{..} =
+    object $
+    catMaybes
+    [ fmap (("Key",) . toJSON) _eMRClusterKeyValueKey
+    , fmap (("Value",) . toJSON) _eMRClusterKeyValueValue
+    ]
+
+instance FromJSON EMRClusterKeyValue where
+  parseJSON (Object obj) =
+    EMRClusterKeyValue <$>
+      (obj .:? "Key") <*>
+      (obj .:? "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EMRClusterKeyValue' containing required fields as
+-- arguments.
+emrClusterKeyValue
+  :: EMRClusterKeyValue
+emrClusterKeyValue  =
+  EMRClusterKeyValue
+  { _eMRClusterKeyValueKey = Nothing
+  , _eMRClusterKeyValueValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-keyvalue.html#cfn-elasticmapreduce-cluster-keyvalue-key
+emrckvKey :: Lens' EMRClusterKeyValue (Maybe (Val Text))
+emrckvKey = lens _eMRClusterKeyValueKey (\s a -> s { _eMRClusterKeyValueKey = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-keyvalue.html#cfn-elasticmapreduce-cluster-keyvalue-value
+emrckvValue :: Lens' EMRClusterKeyValue (Maybe (Val Text))
+emrckvValue = lens _eMRClusterKeyValueValue (\s a -> s { _eMRClusterKeyValueValue = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/EMRClusterStepConfig.hs b/library-gen/Stratosphere/ResourceProperties/EMRClusterStepConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/EMRClusterStepConfig.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-stepconfig.html
+
+module Stratosphere.ResourceProperties.EMRClusterStepConfig where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EMRClusterHadoopJarStepConfig
+
+-- | Full data type definition for EMRClusterStepConfig. See
+-- 'emrClusterStepConfig' for a more convenient constructor.
+data EMRClusterStepConfig =
+  EMRClusterStepConfig
+  { _eMRClusterStepConfigActionOnFailure :: Maybe (Val Text)
+  , _eMRClusterStepConfigHadoopJarStep :: EMRClusterHadoopJarStepConfig
+  , _eMRClusterStepConfigName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON EMRClusterStepConfig where
+  toJSON EMRClusterStepConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("ActionOnFailure",) . toJSON) _eMRClusterStepConfigActionOnFailure
+    , (Just . ("HadoopJarStep",) . toJSON) _eMRClusterStepConfigHadoopJarStep
+    , (Just . ("Name",) . toJSON) _eMRClusterStepConfigName
+    ]
+
+instance FromJSON EMRClusterStepConfig where
+  parseJSON (Object obj) =
+    EMRClusterStepConfig <$>
+      (obj .:? "ActionOnFailure") <*>
+      (obj .: "HadoopJarStep") <*>
+      (obj .: "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EMRClusterStepConfig' containing required fields as
+-- arguments.
+emrClusterStepConfig
+  :: EMRClusterHadoopJarStepConfig -- ^ 'emrcscHadoopJarStep'
+  -> Val Text -- ^ 'emrcscName'
+  -> EMRClusterStepConfig
+emrClusterStepConfig hadoopJarSteparg namearg =
+  EMRClusterStepConfig
+  { _eMRClusterStepConfigActionOnFailure = Nothing
+  , _eMRClusterStepConfigHadoopJarStep = hadoopJarSteparg
+  , _eMRClusterStepConfigName = namearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-stepconfig.html#cfn-elasticmapreduce-cluster-stepconfig-actiononfailure
+emrcscActionOnFailure :: Lens' EMRClusterStepConfig (Maybe (Val Text))
+emrcscActionOnFailure = lens _eMRClusterStepConfigActionOnFailure (\s a -> s { _eMRClusterStepConfigActionOnFailure = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-stepconfig.html#cfn-elasticmapreduce-cluster-stepconfig-hadoopjarstep
+emrcscHadoopJarStep :: Lens' EMRClusterStepConfig EMRClusterHadoopJarStepConfig
+emrcscHadoopJarStep = lens _eMRClusterStepConfigHadoopJarStep (\s a -> s { _eMRClusterStepConfigHadoopJarStep = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-stepconfig.html#cfn-elasticmapreduce-cluster-stepconfig-name
+emrcscName :: Lens' EMRClusterStepConfig (Val Text)
+emrcscName = lens _eMRClusterStepConfigName (\s a -> s { _eMRClusterStepConfigName = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAction.hs
@@ -7,13 +7,21 @@
 module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig
 
 -- | Full data type definition for ElasticLoadBalancingV2ListenerAction. See
 -- 'elasticLoadBalancingV2ListenerAction' for a more convenient constructor.
 data ElasticLoadBalancingV2ListenerAction =
   ElasticLoadBalancingV2ListenerAction
-  { _elasticLoadBalancingV2ListenerActionTargetGroupArn :: Val Text
+  { _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig :: Maybe ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
+  , _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig :: Maybe ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
+  , _elasticLoadBalancingV2ListenerActionFixedResponseConfig :: Maybe ElasticLoadBalancingV2ListenerFixedResponseConfig
+  , _elasticLoadBalancingV2ListenerActionOrder :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerActionRedirectConfig :: Maybe ElasticLoadBalancingV2ListenerRedirectConfig
+  , _elasticLoadBalancingV2ListenerActionTargetGroupArn :: Maybe (Val Text)
   , _elasticLoadBalancingV2ListenerActionType :: Val Text
   } deriving (Show, Eq)
 
@@ -21,31 +29,65 @@
   toJSON ElasticLoadBalancingV2ListenerAction{..} =
     object $
     catMaybes
-    [ (Just . ("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerActionTargetGroupArn
+    [ fmap (("AuthenticateCognitoConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig
+    , fmap (("AuthenticateOidcConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig
+    , fmap (("FixedResponseConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionFixedResponseConfig
+    , fmap (("Order",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerActionOrder
+    , fmap (("RedirectConfig",) . toJSON) _elasticLoadBalancingV2ListenerActionRedirectConfig
+    , fmap (("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerActionTargetGroupArn
     , (Just . ("Type",) . toJSON) _elasticLoadBalancingV2ListenerActionType
     ]
 
 instance FromJSON ElasticLoadBalancingV2ListenerAction where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2ListenerAction <$>
-      (obj .: "TargetGroupArn") <*>
+      (obj .:? "AuthenticateCognitoConfig") <*>
+      (obj .:? "AuthenticateOidcConfig") <*>
+      (obj .:? "FixedResponseConfig") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Order") <*>
+      (obj .:? "RedirectConfig") <*>
+      (obj .:? "TargetGroupArn") <*>
       (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerAction' containing
 -- required fields as arguments.
 elasticLoadBalancingV2ListenerAction
-  :: Val Text -- ^ 'elbvlaTargetGroupArn'
-  -> Val Text -- ^ 'elbvlaType'
+  :: Val Text -- ^ 'elbvlaType'
   -> ElasticLoadBalancingV2ListenerAction
-elasticLoadBalancingV2ListenerAction targetGroupArnarg typearg =
+elasticLoadBalancingV2ListenerAction typearg =
   ElasticLoadBalancingV2ListenerAction
-  { _elasticLoadBalancingV2ListenerActionTargetGroupArn = targetGroupArnarg
+  { _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig = Nothing
+  , _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig = Nothing
+  , _elasticLoadBalancingV2ListenerActionFixedResponseConfig = Nothing
+  , _elasticLoadBalancingV2ListenerActionOrder = Nothing
+  , _elasticLoadBalancingV2ListenerActionRedirectConfig = Nothing
+  , _elasticLoadBalancingV2ListenerActionTargetGroupArn = Nothing
   , _elasticLoadBalancingV2ListenerActionType = typearg
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig
+elbvlaAuthenticateCognitoConfig :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig)
+elbvlaAuthenticateCognitoConfig = lens _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig (\s a -> s { _elasticLoadBalancingV2ListenerActionAuthenticateCognitoConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig
+elbvlaAuthenticateOidcConfig :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe ElasticLoadBalancingV2ListenerAuthenticateOidcConfig)
+elbvlaAuthenticateOidcConfig = lens _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig (\s a -> s { _elasticLoadBalancingV2ListenerActionAuthenticateOidcConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig
+elbvlaFixedResponseConfig :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe ElasticLoadBalancingV2ListenerFixedResponseConfig)
+elbvlaFixedResponseConfig = lens _elasticLoadBalancingV2ListenerActionFixedResponseConfig (\s a -> s { _elasticLoadBalancingV2ListenerActionFixedResponseConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-order
+elbvlaOrder :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe (Val Integer))
+elbvlaOrder = lens _elasticLoadBalancingV2ListenerActionOrder (\s a -> s { _elasticLoadBalancingV2ListenerActionOrder = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig
+elbvlaRedirectConfig :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe ElasticLoadBalancingV2ListenerRedirectConfig)
+elbvlaRedirectConfig = lens _elasticLoadBalancingV2ListenerActionRedirectConfig (\s a -> s { _elasticLoadBalancingV2ListenerActionRedirectConfig = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-targetgrouparn
-elbvlaTargetGroupArn :: Lens' ElasticLoadBalancingV2ListenerAction (Val Text)
+elbvlaTargetGroupArn :: Lens' ElasticLoadBalancingV2ListenerAction (Maybe (Val Text))
 elbvlaTargetGroupArn = lens _elasticLoadBalancingV2ListenerActionTargetGroupArn (\s a -> s { _elasticLoadBalancingV2ListenerActionTargetGroupArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-type
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig. See
+-- 'elasticLoadBalancingV2ListenerAuthenticateCognitoConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig =
+  ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
+  { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigAuthenticationRequestExtraParams :: Maybe Object
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigOnUnauthenticatedRequest :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigScope :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionCookieName :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionTimeout :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolArn :: Val Text
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolClientId :: Val Text
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolDomain :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig where
+  toJSON ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("AuthenticationRequestExtraParams",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigAuthenticationRequestExtraParams
+    , fmap (("OnUnauthenticatedRequest",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigOnUnauthenticatedRequest
+    , fmap (("Scope",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigScope
+    , fmap (("SessionCookieName",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionCookieName
+    , fmap (("SessionTimeout",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionTimeout
+    , (Just . ("UserPoolArn",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolArn
+    , (Just . ("UserPoolClientId",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolClientId
+    , (Just . ("UserPoolDomain",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolDomain
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig <$>
+      (obj .:? "AuthenticationRequestExtraParams") <*>
+      (obj .:? "OnUnauthenticatedRequest") <*>
+      (obj .:? "Scope") <*>
+      (obj .:? "SessionCookieName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SessionTimeout") <*>
+      (obj .: "UserPoolArn") <*>
+      (obj .: "UserPoolClientId") <*>
+      (obj .: "UserPoolDomain")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerAuthenticateCognitoConfig
+  :: Val Text -- ^ 'elbvlaccUserPoolArn'
+  -> Val Text -- ^ 'elbvlaccUserPoolClientId'
+  -> Val Text -- ^ 'elbvlaccUserPoolDomain'
+  -> ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
+elasticLoadBalancingV2ListenerAuthenticateCognitoConfig userPoolArnarg userPoolClientIdarg userPoolDomainarg =
+  ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
+  { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigAuthenticationRequestExtraParams = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigOnUnauthenticatedRequest = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigScope = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionCookieName = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionTimeout = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolArn = userPoolArnarg
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolClientId = userPoolClientIdarg
+  , _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolDomain = userPoolDomainarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-authenticationrequestextraparams
+elbvlaccAuthenticationRequestExtraParams :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Maybe Object)
+elbvlaccAuthenticationRequestExtraParams = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigAuthenticationRequestExtraParams (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigAuthenticationRequestExtraParams = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-onunauthenticatedrequest
+elbvlaccOnUnauthenticatedRequest :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Maybe (Val Text))
+elbvlaccOnUnauthenticatedRequest = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigOnUnauthenticatedRequest (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigOnUnauthenticatedRequest = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-scope
+elbvlaccScope :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Maybe (Val Text))
+elbvlaccScope = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigScope (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-sessioncookiename
+elbvlaccSessionCookieName :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Maybe (Val Text))
+elbvlaccSessionCookieName = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionCookieName (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionCookieName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-sessiontimeout
+elbvlaccSessionTimeout :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Maybe (Val Integer))
+elbvlaccSessionTimeout = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionTimeout (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigSessionTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-userpoolarn
+elbvlaccUserPoolArn :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Val Text)
+elbvlaccUserPoolArn = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolArn (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-userpoolclientid
+elbvlaccUserPoolClientId :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Val Text)
+elbvlaccUserPoolClientId = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolClientId (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolClientId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-userpooldomain
+elbvlaccUserPoolDomain :: Lens' ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig (Val Text)
+elbvlaccUserPoolDomain = lens _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolDomain (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateCognitoConfigUserPoolDomain = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateOidcConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateOidcConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerAuthenticateOidcConfig.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerAuthenticateOidcConfig. See
+-- 'elasticLoadBalancingV2ListenerAuthenticateOidcConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerAuthenticateOidcConfig =
+  ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
+  { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthenticationRequestExtraParams :: Maybe Object
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthorizationEndpoint :: Val Text
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientId :: Val Text
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientSecret :: Val Text
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigIssuer :: Val Text
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigOnUnauthenticatedRequest :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigScope :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionCookieName :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionTimeout :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigTokenEndpoint :: Val Text
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigUserInfoEndpoint :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerAuthenticateOidcConfig where
+  toJSON ElasticLoadBalancingV2ListenerAuthenticateOidcConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("AuthenticationRequestExtraParams",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthenticationRequestExtraParams
+    , (Just . ("AuthorizationEndpoint",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthorizationEndpoint
+    , (Just . ("ClientId",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientId
+    , (Just . ("ClientSecret",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientSecret
+    , (Just . ("Issuer",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigIssuer
+    , fmap (("OnUnauthenticatedRequest",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigOnUnauthenticatedRequest
+    , fmap (("Scope",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigScope
+    , fmap (("SessionCookieName",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionCookieName
+    , fmap (("SessionTimeout",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionTimeout
+    , (Just . ("TokenEndpoint",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigTokenEndpoint
+    , (Just . ("UserInfoEndpoint",) . toJSON) _elasticLoadBalancingV2ListenerAuthenticateOidcConfigUserInfoEndpoint
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerAuthenticateOidcConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerAuthenticateOidcConfig <$>
+      (obj .:? "AuthenticationRequestExtraParams") <*>
+      (obj .: "AuthorizationEndpoint") <*>
+      (obj .: "ClientId") <*>
+      (obj .: "ClientSecret") <*>
+      (obj .: "Issuer") <*>
+      (obj .:? "OnUnauthenticatedRequest") <*>
+      (obj .:? "Scope") <*>
+      (obj .:? "SessionCookieName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SessionTimeout") <*>
+      (obj .: "TokenEndpoint") <*>
+      (obj .: "UserInfoEndpoint")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerAuthenticateOidcConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerAuthenticateOidcConfig
+  :: Val Text -- ^ 'elbvlaocAuthorizationEndpoint'
+  -> Val Text -- ^ 'elbvlaocClientId'
+  -> Val Text -- ^ 'elbvlaocClientSecret'
+  -> Val Text -- ^ 'elbvlaocIssuer'
+  -> Val Text -- ^ 'elbvlaocTokenEndpoint'
+  -> Val Text -- ^ 'elbvlaocUserInfoEndpoint'
+  -> ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
+elasticLoadBalancingV2ListenerAuthenticateOidcConfig authorizationEndpointarg clientIdarg clientSecretarg issuerarg tokenEndpointarg userInfoEndpointarg =
+  ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
+  { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthenticationRequestExtraParams = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthorizationEndpoint = authorizationEndpointarg
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientId = clientIdarg
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientSecret = clientSecretarg
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigIssuer = issuerarg
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigOnUnauthenticatedRequest = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigScope = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionCookieName = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionTimeout = Nothing
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigTokenEndpoint = tokenEndpointarg
+  , _elasticLoadBalancingV2ListenerAuthenticateOidcConfigUserInfoEndpoint = userInfoEndpointarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-authenticationrequestextraparams
+elbvlaocAuthenticationRequestExtraParams :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Maybe Object)
+elbvlaocAuthenticationRequestExtraParams = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthenticationRequestExtraParams (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthenticationRequestExtraParams = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-authorizationendpoint
+elbvlaocAuthorizationEndpoint :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Val Text)
+elbvlaocAuthorizationEndpoint = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthorizationEndpoint (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigAuthorizationEndpoint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-clientid
+elbvlaocClientId :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Val Text)
+elbvlaocClientId = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientId (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-clientsecret
+elbvlaocClientSecret :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Val Text)
+elbvlaocClientSecret = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientSecret (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigClientSecret = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-issuer
+elbvlaocIssuer :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Val Text)
+elbvlaocIssuer = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigIssuer (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigIssuer = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-onunauthenticatedrequest
+elbvlaocOnUnauthenticatedRequest :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Maybe (Val Text))
+elbvlaocOnUnauthenticatedRequest = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigOnUnauthenticatedRequest (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigOnUnauthenticatedRequest = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-scope
+elbvlaocScope :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Maybe (Val Text))
+elbvlaocScope = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigScope (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-sessioncookiename
+elbvlaocSessionCookieName :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Maybe (Val Text))
+elbvlaocSessionCookieName = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionCookieName (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionCookieName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-sessiontimeout
+elbvlaocSessionTimeout :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Maybe (Val Integer))
+elbvlaocSessionTimeout = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionTimeout (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigSessionTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-tokenendpoint
+elbvlaocTokenEndpoint :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Val Text)
+elbvlaocTokenEndpoint = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigTokenEndpoint (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigTokenEndpoint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-userinfoendpoint
+elbvlaocUserInfoEndpoint :: Lens' ElasticLoadBalancingV2ListenerAuthenticateOidcConfig (Val Text)
+elbvlaocUserInfoEndpoint = lens _elasticLoadBalancingV2ListenerAuthenticateOidcConfigUserInfoEndpoint (\s a -> s { _elasticLoadBalancingV2ListenerAuthenticateOidcConfigUserInfoEndpoint = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerFixedResponseConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerFixedResponseConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerFixedResponseConfig.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-fixedresponseconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerFixedResponseConfig. See
+-- 'elasticLoadBalancingV2ListenerFixedResponseConfig' for a more convenient
+-- constructor.
+data ElasticLoadBalancingV2ListenerFixedResponseConfig =
+  ElasticLoadBalancingV2ListenerFixedResponseConfig
+  { _elasticLoadBalancingV2ListenerFixedResponseConfigContentType :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerFixedResponseConfigMessageBody :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerFixedResponseConfigStatusCode :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerFixedResponseConfig where
+  toJSON ElasticLoadBalancingV2ListenerFixedResponseConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("ContentType",) . toJSON) _elasticLoadBalancingV2ListenerFixedResponseConfigContentType
+    , fmap (("MessageBody",) . toJSON) _elasticLoadBalancingV2ListenerFixedResponseConfigMessageBody
+    , (Just . ("StatusCode",) . toJSON) _elasticLoadBalancingV2ListenerFixedResponseConfigStatusCode
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerFixedResponseConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerFixedResponseConfig <$>
+      (obj .:? "ContentType") <*>
+      (obj .:? "MessageBody") <*>
+      (obj .: "StatusCode")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerFixedResponseConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerFixedResponseConfig
+  :: Val Text -- ^ 'elbvlfrcStatusCode'
+  -> ElasticLoadBalancingV2ListenerFixedResponseConfig
+elasticLoadBalancingV2ListenerFixedResponseConfig statusCodearg =
+  ElasticLoadBalancingV2ListenerFixedResponseConfig
+  { _elasticLoadBalancingV2ListenerFixedResponseConfigContentType = Nothing
+  , _elasticLoadBalancingV2ListenerFixedResponseConfigMessageBody = Nothing
+  , _elasticLoadBalancingV2ListenerFixedResponseConfigStatusCode = statusCodearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-fixedresponseconfig.html#cfn-elasticloadbalancingv2-listener-fixedresponseconfig-contenttype
+elbvlfrcContentType :: Lens' ElasticLoadBalancingV2ListenerFixedResponseConfig (Maybe (Val Text))
+elbvlfrcContentType = lens _elasticLoadBalancingV2ListenerFixedResponseConfigContentType (\s a -> s { _elasticLoadBalancingV2ListenerFixedResponseConfigContentType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-fixedresponseconfig.html#cfn-elasticloadbalancingv2-listener-fixedresponseconfig-messagebody
+elbvlfrcMessageBody :: Lens' ElasticLoadBalancingV2ListenerFixedResponseConfig (Maybe (Val Text))
+elbvlfrcMessageBody = lens _elasticLoadBalancingV2ListenerFixedResponseConfigMessageBody (\s a -> s { _elasticLoadBalancingV2ListenerFixedResponseConfigMessageBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-fixedresponseconfig.html#cfn-elasticloadbalancingv2-listener-fixedresponseconfig-statuscode
+elbvlfrcStatusCode :: Lens' ElasticLoadBalancingV2ListenerFixedResponseConfig (Val Text)
+elbvlfrcStatusCode = lens _elasticLoadBalancingV2ListenerFixedResponseConfigStatusCode (\s a -> s { _elasticLoadBalancingV2ListenerFixedResponseConfigStatusCode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRedirectConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRedirectConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRedirectConfig.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRedirectConfig. See
+-- 'elasticLoadBalancingV2ListenerRedirectConfig' for a more convenient
+-- constructor.
+data ElasticLoadBalancingV2ListenerRedirectConfig =
+  ElasticLoadBalancingV2ListenerRedirectConfig
+  { _elasticLoadBalancingV2ListenerRedirectConfigHost :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRedirectConfigPath :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRedirectConfigPort :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRedirectConfigProtocol :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRedirectConfigQuery :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRedirectConfigStatusCode :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRedirectConfig where
+  toJSON ElasticLoadBalancingV2ListenerRedirectConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Host",) . toJSON) _elasticLoadBalancingV2ListenerRedirectConfigHost
+    , fmap (("Path",) . toJSON) _elasticLoadBalancingV2ListenerRedirectConfigPath
+    , fmap (("Port",) . toJSON) _elasticLoadBalancingV2ListenerRedirectConfigPort
+    , fmap (("Protocol",) . toJSON) _elasticLoadBalancingV2ListenerRedirectConfigProtocol
+    , fmap (("Query",) . toJSON) _elasticLoadBalancingV2ListenerRedirectConfigQuery
+    , (Just . ("StatusCode",) . toJSON) _elasticLoadBalancingV2ListenerRedirectConfigStatusCode
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerRedirectConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerRedirectConfig <$>
+      (obj .:? "Host") <*>
+      (obj .:? "Path") <*>
+      (obj .:? "Port") <*>
+      (obj .:? "Protocol") <*>
+      (obj .:? "Query") <*>
+      (obj .: "StatusCode")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRedirectConfig' containing
+-- required fields as arguments.
+elasticLoadBalancingV2ListenerRedirectConfig
+  :: Val Text -- ^ 'elbvlrcStatusCode'
+  -> ElasticLoadBalancingV2ListenerRedirectConfig
+elasticLoadBalancingV2ListenerRedirectConfig statusCodearg =
+  ElasticLoadBalancingV2ListenerRedirectConfig
+  { _elasticLoadBalancingV2ListenerRedirectConfigHost = Nothing
+  , _elasticLoadBalancingV2ListenerRedirectConfigPath = Nothing
+  , _elasticLoadBalancingV2ListenerRedirectConfigPort = Nothing
+  , _elasticLoadBalancingV2ListenerRedirectConfigProtocol = Nothing
+  , _elasticLoadBalancingV2ListenerRedirectConfigQuery = Nothing
+  , _elasticLoadBalancingV2ListenerRedirectConfigStatusCode = statusCodearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html#cfn-elasticloadbalancingv2-listener-redirectconfig-host
+elbvlrcHost :: Lens' ElasticLoadBalancingV2ListenerRedirectConfig (Maybe (Val Text))
+elbvlrcHost = lens _elasticLoadBalancingV2ListenerRedirectConfigHost (\s a -> s { _elasticLoadBalancingV2ListenerRedirectConfigHost = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html#cfn-elasticloadbalancingv2-listener-redirectconfig-path
+elbvlrcPath :: Lens' ElasticLoadBalancingV2ListenerRedirectConfig (Maybe (Val Text))
+elbvlrcPath = lens _elasticLoadBalancingV2ListenerRedirectConfigPath (\s a -> s { _elasticLoadBalancingV2ListenerRedirectConfigPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html#cfn-elasticloadbalancingv2-listener-redirectconfig-port
+elbvlrcPort :: Lens' ElasticLoadBalancingV2ListenerRedirectConfig (Maybe (Val Text))
+elbvlrcPort = lens _elasticLoadBalancingV2ListenerRedirectConfigPort (\s a -> s { _elasticLoadBalancingV2ListenerRedirectConfigPort = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html#cfn-elasticloadbalancingv2-listener-redirectconfig-protocol
+elbvlrcProtocol :: Lens' ElasticLoadBalancingV2ListenerRedirectConfig (Maybe (Val Text))
+elbvlrcProtocol = lens _elasticLoadBalancingV2ListenerRedirectConfigProtocol (\s a -> s { _elasticLoadBalancingV2ListenerRedirectConfigProtocol = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html#cfn-elasticloadbalancingv2-listener-redirectconfig-query
+elbvlrcQuery :: Lens' ElasticLoadBalancingV2ListenerRedirectConfig (Maybe (Val Text))
+elbvlrcQuery = lens _elasticLoadBalancingV2ListenerRedirectConfigQuery (\s a -> s { _elasticLoadBalancingV2ListenerRedirectConfigQuery = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html#cfn-elasticloadbalancingv2-listener-redirectconfig-statuscode
+elbvlrcStatusCode :: Lens' ElasticLoadBalancingV2ListenerRedirectConfig (Val Text)
+elbvlrcStatusCode = lens _elasticLoadBalancingV2ListenerRedirectConfigStatusCode (\s a -> s { _elasticLoadBalancingV2ListenerRedirectConfigStatusCode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
--- a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAction.hs
@@ -7,14 +7,22 @@
 module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig
 
 -- | Full data type definition for ElasticLoadBalancingV2ListenerRuleAction.
 -- See 'elasticLoadBalancingV2ListenerRuleAction' for a more convenient
 -- constructor.
 data ElasticLoadBalancingV2ListenerRuleAction =
   ElasticLoadBalancingV2ListenerRuleAction
-  { _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn :: Val Text
+  { _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig :: Maybe ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
+  , _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig :: Maybe ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
+  , _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig :: Maybe ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+  , _elasticLoadBalancingV2ListenerRuleActionOrder :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerRuleActionRedirectConfig :: Maybe ElasticLoadBalancingV2ListenerRuleRedirectConfig
+  , _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn :: Maybe (Val Text)
   , _elasticLoadBalancingV2ListenerRuleActionType :: Val Text
   } deriving (Show, Eq)
 
@@ -22,31 +30,65 @@
   toJSON ElasticLoadBalancingV2ListenerRuleAction{..} =
     object $
     catMaybes
-    [ (Just . ("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn
+    [ fmap (("AuthenticateCognitoConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig
+    , fmap (("AuthenticateOidcConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig
+    , fmap (("FixedResponseConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig
+    , fmap (("Order",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerRuleActionOrder
+    , fmap (("RedirectConfig",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionRedirectConfig
+    , fmap (("TargetGroupArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn
     , (Just . ("Type",) . toJSON) _elasticLoadBalancingV2ListenerRuleActionType
     ]
 
 instance FromJSON ElasticLoadBalancingV2ListenerRuleAction where
   parseJSON (Object obj) =
     ElasticLoadBalancingV2ListenerRuleAction <$>
-      (obj .: "TargetGroupArn") <*>
+      (obj .:? "AuthenticateCognitoConfig") <*>
+      (obj .:? "AuthenticateOidcConfig") <*>
+      (obj .:? "FixedResponseConfig") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Order") <*>
+      (obj .:? "RedirectConfig") <*>
+      (obj .:? "TargetGroupArn") <*>
       (obj .: "Type")
   parseJSON _ = mempty
 
 -- | Constructor for 'ElasticLoadBalancingV2ListenerRuleAction' containing
 -- required fields as arguments.
 elasticLoadBalancingV2ListenerRuleAction
-  :: Val Text -- ^ 'elbvlraTargetGroupArn'
-  -> Val Text -- ^ 'elbvlraType'
+  :: Val Text -- ^ 'elbvlraType'
   -> ElasticLoadBalancingV2ListenerRuleAction
-elasticLoadBalancingV2ListenerRuleAction targetGroupArnarg typearg =
+elasticLoadBalancingV2ListenerRuleAction typearg =
   ElasticLoadBalancingV2ListenerRuleAction
-  { _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn = targetGroupArnarg
+  { _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleActionOrder = Nothing
+  , _elasticLoadBalancingV2ListenerRuleActionRedirectConfig = Nothing
+  , _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn = Nothing
   , _elasticLoadBalancingV2ListenerRuleActionType = typearg
   }
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig
+elbvlraAuthenticateCognitoConfig :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig)
+elbvlraAuthenticateCognitoConfig = lens _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionAuthenticateCognitoConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig
+elbvlraAuthenticateOidcConfig :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig)
+elbvlraAuthenticateOidcConfig = lens _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionAuthenticateOidcConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig
+elbvlraFixedResponseConfig :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe ElasticLoadBalancingV2ListenerRuleFixedResponseConfig)
+elbvlraFixedResponseConfig = lens _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionFixedResponseConfig = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-order
+elbvlraOrder :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe (Val Integer))
+elbvlraOrder = lens _elasticLoadBalancingV2ListenerRuleActionOrder (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionOrder = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig
+elbvlraRedirectConfig :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe ElasticLoadBalancingV2ListenerRuleRedirectConfig)
+elbvlraRedirectConfig = lens _elasticLoadBalancingV2ListenerRuleActionRedirectConfig (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionRedirectConfig = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-targetgrouparn
-elbvlraTargetGroupArn :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Val Text)
+elbvlraTargetGroupArn :: Lens' ElasticLoadBalancingV2ListenerRuleAction (Maybe (Val Text))
 elbvlraTargetGroupArn = lens _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn (\s a -> s { _elasticLoadBalancingV2ListenerRuleActionTargetGroupArn = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-type
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig =
+  ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
+  { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigAuthenticationRequestExtraParams :: Maybe Object
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigOnUnauthenticatedRequest :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigScope :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionCookieName :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionTimeout :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolArn :: Val Text
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolClientId :: Val Text
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolDomain :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("AuthenticationRequestExtraParams",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigAuthenticationRequestExtraParams
+    , fmap (("OnUnauthenticatedRequest",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigOnUnauthenticatedRequest
+    , fmap (("Scope",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigScope
+    , fmap (("SessionCookieName",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionCookieName
+    , fmap (("SessionTimeout",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionTimeout
+    , (Just . ("UserPoolArn",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolArn
+    , (Just . ("UserPoolClientId",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolClientId
+    , (Just . ("UserPoolDomain",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolDomain
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig <$>
+      (obj .:? "AuthenticationRequestExtraParams") <*>
+      (obj .:? "OnUnauthenticatedRequest") <*>
+      (obj .:? "Scope") <*>
+      (obj .:? "SessionCookieName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SessionTimeout") <*>
+      (obj .: "UserPoolArn") <*>
+      (obj .: "UserPoolClientId") <*>
+      (obj .: "UserPoolDomain")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig' containing
+-- required fields as arguments.
+elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
+  :: Val Text -- ^ 'elbvlraccUserPoolArn'
+  -> Val Text -- ^ 'elbvlraccUserPoolClientId'
+  -> Val Text -- ^ 'elbvlraccUserPoolDomain'
+  -> ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
+elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig userPoolArnarg userPoolClientIdarg userPoolDomainarg =
+  ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
+  { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigAuthenticationRequestExtraParams = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigOnUnauthenticatedRequest = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigScope = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionCookieName = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionTimeout = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolArn = userPoolArnarg
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolClientId = userPoolClientIdarg
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolDomain = userPoolDomainarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-authenticationrequestextraparams
+elbvlraccAuthenticationRequestExtraParams :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Maybe Object)
+elbvlraccAuthenticationRequestExtraParams = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigAuthenticationRequestExtraParams (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigAuthenticationRequestExtraParams = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-onunauthenticatedrequest
+elbvlraccOnUnauthenticatedRequest :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Maybe (Val Text))
+elbvlraccOnUnauthenticatedRequest = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigOnUnauthenticatedRequest (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigOnUnauthenticatedRequest = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-scope
+elbvlraccScope :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Maybe (Val Text))
+elbvlraccScope = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigScope (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-sessioncookiename
+elbvlraccSessionCookieName :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Maybe (Val Text))
+elbvlraccSessionCookieName = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionCookieName (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionCookieName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-sessiontimeout
+elbvlraccSessionTimeout :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Maybe (Val Integer))
+elbvlraccSessionTimeout = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionTimeout (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigSessionTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-userpoolarn
+elbvlraccUserPoolArn :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Val Text)
+elbvlraccUserPoolArn = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolArn (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-userpoolclientid
+elbvlraccUserPoolClientId :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Val Text)
+elbvlraccUserPoolClientId = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolClientId (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolClientId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-userpooldomain
+elbvlraccUserPoolDomain :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig (Val Text)
+elbvlraccUserPoolDomain = lens _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolDomain (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfigUserPoolDomain = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig =
+  ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
+  { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthenticationRequestExtraParams :: Maybe Object
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthorizationEndpoint :: Val Text
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientId :: Val Text
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientSecret :: Val Text
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigIssuer :: Val Text
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigOnUnauthenticatedRequest :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigScope :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionCookieName :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionTimeout :: Maybe (Val Integer)
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigTokenEndpoint :: Val Text
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigUserInfoEndpoint :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("AuthenticationRequestExtraParams",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthenticationRequestExtraParams
+    , (Just . ("AuthorizationEndpoint",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthorizationEndpoint
+    , (Just . ("ClientId",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientId
+    , (Just . ("ClientSecret",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientSecret
+    , (Just . ("Issuer",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigIssuer
+    , fmap (("OnUnauthenticatedRequest",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigOnUnauthenticatedRequest
+    , fmap (("Scope",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigScope
+    , fmap (("SessionCookieName",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionCookieName
+    , fmap (("SessionTimeout",) . toJSON . fmap Integer') _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionTimeout
+    , (Just . ("TokenEndpoint",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigTokenEndpoint
+    , (Just . ("UserInfoEndpoint",) . toJSON) _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigUserInfoEndpoint
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig <$>
+      (obj .:? "AuthenticationRequestExtraParams") <*>
+      (obj .: "AuthorizationEndpoint") <*>
+      (obj .: "ClientId") <*>
+      (obj .: "ClientSecret") <*>
+      (obj .: "Issuer") <*>
+      (obj .:? "OnUnauthenticatedRequest") <*>
+      (obj .:? "Scope") <*>
+      (obj .:? "SessionCookieName") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "SessionTimeout") <*>
+      (obj .: "TokenEndpoint") <*>
+      (obj .: "UserInfoEndpoint")
+  parseJSON _ = mempty
+
+-- | Constructor for
+-- 'ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig' containing
+-- required fields as arguments.
+elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
+  :: Val Text -- ^ 'elbvlraocAuthorizationEndpoint'
+  -> Val Text -- ^ 'elbvlraocClientId'
+  -> Val Text -- ^ 'elbvlraocClientSecret'
+  -> Val Text -- ^ 'elbvlraocIssuer'
+  -> Val Text -- ^ 'elbvlraocTokenEndpoint'
+  -> Val Text -- ^ 'elbvlraocUserInfoEndpoint'
+  -> ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
+elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig authorizationEndpointarg clientIdarg clientSecretarg issuerarg tokenEndpointarg userInfoEndpointarg =
+  ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
+  { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthenticationRequestExtraParams = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthorizationEndpoint = authorizationEndpointarg
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientId = clientIdarg
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientSecret = clientSecretarg
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigIssuer = issuerarg
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigOnUnauthenticatedRequest = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigScope = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionCookieName = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionTimeout = Nothing
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigTokenEndpoint = tokenEndpointarg
+  , _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigUserInfoEndpoint = userInfoEndpointarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-authenticationrequestextraparams
+elbvlraocAuthenticationRequestExtraParams :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Maybe Object)
+elbvlraocAuthenticationRequestExtraParams = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthenticationRequestExtraParams (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthenticationRequestExtraParams = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-authorizationendpoint
+elbvlraocAuthorizationEndpoint :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Val Text)
+elbvlraocAuthorizationEndpoint = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthorizationEndpoint (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigAuthorizationEndpoint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-clientid
+elbvlraocClientId :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Val Text)
+elbvlraocClientId = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientId (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-clientsecret
+elbvlraocClientSecret :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Val Text)
+elbvlraocClientSecret = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientSecret (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigClientSecret = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-issuer
+elbvlraocIssuer :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Val Text)
+elbvlraocIssuer = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigIssuer (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigIssuer = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-onunauthenticatedrequest
+elbvlraocOnUnauthenticatedRequest :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Maybe (Val Text))
+elbvlraocOnUnauthenticatedRequest = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigOnUnauthenticatedRequest (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigOnUnauthenticatedRequest = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-scope
+elbvlraocScope :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Maybe (Val Text))
+elbvlraocScope = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigScope (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigScope = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-sessioncookiename
+elbvlraocSessionCookieName :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Maybe (Val Text))
+elbvlraocSessionCookieName = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionCookieName (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionCookieName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-sessiontimeout
+elbvlraocSessionTimeout :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Maybe (Val Integer))
+elbvlraocSessionTimeout = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionTimeout (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigSessionTimeout = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-tokenendpoint
+elbvlraocTokenEndpoint :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Val Text)
+elbvlraocTokenEndpoint = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigTokenEndpoint (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigTokenEndpoint = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-userinfoendpoint
+elbvlraocUserInfoEndpoint :: Lens' ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig (Val Text)
+elbvlraocUserInfoEndpoint = lens _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigUserInfoEndpoint (\s a -> s { _elasticLoadBalancingV2ListenerRuleAuthenticateOidcConfigUserInfoEndpoint = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleFixedResponseConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleFixedResponseConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleFixedResponseConfig.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-fixedresponseconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleFixedResponseConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleFixedResponseConfig' for a more
+-- convenient constructor.
+data ElasticLoadBalancingV2ListenerRuleFixedResponseConfig =
+  ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+  { _elasticLoadBalancingV2ListenerRuleFixedResponseConfigContentType :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleFixedResponseConfigMessageBody :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleFixedResponseConfigStatusCode :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleFixedResponseConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleFixedResponseConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("ContentType",) . toJSON) _elasticLoadBalancingV2ListenerRuleFixedResponseConfigContentType
+    , fmap (("MessageBody",) . toJSON) _elasticLoadBalancingV2ListenerRuleFixedResponseConfigMessageBody
+    , (Just . ("StatusCode",) . toJSON) _elasticLoadBalancingV2ListenerRuleFixedResponseConfigStatusCode
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerRuleFixedResponseConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerRuleFixedResponseConfig <$>
+      (obj .:? "ContentType") <*>
+      (obj .:? "MessageBody") <*>
+      (obj .: "StatusCode")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleFixedResponseConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleFixedResponseConfig
+  :: Val Text -- ^ 'elbvlrfrcStatusCode'
+  -> ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+elasticLoadBalancingV2ListenerRuleFixedResponseConfig statusCodearg =
+  ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+  { _elasticLoadBalancingV2ListenerRuleFixedResponseConfigContentType = Nothing
+  , _elasticLoadBalancingV2ListenerRuleFixedResponseConfigMessageBody = Nothing
+  , _elasticLoadBalancingV2ListenerRuleFixedResponseConfigStatusCode = statusCodearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-fixedresponseconfig.html#cfn-elasticloadbalancingv2-listenerrule-fixedresponseconfig-contenttype
+elbvlrfrcContentType :: Lens' ElasticLoadBalancingV2ListenerRuleFixedResponseConfig (Maybe (Val Text))
+elbvlrfrcContentType = lens _elasticLoadBalancingV2ListenerRuleFixedResponseConfigContentType (\s a -> s { _elasticLoadBalancingV2ListenerRuleFixedResponseConfigContentType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-fixedresponseconfig.html#cfn-elasticloadbalancingv2-listenerrule-fixedresponseconfig-messagebody
+elbvlrfrcMessageBody :: Lens' ElasticLoadBalancingV2ListenerRuleFixedResponseConfig (Maybe (Val Text))
+elbvlrfrcMessageBody = lens _elasticLoadBalancingV2ListenerRuleFixedResponseConfigMessageBody (\s a -> s { _elasticLoadBalancingV2ListenerRuleFixedResponseConfigMessageBody = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-fixedresponseconfig.html#cfn-elasticloadbalancingv2-listenerrule-fixedresponseconfig-statuscode
+elbvlrfrcStatusCode :: Lens' ElasticLoadBalancingV2ListenerRuleFixedResponseConfig (Val Text)
+elbvlrfrcStatusCode = lens _elasticLoadBalancingV2ListenerRuleFixedResponseConfigStatusCode (\s a -> s { _elasticLoadBalancingV2ListenerRuleFixedResponseConfigStatusCode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRedirectConfig.hs b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRedirectConfig.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/ElasticLoadBalancingV2ListenerRuleRedirectConfig.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html
+
+module Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- ElasticLoadBalancingV2ListenerRuleRedirectConfig. See
+-- 'elasticLoadBalancingV2ListenerRuleRedirectConfig' for a more convenient
+-- constructor.
+data ElasticLoadBalancingV2ListenerRuleRedirectConfig =
+  ElasticLoadBalancingV2ListenerRuleRedirectConfig
+  { _elasticLoadBalancingV2ListenerRuleRedirectConfigHost :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigPath :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigPort :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigProtocol :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigQuery :: Maybe (Val Text)
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigStatusCode :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ElasticLoadBalancingV2ListenerRuleRedirectConfig where
+  toJSON ElasticLoadBalancingV2ListenerRuleRedirectConfig{..} =
+    object $
+    catMaybes
+    [ fmap (("Host",) . toJSON) _elasticLoadBalancingV2ListenerRuleRedirectConfigHost
+    , fmap (("Path",) . toJSON) _elasticLoadBalancingV2ListenerRuleRedirectConfigPath
+    , fmap (("Port",) . toJSON) _elasticLoadBalancingV2ListenerRuleRedirectConfigPort
+    , fmap (("Protocol",) . toJSON) _elasticLoadBalancingV2ListenerRuleRedirectConfigProtocol
+    , fmap (("Query",) . toJSON) _elasticLoadBalancingV2ListenerRuleRedirectConfigQuery
+    , (Just . ("StatusCode",) . toJSON) _elasticLoadBalancingV2ListenerRuleRedirectConfigStatusCode
+    ]
+
+instance FromJSON ElasticLoadBalancingV2ListenerRuleRedirectConfig where
+  parseJSON (Object obj) =
+    ElasticLoadBalancingV2ListenerRuleRedirectConfig <$>
+      (obj .:? "Host") <*>
+      (obj .:? "Path") <*>
+      (obj .:? "Port") <*>
+      (obj .:? "Protocol") <*>
+      (obj .:? "Query") <*>
+      (obj .: "StatusCode")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ElasticLoadBalancingV2ListenerRuleRedirectConfig'
+-- containing required fields as arguments.
+elasticLoadBalancingV2ListenerRuleRedirectConfig
+  :: Val Text -- ^ 'elbvlrrcStatusCode'
+  -> ElasticLoadBalancingV2ListenerRuleRedirectConfig
+elasticLoadBalancingV2ListenerRuleRedirectConfig statusCodearg =
+  ElasticLoadBalancingV2ListenerRuleRedirectConfig
+  { _elasticLoadBalancingV2ListenerRuleRedirectConfigHost = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigPath = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigPort = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigProtocol = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigQuery = Nothing
+  , _elasticLoadBalancingV2ListenerRuleRedirectConfigStatusCode = statusCodearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html#cfn-elasticloadbalancingv2-listenerrule-redirectconfig-host
+elbvlrrcHost :: Lens' ElasticLoadBalancingV2ListenerRuleRedirectConfig (Maybe (Val Text))
+elbvlrrcHost = lens _elasticLoadBalancingV2ListenerRuleRedirectConfigHost (\s a -> s { _elasticLoadBalancingV2ListenerRuleRedirectConfigHost = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html#cfn-elasticloadbalancingv2-listenerrule-redirectconfig-path
+elbvlrrcPath :: Lens' ElasticLoadBalancingV2ListenerRuleRedirectConfig (Maybe (Val Text))
+elbvlrrcPath = lens _elasticLoadBalancingV2ListenerRuleRedirectConfigPath (\s a -> s { _elasticLoadBalancingV2ListenerRuleRedirectConfigPath = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html#cfn-elasticloadbalancingv2-listenerrule-redirectconfig-port
+elbvlrrcPort :: Lens' ElasticLoadBalancingV2ListenerRuleRedirectConfig (Maybe (Val Text))
+elbvlrrcPort = lens _elasticLoadBalancingV2ListenerRuleRedirectConfigPort (\s a -> s { _elasticLoadBalancingV2ListenerRuleRedirectConfigPort = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html#cfn-elasticloadbalancingv2-listenerrule-redirectconfig-protocol
+elbvlrrcProtocol :: Lens' ElasticLoadBalancingV2ListenerRuleRedirectConfig (Maybe (Val Text))
+elbvlrrcProtocol = lens _elasticLoadBalancingV2ListenerRuleRedirectConfigProtocol (\s a -> s { _elasticLoadBalancingV2ListenerRuleRedirectConfigProtocol = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html#cfn-elasticloadbalancingv2-listenerrule-redirectconfig-query
+elbvlrrcQuery :: Lens' ElasticLoadBalancingV2ListenerRuleRedirectConfig (Maybe (Val Text))
+elbvlrrcQuery = lens _elasticLoadBalancingV2ListenerRuleRedirectConfigQuery (\s a -> s { _elasticLoadBalancingV2ListenerRuleRedirectConfigQuery = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-redirectconfig.html#cfn-elasticloadbalancingv2-listenerrule-redirectconfig-statuscode
+elbvlrrcStatusCode :: Lens' ElasticLoadBalancingV2ListenerRuleRedirectConfig (Val Text)
+elbvlrrcStatusCode = lens _elasticLoadBalancingV2ListenerRuleRedirectConfigStatusCode (\s a -> s { _elasticLoadBalancingV2ListenerRuleRedirectConfigStatusCode = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverEndpointIpAddressRequest.hs b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverEndpointIpAddressRequest.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverEndpointIpAddressRequest.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverendpoint-ipaddressrequest.html
+
+module Stratosphere.ResourceProperties.Route53ResolverResolverEndpointIpAddressRequest where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for
+-- Route53ResolverResolverEndpointIpAddressRequest. See
+-- 'route53ResolverResolverEndpointIpAddressRequest' for a more convenient
+-- constructor.
+data Route53ResolverResolverEndpointIpAddressRequest =
+  Route53ResolverResolverEndpointIpAddressRequest
+  { _route53ResolverResolverEndpointIpAddressRequestIp :: Maybe (Val Text)
+  , _route53ResolverResolverEndpointIpAddressRequestSubnetId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON Route53ResolverResolverEndpointIpAddressRequest where
+  toJSON Route53ResolverResolverEndpointIpAddressRequest{..} =
+    object $
+    catMaybes
+    [ fmap (("Ip",) . toJSON) _route53ResolverResolverEndpointIpAddressRequestIp
+    , (Just . ("SubnetId",) . toJSON) _route53ResolverResolverEndpointIpAddressRequestSubnetId
+    ]
+
+instance FromJSON Route53ResolverResolverEndpointIpAddressRequest where
+  parseJSON (Object obj) =
+    Route53ResolverResolverEndpointIpAddressRequest <$>
+      (obj .:? "Ip") <*>
+      (obj .: "SubnetId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'Route53ResolverResolverEndpointIpAddressRequest'
+-- containing required fields as arguments.
+route53ResolverResolverEndpointIpAddressRequest
+  :: Val Text -- ^ 'rrreiarSubnetId'
+  -> Route53ResolverResolverEndpointIpAddressRequest
+route53ResolverResolverEndpointIpAddressRequest subnetIdarg =
+  Route53ResolverResolverEndpointIpAddressRequest
+  { _route53ResolverResolverEndpointIpAddressRequestIp = Nothing
+  , _route53ResolverResolverEndpointIpAddressRequestSubnetId = subnetIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverendpoint-ipaddressrequest.html#cfn-route53resolver-resolverendpoint-ipaddressrequest-ip
+rrreiarIp :: Lens' Route53ResolverResolverEndpointIpAddressRequest (Maybe (Val Text))
+rrreiarIp = lens _route53ResolverResolverEndpointIpAddressRequestIp (\s a -> s { _route53ResolverResolverEndpointIpAddressRequestIp = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverendpoint-ipaddressrequest.html#cfn-route53resolver-resolverendpoint-ipaddressrequest-subnetid
+rrreiarSubnetId :: Lens' Route53ResolverResolverEndpointIpAddressRequest (Val Text)
+rrreiarSubnetId = lens _route53ResolverResolverEndpointIpAddressRequestSubnetId (\s a -> s { _route53ResolverResolverEndpointIpAddressRequestSubnetId = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverRuleTargetAddress.hs b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverRuleTargetAddress.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/Route53ResolverResolverRuleTargetAddress.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverrule-targetaddress.html
+
+module Stratosphere.ResourceProperties.Route53ResolverResolverRuleTargetAddress where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for Route53ResolverResolverRuleTargetAddress.
+-- See 'route53ResolverResolverRuleTargetAddress' for a more convenient
+-- constructor.
+data Route53ResolverResolverRuleTargetAddress =
+  Route53ResolverResolverRuleTargetAddress
+  { _route53ResolverResolverRuleTargetAddressIp :: Val Text
+  , _route53ResolverResolverRuleTargetAddressPort :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON Route53ResolverResolverRuleTargetAddress where
+  toJSON Route53ResolverResolverRuleTargetAddress{..} =
+    object $
+    catMaybes
+    [ (Just . ("Ip",) . toJSON) _route53ResolverResolverRuleTargetAddressIp
+    , (Just . ("Port",) . toJSON) _route53ResolverResolverRuleTargetAddressPort
+    ]
+
+instance FromJSON Route53ResolverResolverRuleTargetAddress where
+  parseJSON (Object obj) =
+    Route53ResolverResolverRuleTargetAddress <$>
+      (obj .: "Ip") <*>
+      (obj .: "Port")
+  parseJSON _ = mempty
+
+-- | Constructor for 'Route53ResolverResolverRuleTargetAddress' containing
+-- required fields as arguments.
+route53ResolverResolverRuleTargetAddress
+  :: Val Text -- ^ 'rrrrtaIp'
+  -> Val Text -- ^ 'rrrrtaPort'
+  -> Route53ResolverResolverRuleTargetAddress
+route53ResolverResolverRuleTargetAddress iparg portarg =
+  Route53ResolverResolverRuleTargetAddress
+  { _route53ResolverResolverRuleTargetAddressIp = iparg
+  , _route53ResolverResolverRuleTargetAddressPort = portarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverrule-targetaddress.html#cfn-route53resolver-resolverrule-targetaddress-ip
+rrrrtaIp :: Lens' Route53ResolverResolverRuleTargetAddress (Val Text)
+rrrrtaIp = lens _route53ResolverResolverRuleTargetAddressIp (\s a -> s { _route53ResolverResolverRuleTargetAddressIp = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53resolver-resolverrule-targetaddress.html#cfn-route53resolver-resolverrule-targetaddress-port
+rrrrtaPort :: Lens' Route53ResolverResolverRuleTargetAddress (Val Text)
+rrrrtaPort = lens _route53ResolverResolverRuleTargetAddressPort (\s a -> s { _route53ResolverResolverRuleTargetAddressPort = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs b/library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/S3BucketPublicAccessBlockConfiguration.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html
+
+module Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for S3BucketPublicAccessBlockConfiguration. See
+-- 's3BucketPublicAccessBlockConfiguration' for a more convenient
+-- constructor.
+data S3BucketPublicAccessBlockConfiguration =
+  S3BucketPublicAccessBlockConfiguration
+  { _s3BucketPublicAccessBlockConfigurationBlockPublicAcls :: Maybe (Val Bool)
+  , _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy :: Maybe (Val Bool)
+  , _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls :: Maybe (Val Bool)
+  , _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets :: Maybe (Val Bool)
+  } deriving (Show, Eq)
+
+instance ToJSON S3BucketPublicAccessBlockConfiguration where
+  toJSON S3BucketPublicAccessBlockConfiguration{..} =
+    object $
+    catMaybes
+    [ fmap (("BlockPublicAcls",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationBlockPublicAcls
+    , fmap (("BlockPublicPolicy",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy
+    , fmap (("IgnorePublicAcls",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls
+    , fmap (("RestrictPublicBuckets",) . toJSON . fmap Bool') _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets
+    ]
+
+instance FromJSON S3BucketPublicAccessBlockConfiguration where
+  parseJSON (Object obj) =
+    S3BucketPublicAccessBlockConfiguration <$>
+      fmap (fmap (fmap unBool')) (obj .:? "BlockPublicAcls") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "BlockPublicPolicy") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "IgnorePublicAcls") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "RestrictPublicBuckets")
+  parseJSON _ = mempty
+
+-- | Constructor for 'S3BucketPublicAccessBlockConfiguration' containing
+-- required fields as arguments.
+s3BucketPublicAccessBlockConfiguration
+  :: S3BucketPublicAccessBlockConfiguration
+s3BucketPublicAccessBlockConfiguration  =
+  S3BucketPublicAccessBlockConfiguration
+  { _s3BucketPublicAccessBlockConfigurationBlockPublicAcls = Nothing
+  , _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy = Nothing
+  , _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls = Nothing
+  , _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-blockpublicacls
+sbpabcBlockPublicAcls :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
+sbpabcBlockPublicAcls = lens _s3BucketPublicAccessBlockConfigurationBlockPublicAcls (\s a -> s { _s3BucketPublicAccessBlockConfigurationBlockPublicAcls = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-blockpublicpolicy
+sbpabcBlockPublicPolicy :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
+sbpabcBlockPublicPolicy = lens _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy (\s a -> s { _s3BucketPublicAccessBlockConfigurationBlockPublicPolicy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-ignorepublicacls
+sbpabcIgnorePublicAcls :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
+sbpabcIgnorePublicAcls = lens _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls (\s a -> s { _s3BucketPublicAccessBlockConfigurationIgnorePublicAcls = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html#cfn-s3-bucket-publicaccessblockconfiguration-restrictpublicbuckets
+sbpabcRestrictPublicBuckets :: Lens' S3BucketPublicAccessBlockConfiguration (Maybe (Val Bool))
+sbpabcRestrictPublicBuckets = lens _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets (\s a -> s { _s3BucketPublicAccessBlockConfigurationRestrictPublicBuckets = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
--- a/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
+++ b/library-gen/Stratosphere/ResourceProperties/ServiceDiscoveryServiceDnsConfig.hs
@@ -14,7 +14,7 @@
 data ServiceDiscoveryServiceDnsConfig =
   ServiceDiscoveryServiceDnsConfig
   { _serviceDiscoveryServiceDnsConfigDnsRecords :: [ServiceDiscoveryServiceDnsRecord]
-  , _serviceDiscoveryServiceDnsConfigNamespaceId :: Val Text
+  , _serviceDiscoveryServiceDnsConfigNamespaceId :: Maybe (Val Text)
   , _serviceDiscoveryServiceDnsConfigRoutingPolicy :: Maybe (Val Text)
   } deriving (Show, Eq)
 
@@ -23,7 +23,7 @@
     object $
     catMaybes
     [ (Just . ("DnsRecords",) . toJSON) _serviceDiscoveryServiceDnsConfigDnsRecords
-    , (Just . ("NamespaceId",) . toJSON) _serviceDiscoveryServiceDnsConfigNamespaceId
+    , fmap (("NamespaceId",) . toJSON) _serviceDiscoveryServiceDnsConfigNamespaceId
     , fmap (("RoutingPolicy",) . toJSON) _serviceDiscoveryServiceDnsConfigRoutingPolicy
     ]
 
@@ -31,7 +31,7 @@
   parseJSON (Object obj) =
     ServiceDiscoveryServiceDnsConfig <$>
       (obj .: "DnsRecords") <*>
-      (obj .: "NamespaceId") <*>
+      (obj .:? "NamespaceId") <*>
       (obj .:? "RoutingPolicy")
   parseJSON _ = mempty
 
@@ -39,12 +39,11 @@
 -- fields as arguments.
 serviceDiscoveryServiceDnsConfig
   :: [ServiceDiscoveryServiceDnsRecord] -- ^ 'sdsdcDnsRecords'
-  -> Val Text -- ^ 'sdsdcNamespaceId'
   -> ServiceDiscoveryServiceDnsConfig
-serviceDiscoveryServiceDnsConfig dnsRecordsarg namespaceIdarg =
+serviceDiscoveryServiceDnsConfig dnsRecordsarg =
   ServiceDiscoveryServiceDnsConfig
   { _serviceDiscoveryServiceDnsConfigDnsRecords = dnsRecordsarg
-  , _serviceDiscoveryServiceDnsConfigNamespaceId = namespaceIdarg
+  , _serviceDiscoveryServiceDnsConfigNamespaceId = Nothing
   , _serviceDiscoveryServiceDnsConfigRoutingPolicy = Nothing
   }
 
@@ -53,7 +52,7 @@
 sdsdcDnsRecords = lens _serviceDiscoveryServiceDnsConfigDnsRecords (\s a -> s { _serviceDiscoveryServiceDnsConfigDnsRecords = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html#cfn-servicediscovery-service-dnsconfig-namespaceid
-sdsdcNamespaceId :: Lens' ServiceDiscoveryServiceDnsConfig (Val Text)
+sdsdcNamespaceId :: Lens' ServiceDiscoveryServiceDnsConfig (Maybe (Val Text))
 sdsdcNamespaceId = lens _serviceDiscoveryServiceDnsConfigNamespaceId (\s a -> s { _serviceDiscoveryServiceDnsConfigNamespaceId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html#cfn-servicediscovery-service-dnsconfig-routingpolicy
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
@@ -77,6 +77,7 @@
 import Stratosphere.Resources.AppStreamUser as X
 import Stratosphere.Resources.AppSyncApiKey as X
 import Stratosphere.Resources.AppSyncDataSource as X
+import Stratosphere.Resources.AppSyncFunctionConfiguration as X
 import Stratosphere.Resources.AppSyncGraphQLApi as X
 import Stratosphere.Resources.AppSyncGraphQLSchema as X
 import Stratosphere.Resources.AppSyncResolver as X
@@ -96,6 +97,7 @@
 import Stratosphere.Resources.CertificateManagerCertificate as X
 import Stratosphere.Resources.Cloud9EnvironmentEC2 as X
 import Stratosphere.Resources.CloudFormationCustomResource as X
+import Stratosphere.Resources.CloudFormationMacro as X
 import Stratosphere.Resources.CloudFormationStack as X
 import Stratosphere.Resources.CloudFormationWaitCondition as X
 import Stratosphere.Resources.CloudFormationWaitConditionHandle as X
@@ -141,6 +143,7 @@
 import Stratosphere.Resources.DynamoDBTable as X
 import Stratosphere.Resources.EC2CustomerGateway as X
 import Stratosphere.Resources.EC2DHCPOptions as X
+import Stratosphere.Resources.EC2EC2Fleet as X
 import Stratosphere.Resources.EC2EIP as X
 import Stratosphere.Resources.EC2EIPAssociation as X
 import Stratosphere.Resources.EC2EgressOnlyInternetGateway as X
@@ -254,6 +257,7 @@
 import Stratosphere.Resources.KMSAlias as X
 import Stratosphere.Resources.KMSKey as X
 import Stratosphere.Resources.KinesisStream as X
+import Stratosphere.Resources.KinesisStreamConsumer as X
 import Stratosphere.Resources.KinesisAnalyticsApplication as X
 import Stratosphere.Resources.KinesisAnalyticsApplicationOutput as X
 import Stratosphere.Resources.KinesisAnalyticsApplicationReferenceDataSource as X
@@ -298,6 +302,8 @@
 import Stratosphere.Resources.Route53HostedZone as X
 import Stratosphere.Resources.Route53RecordSet as X
 import Stratosphere.Resources.Route53RecordSetGroup as X
+import Stratosphere.Resources.Route53ResolverResolverEndpoint as X
+import Stratosphere.Resources.Route53ResolverResolverRule as X
 import Stratosphere.Resources.S3Bucket as X
 import Stratosphere.Resources.S3BucketPolicy as X
 import Stratosphere.Resources.SDBDomain as X
@@ -362,6 +368,7 @@
 import Stratosphere.Resources.WAFRegionalWebACLAssociation as X
 import Stratosphere.Resources.WAFRegionalXssMatchSet as X
 import Stratosphere.Resources.WorkSpacesWorkspace as X
+import Stratosphere.Resources.ASKSkill as X
 import Stratosphere.ResourceProperties.AmazonMQBrokerConfigurationId as X
 import Stratosphere.ResourceProperties.AmazonMQBrokerLogList as X
 import Stratosphere.ResourceProperties.AmazonMQBrokerMaintenanceWindow as X
@@ -394,13 +401,18 @@
 import Stratosphere.ResourceProperties.AppStreamStackApplicationSettings as X
 import Stratosphere.ResourceProperties.AppStreamStackStorageConnector as X
 import Stratosphere.ResourceProperties.AppStreamStackUserSetting as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceAuthorizationConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceAwsIamConfig as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig as X
 import Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceRdsHttpEndpointConfig as X
+import Stratosphere.ResourceProperties.AppSyncDataSourceRelationalDatabaseConfig as X
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig as X
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig as X
 import Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig as X
+import Stratosphere.ResourceProperties.AppSyncResolverPipelineConfig as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScalableTargetAction as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalableTargetScheduledAction as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyCustomizedMetricSpecification as X
@@ -409,9 +421,13 @@
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepAdjustment as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyStepScalingPolicyConfiguration as X
 import Stratosphere.ResourceProperties.ApplicationAutoScalingScalingPolicyTargetTrackingScalingPolicyConfiguration as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateSpecification as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection as X
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMixedInstancesPolicy as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration as X
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty as X
 import Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDevice as X
@@ -431,9 +447,12 @@
 import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTagFilter as X
 import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration as X
 import Stratosphere.ResourceProperties.BatchComputeEnvironmentComputeResources as X
+import Stratosphere.ResourceProperties.BatchComputeEnvironmentLaunchTemplateSpecification as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionMountPoints as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionNodeProperties as X
+import Stratosphere.ResourceProperties.BatchJobDefinitionNodeRangeProperty as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionTimeout as X
 import Stratosphere.ResourceProperties.BatchJobDefinitionUlimit as X
@@ -509,6 +528,7 @@
 import Stratosphere.ResourceProperties.CodePipelinePipelineActionDeclaration as X
 import Stratosphere.ResourceProperties.CodePipelinePipelineActionTypeId as X
 import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStore as X
+import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStoreMap as X
 import Stratosphere.ResourceProperties.CodePipelinePipelineBlockerDeclaration as X
 import Stratosphere.ResourceProperties.CodePipelinePipelineEncryptionKey as X
 import Stratosphere.ResourceProperties.CodePipelinePipelineInputArtifact as X
@@ -568,6 +588,14 @@
 import Stratosphere.ResourceProperties.DynamoDBTableSSESpecification as X
 import Stratosphere.ResourceProperties.DynamoDBTableStreamSpecification as X
 import Stratosphere.ResourceProperties.DynamoDBTableTimeToLiveSpecification as X
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetOnDemandOptionsRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetSpotOptionsRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetTagRequest as X
+import Stratosphere.ResourceProperties.EC2EC2FleetTagSpecification as X
+import Stratosphere.ResourceProperties.EC2EC2FleetTargetCapacitySpecificationRequest as X
 import Stratosphere.ResourceProperties.EC2InstanceAssociationParameter as X
 import Stratosphere.ResourceProperties.EC2InstanceBlockDeviceMapping as X
 import Stratosphere.ResourceProperties.EC2InstanceCreditSpecification as X
@@ -656,12 +684,14 @@
 import Stratosphere.ResourceProperties.EMRClusterConfiguration as X
 import Stratosphere.ResourceProperties.EMRClusterEbsBlockDeviceConfig as X
 import Stratosphere.ResourceProperties.EMRClusterEbsConfiguration as X
+import Stratosphere.ResourceProperties.EMRClusterHadoopJarStepConfig as X
 import Stratosphere.ResourceProperties.EMRClusterInstanceFleetConfig as X
 import Stratosphere.ResourceProperties.EMRClusterInstanceFleetProvisioningSpecifications as X
 import Stratosphere.ResourceProperties.EMRClusterInstanceGroupConfig as X
 import Stratosphere.ResourceProperties.EMRClusterInstanceTypeConfig as X
 import Stratosphere.ResourceProperties.EMRClusterJobFlowInstancesConfig as X
 import Stratosphere.ResourceProperties.EMRClusterKerberosAttributes as X
+import Stratosphere.ResourceProperties.EMRClusterKeyValue as X
 import Stratosphere.ResourceProperties.EMRClusterMetricDimension as X
 import Stratosphere.ResourceProperties.EMRClusterPlacementType as X
 import Stratosphere.ResourceProperties.EMRClusterScalingAction as X
@@ -671,6 +701,7 @@
 import Stratosphere.ResourceProperties.EMRClusterScriptBootstrapActionConfig as X
 import Stratosphere.ResourceProperties.EMRClusterSimpleScalingPolicyConfiguration as X
 import Stratosphere.ResourceProperties.EMRClusterSpotProvisioningSpecification as X
+import Stratosphere.ResourceProperties.EMRClusterStepConfig as X
 import Stratosphere.ResourceProperties.EMRClusterVolumeSpecification as X
 import Stratosphere.ResourceProperties.EMRInstanceFleetConfigConfiguration as X
 import Stratosphere.ResourceProperties.EMRInstanceFleetConfigEbsBlockDeviceConfig as X
@@ -712,9 +743,17 @@
 import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerListeners as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerPolicies as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig as X
+import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute as X
 import Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping as X
@@ -880,6 +919,8 @@
 import Stratosphere.ResourceProperties.Route53RecordSetGroupAliasTarget as X
 import Stratosphere.ResourceProperties.Route53RecordSetGroupGeoLocation as X
 import Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet as X
+import Stratosphere.ResourceProperties.Route53ResolverResolverEndpointIpAddressRequest as X
+import Stratosphere.ResourceProperties.Route53ResolverResolverRuleTargetAddress as X
 import Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload as X
 import Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketAccessControlTranslation as X
@@ -899,6 +940,7 @@
 import Stratosphere.ResourceProperties.S3BucketNoncurrentVersionTransition as X
 import Stratosphere.ResourceProperties.S3BucketNotificationConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketNotificationFilter as X
+import Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketQueueConfiguration as X
 import Stratosphere.ResourceProperties.S3BucketRedirectAllRequestsTo as X
 import Stratosphere.ResourceProperties.S3BucketRedirectRule as X
@@ -990,6 +1032,9 @@
 import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetFieldToMatch as X
 import Stratosphere.ResourceProperties.WAFRegionalXssMatchSetXssMatchTuple as X
 import Stratosphere.ResourceProperties.WorkSpacesWorkspaceWorkspaceProperties as X
+import Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration as X
+import Stratosphere.ResourceProperties.ASKSkillOverrides as X
+import Stratosphere.ResourceProperties.ASKSkillSkillPackage as X
 import Stratosphere.ResourceProperties.Tag as X
 
 import Stratosphere.ResourceAttributes.AutoScalingReplacingUpdatePolicy as X
@@ -1032,6 +1077,7 @@
   | AppStreamUserProperties AppStreamUser
   | AppSyncApiKeyProperties AppSyncApiKey
   | AppSyncDataSourceProperties AppSyncDataSource
+  | AppSyncFunctionConfigurationProperties AppSyncFunctionConfiguration
   | AppSyncGraphQLApiProperties AppSyncGraphQLApi
   | AppSyncGraphQLSchemaProperties AppSyncGraphQLSchema
   | AppSyncResolverProperties AppSyncResolver
@@ -1051,6 +1097,7 @@
   | CertificateManagerCertificateProperties CertificateManagerCertificate
   | Cloud9EnvironmentEC2Properties Cloud9EnvironmentEC2
   | CloudFormationCustomResourceProperties CloudFormationCustomResource
+  | CloudFormationMacroProperties CloudFormationMacro
   | CloudFormationStackProperties CloudFormationStack
   | CloudFormationWaitConditionProperties CloudFormationWaitCondition
   | CloudFormationWaitConditionHandleProperties CloudFormationWaitConditionHandle
@@ -1096,6 +1143,7 @@
   | DynamoDBTableProperties DynamoDBTable
   | EC2CustomerGatewayProperties EC2CustomerGateway
   | EC2DHCPOptionsProperties EC2DHCPOptions
+  | EC2EC2FleetProperties EC2EC2Fleet
   | EC2EIPProperties EC2EIP
   | EC2EIPAssociationProperties EC2EIPAssociation
   | EC2EgressOnlyInternetGatewayProperties EC2EgressOnlyInternetGateway
@@ -1209,6 +1257,7 @@
   | KMSAliasProperties KMSAlias
   | KMSKeyProperties KMSKey
   | KinesisStreamProperties KinesisStream
+  | KinesisStreamConsumerProperties KinesisStreamConsumer
   | KinesisAnalyticsApplicationProperties KinesisAnalyticsApplication
   | KinesisAnalyticsApplicationOutputProperties KinesisAnalyticsApplicationOutput
   | KinesisAnalyticsApplicationReferenceDataSourceProperties KinesisAnalyticsApplicationReferenceDataSource
@@ -1253,6 +1302,8 @@
   | Route53HostedZoneProperties Route53HostedZone
   | Route53RecordSetProperties Route53RecordSet
   | Route53RecordSetGroupProperties Route53RecordSetGroup
+  | Route53ResolverResolverEndpointProperties Route53ResolverResolverEndpoint
+  | Route53ResolverResolverRuleProperties Route53ResolverResolverRule
   | S3BucketProperties S3Bucket
   | S3BucketPolicyProperties S3BucketPolicy
   | SDBDomainProperties SDBDomain
@@ -1317,6 +1368,7 @@
   | WAFRegionalWebACLAssociationProperties WAFRegionalWebACLAssociation
   | WAFRegionalXssMatchSetProperties WAFRegionalXssMatchSet
   | WorkSpacesWorkspaceProperties WorkSpacesWorkspace
+  | ASKSkillProperties ASKSkill
 
   deriving (Show, Eq)
 
@@ -1432,6 +1484,8 @@
   [ "Type" .= ("AWS::AppSync::ApiKey" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (AppSyncDataSourceProperties x) =
   [ "Type" .= ("AWS::AppSync::DataSource" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (AppSyncFunctionConfigurationProperties x) =
+  [ "Type" .= ("AWS::AppSync::FunctionConfiguration" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (AppSyncGraphQLApiProperties x) =
   [ "Type" .= ("AWS::AppSync::GraphQLApi" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (AppSyncGraphQLSchemaProperties x) =
@@ -1470,6 +1524,8 @@
   [ "Type" .= ("AWS::Cloud9::EnvironmentEC2" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CloudFormationCustomResourceProperties x) =
   [ "Type" .= ("AWS::CloudFormation::CustomResource" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (CloudFormationMacroProperties x) =
+  [ "Type" .= ("AWS::CloudFormation::Macro" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CloudFormationStackProperties x) =
   [ "Type" .= ("AWS::CloudFormation::Stack" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (CloudFormationWaitConditionProperties x) =
@@ -1560,6 +1616,8 @@
   [ "Type" .= ("AWS::EC2::CustomerGateway" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (EC2DHCPOptionsProperties x) =
   [ "Type" .= ("AWS::EC2::DHCPOptions" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (EC2EC2FleetProperties x) =
+  [ "Type" .= ("AWS::EC2::EC2Fleet" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (EC2EIPProperties x) =
   [ "Type" .= ("AWS::EC2::EIP" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (EC2EIPAssociationProperties x) =
@@ -1786,6 +1844,8 @@
   [ "Type" .= ("AWS::KMS::Key" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (KinesisStreamProperties x) =
   [ "Type" .= ("AWS::Kinesis::Stream" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (KinesisStreamConsumerProperties x) =
+  [ "Type" .= ("AWS::Kinesis::StreamConsumer" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (KinesisAnalyticsApplicationProperties x) =
   [ "Type" .= ("AWS::KinesisAnalytics::Application" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (KinesisAnalyticsApplicationOutputProperties x) =
@@ -1874,6 +1934,10 @@
   [ "Type" .= ("AWS::Route53::RecordSet" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (Route53RecordSetGroupProperties x) =
   [ "Type" .= ("AWS::Route53::RecordSetGroup" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (Route53ResolverResolverEndpointProperties x) =
+  [ "Type" .= ("AWS::Route53Resolver::ResolverEndpoint" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (Route53ResolverResolverRuleProperties x) =
+  [ "Type" .= ("AWS::Route53Resolver::ResolverRule" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (S3BucketProperties x) =
   [ "Type" .= ("AWS::S3::Bucket" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (S3BucketPolicyProperties x) =
@@ -2002,6 +2066,8 @@
   [ "Type" .= ("AWS::WAFRegional::XssMatchSet" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (WorkSpacesWorkspaceProperties x) =
   [ "Type" .= ("AWS::WorkSpaces::Workspace" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (ASKSkillProperties x) =
+  [ "Type" .= ("Alexa::ASK::Skill" :: String), "Properties" .= toJSON x]
 
 
 resourceFromJSON :: T.Text -> Object -> Parser Resource
@@ -2038,6 +2104,7 @@
          "AWS::AppStream::User" -> AppStreamUserProperties <$> (o .: "Properties")
          "AWS::AppSync::ApiKey" -> AppSyncApiKeyProperties <$> (o .: "Properties")
          "AWS::AppSync::DataSource" -> AppSyncDataSourceProperties <$> (o .: "Properties")
+         "AWS::AppSync::FunctionConfiguration" -> AppSyncFunctionConfigurationProperties <$> (o .: "Properties")
          "AWS::AppSync::GraphQLApi" -> AppSyncGraphQLApiProperties <$> (o .: "Properties")
          "AWS::AppSync::GraphQLSchema" -> AppSyncGraphQLSchemaProperties <$> (o .: "Properties")
          "AWS::AppSync::Resolver" -> AppSyncResolverProperties <$> (o .: "Properties")
@@ -2057,6 +2124,7 @@
          "AWS::CertificateManager::Certificate" -> CertificateManagerCertificateProperties <$> (o .: "Properties")
          "AWS::Cloud9::EnvironmentEC2" -> Cloud9EnvironmentEC2Properties <$> (o .: "Properties")
          "AWS::CloudFormation::CustomResource" -> CloudFormationCustomResourceProperties <$> (o .: "Properties")
+         "AWS::CloudFormation::Macro" -> CloudFormationMacroProperties <$> (o .: "Properties")
          "AWS::CloudFormation::Stack" -> CloudFormationStackProperties <$> (o .: "Properties")
          "AWS::CloudFormation::WaitCondition" -> CloudFormationWaitConditionProperties <$> (o .: "Properties")
          "AWS::CloudFormation::WaitConditionHandle" -> CloudFormationWaitConditionHandleProperties <$> (o .: "Properties")
@@ -2102,6 +2170,7 @@
          "AWS::DynamoDB::Table" -> DynamoDBTableProperties <$> (o .: "Properties")
          "AWS::EC2::CustomerGateway" -> EC2CustomerGatewayProperties <$> (o .: "Properties")
          "AWS::EC2::DHCPOptions" -> EC2DHCPOptionsProperties <$> (o .: "Properties")
+         "AWS::EC2::EC2Fleet" -> EC2EC2FleetProperties <$> (o .: "Properties")
          "AWS::EC2::EIP" -> EC2EIPProperties <$> (o .: "Properties")
          "AWS::EC2::EIPAssociation" -> EC2EIPAssociationProperties <$> (o .: "Properties")
          "AWS::EC2::EgressOnlyInternetGateway" -> EC2EgressOnlyInternetGatewayProperties <$> (o .: "Properties")
@@ -2215,6 +2284,7 @@
          "AWS::KMS::Alias" -> KMSAliasProperties <$> (o .: "Properties")
          "AWS::KMS::Key" -> KMSKeyProperties <$> (o .: "Properties")
          "AWS::Kinesis::Stream" -> KinesisStreamProperties <$> (o .: "Properties")
+         "AWS::Kinesis::StreamConsumer" -> KinesisStreamConsumerProperties <$> (o .: "Properties")
          "AWS::KinesisAnalytics::Application" -> KinesisAnalyticsApplicationProperties <$> (o .: "Properties")
          "AWS::KinesisAnalytics::ApplicationOutput" -> KinesisAnalyticsApplicationOutputProperties <$> (o .: "Properties")
          "AWS::KinesisAnalytics::ApplicationReferenceDataSource" -> KinesisAnalyticsApplicationReferenceDataSourceProperties <$> (o .: "Properties")
@@ -2259,6 +2329,8 @@
          "AWS::Route53::HostedZone" -> Route53HostedZoneProperties <$> (o .: "Properties")
          "AWS::Route53::RecordSet" -> Route53RecordSetProperties <$> (o .: "Properties")
          "AWS::Route53::RecordSetGroup" -> Route53RecordSetGroupProperties <$> (o .: "Properties")
+         "AWS::Route53Resolver::ResolverEndpoint" -> Route53ResolverResolverEndpointProperties <$> (o .: "Properties")
+         "AWS::Route53Resolver::ResolverRule" -> Route53ResolverResolverRuleProperties <$> (o .: "Properties")
          "AWS::S3::Bucket" -> S3BucketProperties <$> (o .: "Properties")
          "AWS::S3::BucketPolicy" -> S3BucketPolicyProperties <$> (o .: "Properties")
          "AWS::SDB::Domain" -> SDBDomainProperties <$> (o .: "Properties")
@@ -2323,6 +2395,7 @@
          "AWS::WAFRegional::WebACLAssociation" -> WAFRegionalWebACLAssociationProperties <$> (o .: "Properties")
          "AWS::WAFRegional::XssMatchSet" -> WAFRegionalXssMatchSetProperties <$> (o .: "Properties")
          "AWS::WorkSpaces::Workspace" -> WorkSpacesWorkspaceProperties <$> (o .: "Properties")
+         "Alexa::ASK::Skill" -> ASKSkillProperties <$> (o .: "Properties")
 
          _ -> fail $ "Unknown resource type: " ++ type'
        dp <- o .:? "DeletionPolicy"
diff --git a/library-gen/Stratosphere/Resources/ASKSkill.hs b/library-gen/Stratosphere/Resources/ASKSkill.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/ASKSkill.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html
+
+module Stratosphere.Resources.ASKSkill where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration
+import Stratosphere.ResourceProperties.ASKSkillSkillPackage
+
+-- | Full data type definition for ASKSkill. See 'askSkill' for a more
+-- convenient constructor.
+data ASKSkill =
+  ASKSkill
+  { _aSKSkillAuthenticationConfiguration :: ASKSkillAuthenticationConfiguration
+  , _aSKSkillSkillPackage :: ASKSkillSkillPackage
+  , _aSKSkillVendorId :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON ASKSkill where
+  toJSON ASKSkill{..} =
+    object $
+    catMaybes
+    [ (Just . ("AuthenticationConfiguration",) . toJSON) _aSKSkillAuthenticationConfiguration
+    , (Just . ("SkillPackage",) . toJSON) _aSKSkillSkillPackage
+    , (Just . ("VendorId",) . toJSON) _aSKSkillVendorId
+    ]
+
+instance FromJSON ASKSkill where
+  parseJSON (Object obj) =
+    ASKSkill <$>
+      (obj .: "AuthenticationConfiguration") <*>
+      (obj .: "SkillPackage") <*>
+      (obj .: "VendorId")
+  parseJSON _ = mempty
+
+-- | Constructor for 'ASKSkill' containing required fields as arguments.
+askSkill
+  :: ASKSkillAuthenticationConfiguration -- ^ 'asksAuthenticationConfiguration'
+  -> ASKSkillSkillPackage -- ^ 'asksSkillPackage'
+  -> Val Text -- ^ 'asksVendorId'
+  -> ASKSkill
+askSkill authenticationConfigurationarg skillPackagearg vendorIdarg =
+  ASKSkill
+  { _aSKSkillAuthenticationConfiguration = authenticationConfigurationarg
+  , _aSKSkillSkillPackage = skillPackagearg
+  , _aSKSkillVendorId = vendorIdarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html#cfn-ask-skill-authenticationconfiguration
+asksAuthenticationConfiguration :: Lens' ASKSkill ASKSkillAuthenticationConfiguration
+asksAuthenticationConfiguration = lens _aSKSkillAuthenticationConfiguration (\s a -> s { _aSKSkillAuthenticationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html#cfn-ask-skill-skillpackage
+asksSkillPackage :: Lens' ASKSkill ASKSkillSkillPackage
+asksSkillPackage = lens _aSKSkillSkillPackage (\s a -> s { _aSKSkillSkillPackage = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html#cfn-ask-skill-vendorid
+asksVendorId :: Lens' ASKSkill (Val Text)
+asksVendorId = lens _aSKSkillVendorId (\s a -> s { _aSKSkillVendorId = a })
diff --git a/library-gen/Stratosphere/Resources/ApiGatewayStage.hs b/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
--- a/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
+++ b/library-gen/Stratosphere/Resources/ApiGatewayStage.hs
@@ -10,6 +10,7 @@
 import Stratosphere.ResourceProperties.ApiGatewayStageAccessLogSetting
 import Stratosphere.ResourceProperties.ApiGatewayStageCanarySetting
 import Stratosphere.ResourceProperties.ApiGatewayStageMethodSetting
+import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for ApiGatewayStage. See 'apiGatewayStage' for
 -- a more convenient constructor.
@@ -26,6 +27,7 @@
   , _apiGatewayStageMethodSettings :: Maybe [ApiGatewayStageMethodSetting]
   , _apiGatewayStageRestApiId :: Val Text
   , _apiGatewayStageStageName :: Maybe (Val Text)
+  , _apiGatewayStageTags :: Maybe [Tag]
   , _apiGatewayStageTracingEnabled :: Maybe (Val Bool)
   , _apiGatewayStageVariables :: Maybe Object
   } deriving (Show, Eq)
@@ -45,6 +47,7 @@
     , fmap (("MethodSettings",) . toJSON) _apiGatewayStageMethodSettings
     , (Just . ("RestApiId",) . toJSON) _apiGatewayStageRestApiId
     , fmap (("StageName",) . toJSON) _apiGatewayStageStageName
+    , fmap (("Tags",) . toJSON) _apiGatewayStageTags
     , fmap (("TracingEnabled",) . toJSON . fmap Bool') _apiGatewayStageTracingEnabled
     , fmap (("Variables",) . toJSON) _apiGatewayStageVariables
     ]
@@ -63,6 +66,7 @@
       (obj .:? "MethodSettings") <*>
       (obj .: "RestApiId") <*>
       (obj .:? "StageName") <*>
+      (obj .:? "Tags") <*>
       fmap (fmap (fmap unBool')) (obj .:? "TracingEnabled") <*>
       (obj .:? "Variables")
   parseJSON _ = mempty
@@ -85,6 +89,7 @@
   , _apiGatewayStageMethodSettings = Nothing
   , _apiGatewayStageRestApiId = restApiIdarg
   , _apiGatewayStageStageName = Nothing
+  , _apiGatewayStageTags = Nothing
   , _apiGatewayStageTracingEnabled = Nothing
   , _apiGatewayStageVariables = Nothing
   }
@@ -132,6 +137,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-stagename
 agsStageName :: Lens' ApiGatewayStage (Maybe (Val Text))
 agsStageName = lens _apiGatewayStageStageName (\s a -> s { _apiGatewayStageStageName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-tags
+agsTags :: Lens' ApiGatewayStage (Maybe [Tag])
+agsTags = lens _apiGatewayStageTags (\s a -> s { _apiGatewayStageTags = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-stage.html#cfn-apigateway-stage-tracingenabled
 agsTracingEnabled :: Lens' ApiGatewayStage (Maybe (Val Bool))
diff --git a/library-gen/Stratosphere/Resources/AppSyncDataSource.hs b/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
--- a/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncDataSource.hs
@@ -11,6 +11,7 @@
 import Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig
 import Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig
 import Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig
+import Stratosphere.ResourceProperties.AppSyncDataSourceRelationalDatabaseConfig
 
 -- | Full data type definition for AppSyncDataSource. See 'appSyncDataSource'
 -- for a more convenient constructor.
@@ -23,6 +24,7 @@
   , _appSyncDataSourceHttpConfig :: Maybe AppSyncDataSourceHttpConfig
   , _appSyncDataSourceLambdaConfig :: Maybe AppSyncDataSourceLambdaConfig
   , _appSyncDataSourceName :: Val Text
+  , _appSyncDataSourceRelationalDatabaseConfig :: Maybe AppSyncDataSourceRelationalDatabaseConfig
   , _appSyncDataSourceServiceRoleArn :: Maybe (Val Text)
   , _appSyncDataSourceType :: Val Text
   } deriving (Show, Eq)
@@ -38,6 +40,7 @@
     , fmap (("HttpConfig",) . toJSON) _appSyncDataSourceHttpConfig
     , fmap (("LambdaConfig",) . toJSON) _appSyncDataSourceLambdaConfig
     , (Just . ("Name",) . toJSON) _appSyncDataSourceName
+    , fmap (("RelationalDatabaseConfig",) . toJSON) _appSyncDataSourceRelationalDatabaseConfig
     , fmap (("ServiceRoleArn",) . toJSON) _appSyncDataSourceServiceRoleArn
     , (Just . ("Type",) . toJSON) _appSyncDataSourceType
     ]
@@ -52,6 +55,7 @@
       (obj .:? "HttpConfig") <*>
       (obj .:? "LambdaConfig") <*>
       (obj .: "Name") <*>
+      (obj .:? "RelationalDatabaseConfig") <*>
       (obj .:? "ServiceRoleArn") <*>
       (obj .: "Type")
   parseJSON _ = mempty
@@ -72,6 +76,7 @@
   , _appSyncDataSourceHttpConfig = Nothing
   , _appSyncDataSourceLambdaConfig = Nothing
   , _appSyncDataSourceName = namearg
+  , _appSyncDataSourceRelationalDatabaseConfig = Nothing
   , _appSyncDataSourceServiceRoleArn = Nothing
   , _appSyncDataSourceType = typearg
   }
@@ -103,6 +108,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-name
 asdsName :: Lens' AppSyncDataSource (Val Text)
 asdsName = lens _appSyncDataSourceName (\s a -> s { _appSyncDataSourceName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-relationaldatabaseconfig
+asdsRelationalDatabaseConfig :: Lens' AppSyncDataSource (Maybe AppSyncDataSourceRelationalDatabaseConfig)
+asdsRelationalDatabaseConfig = lens _appSyncDataSourceRelationalDatabaseConfig (\s a -> s { _appSyncDataSourceRelationalDatabaseConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-servicerolearn
 asdsServiceRoleArn :: Lens' AppSyncDataSource (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/AppSyncFunctionConfiguration.hs b/library-gen/Stratosphere/Resources/AppSyncFunctionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/AppSyncFunctionConfiguration.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html
+
+module Stratosphere.Resources.AppSyncFunctionConfiguration where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for AppSyncFunctionConfiguration. See
+-- 'appSyncFunctionConfiguration' for a more convenient constructor.
+data AppSyncFunctionConfiguration =
+  AppSyncFunctionConfiguration
+  { _appSyncFunctionConfigurationApiId :: Val Text
+  , _appSyncFunctionConfigurationDataSourceName :: Maybe (Val Text)
+  , _appSyncFunctionConfigurationDescription :: Maybe (Val Text)
+  , _appSyncFunctionConfigurationFunctionVersion :: Maybe (Val Text)
+  , _appSyncFunctionConfigurationName :: Maybe (Val Text)
+  , _appSyncFunctionConfigurationRequestMappingTemplate :: Maybe (Val Text)
+  , _appSyncFunctionConfigurationRequestMappingTemplateS3Location :: Maybe (Val Text)
+  , _appSyncFunctionConfigurationResponseMappingTemplate :: Maybe (Val Text)
+  , _appSyncFunctionConfigurationResponseMappingTemplateS3Location :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON AppSyncFunctionConfiguration where
+  toJSON AppSyncFunctionConfiguration{..} =
+    object $
+    catMaybes
+    [ (Just . ("ApiId",) . toJSON) _appSyncFunctionConfigurationApiId
+    , fmap (("DataSourceName",) . toJSON) _appSyncFunctionConfigurationDataSourceName
+    , fmap (("Description",) . toJSON) _appSyncFunctionConfigurationDescription
+    , fmap (("FunctionVersion",) . toJSON) _appSyncFunctionConfigurationFunctionVersion
+    , fmap (("Name",) . toJSON) _appSyncFunctionConfigurationName
+    , fmap (("RequestMappingTemplate",) . toJSON) _appSyncFunctionConfigurationRequestMappingTemplate
+    , fmap (("RequestMappingTemplateS3Location",) . toJSON) _appSyncFunctionConfigurationRequestMappingTemplateS3Location
+    , fmap (("ResponseMappingTemplate",) . toJSON) _appSyncFunctionConfigurationResponseMappingTemplate
+    , fmap (("ResponseMappingTemplateS3Location",) . toJSON) _appSyncFunctionConfigurationResponseMappingTemplateS3Location
+    ]
+
+instance FromJSON AppSyncFunctionConfiguration where
+  parseJSON (Object obj) =
+    AppSyncFunctionConfiguration <$>
+      (obj .: "ApiId") <*>
+      (obj .:? "DataSourceName") <*>
+      (obj .:? "Description") <*>
+      (obj .:? "FunctionVersion") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "RequestMappingTemplate") <*>
+      (obj .:? "RequestMappingTemplateS3Location") <*>
+      (obj .:? "ResponseMappingTemplate") <*>
+      (obj .:? "ResponseMappingTemplateS3Location")
+  parseJSON _ = mempty
+
+-- | Constructor for 'AppSyncFunctionConfiguration' containing required fields
+-- as arguments.
+appSyncFunctionConfiguration
+  :: Val Text -- ^ 'asfcApiId'
+  -> AppSyncFunctionConfiguration
+appSyncFunctionConfiguration apiIdarg =
+  AppSyncFunctionConfiguration
+  { _appSyncFunctionConfigurationApiId = apiIdarg
+  , _appSyncFunctionConfigurationDataSourceName = Nothing
+  , _appSyncFunctionConfigurationDescription = Nothing
+  , _appSyncFunctionConfigurationFunctionVersion = Nothing
+  , _appSyncFunctionConfigurationName = Nothing
+  , _appSyncFunctionConfigurationRequestMappingTemplate = Nothing
+  , _appSyncFunctionConfigurationRequestMappingTemplateS3Location = Nothing
+  , _appSyncFunctionConfigurationResponseMappingTemplate = Nothing
+  , _appSyncFunctionConfigurationResponseMappingTemplateS3Location = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-apiid
+asfcApiId :: Lens' AppSyncFunctionConfiguration (Val Text)
+asfcApiId = lens _appSyncFunctionConfigurationApiId (\s a -> s { _appSyncFunctionConfigurationApiId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-datasourcename
+asfcDataSourceName :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcDataSourceName = lens _appSyncFunctionConfigurationDataSourceName (\s a -> s { _appSyncFunctionConfigurationDataSourceName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-description
+asfcDescription :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcDescription = lens _appSyncFunctionConfigurationDescription (\s a -> s { _appSyncFunctionConfigurationDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-functionversion
+asfcFunctionVersion :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcFunctionVersion = lens _appSyncFunctionConfigurationFunctionVersion (\s a -> s { _appSyncFunctionConfigurationFunctionVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-name
+asfcName :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcName = lens _appSyncFunctionConfigurationName (\s a -> s { _appSyncFunctionConfigurationName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-requestmappingtemplate
+asfcRequestMappingTemplate :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcRequestMappingTemplate = lens _appSyncFunctionConfigurationRequestMappingTemplate (\s a -> s { _appSyncFunctionConfigurationRequestMappingTemplate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-requestmappingtemplates3location
+asfcRequestMappingTemplateS3Location :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcRequestMappingTemplateS3Location = lens _appSyncFunctionConfigurationRequestMappingTemplateS3Location (\s a -> s { _appSyncFunctionConfigurationRequestMappingTemplateS3Location = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-responsemappingtemplate
+asfcResponseMappingTemplate :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcResponseMappingTemplate = lens _appSyncFunctionConfigurationResponseMappingTemplate (\s a -> s { _appSyncFunctionConfigurationResponseMappingTemplate = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-functionconfiguration.html#cfn-appsync-functionconfiguration-responsemappingtemplates3location
+asfcResponseMappingTemplateS3Location :: Lens' AppSyncFunctionConfiguration (Maybe (Val Text))
+asfcResponseMappingTemplateS3Location = lens _appSyncFunctionConfigurationResponseMappingTemplateS3Location (\s a -> s { _appSyncFunctionConfigurationResponseMappingTemplateS3Location = a })
diff --git a/library-gen/Stratosphere/Resources/AppSyncResolver.hs b/library-gen/Stratosphere/Resources/AppSyncResolver.hs
--- a/library-gen/Stratosphere/Resources/AppSyncResolver.hs
+++ b/library-gen/Stratosphere/Resources/AppSyncResolver.hs
@@ -7,15 +7,17 @@
 module Stratosphere.Resources.AppSyncResolver where
 
 import Stratosphere.ResourceImports
-
+import Stratosphere.ResourceProperties.AppSyncResolverPipelineConfig
 
 -- | Full data type definition for AppSyncResolver. See 'appSyncResolver' for
 -- a more convenient constructor.
 data AppSyncResolver =
   AppSyncResolver
   { _appSyncResolverApiId :: Val Text
-  , _appSyncResolverDataSourceName :: Val Text
+  , _appSyncResolverDataSourceName :: Maybe (Val Text)
   , _appSyncResolverFieldName :: Val Text
+  , _appSyncResolverKind :: Maybe (Val Text)
+  , _appSyncResolverPipelineConfig :: Maybe AppSyncResolverPipelineConfig
   , _appSyncResolverRequestMappingTemplate :: Maybe (Val Text)
   , _appSyncResolverRequestMappingTemplateS3Location :: Maybe (Val Text)
   , _appSyncResolverResponseMappingTemplate :: Maybe (Val Text)
@@ -28,8 +30,10 @@
     object $
     catMaybes
     [ (Just . ("ApiId",) . toJSON) _appSyncResolverApiId
-    , (Just . ("DataSourceName",) . toJSON) _appSyncResolverDataSourceName
+    , fmap (("DataSourceName",) . toJSON) _appSyncResolverDataSourceName
     , (Just . ("FieldName",) . toJSON) _appSyncResolverFieldName
+    , fmap (("Kind",) . toJSON) _appSyncResolverKind
+    , fmap (("PipelineConfig",) . toJSON) _appSyncResolverPipelineConfig
     , fmap (("RequestMappingTemplate",) . toJSON) _appSyncResolverRequestMappingTemplate
     , fmap (("RequestMappingTemplateS3Location",) . toJSON) _appSyncResolverRequestMappingTemplateS3Location
     , fmap (("ResponseMappingTemplate",) . toJSON) _appSyncResolverResponseMappingTemplate
@@ -41,8 +45,10 @@
   parseJSON (Object obj) =
     AppSyncResolver <$>
       (obj .: "ApiId") <*>
-      (obj .: "DataSourceName") <*>
+      (obj .:? "DataSourceName") <*>
       (obj .: "FieldName") <*>
+      (obj .:? "Kind") <*>
+      (obj .:? "PipelineConfig") <*>
       (obj .:? "RequestMappingTemplate") <*>
       (obj .:? "RequestMappingTemplateS3Location") <*>
       (obj .:? "ResponseMappingTemplate") <*>
@@ -54,15 +60,16 @@
 -- arguments.
 appSyncResolver
   :: Val Text -- ^ 'asrApiId'
-  -> Val Text -- ^ 'asrDataSourceName'
   -> Val Text -- ^ 'asrFieldName'
   -> Val Text -- ^ 'asrTypeName'
   -> AppSyncResolver
-appSyncResolver apiIdarg dataSourceNamearg fieldNamearg typeNamearg =
+appSyncResolver apiIdarg fieldNamearg typeNamearg =
   AppSyncResolver
   { _appSyncResolverApiId = apiIdarg
-  , _appSyncResolverDataSourceName = dataSourceNamearg
+  , _appSyncResolverDataSourceName = Nothing
   , _appSyncResolverFieldName = fieldNamearg
+  , _appSyncResolverKind = Nothing
+  , _appSyncResolverPipelineConfig = Nothing
   , _appSyncResolverRequestMappingTemplate = Nothing
   , _appSyncResolverRequestMappingTemplateS3Location = Nothing
   , _appSyncResolverResponseMappingTemplate = Nothing
@@ -75,12 +82,20 @@
 asrApiId = lens _appSyncResolverApiId (\s a -> s { _appSyncResolverApiId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-datasourcename
-asrDataSourceName :: Lens' AppSyncResolver (Val Text)
+asrDataSourceName :: Lens' AppSyncResolver (Maybe (Val Text))
 asrDataSourceName = lens _appSyncResolverDataSourceName (\s a -> s { _appSyncResolverDataSourceName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-fieldname
 asrFieldName :: Lens' AppSyncResolver (Val Text)
 asrFieldName = lens _appSyncResolverFieldName (\s a -> s { _appSyncResolverFieldName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-kind
+asrKind :: Lens' AppSyncResolver (Maybe (Val Text))
+asrKind = lens _appSyncResolverKind (\s a -> s { _appSyncResolverKind = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-pipelineconfig
+asrPipelineConfig :: Lens' AppSyncResolver (Maybe AppSyncResolverPipelineConfig)
+asrPipelineConfig = lens _appSyncResolverPipelineConfig (\s a -> s { _appSyncResolverPipelineConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-resolver.html#cfn-appsync-resolver-requestmappingtemplate
 asrRequestMappingTemplate :: Lens' AppSyncResolver (Maybe (Val Text))
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
@@ -10,6 +10,7 @@
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateSpecification
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection
+import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMixedInstancesPolicy
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration
 import Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty
 
@@ -31,6 +32,7 @@
   , _autoScalingAutoScalingGroupMaxSize :: Val Text
   , _autoScalingAutoScalingGroupMetricsCollection :: Maybe [AutoScalingAutoScalingGroupMetricsCollection]
   , _autoScalingAutoScalingGroupMinSize :: Val Text
+  , _autoScalingAutoScalingGroupMixedInstancesPolicy :: Maybe AutoScalingAutoScalingGroupMixedInstancesPolicy
   , _autoScalingAutoScalingGroupNotificationConfigurations :: Maybe [AutoScalingAutoScalingGroupNotificationConfiguration]
   , _autoScalingAutoScalingGroupPlacementGroup :: Maybe (Val Text)
   , _autoScalingAutoScalingGroupServiceLinkedRoleARN :: Maybe (Val Text)
@@ -58,6 +60,7 @@
     , (Just . ("MaxSize",) . toJSON) _autoScalingAutoScalingGroupMaxSize
     , fmap (("MetricsCollection",) . toJSON) _autoScalingAutoScalingGroupMetricsCollection
     , (Just . ("MinSize",) . toJSON) _autoScalingAutoScalingGroupMinSize
+    , fmap (("MixedInstancesPolicy",) . toJSON) _autoScalingAutoScalingGroupMixedInstancesPolicy
     , fmap (("NotificationConfigurations",) . toJSON) _autoScalingAutoScalingGroupNotificationConfigurations
     , fmap (("PlacementGroup",) . toJSON) _autoScalingAutoScalingGroupPlacementGroup
     , fmap (("ServiceLinkedRoleARN",) . toJSON) _autoScalingAutoScalingGroupServiceLinkedRoleARN
@@ -84,6 +87,7 @@
       (obj .: "MaxSize") <*>
       (obj .:? "MetricsCollection") <*>
       (obj .: "MinSize") <*>
+      (obj .:? "MixedInstancesPolicy") <*>
       (obj .:? "NotificationConfigurations") <*>
       (obj .:? "PlacementGroup") <*>
       (obj .:? "ServiceLinkedRoleARN") <*>
@@ -115,6 +119,7 @@
   , _autoScalingAutoScalingGroupMaxSize = maxSizearg
   , _autoScalingAutoScalingGroupMetricsCollection = Nothing
   , _autoScalingAutoScalingGroupMinSize = minSizearg
+  , _autoScalingAutoScalingGroupMixedInstancesPolicy = Nothing
   , _autoScalingAutoScalingGroupNotificationConfigurations = Nothing
   , _autoScalingAutoScalingGroupPlacementGroup = Nothing
   , _autoScalingAutoScalingGroupServiceLinkedRoleARN = Nothing
@@ -179,6 +184,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-minsize
 asasgMinSize :: Lens' AutoScalingAutoScalingGroup (Val Text)
 asasgMinSize = lens _autoScalingAutoScalingGroupMinSize (\s a -> s { _autoScalingAutoScalingGroupMinSize = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-mixedinstancespolicy
+asasgMixedInstancesPolicy :: Lens' AutoScalingAutoScalingGroup (Maybe AutoScalingAutoScalingGroupMixedInstancesPolicy)
+asasgMixedInstancesPolicy = lens _autoScalingAutoScalingGroupMixedInstancesPolicy (\s a -> s { _autoScalingAutoScalingGroupMixedInstancesPolicy = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-notificationconfigurations
 asasgNotificationConfigurations :: Lens' AutoScalingAutoScalingGroup (Maybe [AutoScalingAutoScalingGroupNotificationConfiguration])
diff --git a/library-gen/Stratosphere/Resources/BatchJobDefinition.hs b/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
--- a/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
+++ b/library-gen/Stratosphere/Resources/BatchJobDefinition.hs
@@ -8,6 +8,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties
+import Stratosphere.ResourceProperties.BatchJobDefinitionNodeProperties
 import Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy
 import Stratosphere.ResourceProperties.BatchJobDefinitionTimeout
 
@@ -15,8 +16,9 @@
 -- 'batchJobDefinition' for a more convenient constructor.
 data BatchJobDefinition =
   BatchJobDefinition
-  { _batchJobDefinitionContainerProperties :: BatchJobDefinitionContainerProperties
+  { _batchJobDefinitionContainerProperties :: Maybe BatchJobDefinitionContainerProperties
   , _batchJobDefinitionJobDefinitionName :: Maybe (Val Text)
+  , _batchJobDefinitionNodeProperties :: Maybe BatchJobDefinitionNodeProperties
   , _batchJobDefinitionParameters :: Maybe Object
   , _batchJobDefinitionRetryStrategy :: Maybe BatchJobDefinitionRetryStrategy
   , _batchJobDefinitionTimeout :: Maybe BatchJobDefinitionTimeout
@@ -27,8 +29,9 @@
   toJSON BatchJobDefinition{..} =
     object $
     catMaybes
-    [ (Just . ("ContainerProperties",) . toJSON) _batchJobDefinitionContainerProperties
+    [ fmap (("ContainerProperties",) . toJSON) _batchJobDefinitionContainerProperties
     , fmap (("JobDefinitionName",) . toJSON) _batchJobDefinitionJobDefinitionName
+    , fmap (("NodeProperties",) . toJSON) _batchJobDefinitionNodeProperties
     , fmap (("Parameters",) . toJSON) _batchJobDefinitionParameters
     , fmap (("RetryStrategy",) . toJSON) _batchJobDefinitionRetryStrategy
     , fmap (("Timeout",) . toJSON) _batchJobDefinitionTimeout
@@ -38,8 +41,9 @@
 instance FromJSON BatchJobDefinition where
   parseJSON (Object obj) =
     BatchJobDefinition <$>
-      (obj .: "ContainerProperties") <*>
+      (obj .:? "ContainerProperties") <*>
       (obj .:? "JobDefinitionName") <*>
+      (obj .:? "NodeProperties") <*>
       (obj .:? "Parameters") <*>
       (obj .:? "RetryStrategy") <*>
       (obj .:? "Timeout") <*>
@@ -49,13 +53,13 @@
 -- | Constructor for 'BatchJobDefinition' containing required fields as
 -- arguments.
 batchJobDefinition
-  :: BatchJobDefinitionContainerProperties -- ^ 'bjdContainerProperties'
-  -> Val Text -- ^ 'bjdType'
+  :: Val Text -- ^ 'bjdType'
   -> BatchJobDefinition
-batchJobDefinition containerPropertiesarg typearg =
+batchJobDefinition typearg =
   BatchJobDefinition
-  { _batchJobDefinitionContainerProperties = containerPropertiesarg
+  { _batchJobDefinitionContainerProperties = Nothing
   , _batchJobDefinitionJobDefinitionName = Nothing
+  , _batchJobDefinitionNodeProperties = Nothing
   , _batchJobDefinitionParameters = Nothing
   , _batchJobDefinitionRetryStrategy = Nothing
   , _batchJobDefinitionTimeout = Nothing
@@ -63,12 +67,16 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-containerproperties
-bjdContainerProperties :: Lens' BatchJobDefinition BatchJobDefinitionContainerProperties
+bjdContainerProperties :: Lens' BatchJobDefinition (Maybe BatchJobDefinitionContainerProperties)
 bjdContainerProperties = lens _batchJobDefinitionContainerProperties (\s a -> s { _batchJobDefinitionContainerProperties = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-jobdefinitionname
 bjdJobDefinitionName :: Lens' BatchJobDefinition (Maybe (Val Text))
 bjdJobDefinitionName = lens _batchJobDefinitionJobDefinitionName (\s a -> s { _batchJobDefinitionJobDefinitionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-nodeproperties
+bjdNodeProperties :: Lens' BatchJobDefinition (Maybe BatchJobDefinitionNodeProperties)
+bjdNodeProperties = lens _batchJobDefinitionNodeProperties (\s a -> s { _batchJobDefinitionNodeProperties = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-batch-jobdefinition.html#cfn-batch-jobdefinition-parameters
 bjdParameters :: Lens' BatchJobDefinition (Maybe Object)
diff --git a/library-gen/Stratosphere/Resources/CloudFormationMacro.hs b/library-gen/Stratosphere/Resources/CloudFormationMacro.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/CloudFormationMacro.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-macro.html
+
+module Stratosphere.Resources.CloudFormationMacro where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CloudFormationMacro. See
+-- 'cloudFormationMacro' for a more convenient constructor.
+data CloudFormationMacro =
+  CloudFormationMacro
+  { _cloudFormationMacroDescription :: Maybe (Val Text)
+  , _cloudFormationMacroFunctionName :: Val Text
+  , _cloudFormationMacroLogGroupName :: Maybe (Val Text)
+  , _cloudFormationMacroLogRoleARN :: Maybe (Val Text)
+  , _cloudFormationMacroName :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON CloudFormationMacro where
+  toJSON CloudFormationMacro{..} =
+    object $
+    catMaybes
+    [ fmap (("Description",) . toJSON) _cloudFormationMacroDescription
+    , (Just . ("FunctionName",) . toJSON) _cloudFormationMacroFunctionName
+    , fmap (("LogGroupName",) . toJSON) _cloudFormationMacroLogGroupName
+    , fmap (("LogRoleARN",) . toJSON) _cloudFormationMacroLogRoleARN
+    , (Just . ("Name",) . toJSON) _cloudFormationMacroName
+    ]
+
+instance FromJSON CloudFormationMacro where
+  parseJSON (Object obj) =
+    CloudFormationMacro <$>
+      (obj .:? "Description") <*>
+      (obj .: "FunctionName") <*>
+      (obj .:? "LogGroupName") <*>
+      (obj .:? "LogRoleARN") <*>
+      (obj .: "Name")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CloudFormationMacro' containing required fields as
+-- arguments.
+cloudFormationMacro
+  :: Val Text -- ^ 'cfmFunctionName'
+  -> Val Text -- ^ 'cfmName'
+  -> CloudFormationMacro
+cloudFormationMacro functionNamearg namearg =
+  CloudFormationMacro
+  { _cloudFormationMacroDescription = Nothing
+  , _cloudFormationMacroFunctionName = functionNamearg
+  , _cloudFormationMacroLogGroupName = Nothing
+  , _cloudFormationMacroLogRoleARN = Nothing
+  , _cloudFormationMacroName = namearg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-macro.html#cfn-cloudformation-macro-description
+cfmDescription :: Lens' CloudFormationMacro (Maybe (Val Text))
+cfmDescription = lens _cloudFormationMacroDescription (\s a -> s { _cloudFormationMacroDescription = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-macro.html#cfn-cloudformation-macro-functionname
+cfmFunctionName :: Lens' CloudFormationMacro (Val Text)
+cfmFunctionName = lens _cloudFormationMacroFunctionName (\s a -> s { _cloudFormationMacroFunctionName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-macro.html#cfn-cloudformation-macro-loggroupname
+cfmLogGroupName :: Lens' CloudFormationMacro (Maybe (Val Text))
+cfmLogGroupName = lens _cloudFormationMacroLogGroupName (\s a -> s { _cloudFormationMacroLogGroupName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-macro.html#cfn-cloudformation-macro-logrolearn
+cfmLogRoleARN :: Lens' CloudFormationMacro (Maybe (Val Text))
+cfmLogRoleARN = lens _cloudFormationMacroLogRoleARN (\s a -> s { _cloudFormationMacroLogRoleARN = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudformation-macro.html#cfn-cloudformation-macro-name
+cfmName :: Lens' CloudFormationMacro (Val Text)
+cfmName = lens _cloudFormationMacroName (\s a -> s { _cloudFormationMacroName = a })
diff --git a/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs b/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
--- a/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
+++ b/library-gen/Stratosphere/Resources/CloudWatchAlarm.hs
@@ -24,10 +24,10 @@
   , _cloudWatchAlarmEvaluationPeriods :: Val Integer
   , _cloudWatchAlarmExtendedStatistic :: Maybe (Val Text)
   , _cloudWatchAlarmInsufficientDataActions :: Maybe (ValList Text)
-  , _cloudWatchAlarmMetricName :: Val Text
-  , _cloudWatchAlarmNamespace :: Val Text
+  , _cloudWatchAlarmMetricName :: Maybe (Val Text)
+  , _cloudWatchAlarmNamespace :: Maybe (Val Text)
   , _cloudWatchAlarmOKActions :: Maybe (ValList Text)
-  , _cloudWatchAlarmPeriod :: Val Integer
+  , _cloudWatchAlarmPeriod :: Maybe (Val Integer)
   , _cloudWatchAlarmStatistic :: Maybe (Val Text)
   , _cloudWatchAlarmThreshold :: Val Double
   , _cloudWatchAlarmTreatMissingData :: Maybe (Val Text)
@@ -49,10 +49,10 @@
     , (Just . ("EvaluationPeriods",) . toJSON . fmap Integer') _cloudWatchAlarmEvaluationPeriods
     , fmap (("ExtendedStatistic",) . toJSON) _cloudWatchAlarmExtendedStatistic
     , fmap (("InsufficientDataActions",) . toJSON) _cloudWatchAlarmInsufficientDataActions
-    , (Just . ("MetricName",) . toJSON) _cloudWatchAlarmMetricName
-    , (Just . ("Namespace",) . toJSON) _cloudWatchAlarmNamespace
+    , fmap (("MetricName",) . toJSON) _cloudWatchAlarmMetricName
+    , fmap (("Namespace",) . toJSON) _cloudWatchAlarmNamespace
     , fmap (("OKActions",) . toJSON) _cloudWatchAlarmOKActions
-    , (Just . ("Period",) . toJSON . fmap Integer') _cloudWatchAlarmPeriod
+    , fmap (("Period",) . toJSON . fmap Integer') _cloudWatchAlarmPeriod
     , fmap (("Statistic",) . toJSON) _cloudWatchAlarmStatistic
     , (Just . ("Threshold",) . toJSON . fmap Double') _cloudWatchAlarmThreshold
     , fmap (("TreatMissingData",) . toJSON) _cloudWatchAlarmTreatMissingData
@@ -73,10 +73,10 @@
       fmap (fmap unInteger') (obj .: "EvaluationPeriods") <*>
       (obj .:? "ExtendedStatistic") <*>
       (obj .:? "InsufficientDataActions") <*>
-      (obj .: "MetricName") <*>
-      (obj .: "Namespace") <*>
+      (obj .:? "MetricName") <*>
+      (obj .:? "Namespace") <*>
       (obj .:? "OKActions") <*>
-      fmap (fmap unInteger') (obj .: "Period") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "Period") <*>
       (obj .:? "Statistic") <*>
       fmap (fmap unDouble') (obj .: "Threshold") <*>
       (obj .:? "TreatMissingData") <*>
@@ -88,12 +88,9 @@
 cloudWatchAlarm
   :: Val Text -- ^ 'cwaComparisonOperator'
   -> Val Integer -- ^ 'cwaEvaluationPeriods'
-  -> Val Text -- ^ 'cwaMetricName'
-  -> Val Text -- ^ 'cwaNamespace'
-  -> Val Integer -- ^ 'cwaPeriod'
   -> Val Double -- ^ 'cwaThreshold'
   -> CloudWatchAlarm
-cloudWatchAlarm comparisonOperatorarg evaluationPeriodsarg metricNamearg namespacearg periodarg thresholdarg =
+cloudWatchAlarm comparisonOperatorarg evaluationPeriodsarg thresholdarg =
   CloudWatchAlarm
   { _cloudWatchAlarmActionsEnabled = Nothing
   , _cloudWatchAlarmAlarmActions = Nothing
@@ -106,10 +103,10 @@
   , _cloudWatchAlarmEvaluationPeriods = evaluationPeriodsarg
   , _cloudWatchAlarmExtendedStatistic = Nothing
   , _cloudWatchAlarmInsufficientDataActions = Nothing
-  , _cloudWatchAlarmMetricName = metricNamearg
-  , _cloudWatchAlarmNamespace = namespacearg
+  , _cloudWatchAlarmMetricName = Nothing
+  , _cloudWatchAlarmNamespace = Nothing
   , _cloudWatchAlarmOKActions = Nothing
-  , _cloudWatchAlarmPeriod = periodarg
+  , _cloudWatchAlarmPeriod = Nothing
   , _cloudWatchAlarmStatistic = Nothing
   , _cloudWatchAlarmThreshold = thresholdarg
   , _cloudWatchAlarmTreatMissingData = Nothing
@@ -161,11 +158,11 @@
 cwaInsufficientDataActions = lens _cloudWatchAlarmInsufficientDataActions (\s a -> s { _cloudWatchAlarmInsufficientDataActions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-metricname
-cwaMetricName :: Lens' CloudWatchAlarm (Val Text)
+cwaMetricName :: Lens' CloudWatchAlarm (Maybe (Val Text))
 cwaMetricName = lens _cloudWatchAlarmMetricName (\s a -> s { _cloudWatchAlarmMetricName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-namespace
-cwaNamespace :: Lens' CloudWatchAlarm (Val Text)
+cwaNamespace :: Lens' CloudWatchAlarm (Maybe (Val Text))
 cwaNamespace = lens _cloudWatchAlarmNamespace (\s a -> s { _cloudWatchAlarmNamespace = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-okactions
@@ -173,7 +170,7 @@
 cwaOKActions = lens _cloudWatchAlarmOKActions (\s a -> s { _cloudWatchAlarmOKActions = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-period
-cwaPeriod :: Lens' CloudWatchAlarm (Val Integer)
+cwaPeriod :: Lens' CloudWatchAlarm (Maybe (Val Integer))
 cwaPeriod = lens _cloudWatchAlarmPeriod (\s a -> s { _cloudWatchAlarmPeriod = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-statistic
diff --git a/library-gen/Stratosphere/Resources/CodeBuildProject.hs b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
--- a/library-gen/Stratosphere/Resources/CodeBuildProject.hs
+++ b/library-gen/Stratosphere/Resources/CodeBuildProject.hs
@@ -28,6 +28,7 @@
   , _codeBuildProjectEnvironment :: CodeBuildProjectEnvironment
   , _codeBuildProjectLogsConfig :: Maybe CodeBuildProjectLogsConfig
   , _codeBuildProjectName :: Maybe (Val Text)
+  , _codeBuildProjectQueuedTimeoutInMinutes :: Maybe (Val Integer)
   , _codeBuildProjectSecondaryArtifacts :: Maybe [CodeBuildProjectArtifacts]
   , _codeBuildProjectSecondarySources :: Maybe [CodeBuildProjectSource]
   , _codeBuildProjectServiceRole :: Val Text
@@ -50,6 +51,7 @@
     , (Just . ("Environment",) . toJSON) _codeBuildProjectEnvironment
     , fmap (("LogsConfig",) . toJSON) _codeBuildProjectLogsConfig
     , fmap (("Name",) . toJSON) _codeBuildProjectName
+    , fmap (("QueuedTimeoutInMinutes",) . toJSON . fmap Integer') _codeBuildProjectQueuedTimeoutInMinutes
     , fmap (("SecondaryArtifacts",) . toJSON) _codeBuildProjectSecondaryArtifacts
     , fmap (("SecondarySources",) . toJSON) _codeBuildProjectSecondarySources
     , (Just . ("ServiceRole",) . toJSON) _codeBuildProjectServiceRole
@@ -71,6 +73,7 @@
       (obj .: "Environment") <*>
       (obj .:? "LogsConfig") <*>
       (obj .:? "Name") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "QueuedTimeoutInMinutes") <*>
       (obj .:? "SecondaryArtifacts") <*>
       (obj .:? "SecondarySources") <*>
       (obj .: "ServiceRole") <*>
@@ -99,6 +102,7 @@
   , _codeBuildProjectEnvironment = environmentarg
   , _codeBuildProjectLogsConfig = Nothing
   , _codeBuildProjectName = Nothing
+  , _codeBuildProjectQueuedTimeoutInMinutes = Nothing
   , _codeBuildProjectSecondaryArtifacts = Nothing
   , _codeBuildProjectSecondarySources = Nothing
   , _codeBuildProjectServiceRole = serviceRolearg
@@ -140,6 +144,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-name
 cbpName :: Lens' CodeBuildProject (Maybe (Val Text))
 cbpName = lens _codeBuildProjectName (\s a -> s { _codeBuildProjectName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-queuedtimeoutinminutes
+cbpQueuedTimeoutInMinutes :: Lens' CodeBuildProject (Maybe (Val Integer))
+cbpQueuedTimeoutInMinutes = lens _codeBuildProjectQueuedTimeoutInMinutes (\s a -> s { _codeBuildProjectQueuedTimeoutInMinutes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html#cfn-codebuild-project-secondaryartifacts
 cbpSecondaryArtifacts :: Lens' CodeBuildProject (Maybe [CodeBuildProjectArtifacts])
diff --git a/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs b/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
--- a/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
+++ b/library-gen/Stratosphere/Resources/CodePipelinePipeline.hs
@@ -8,6 +8,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStore
+import Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStoreMap
 import Stratosphere.ResourceProperties.CodePipelinePipelineStageTransition
 import Stratosphere.ResourceProperties.CodePipelinePipelineStageDeclaration
 
@@ -15,7 +16,8 @@
 -- 'codePipelinePipeline' for a more convenient constructor.
 data CodePipelinePipeline =
   CodePipelinePipeline
-  { _codePipelinePipelineArtifactStore :: CodePipelinePipelineArtifactStore
+  { _codePipelinePipelineArtifactStore :: Maybe CodePipelinePipelineArtifactStore
+  , _codePipelinePipelineArtifactStores :: Maybe [CodePipelinePipelineArtifactStoreMap]
   , _codePipelinePipelineDisableInboundStageTransitions :: Maybe [CodePipelinePipelineStageTransition]
   , _codePipelinePipelineName :: Maybe (Val Text)
   , _codePipelinePipelineRestartExecutionOnUpdate :: Maybe (Val Bool)
@@ -27,7 +29,8 @@
   toJSON CodePipelinePipeline{..} =
     object $
     catMaybes
-    [ (Just . ("ArtifactStore",) . toJSON) _codePipelinePipelineArtifactStore
+    [ fmap (("ArtifactStore",) . toJSON) _codePipelinePipelineArtifactStore
+    , fmap (("ArtifactStores",) . toJSON) _codePipelinePipelineArtifactStores
     , fmap (("DisableInboundStageTransitions",) . toJSON) _codePipelinePipelineDisableInboundStageTransitions
     , fmap (("Name",) . toJSON) _codePipelinePipelineName
     , fmap (("RestartExecutionOnUpdate",) . toJSON . fmap Bool') _codePipelinePipelineRestartExecutionOnUpdate
@@ -38,7 +41,8 @@
 instance FromJSON CodePipelinePipeline where
   parseJSON (Object obj) =
     CodePipelinePipeline <$>
-      (obj .: "ArtifactStore") <*>
+      (obj .:? "ArtifactStore") <*>
+      (obj .:? "ArtifactStores") <*>
       (obj .:? "DisableInboundStageTransitions") <*>
       (obj .:? "Name") <*>
       fmap (fmap (fmap unBool')) (obj .:? "RestartExecutionOnUpdate") <*>
@@ -49,13 +53,13 @@
 -- | Constructor for 'CodePipelinePipeline' containing required fields as
 -- arguments.
 codePipelinePipeline
-  :: CodePipelinePipelineArtifactStore -- ^ 'cppArtifactStore'
-  -> Val Text -- ^ 'cppRoleArn'
+  :: Val Text -- ^ 'cppRoleArn'
   -> [CodePipelinePipelineStageDeclaration] -- ^ 'cppStages'
   -> CodePipelinePipeline
-codePipelinePipeline artifactStorearg roleArnarg stagesarg =
+codePipelinePipeline roleArnarg stagesarg =
   CodePipelinePipeline
-  { _codePipelinePipelineArtifactStore = artifactStorearg
+  { _codePipelinePipelineArtifactStore = Nothing
+  , _codePipelinePipelineArtifactStores = Nothing
   , _codePipelinePipelineDisableInboundStageTransitions = Nothing
   , _codePipelinePipelineName = Nothing
   , _codePipelinePipelineRestartExecutionOnUpdate = Nothing
@@ -64,8 +68,12 @@
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-artifactstore
-cppArtifactStore :: Lens' CodePipelinePipeline CodePipelinePipelineArtifactStore
+cppArtifactStore :: Lens' CodePipelinePipeline (Maybe CodePipelinePipelineArtifactStore)
 cppArtifactStore = lens _codePipelinePipelineArtifactStore (\s a -> s { _codePipelinePipelineArtifactStore = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-artifactstores
+cppArtifactStores :: Lens' CodePipelinePipeline (Maybe [CodePipelinePipelineArtifactStoreMap])
+cppArtifactStores = lens _codePipelinePipelineArtifactStores (\s a -> s { _codePipelinePipelineArtifactStores = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#cfn-codepipeline-pipeline-disableinboundstagetransitions
 cppDisableInboundStageTransitions :: Lens' CodePipelinePipeline (Maybe [CodePipelinePipelineStageTransition])
diff --git a/library-gen/Stratosphere/Resources/DynamoDBTable.hs b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
--- a/library-gen/Stratosphere/Resources/DynamoDBTable.hs
+++ b/library-gen/Stratosphere/Resources/DynamoDBTable.hs
@@ -27,7 +27,7 @@
   , _dynamoDBTableKeySchema :: [DynamoDBTableKeySchema]
   , _dynamoDBTableLocalSecondaryIndexes :: Maybe [DynamoDBTableLocalSecondaryIndex]
   , _dynamoDBTablePointInTimeRecoverySpecification :: Maybe DynamoDBTablePointInTimeRecoverySpecification
-  , _dynamoDBTableProvisionedThroughput :: DynamoDBTableProvisionedThroughput
+  , _dynamoDBTableProvisionedThroughput :: Maybe DynamoDBTableProvisionedThroughput
   , _dynamoDBTableSSESpecification :: Maybe DynamoDBTableSSESpecification
   , _dynamoDBTableStreamSpecification :: Maybe DynamoDBTableStreamSpecification
   , _dynamoDBTableTableName :: Maybe (Val Text)
@@ -44,7 +44,7 @@
     , (Just . ("KeySchema",) . toJSON) _dynamoDBTableKeySchema
     , fmap (("LocalSecondaryIndexes",) . toJSON) _dynamoDBTableLocalSecondaryIndexes
     , fmap (("PointInTimeRecoverySpecification",) . toJSON) _dynamoDBTablePointInTimeRecoverySpecification
-    , (Just . ("ProvisionedThroughput",) . toJSON) _dynamoDBTableProvisionedThroughput
+    , fmap (("ProvisionedThroughput",) . toJSON) _dynamoDBTableProvisionedThroughput
     , fmap (("SSESpecification",) . toJSON) _dynamoDBTableSSESpecification
     , fmap (("StreamSpecification",) . toJSON) _dynamoDBTableStreamSpecification
     , fmap (("TableName",) . toJSON) _dynamoDBTableTableName
@@ -60,7 +60,7 @@
       (obj .: "KeySchema") <*>
       (obj .:? "LocalSecondaryIndexes") <*>
       (obj .:? "PointInTimeRecoverySpecification") <*>
-      (obj .: "ProvisionedThroughput") <*>
+      (obj .:? "ProvisionedThroughput") <*>
       (obj .:? "SSESpecification") <*>
       (obj .:? "StreamSpecification") <*>
       (obj .:? "TableName") <*>
@@ -71,16 +71,15 @@
 -- | Constructor for 'DynamoDBTable' containing required fields as arguments.
 dynamoDBTable
   :: [DynamoDBTableKeySchema] -- ^ 'ddbtKeySchema'
-  -> DynamoDBTableProvisionedThroughput -- ^ 'ddbtProvisionedThroughput'
   -> DynamoDBTable
-dynamoDBTable keySchemaarg provisionedThroughputarg =
+dynamoDBTable keySchemaarg =
   DynamoDBTable
   { _dynamoDBTableAttributeDefinitions = Nothing
   , _dynamoDBTableGlobalSecondaryIndexes = Nothing
   , _dynamoDBTableKeySchema = keySchemaarg
   , _dynamoDBTableLocalSecondaryIndexes = Nothing
   , _dynamoDBTablePointInTimeRecoverySpecification = Nothing
-  , _dynamoDBTableProvisionedThroughput = provisionedThroughputarg
+  , _dynamoDBTableProvisionedThroughput = Nothing
   , _dynamoDBTableSSESpecification = Nothing
   , _dynamoDBTableStreamSpecification = Nothing
   , _dynamoDBTableTableName = Nothing
@@ -109,7 +108,7 @@
 ddbtPointInTimeRecoverySpecification = lens _dynamoDBTablePointInTimeRecoverySpecification (\s a -> s { _dynamoDBTablePointInTimeRecoverySpecification = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-provisionedthroughput
-ddbtProvisionedThroughput :: Lens' DynamoDBTable DynamoDBTableProvisionedThroughput
+ddbtProvisionedThroughput :: Lens' DynamoDBTable (Maybe DynamoDBTableProvisionedThroughput)
 ddbtProvisionedThroughput = lens _dynamoDBTableProvisionedThroughput (\s a -> s { _dynamoDBTableProvisionedThroughput = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#cfn-dynamodb-table-ssespecification
diff --git a/library-gen/Stratosphere/Resources/EC2EC2Fleet.hs b/library-gen/Stratosphere/Resources/EC2EC2Fleet.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/EC2EC2Fleet.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html
+
+module Stratosphere.Resources.EC2EC2Fleet where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest
+import Stratosphere.ResourceProperties.EC2EC2FleetOnDemandOptionsRequest
+import Stratosphere.ResourceProperties.EC2EC2FleetSpotOptionsRequest
+import Stratosphere.ResourceProperties.EC2EC2FleetTagSpecification
+import Stratosphere.ResourceProperties.EC2EC2FleetTargetCapacitySpecificationRequest
+
+-- | Full data type definition for EC2EC2Fleet. See 'ec2EC2Fleet' for a more
+-- convenient constructor.
+data EC2EC2Fleet =
+  EC2EC2Fleet
+  { _eC2EC2FleetExcessCapacityTerminationPolicy :: Maybe (Val Text)
+  , _eC2EC2FleetLaunchTemplateConfigs :: [EC2EC2FleetFleetLaunchTemplateConfigRequest]
+  , _eC2EC2FleetOnDemandOptions :: Maybe EC2EC2FleetOnDemandOptionsRequest
+  , _eC2EC2FleetReplaceUnhealthyInstances :: Maybe (Val Bool)
+  , _eC2EC2FleetSpotOptions :: Maybe EC2EC2FleetSpotOptionsRequest
+  , _eC2EC2FleetTagSpecifications :: Maybe [EC2EC2FleetTagSpecification]
+  , _eC2EC2FleetTargetCapacitySpecification :: EC2EC2FleetTargetCapacitySpecificationRequest
+  , _eC2EC2FleetTerminateInstancesWithExpiration :: Maybe (Val Bool)
+  , _eC2EC2FleetType :: Maybe (Val Text)
+  , _eC2EC2FleetValidFrom :: Maybe (Val Integer)
+  , _eC2EC2FleetValidUntil :: Maybe (Val Integer)
+  } deriving (Show, Eq)
+
+instance ToJSON EC2EC2Fleet where
+  toJSON EC2EC2Fleet{..} =
+    object $
+    catMaybes
+    [ fmap (("ExcessCapacityTerminationPolicy",) . toJSON) _eC2EC2FleetExcessCapacityTerminationPolicy
+    , (Just . ("LaunchTemplateConfigs",) . toJSON) _eC2EC2FleetLaunchTemplateConfigs
+    , fmap (("OnDemandOptions",) . toJSON) _eC2EC2FleetOnDemandOptions
+    , fmap (("ReplaceUnhealthyInstances",) . toJSON . fmap Bool') _eC2EC2FleetReplaceUnhealthyInstances
+    , fmap (("SpotOptions",) . toJSON) _eC2EC2FleetSpotOptions
+    , fmap (("TagSpecifications",) . toJSON) _eC2EC2FleetTagSpecifications
+    , (Just . ("TargetCapacitySpecification",) . toJSON) _eC2EC2FleetTargetCapacitySpecification
+    , fmap (("TerminateInstancesWithExpiration",) . toJSON . fmap Bool') _eC2EC2FleetTerminateInstancesWithExpiration
+    , fmap (("Type",) . toJSON) _eC2EC2FleetType
+    , fmap (("ValidFrom",) . toJSON . fmap Integer') _eC2EC2FleetValidFrom
+    , fmap (("ValidUntil",) . toJSON . fmap Integer') _eC2EC2FleetValidUntil
+    ]
+
+instance FromJSON EC2EC2Fleet where
+  parseJSON (Object obj) =
+    EC2EC2Fleet <$>
+      (obj .:? "ExcessCapacityTerminationPolicy") <*>
+      (obj .: "LaunchTemplateConfigs") <*>
+      (obj .:? "OnDemandOptions") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "ReplaceUnhealthyInstances") <*>
+      (obj .:? "SpotOptions") <*>
+      (obj .:? "TagSpecifications") <*>
+      (obj .: "TargetCapacitySpecification") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "TerminateInstancesWithExpiration") <*>
+      (obj .:? "Type") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ValidFrom") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "ValidUntil")
+  parseJSON _ = mempty
+
+-- | Constructor for 'EC2EC2Fleet' containing required fields as arguments.
+ec2EC2Fleet
+  :: [EC2EC2FleetFleetLaunchTemplateConfigRequest] -- ^ 'ececfLaunchTemplateConfigs'
+  -> EC2EC2FleetTargetCapacitySpecificationRequest -- ^ 'ececfTargetCapacitySpecification'
+  -> EC2EC2Fleet
+ec2EC2Fleet launchTemplateConfigsarg targetCapacitySpecificationarg =
+  EC2EC2Fleet
+  { _eC2EC2FleetExcessCapacityTerminationPolicy = Nothing
+  , _eC2EC2FleetLaunchTemplateConfigs = launchTemplateConfigsarg
+  , _eC2EC2FleetOnDemandOptions = Nothing
+  , _eC2EC2FleetReplaceUnhealthyInstances = Nothing
+  , _eC2EC2FleetSpotOptions = Nothing
+  , _eC2EC2FleetTagSpecifications = Nothing
+  , _eC2EC2FleetTargetCapacitySpecification = targetCapacitySpecificationarg
+  , _eC2EC2FleetTerminateInstancesWithExpiration = Nothing
+  , _eC2EC2FleetType = Nothing
+  , _eC2EC2FleetValidFrom = Nothing
+  , _eC2EC2FleetValidUntil = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-excesscapacityterminationpolicy
+ececfExcessCapacityTerminationPolicy :: Lens' EC2EC2Fleet (Maybe (Val Text))
+ececfExcessCapacityTerminationPolicy = lens _eC2EC2FleetExcessCapacityTerminationPolicy (\s a -> s { _eC2EC2FleetExcessCapacityTerminationPolicy = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-launchtemplateconfigs
+ececfLaunchTemplateConfigs :: Lens' EC2EC2Fleet [EC2EC2FleetFleetLaunchTemplateConfigRequest]
+ececfLaunchTemplateConfigs = lens _eC2EC2FleetLaunchTemplateConfigs (\s a -> s { _eC2EC2FleetLaunchTemplateConfigs = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-ondemandoptions
+ececfOnDemandOptions :: Lens' EC2EC2Fleet (Maybe EC2EC2FleetOnDemandOptionsRequest)
+ececfOnDemandOptions = lens _eC2EC2FleetOnDemandOptions (\s a -> s { _eC2EC2FleetOnDemandOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-replaceunhealthyinstances
+ececfReplaceUnhealthyInstances :: Lens' EC2EC2Fleet (Maybe (Val Bool))
+ececfReplaceUnhealthyInstances = lens _eC2EC2FleetReplaceUnhealthyInstances (\s a -> s { _eC2EC2FleetReplaceUnhealthyInstances = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-spotoptions
+ececfSpotOptions :: Lens' EC2EC2Fleet (Maybe EC2EC2FleetSpotOptionsRequest)
+ececfSpotOptions = lens _eC2EC2FleetSpotOptions (\s a -> s { _eC2EC2FleetSpotOptions = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-tagspecifications
+ececfTagSpecifications :: Lens' EC2EC2Fleet (Maybe [EC2EC2FleetTagSpecification])
+ececfTagSpecifications = lens _eC2EC2FleetTagSpecifications (\s a -> s { _eC2EC2FleetTagSpecifications = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-targetcapacityspecification
+ececfTargetCapacitySpecification :: Lens' EC2EC2Fleet EC2EC2FleetTargetCapacitySpecificationRequest
+ececfTargetCapacitySpecification = lens _eC2EC2FleetTargetCapacitySpecification (\s a -> s { _eC2EC2FleetTargetCapacitySpecification = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-terminateinstanceswithexpiration
+ececfTerminateInstancesWithExpiration :: Lens' EC2EC2Fleet (Maybe (Val Bool))
+ececfTerminateInstancesWithExpiration = lens _eC2EC2FleetTerminateInstancesWithExpiration (\s a -> s { _eC2EC2FleetTerminateInstancesWithExpiration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-type
+ececfType :: Lens' EC2EC2Fleet (Maybe (Val Text))
+ececfType = lens _eC2EC2FleetType (\s a -> s { _eC2EC2FleetType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-validfrom
+ececfValidFrom :: Lens' EC2EC2Fleet (Maybe (Val Integer))
+ececfValidFrom = lens _eC2EC2FleetValidFrom (\s a -> s { _eC2EC2FleetValidFrom = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html#cfn-ec2-ec2fleet-validuntil
+ececfValidUntil :: Lens' EC2EC2Fleet (Maybe (Val Integer))
+ececfValidUntil = lens _eC2EC2FleetValidUntil (\s a -> s { _eC2EC2FleetValidUntil = a })
diff --git a/library-gen/Stratosphere/Resources/EC2EIP.hs b/library-gen/Stratosphere/Resources/EC2EIP.hs
--- a/library-gen/Stratosphere/Resources/EC2EIP.hs
+++ b/library-gen/Stratosphere/Resources/EC2EIP.hs
@@ -15,6 +15,7 @@
   EC2EIP
   { _eC2EIPDomain :: Maybe (Val Text)
   , _eC2EIPInstanceId :: Maybe (Val Text)
+  , _eC2EIPPublicIpv4Pool :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON EC2EIP where
@@ -23,13 +24,15 @@
     catMaybes
     [ fmap (("Domain",) . toJSON) _eC2EIPDomain
     , fmap (("InstanceId",) . toJSON) _eC2EIPInstanceId
+    , fmap (("PublicIpv4Pool",) . toJSON) _eC2EIPPublicIpv4Pool
     ]
 
 instance FromJSON EC2EIP where
   parseJSON (Object obj) =
     EC2EIP <$>
       (obj .:? "Domain") <*>
-      (obj .:? "InstanceId")
+      (obj .:? "InstanceId") <*>
+      (obj .:? "PublicIpv4Pool")
   parseJSON _ = mempty
 
 -- | Constructor for 'EC2EIP' containing required fields as arguments.
@@ -39,6 +42,7 @@
   EC2EIP
   { _eC2EIPDomain = Nothing
   , _eC2EIPInstanceId = Nothing
+  , _eC2EIPPublicIpv4Pool = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html#cfn-ec2-eip-domain
@@ -48,3 +52,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html#cfn-ec2-eip-instanceid
 eceipInstanceId :: Lens' EC2EIP (Maybe (Val Text))
 eceipInstanceId = lens _eC2EIPInstanceId (\s a -> s { _eC2EIPInstanceId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html#cfn-ec2-eip-publicipv4pool
+eceipPublicIpv4Pool :: Lens' EC2EIP (Maybe (Val Text))
+eceipPublicIpv4Pool = lens _eC2EIPPublicIpv4Pool (\s a -> s { _eC2EIPPublicIpv4Pool = a })
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
@@ -12,6 +12,7 @@
 import Stratosphere.ResourceProperties.EMRClusterConfiguration
 import Stratosphere.ResourceProperties.EMRClusterJobFlowInstancesConfig
 import Stratosphere.ResourceProperties.EMRClusterKerberosAttributes
+import Stratosphere.ResourceProperties.EMRClusterStepConfig
 import Stratosphere.ResourceProperties.Tag
 
 -- | Full data type definition for EMRCluster. See 'emrCluster' for a more
@@ -34,6 +35,7 @@
   , _eMRClusterScaleDownBehavior :: Maybe (Val Text)
   , _eMRClusterSecurityConfiguration :: Maybe (Val Text)
   , _eMRClusterServiceRole :: Val Text
+  , _eMRClusterSteps :: Maybe [EMRClusterStepConfig]
   , _eMRClusterTags :: Maybe [Tag]
   , _eMRClusterVisibleToAllUsers :: Maybe (Val Bool)
   } deriving (Show, Eq)
@@ -58,6 +60,7 @@
     , fmap (("ScaleDownBehavior",) . toJSON) _eMRClusterScaleDownBehavior
     , fmap (("SecurityConfiguration",) . toJSON) _eMRClusterSecurityConfiguration
     , (Just . ("ServiceRole",) . toJSON) _eMRClusterServiceRole
+    , fmap (("Steps",) . toJSON) _eMRClusterSteps
     , fmap (("Tags",) . toJSON) _eMRClusterTags
     , fmap (("VisibleToAllUsers",) . toJSON . fmap Bool') _eMRClusterVisibleToAllUsers
     ]
@@ -81,6 +84,7 @@
       (obj .:? "ScaleDownBehavior") <*>
       (obj .:? "SecurityConfiguration") <*>
       (obj .: "ServiceRole") <*>
+      (obj .:? "Steps") <*>
       (obj .:? "Tags") <*>
       fmap (fmap (fmap unBool')) (obj .:? "VisibleToAllUsers")
   parseJSON _ = mempty
@@ -110,6 +114,7 @@
   , _eMRClusterScaleDownBehavior = Nothing
   , _eMRClusterSecurityConfiguration = Nothing
   , _eMRClusterServiceRole = serviceRolearg
+  , _eMRClusterSteps = Nothing
   , _eMRClusterTags = Nothing
   , _eMRClusterVisibleToAllUsers = Nothing
   }
@@ -177,6 +182,10 @@
 -- | 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-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-steps
+emrcSteps :: Lens' EMRCluster (Maybe [EMRClusterStepConfig])
+emrcSteps = lens _eMRClusterSteps (\s a -> s { _eMRClusterSteps = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-tags
 emrcTags :: Lens' EMRCluster (Maybe [Tag])
diff --git a/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs b/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs
--- a/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs
+++ b/library-gen/Stratosphere/Resources/IoT1ClickPlacement.hs
@@ -15,7 +15,7 @@
   IoT1ClickPlacement
   { _ioT1ClickPlacementAssociatedDevices :: Maybe Object
   , _ioT1ClickPlacementAttributes :: Maybe Object
-  , _ioT1ClickPlacementPlacementName :: Val Text
+  , _ioT1ClickPlacementPlacementName :: Maybe (Val Text)
   , _ioT1ClickPlacementProjectName :: Val Text
   } deriving (Show, Eq)
 
@@ -25,7 +25,7 @@
     catMaybes
     [ fmap (("AssociatedDevices",) . toJSON) _ioT1ClickPlacementAssociatedDevices
     , fmap (("Attributes",) . toJSON) _ioT1ClickPlacementAttributes
-    , (Just . ("PlacementName",) . toJSON) _ioT1ClickPlacementPlacementName
+    , fmap (("PlacementName",) . toJSON) _ioT1ClickPlacementPlacementName
     , (Just . ("ProjectName",) . toJSON) _ioT1ClickPlacementProjectName
     ]
 
@@ -34,21 +34,20 @@
     IoT1ClickPlacement <$>
       (obj .:? "AssociatedDevices") <*>
       (obj .:? "Attributes") <*>
-      (obj .: "PlacementName") <*>
+      (obj .:? "PlacementName") <*>
       (obj .: "ProjectName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoT1ClickPlacement' containing required fields as
 -- arguments.
 ioT1ClickPlacement
-  :: Val Text -- ^ 'itcplPlacementName'
-  -> Val Text -- ^ 'itcplProjectName'
+  :: Val Text -- ^ 'itcplProjectName'
   -> IoT1ClickPlacement
-ioT1ClickPlacement placementNamearg projectNamearg =
+ioT1ClickPlacement projectNamearg =
   IoT1ClickPlacement
   { _ioT1ClickPlacementAssociatedDevices = Nothing
   , _ioT1ClickPlacementAttributes = Nothing
-  , _ioT1ClickPlacementPlacementName = placementNamearg
+  , _ioT1ClickPlacementPlacementName = Nothing
   , _ioT1ClickPlacementProjectName = projectNamearg
   }
 
@@ -61,7 +60,7 @@
 itcplAttributes = lens _ioT1ClickPlacementAttributes (\s a -> s { _ioT1ClickPlacementAttributes = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot1click-placement.html#cfn-iot1click-placement-placementname
-itcplPlacementName :: Lens' IoT1ClickPlacement (Val Text)
+itcplPlacementName :: Lens' IoT1ClickPlacement (Maybe (Val Text))
 itcplPlacementName = lens _ioT1ClickPlacementPlacementName (\s a -> s { _ioT1ClickPlacementPlacementName = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot1click-placement.html#cfn-iot1click-placement-projectname
diff --git a/library-gen/Stratosphere/Resources/IoT1ClickProject.hs b/library-gen/Stratosphere/Resources/IoT1ClickProject.hs
--- a/library-gen/Stratosphere/Resources/IoT1ClickProject.hs
+++ b/library-gen/Stratosphere/Resources/IoT1ClickProject.hs
@@ -15,7 +15,7 @@
   IoT1ClickProject
   { _ioT1ClickProjectDescription :: Maybe (Val Text)
   , _ioT1ClickProjectPlacementTemplate :: IoT1ClickProjectPlacementTemplate
-  , _ioT1ClickProjectProjectName :: Val Text
+  , _ioT1ClickProjectProjectName :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON IoT1ClickProject where
@@ -24,7 +24,7 @@
     catMaybes
     [ fmap (("Description",) . toJSON) _ioT1ClickProjectDescription
     , (Just . ("PlacementTemplate",) . toJSON) _ioT1ClickProjectPlacementTemplate
-    , (Just . ("ProjectName",) . toJSON) _ioT1ClickProjectProjectName
+    , fmap (("ProjectName",) . toJSON) _ioT1ClickProjectProjectName
     ]
 
 instance FromJSON IoT1ClickProject where
@@ -32,20 +32,19 @@
     IoT1ClickProject <$>
       (obj .:? "Description") <*>
       (obj .: "PlacementTemplate") <*>
-      (obj .: "ProjectName")
+      (obj .:? "ProjectName")
   parseJSON _ = mempty
 
 -- | Constructor for 'IoT1ClickProject' containing required fields as
 -- arguments.
 ioT1ClickProject
   :: IoT1ClickProjectPlacementTemplate -- ^ 'itcprPlacementTemplate'
-  -> Val Text -- ^ 'itcprProjectName'
   -> IoT1ClickProject
-ioT1ClickProject placementTemplatearg projectNamearg =
+ioT1ClickProject placementTemplatearg =
   IoT1ClickProject
   { _ioT1ClickProjectDescription = Nothing
   , _ioT1ClickProjectPlacementTemplate = placementTemplatearg
-  , _ioT1ClickProjectProjectName = projectNamearg
+  , _ioT1ClickProjectProjectName = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot1click-project.html#cfn-iot1click-project-description
@@ -57,5 +56,5 @@
 itcprPlacementTemplate = lens _ioT1ClickProjectPlacementTemplate (\s a -> s { _ioT1ClickProjectPlacementTemplate = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot1click-project.html#cfn-iot1click-project-projectname
-itcprProjectName :: Lens' IoT1ClickProject (Val Text)
+itcprProjectName :: Lens' IoT1ClickProject (Maybe (Val Text))
 itcprProjectName = lens _ioT1ClickProjectProjectName (\s a -> s { _ioT1ClickProjectProjectName = a })
diff --git a/library-gen/Stratosphere/Resources/KinesisStreamConsumer.hs b/library-gen/Stratosphere/Resources/KinesisStreamConsumer.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/KinesisStreamConsumer.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-streamconsumer.html
+
+module Stratosphere.Resources.KinesisStreamConsumer where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for KinesisStreamConsumer. See
+-- 'kinesisStreamConsumer' for a more convenient constructor.
+data KinesisStreamConsumer =
+  KinesisStreamConsumer
+  { _kinesisStreamConsumerConsumerName :: Val Text
+  , _kinesisStreamConsumerStreamARN :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON KinesisStreamConsumer where
+  toJSON KinesisStreamConsumer{..} =
+    object $
+    catMaybes
+    [ (Just . ("ConsumerName",) . toJSON) _kinesisStreamConsumerConsumerName
+    , (Just . ("StreamARN",) . toJSON) _kinesisStreamConsumerStreamARN
+    ]
+
+instance FromJSON KinesisStreamConsumer where
+  parseJSON (Object obj) =
+    KinesisStreamConsumer <$>
+      (obj .: "ConsumerName") <*>
+      (obj .: "StreamARN")
+  parseJSON _ = mempty
+
+-- | Constructor for 'KinesisStreamConsumer' containing required fields as
+-- arguments.
+kinesisStreamConsumer
+  :: Val Text -- ^ 'kscConsumerName'
+  -> Val Text -- ^ 'kscStreamARN'
+  -> KinesisStreamConsumer
+kinesisStreamConsumer consumerNamearg streamARNarg =
+  KinesisStreamConsumer
+  { _kinesisStreamConsumerConsumerName = consumerNamearg
+  , _kinesisStreamConsumerStreamARN = streamARNarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-streamconsumer.html#cfn-kinesis-streamconsumer-consumername
+kscConsumerName :: Lens' KinesisStreamConsumer (Val Text)
+kscConsumerName = lens _kinesisStreamConsumerConsumerName (\s a -> s { _kinesisStreamConsumerConsumerName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-streamconsumer.html#cfn-kinesis-streamconsumer-streamarn
+kscStreamARN :: Lens' KinesisStreamConsumer (Val Text)
+kscStreamARN = lens _kinesisStreamConsumerStreamARN (\s a -> s { _kinesisStreamConsumerStreamARN = a })
diff --git a/library-gen/Stratosphere/Resources/RDSDBCluster.hs b/library-gen/Stratosphere/Resources/RDSDBCluster.hs
--- a/library-gen/Stratosphere/Resources/RDSDBCluster.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBCluster.hs
@@ -21,6 +21,7 @@
   , _rDSDBClusterDBClusterParameterGroupName :: Maybe (Val Text)
   , _rDSDBClusterDBSubnetGroupName :: Maybe (Val Text)
   , _rDSDBClusterDatabaseName :: Maybe (Val Text)
+  , _rDSDBClusterDeletionProtection :: Maybe (Val Bool)
   , _rDSDBClusterEnableCloudwatchLogsExports :: Maybe (ValList Text)
   , _rDSDBClusterEnableIAMDatabaseAuthentication :: Maybe (Val Bool)
   , _rDSDBClusterEngine :: Val Text
@@ -51,6 +52,7 @@
     , fmap (("DBClusterParameterGroupName",) . toJSON) _rDSDBClusterDBClusterParameterGroupName
     , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBClusterDBSubnetGroupName
     , fmap (("DatabaseName",) . toJSON) _rDSDBClusterDatabaseName
+    , fmap (("DeletionProtection",) . toJSON . fmap Bool') _rDSDBClusterDeletionProtection
     , fmap (("EnableCloudwatchLogsExports",) . toJSON) _rDSDBClusterEnableCloudwatchLogsExports
     , fmap (("EnableIAMDatabaseAuthentication",) . toJSON . fmap Bool') _rDSDBClusterEnableIAMDatabaseAuthentication
     , (Just . ("Engine",) . toJSON) _rDSDBClusterEngine
@@ -80,6 +82,7 @@
       (obj .:? "DBClusterParameterGroupName") <*>
       (obj .:? "DBSubnetGroupName") <*>
       (obj .:? "DatabaseName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DeletionProtection") <*>
       (obj .:? "EnableCloudwatchLogsExports") <*>
       fmap (fmap (fmap unBool')) (obj .:? "EnableIAMDatabaseAuthentication") <*>
       (obj .: "Engine") <*>
@@ -112,6 +115,7 @@
   , _rDSDBClusterDBClusterParameterGroupName = Nothing
   , _rDSDBClusterDBSubnetGroupName = Nothing
   , _rDSDBClusterDatabaseName = Nothing
+  , _rDSDBClusterDeletionProtection = Nothing
   , _rDSDBClusterEnableCloudwatchLogsExports = Nothing
   , _rDSDBClusterEnableIAMDatabaseAuthentication = Nothing
   , _rDSDBClusterEngine = enginearg
@@ -158,6 +162,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-databasename
 rdsdbcDatabaseName :: Lens' RDSDBCluster (Maybe (Val Text))
 rdsdbcDatabaseName = lens _rDSDBClusterDatabaseName (\s a -> s { _rDSDBClusterDatabaseName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-deletionprotection
+rdsdbcDeletionProtection :: Lens' RDSDBCluster (Maybe (Val Bool))
+rdsdbcDeletionProtection = lens _rDSDBClusterDeletionProtection (\s a -> s { _rDSDBClusterDeletionProtection = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html#cfn-rds-dbcluster-enablecloudwatchlogsexports
 rdsdbcEnableCloudwatchLogsExports :: Lens' RDSDBCluster (Maybe (ValList Text))
diff --git a/library-gen/Stratosphere/Resources/RDSDBInstance.hs b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
--- a/library-gen/Stratosphere/Resources/RDSDBInstance.hs
+++ b/library-gen/Stratosphere/Resources/RDSDBInstance.hs
@@ -29,6 +29,8 @@
   , _rDSDBInstanceDBSecurityGroups :: Maybe (ValList Text)
   , _rDSDBInstanceDBSnapshotIdentifier :: Maybe (Val Text)
   , _rDSDBInstanceDBSubnetGroupName :: Maybe (Val Text)
+  , _rDSDBInstanceDeleteAutomatedBackups :: Maybe (Val Bool)
+  , _rDSDBInstanceDeletionProtection :: Maybe (Val Bool)
   , _rDSDBInstanceDomain :: Maybe (Val Text)
   , _rDSDBInstanceDomainIAMRoleName :: Maybe (Val Text)
   , _rDSDBInstanceEnableCloudwatchLogsExports :: Maybe (ValList Text)
@@ -81,6 +83,8 @@
     , fmap (("DBSecurityGroups",) . toJSON) _rDSDBInstanceDBSecurityGroups
     , fmap (("DBSnapshotIdentifier",) . toJSON) _rDSDBInstanceDBSnapshotIdentifier
     , fmap (("DBSubnetGroupName",) . toJSON) _rDSDBInstanceDBSubnetGroupName
+    , fmap (("DeleteAutomatedBackups",) . toJSON . fmap Bool') _rDSDBInstanceDeleteAutomatedBackups
+    , fmap (("DeletionProtection",) . toJSON . fmap Bool') _rDSDBInstanceDeletionProtection
     , fmap (("Domain",) . toJSON) _rDSDBInstanceDomain
     , fmap (("DomainIAMRoleName",) . toJSON) _rDSDBInstanceDomainIAMRoleName
     , fmap (("EnableCloudwatchLogsExports",) . toJSON) _rDSDBInstanceEnableCloudwatchLogsExports
@@ -132,6 +136,8 @@
       (obj .:? "DBSecurityGroups") <*>
       (obj .:? "DBSnapshotIdentifier") <*>
       (obj .:? "DBSubnetGroupName") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DeleteAutomatedBackups") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DeletionProtection") <*>
       (obj .:? "Domain") <*>
       (obj .:? "DomainIAMRoleName") <*>
       (obj .:? "EnableCloudwatchLogsExports") <*>
@@ -186,6 +192,8 @@
   , _rDSDBInstanceDBSecurityGroups = Nothing
   , _rDSDBInstanceDBSnapshotIdentifier = Nothing
   , _rDSDBInstanceDBSubnetGroupName = Nothing
+  , _rDSDBInstanceDeleteAutomatedBackups = Nothing
+  , _rDSDBInstanceDeletionProtection = Nothing
   , _rDSDBInstanceDomain = Nothing
   , _rDSDBInstanceDomainIAMRoleName = Nothing
   , _rDSDBInstanceEnableCloudwatchLogsExports = Nothing
@@ -278,6 +286,14 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-dbsubnetgroupname
 rdsdbiDBSubnetGroupName :: Lens' RDSDBInstance (Maybe (Val Text))
 rdsdbiDBSubnetGroupName = lens _rDSDBInstanceDBSubnetGroupName (\s a -> s { _rDSDBInstanceDBSubnetGroupName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-deleteautomatedbackups
+rdsdbiDeleteAutomatedBackups :: Lens' RDSDBInstance (Maybe (Val Bool))
+rdsdbiDeleteAutomatedBackups = lens _rDSDBInstanceDeleteAutomatedBackups (\s a -> s { _rDSDBInstanceDeleteAutomatedBackups = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-deletionprotection
+rdsdbiDeletionProtection :: Lens' RDSDBInstance (Maybe (Val Bool))
+rdsdbiDeletionProtection = lens _rDSDBInstanceDeletionProtection (\s a -> s { _rDSDBInstanceDeletionProtection = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-domain
 rdsdbiDomain :: Lens' RDSDBInstance (Maybe (Val Text))
diff --git a/library-gen/Stratosphere/Resources/Route53ResolverResolverEndpoint.hs b/library-gen/Stratosphere/Resources/Route53ResolverResolverEndpoint.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/Route53ResolverResolverEndpoint.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html
+
+module Stratosphere.Resources.Route53ResolverResolverEndpoint where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Route53ResolverResolverEndpointIpAddressRequest
+import Stratosphere.ResourceProperties.Tag
+
+-- | Full data type definition for Route53ResolverResolverEndpoint. See
+-- 'route53ResolverResolverEndpoint' for a more convenient constructor.
+data Route53ResolverResolverEndpoint =
+  Route53ResolverResolverEndpoint
+  { _route53ResolverResolverEndpointDirection :: Val Text
+  , _route53ResolverResolverEndpointIpAddresses :: [Route53ResolverResolverEndpointIpAddressRequest]
+  , _route53ResolverResolverEndpointName :: Maybe (Val Text)
+  , _route53ResolverResolverEndpointSecurityGroupIds :: ValList Text
+  , _route53ResolverResolverEndpointTags :: Maybe [Tag]
+  } deriving (Show, Eq)
+
+instance ToJSON Route53ResolverResolverEndpoint where
+  toJSON Route53ResolverResolverEndpoint{..} =
+    object $
+    catMaybes
+    [ (Just . ("Direction",) . toJSON) _route53ResolverResolverEndpointDirection
+    , (Just . ("IpAddresses",) . toJSON) _route53ResolverResolverEndpointIpAddresses
+    , fmap (("Name",) . toJSON) _route53ResolverResolverEndpointName
+    , (Just . ("SecurityGroupIds",) . toJSON) _route53ResolverResolverEndpointSecurityGroupIds
+    , fmap (("Tags",) . toJSON) _route53ResolverResolverEndpointTags
+    ]
+
+instance FromJSON Route53ResolverResolverEndpoint where
+  parseJSON (Object obj) =
+    Route53ResolverResolverEndpoint <$>
+      (obj .: "Direction") <*>
+      (obj .: "IpAddresses") <*>
+      (obj .:? "Name") <*>
+      (obj .: "SecurityGroupIds") <*>
+      (obj .:? "Tags")
+  parseJSON _ = mempty
+
+-- | Constructor for 'Route53ResolverResolverEndpoint' containing required
+-- fields as arguments.
+route53ResolverResolverEndpoint
+  :: Val Text -- ^ 'rrreDirection'
+  -> [Route53ResolverResolverEndpointIpAddressRequest] -- ^ 'rrreIpAddresses'
+  -> ValList Text -- ^ 'rrreSecurityGroupIds'
+  -> Route53ResolverResolverEndpoint
+route53ResolverResolverEndpoint directionarg ipAddressesarg securityGroupIdsarg =
+  Route53ResolverResolverEndpoint
+  { _route53ResolverResolverEndpointDirection = directionarg
+  , _route53ResolverResolverEndpointIpAddresses = ipAddressesarg
+  , _route53ResolverResolverEndpointName = Nothing
+  , _route53ResolverResolverEndpointSecurityGroupIds = securityGroupIdsarg
+  , _route53ResolverResolverEndpointTags = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html#cfn-route53resolver-resolverendpoint-direction
+rrreDirection :: Lens' Route53ResolverResolverEndpoint (Val Text)
+rrreDirection = lens _route53ResolverResolverEndpointDirection (\s a -> s { _route53ResolverResolverEndpointDirection = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html#cfn-route53resolver-resolverendpoint-ipaddresses
+rrreIpAddresses :: Lens' Route53ResolverResolverEndpoint [Route53ResolverResolverEndpointIpAddressRequest]
+rrreIpAddresses = lens _route53ResolverResolverEndpointIpAddresses (\s a -> s { _route53ResolverResolverEndpointIpAddresses = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html#cfn-route53resolver-resolverendpoint-name
+rrreName :: Lens' Route53ResolverResolverEndpoint (Maybe (Val Text))
+rrreName = lens _route53ResolverResolverEndpointName (\s a -> s { _route53ResolverResolverEndpointName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html#cfn-route53resolver-resolverendpoint-securitygroupids
+rrreSecurityGroupIds :: Lens' Route53ResolverResolverEndpoint (ValList Text)
+rrreSecurityGroupIds = lens _route53ResolverResolverEndpointSecurityGroupIds (\s a -> s { _route53ResolverResolverEndpointSecurityGroupIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverendpoint.html#cfn-route53resolver-resolverendpoint-tags
+rrreTags :: Lens' Route53ResolverResolverEndpoint (Maybe [Tag])
+rrreTags = lens _route53ResolverResolverEndpointTags (\s a -> s { _route53ResolverResolverEndpointTags = a })
diff --git a/library-gen/Stratosphere/Resources/Route53ResolverResolverRule.hs b/library-gen/Stratosphere/Resources/Route53ResolverResolverRule.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/Route53ResolverResolverRule.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html
+
+module Stratosphere.Resources.Route53ResolverResolverRule where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.Tag
+import Stratosphere.ResourceProperties.Route53ResolverResolverRuleTargetAddress
+
+-- | Full data type definition for Route53ResolverResolverRule. See
+-- 'route53ResolverResolverRule' for a more convenient constructor.
+data Route53ResolverResolverRule =
+  Route53ResolverResolverRule
+  { _route53ResolverResolverRuleDomainName :: Val Text
+  , _route53ResolverResolverRuleName :: Maybe (Val Text)
+  , _route53ResolverResolverRuleResolverEndpointId :: Maybe (Val Text)
+  , _route53ResolverResolverRuleRuleType :: Val Text
+  , _route53ResolverResolverRuleTags :: Maybe [Tag]
+  , _route53ResolverResolverRuleTargetIps :: Maybe [Route53ResolverResolverRuleTargetAddress]
+  } deriving (Show, Eq)
+
+instance ToJSON Route53ResolverResolverRule where
+  toJSON Route53ResolverResolverRule{..} =
+    object $
+    catMaybes
+    [ (Just . ("DomainName",) . toJSON) _route53ResolverResolverRuleDomainName
+    , fmap (("Name",) . toJSON) _route53ResolverResolverRuleName
+    , fmap (("ResolverEndpointId",) . toJSON) _route53ResolverResolverRuleResolverEndpointId
+    , (Just . ("RuleType",) . toJSON) _route53ResolverResolverRuleRuleType
+    , fmap (("Tags",) . toJSON) _route53ResolverResolverRuleTags
+    , fmap (("TargetIps",) . toJSON) _route53ResolverResolverRuleTargetIps
+    ]
+
+instance FromJSON Route53ResolverResolverRule where
+  parseJSON (Object obj) =
+    Route53ResolverResolverRule <$>
+      (obj .: "DomainName") <*>
+      (obj .:? "Name") <*>
+      (obj .:? "ResolverEndpointId") <*>
+      (obj .: "RuleType") <*>
+      (obj .:? "Tags") <*>
+      (obj .:? "TargetIps")
+  parseJSON _ = mempty
+
+-- | Constructor for 'Route53ResolverResolverRule' containing required fields
+-- as arguments.
+route53ResolverResolverRule
+  :: Val Text -- ^ 'rrrrDomainName'
+  -> Val Text -- ^ 'rrrrRuleType'
+  -> Route53ResolverResolverRule
+route53ResolverResolverRule domainNamearg ruleTypearg =
+  Route53ResolverResolverRule
+  { _route53ResolverResolverRuleDomainName = domainNamearg
+  , _route53ResolverResolverRuleName = Nothing
+  , _route53ResolverResolverRuleResolverEndpointId = Nothing
+  , _route53ResolverResolverRuleRuleType = ruleTypearg
+  , _route53ResolverResolverRuleTags = Nothing
+  , _route53ResolverResolverRuleTargetIps = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html#cfn-route53resolver-resolverrule-domainname
+rrrrDomainName :: Lens' Route53ResolverResolverRule (Val Text)
+rrrrDomainName = lens _route53ResolverResolverRuleDomainName (\s a -> s { _route53ResolverResolverRuleDomainName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html#cfn-route53resolver-resolverrule-name
+rrrrName :: Lens' Route53ResolverResolverRule (Maybe (Val Text))
+rrrrName = lens _route53ResolverResolverRuleName (\s a -> s { _route53ResolverResolverRuleName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html#cfn-route53resolver-resolverrule-resolverendpointid
+rrrrResolverEndpointId :: Lens' Route53ResolverResolverRule (Maybe (Val Text))
+rrrrResolverEndpointId = lens _route53ResolverResolverRuleResolverEndpointId (\s a -> s { _route53ResolverResolverRuleResolverEndpointId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html#cfn-route53resolver-resolverrule-ruletype
+rrrrRuleType :: Lens' Route53ResolverResolverRule (Val Text)
+rrrrRuleType = lens _route53ResolverResolverRuleRuleType (\s a -> s { _route53ResolverResolverRuleRuleType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html#cfn-route53resolver-resolverrule-tags
+rrrrTags :: Lens' Route53ResolverResolverRule (Maybe [Tag])
+rrrrTags = lens _route53ResolverResolverRuleTags (\s a -> s { _route53ResolverResolverRuleTags = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverrule.html#cfn-route53resolver-resolverrule-targetips
+rrrrTargetIps :: Lens' Route53ResolverResolverRule (Maybe [Route53ResolverResolverRuleTargetAddress])
+rrrrTargetIps = lens _route53ResolverResolverRuleTargetIps (\s a -> s { _route53ResolverResolverRuleTargetIps = a })
diff --git a/library-gen/Stratosphere/Resources/S3Bucket.hs b/library-gen/Stratosphere/Resources/S3Bucket.hs
--- a/library-gen/Stratosphere/Resources/S3Bucket.hs
+++ b/library-gen/Stratosphere/Resources/S3Bucket.hs
@@ -17,6 +17,7 @@
 import Stratosphere.ResourceProperties.S3BucketLoggingConfiguration
 import Stratosphere.ResourceProperties.S3BucketMetricsConfiguration
 import Stratosphere.ResourceProperties.S3BucketNotificationConfiguration
+import Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration
 import Stratosphere.ResourceProperties.S3BucketReplicationConfiguration
 import Stratosphere.ResourceProperties.Tag
 import Stratosphere.ResourceProperties.S3BucketVersioningConfiguration
@@ -37,6 +38,7 @@
   , _s3BucketLoggingConfiguration :: Maybe S3BucketLoggingConfiguration
   , _s3BucketMetricsConfigurations :: Maybe [S3BucketMetricsConfiguration]
   , _s3BucketNotificationConfiguration :: Maybe S3BucketNotificationConfiguration
+  , _s3BucketPublicAccessBlockConfiguration :: Maybe S3BucketPublicAccessBlockConfiguration
   , _s3BucketReplicationConfiguration :: Maybe S3BucketReplicationConfiguration
   , _s3BucketTags :: Maybe [Tag]
   , _s3BucketVersioningConfiguration :: Maybe S3BucketVersioningConfiguration
@@ -58,6 +60,7 @@
     , fmap (("LoggingConfiguration",) . toJSON) _s3BucketLoggingConfiguration
     , fmap (("MetricsConfigurations",) . toJSON) _s3BucketMetricsConfigurations
     , fmap (("NotificationConfiguration",) . toJSON) _s3BucketNotificationConfiguration
+    , fmap (("PublicAccessBlockConfiguration",) . toJSON) _s3BucketPublicAccessBlockConfiguration
     , fmap (("ReplicationConfiguration",) . toJSON) _s3BucketReplicationConfiguration
     , fmap (("Tags",) . toJSON) _s3BucketTags
     , fmap (("VersioningConfiguration",) . toJSON) _s3BucketVersioningConfiguration
@@ -78,6 +81,7 @@
       (obj .:? "LoggingConfiguration") <*>
       (obj .:? "MetricsConfigurations") <*>
       (obj .:? "NotificationConfiguration") <*>
+      (obj .:? "PublicAccessBlockConfiguration") <*>
       (obj .:? "ReplicationConfiguration") <*>
       (obj .:? "Tags") <*>
       (obj .:? "VersioningConfiguration") <*>
@@ -100,6 +104,7 @@
   , _s3BucketLoggingConfiguration = Nothing
   , _s3BucketMetricsConfigurations = Nothing
   , _s3BucketNotificationConfiguration = Nothing
+  , _s3BucketPublicAccessBlockConfiguration = Nothing
   , _s3BucketReplicationConfiguration = Nothing
   , _s3BucketTags = Nothing
   , _s3BucketVersioningConfiguration = Nothing
@@ -149,6 +154,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-notification
 sbNotificationConfiguration :: Lens' S3Bucket (Maybe S3BucketNotificationConfiguration)
 sbNotificationConfiguration = lens _s3BucketNotificationConfiguration (\s a -> s { _s3BucketNotificationConfiguration = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-publicaccessblockconfiguration
+sbPublicAccessBlockConfiguration :: Lens' S3Bucket (Maybe S3BucketPublicAccessBlockConfiguration)
+sbPublicAccessBlockConfiguration = lens _s3BucketPublicAccessBlockConfiguration (\s a -> s { _s3BucketPublicAccessBlockConfiguration = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html#cfn-s3-bucket-replicationconfiguration
 sbReplicationConfiguration :: Lens' S3Bucket (Maybe S3BucketReplicationConfiguration)
diff --git a/library-gen/Stratosphere/Resources/SNSTopic.hs b/library-gen/Stratosphere/Resources/SNSTopic.hs
--- a/library-gen/Stratosphere/Resources/SNSTopic.hs
+++ b/library-gen/Stratosphere/Resources/SNSTopic.hs
@@ -14,6 +14,7 @@
 data SNSTopic =
   SNSTopic
   { _sNSTopicDisplayName :: Maybe (Val Text)
+  , _sNSTopicKmsMasterKeyId :: Maybe (Val Text)
   , _sNSTopicSubscription :: Maybe [SNSTopicSubscription]
   , _sNSTopicTopicName :: Maybe (Val Text)
   } deriving (Show, Eq)
@@ -23,6 +24,7 @@
     object $
     catMaybes
     [ fmap (("DisplayName",) . toJSON) _sNSTopicDisplayName
+    , fmap (("KmsMasterKeyId",) . toJSON) _sNSTopicKmsMasterKeyId
     , fmap (("Subscription",) . toJSON) _sNSTopicSubscription
     , fmap (("TopicName",) . toJSON) _sNSTopicTopicName
     ]
@@ -31,6 +33,7 @@
   parseJSON (Object obj) =
     SNSTopic <$>
       (obj .:? "DisplayName") <*>
+      (obj .:? "KmsMasterKeyId") <*>
       (obj .:? "Subscription") <*>
       (obj .:? "TopicName")
   parseJSON _ = mempty
@@ -41,6 +44,7 @@
 snsTopic  =
   SNSTopic
   { _sNSTopicDisplayName = Nothing
+  , _sNSTopicKmsMasterKeyId = Nothing
   , _sNSTopicSubscription = Nothing
   , _sNSTopicTopicName = Nothing
   }
@@ -48,6 +52,10 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#cfn-sns-topic-displayname
 snstDisplayName :: Lens' SNSTopic (Maybe (Val Text))
 snstDisplayName = lens _sNSTopicDisplayName (\s a -> s { _sNSTopicDisplayName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#cfn-sns-topic-kmsmasterkeyid
+snstKmsMasterKeyId :: Lens' SNSTopic (Maybe (Val Text))
+snstKmsMasterKeyId = lens _sNSTopicKmsMasterKeyId (\s a -> s { _sNSTopicKmsMasterKeyId = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#cfn-sns-topic-subscription
 snstSubscription :: Lens' SNSTopic (Maybe [SNSTopicSubscription])
diff --git a/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs b/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
--- a/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
+++ b/library-gen/Stratosphere/Resources/ServiceDiscoveryService.hs
@@ -16,10 +16,11 @@
 data ServiceDiscoveryService =
   ServiceDiscoveryService
   { _serviceDiscoveryServiceDescription :: Maybe (Val Text)
-  , _serviceDiscoveryServiceDnsConfig :: ServiceDiscoveryServiceDnsConfig
+  , _serviceDiscoveryServiceDnsConfig :: Maybe ServiceDiscoveryServiceDnsConfig
   , _serviceDiscoveryServiceHealthCheckConfig :: Maybe ServiceDiscoveryServiceHealthCheckConfig
   , _serviceDiscoveryServiceHealthCheckCustomConfig :: Maybe ServiceDiscoveryServiceHealthCheckCustomConfig
   , _serviceDiscoveryServiceName :: Maybe (Val Text)
+  , _serviceDiscoveryServiceNamespaceId :: Maybe (Val Text)
   } deriving (Show, Eq)
 
 instance ToJSON ServiceDiscoveryService where
@@ -27,34 +28,36 @@
     object $
     catMaybes
     [ fmap (("Description",) . toJSON) _serviceDiscoveryServiceDescription
-    , (Just . ("DnsConfig",) . toJSON) _serviceDiscoveryServiceDnsConfig
+    , fmap (("DnsConfig",) . toJSON) _serviceDiscoveryServiceDnsConfig
     , fmap (("HealthCheckConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckConfig
     , fmap (("HealthCheckCustomConfig",) . toJSON) _serviceDiscoveryServiceHealthCheckCustomConfig
     , fmap (("Name",) . toJSON) _serviceDiscoveryServiceName
+    , fmap (("NamespaceId",) . toJSON) _serviceDiscoveryServiceNamespaceId
     ]
 
 instance FromJSON ServiceDiscoveryService where
   parseJSON (Object obj) =
     ServiceDiscoveryService <$>
       (obj .:? "Description") <*>
-      (obj .: "DnsConfig") <*>
+      (obj .:? "DnsConfig") <*>
       (obj .:? "HealthCheckConfig") <*>
       (obj .:? "HealthCheckCustomConfig") <*>
-      (obj .:? "Name")
+      (obj .:? "Name") <*>
+      (obj .:? "NamespaceId")
   parseJSON _ = mempty
 
 -- | Constructor for 'ServiceDiscoveryService' containing required fields as
 -- arguments.
 serviceDiscoveryService
-  :: ServiceDiscoveryServiceDnsConfig -- ^ 'sdsDnsConfig'
-  -> ServiceDiscoveryService
-serviceDiscoveryService dnsConfigarg =
+  :: ServiceDiscoveryService
+serviceDiscoveryService  =
   ServiceDiscoveryService
   { _serviceDiscoveryServiceDescription = Nothing
-  , _serviceDiscoveryServiceDnsConfig = dnsConfigarg
+  , _serviceDiscoveryServiceDnsConfig = Nothing
   , _serviceDiscoveryServiceHealthCheckConfig = Nothing
   , _serviceDiscoveryServiceHealthCheckCustomConfig = Nothing
   , _serviceDiscoveryServiceName = Nothing
+  , _serviceDiscoveryServiceNamespaceId = Nothing
   }
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-description
@@ -62,7 +65,7 @@
 sdsDescription = lens _serviceDiscoveryServiceDescription (\s a -> s { _serviceDiscoveryServiceDescription = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-dnsconfig
-sdsDnsConfig :: Lens' ServiceDiscoveryService ServiceDiscoveryServiceDnsConfig
+sdsDnsConfig :: Lens' ServiceDiscoveryService (Maybe ServiceDiscoveryServiceDnsConfig)
 sdsDnsConfig = lens _serviceDiscoveryServiceDnsConfig (\s a -> s { _serviceDiscoveryServiceDnsConfig = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-healthcheckconfig
@@ -76,3 +79,7 @@
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-name
 sdsName :: Lens' ServiceDiscoveryService (Maybe (Val Text))
 sdsName = lens _serviceDiscoveryServiceName (\s a -> s { _serviceDiscoveryServiceName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-namespaceid
+sdsNamespaceId :: Lens' ServiceDiscoveryService (Maybe (Val Text))
+sdsNamespaceId = lens _serviceDiscoveryServiceNamespaceId (\s a -> s { _serviceDiscoveryServiceNamespaceId = a })
diff --git a/stratosphere.cabal b/stratosphere.cabal
--- a/stratosphere.cabal
+++ b/stratosphere.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 92866fa270bc8da0e6aa6c55a2cc38a2ba968df82449cb833cdf7a795b14b6e7
+-- hash: c6be8594b6af4840f4dfb0d537a8b728fce2c167abd197d5f721b772d6db9350
 
 name:           stratosphere
-version:        0.27.0
+version:        0.28.0
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -88,16 +88,28 @@
       Stratosphere.ResourceProperties.AppStreamStackApplicationSettings
       Stratosphere.ResourceProperties.AppStreamStackStorageConnector
       Stratosphere.ResourceProperties.AppStreamStackUserSetting
+      Stratosphere.ResourceProperties.AppSyncDataSourceAuthorizationConfig
+      Stratosphere.ResourceProperties.AppSyncDataSourceAwsIamConfig
       Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig
       Stratosphere.ResourceProperties.AppSyncDataSourceElasticsearchConfig
       Stratosphere.ResourceProperties.AppSyncDataSourceHttpConfig
       Stratosphere.ResourceProperties.AppSyncDataSourceLambdaConfig
+      Stratosphere.ResourceProperties.AppSyncDataSourceRdsHttpEndpointConfig
+      Stratosphere.ResourceProperties.AppSyncDataSourceRelationalDatabaseConfig
       Stratosphere.ResourceProperties.AppSyncGraphQLApiLogConfig
       Stratosphere.ResourceProperties.AppSyncGraphQLApiOpenIDConnectConfig
       Stratosphere.ResourceProperties.AppSyncGraphQLApiUserPoolConfig
+      Stratosphere.ResourceProperties.AppSyncResolverPipelineConfig
+      Stratosphere.ResourceProperties.ASKSkillAuthenticationConfiguration
+      Stratosphere.ResourceProperties.ASKSkillOverrides
+      Stratosphere.ResourceProperties.ASKSkillSkillPackage
+      Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupInstancesDistribution
+      Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplate
+      Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateOverrides
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLaunchTemplateSpecification
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupLifecycleHookSpecification
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMetricsCollection
+      Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupMixedInstancesPolicy
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupNotificationConfiguration
       Stratosphere.ResourceProperties.AutoScalingAutoScalingGroupTagProperty
       Stratosphere.ResourceProperties.AutoScalingLaunchConfigurationBlockDevice
@@ -117,9 +129,12 @@
       Stratosphere.ResourceProperties.AutoScalingScalingPolicyStepAdjustment
       Stratosphere.ResourceProperties.AutoScalingScalingPolicyTargetTrackingConfiguration
       Stratosphere.ResourceProperties.BatchComputeEnvironmentComputeResources
+      Stratosphere.ResourceProperties.BatchComputeEnvironmentLaunchTemplateSpecification
       Stratosphere.ResourceProperties.BatchJobDefinitionContainerProperties
       Stratosphere.ResourceProperties.BatchJobDefinitionEnvironment
       Stratosphere.ResourceProperties.BatchJobDefinitionMountPoints
+      Stratosphere.ResourceProperties.BatchJobDefinitionNodeProperties
+      Stratosphere.ResourceProperties.BatchJobDefinitionNodeRangeProperty
       Stratosphere.ResourceProperties.BatchJobDefinitionRetryStrategy
       Stratosphere.ResourceProperties.BatchJobDefinitionTimeout
       Stratosphere.ResourceProperties.BatchJobDefinitionUlimit
@@ -195,6 +210,7 @@
       Stratosphere.ResourceProperties.CodePipelinePipelineActionDeclaration
       Stratosphere.ResourceProperties.CodePipelinePipelineActionTypeId
       Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStore
+      Stratosphere.ResourceProperties.CodePipelinePipelineArtifactStoreMap
       Stratosphere.ResourceProperties.CodePipelinePipelineBlockerDeclaration
       Stratosphere.ResourceProperties.CodePipelinePipelineEncryptionKey
       Stratosphere.ResourceProperties.CodePipelinePipelineInputArtifact
@@ -254,6 +270,14 @@
       Stratosphere.ResourceProperties.DynamoDBTableSSESpecification
       Stratosphere.ResourceProperties.DynamoDBTableStreamSpecification
       Stratosphere.ResourceProperties.DynamoDBTableTimeToLiveSpecification
+      Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateConfigRequest
+      Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateOverridesRequest
+      Stratosphere.ResourceProperties.EC2EC2FleetFleetLaunchTemplateSpecificationRequest
+      Stratosphere.ResourceProperties.EC2EC2FleetOnDemandOptionsRequest
+      Stratosphere.ResourceProperties.EC2EC2FleetSpotOptionsRequest
+      Stratosphere.ResourceProperties.EC2EC2FleetTagRequest
+      Stratosphere.ResourceProperties.EC2EC2FleetTagSpecification
+      Stratosphere.ResourceProperties.EC2EC2FleetTargetCapacitySpecificationRequest
       Stratosphere.ResourceProperties.EC2InstanceAssociationParameter
       Stratosphere.ResourceProperties.EC2InstanceBlockDeviceMapping
       Stratosphere.ResourceProperties.EC2InstanceCreditSpecification
@@ -354,9 +378,17 @@
       Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerListeners
       Stratosphere.ResourceProperties.ElasticLoadBalancingLoadBalancerPolicies
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAction
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateCognitoConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerAuthenticateOidcConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificate
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerCertificateCertificate
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerFixedResponseConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRedirectConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAction
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateCognitoConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleAuthenticateOidcConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleFixedResponseConfig
+      Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRedirectConfig
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2ListenerRuleRuleCondition
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerLoadBalancerAttribute
       Stratosphere.ResourceProperties.ElasticLoadBalancingV2LoadBalancerSubnetMapping
@@ -375,12 +407,14 @@
       Stratosphere.ResourceProperties.EMRClusterConfiguration
       Stratosphere.ResourceProperties.EMRClusterEbsBlockDeviceConfig
       Stratosphere.ResourceProperties.EMRClusterEbsConfiguration
+      Stratosphere.ResourceProperties.EMRClusterHadoopJarStepConfig
       Stratosphere.ResourceProperties.EMRClusterInstanceFleetConfig
       Stratosphere.ResourceProperties.EMRClusterInstanceFleetProvisioningSpecifications
       Stratosphere.ResourceProperties.EMRClusterInstanceGroupConfig
       Stratosphere.ResourceProperties.EMRClusterInstanceTypeConfig
       Stratosphere.ResourceProperties.EMRClusterJobFlowInstancesConfig
       Stratosphere.ResourceProperties.EMRClusterKerberosAttributes
+      Stratosphere.ResourceProperties.EMRClusterKeyValue
       Stratosphere.ResourceProperties.EMRClusterMetricDimension
       Stratosphere.ResourceProperties.EMRClusterPlacementType
       Stratosphere.ResourceProperties.EMRClusterScalingAction
@@ -390,6 +424,7 @@
       Stratosphere.ResourceProperties.EMRClusterScriptBootstrapActionConfig
       Stratosphere.ResourceProperties.EMRClusterSimpleScalingPolicyConfiguration
       Stratosphere.ResourceProperties.EMRClusterSpotProvisioningSpecification
+      Stratosphere.ResourceProperties.EMRClusterStepConfig
       Stratosphere.ResourceProperties.EMRClusterVolumeSpecification
       Stratosphere.ResourceProperties.EMRInstanceFleetConfigConfiguration
       Stratosphere.ResourceProperties.EMRInstanceFleetConfigEbsBlockDeviceConfig
@@ -566,6 +601,8 @@
       Stratosphere.ResourceProperties.Route53RecordSetGroupAliasTarget
       Stratosphere.ResourceProperties.Route53RecordSetGroupGeoLocation
       Stratosphere.ResourceProperties.Route53RecordSetGroupRecordSet
+      Stratosphere.ResourceProperties.Route53ResolverResolverEndpointIpAddressRequest
+      Stratosphere.ResourceProperties.Route53ResolverResolverRuleTargetAddress
       Stratosphere.ResourceProperties.S3BucketAbortIncompleteMultipartUpload
       Stratosphere.ResourceProperties.S3BucketAccelerateConfiguration
       Stratosphere.ResourceProperties.S3BucketAccessControlTranslation
@@ -585,6 +622,7 @@
       Stratosphere.ResourceProperties.S3BucketNoncurrentVersionTransition
       Stratosphere.ResourceProperties.S3BucketNotificationConfiguration
       Stratosphere.ResourceProperties.S3BucketNotificationFilter
+      Stratosphere.ResourceProperties.S3BucketPublicAccessBlockConfiguration
       Stratosphere.ResourceProperties.S3BucketQueueConfiguration
       Stratosphere.ResourceProperties.S3BucketRedirectAllRequestsTo
       Stratosphere.ResourceProperties.S3BucketRedirectRule
@@ -710,9 +748,11 @@
       Stratosphere.Resources.AppStreamUser
       Stratosphere.Resources.AppSyncApiKey
       Stratosphere.Resources.AppSyncDataSource
+      Stratosphere.Resources.AppSyncFunctionConfiguration
       Stratosphere.Resources.AppSyncGraphQLApi
       Stratosphere.Resources.AppSyncGraphQLSchema
       Stratosphere.Resources.AppSyncResolver
+      Stratosphere.Resources.ASKSkill
       Stratosphere.Resources.AthenaNamedQuery
       Stratosphere.Resources.AutoScalingAutoScalingGroup
       Stratosphere.Resources.AutoScalingLaunchConfiguration
@@ -727,6 +767,7 @@
       Stratosphere.Resources.CertificateManagerCertificate
       Stratosphere.Resources.Cloud9EnvironmentEC2
       Stratosphere.Resources.CloudFormationCustomResource
+      Stratosphere.Resources.CloudFormationMacro
       Stratosphere.Resources.CloudFormationStack
       Stratosphere.Resources.CloudFormationWaitCondition
       Stratosphere.Resources.CloudFormationWaitConditionHandle
@@ -772,6 +813,7 @@
       Stratosphere.Resources.DynamoDBTable
       Stratosphere.Resources.EC2CustomerGateway
       Stratosphere.Resources.EC2DHCPOptions
+      Stratosphere.Resources.EC2EC2Fleet
       Stratosphere.Resources.EC2EgressOnlyInternetGateway
       Stratosphere.Resources.EC2EIP
       Stratosphere.Resources.EC2EIPAssociation
@@ -887,6 +929,7 @@
       Stratosphere.Resources.KinesisAnalyticsApplicationReferenceDataSource
       Stratosphere.Resources.KinesisFirehoseDeliveryStream
       Stratosphere.Resources.KinesisStream
+      Stratosphere.Resources.KinesisStreamConsumer
       Stratosphere.Resources.KMSAlias
       Stratosphere.Resources.KMSKey
       Stratosphere.Resources.LambdaAlias
@@ -929,6 +972,8 @@
       Stratosphere.Resources.Route53HostedZone
       Stratosphere.Resources.Route53RecordSet
       Stratosphere.Resources.Route53RecordSetGroup
+      Stratosphere.Resources.Route53ResolverResolverEndpoint
+      Stratosphere.Resources.Route53ResolverResolverRule
       Stratosphere.Resources.S3Bucket
       Stratosphere.Resources.S3BucketPolicy
       Stratosphere.Resources.SageMakerEndpoint
@@ -1010,29 +1055,6 @@
     , template-haskell >=2.0
     , text >=1.1
     , unordered-containers >=0.2
-  default-language: Haskell2010
-
-executable apigw-lambda-dynamodb
-  main-is: apigw-lambda-dynamodb.hs
-  other-modules:
-      Paths_stratosphere
-  hs-source-dirs:
-      examples
-  ghc-options: -Wall
-  build-depends:
-      aeson >=0.11
-    , aeson-pretty >=0.8
-    , base >=4.8 && <5
-    , bytestring
-    , containers
-    , hashable
-    , lens >=4.5
-    , stratosphere
-    , template-haskell >=2.0
-    , text >=1.1
-    , unordered-containers >=0.2
-  if flag(library-only)
-    buildable: False
   default-language: Haskell2010
 
 executable auto-scaling-group
