diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Change Log
 
+## 0.30.1
+
+* Update resource specification document to version 2.21.0
+
 ## 0.30.0
 
 * Update resource specification document to version 2.19.0
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
--- a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectEnvironment.hs
@@ -8,6 +8,7 @@
 
 import Stratosphere.ResourceImports
 import Stratosphere.ResourceProperties.CodeBuildProjectEnvironmentVariable
+import Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential
 
 -- | Full data type definition for CodeBuildProjectEnvironment. See
 -- 'codeBuildProjectEnvironment' for a more convenient constructor.
@@ -17,7 +18,9 @@
   , _codeBuildProjectEnvironmentComputeType :: Val Text
   , _codeBuildProjectEnvironmentEnvironmentVariables :: Maybe [CodeBuildProjectEnvironmentVariable]
   , _codeBuildProjectEnvironmentImage :: Val Text
+  , _codeBuildProjectEnvironmentImagePullCredentialsType :: Maybe (Val Text)
   , _codeBuildProjectEnvironmentPrivilegedMode :: Maybe (Val Bool)
+  , _codeBuildProjectEnvironmentRegistryCredential :: Maybe CodeBuildProjectRegistryCredential
   , _codeBuildProjectEnvironmentType :: Val Text
   } deriving (Show, Eq)
 
@@ -29,7 +32,9 @@
     , (Just . ("ComputeType",) . toJSON) _codeBuildProjectEnvironmentComputeType
     , fmap (("EnvironmentVariables",) . toJSON) _codeBuildProjectEnvironmentEnvironmentVariables
     , (Just . ("Image",) . toJSON) _codeBuildProjectEnvironmentImage
+    , fmap (("ImagePullCredentialsType",) . toJSON) _codeBuildProjectEnvironmentImagePullCredentialsType
     , fmap (("PrivilegedMode",) . toJSON . fmap Bool') _codeBuildProjectEnvironmentPrivilegedMode
+    , fmap (("RegistryCredential",) . toJSON) _codeBuildProjectEnvironmentRegistryCredential
     , (Just . ("Type",) . toJSON) _codeBuildProjectEnvironmentType
     ]
 
@@ -40,7 +45,9 @@
       (obj .: "ComputeType") <*>
       (obj .:? "EnvironmentVariables") <*>
       (obj .: "Image") <*>
+      (obj .:? "ImagePullCredentialsType") <*>
       fmap (fmap (fmap unBool')) (obj .:? "PrivilegedMode") <*>
+      (obj .:? "RegistryCredential") <*>
       (obj .: "Type")
   parseJSON _ = mempty
 
@@ -57,7 +64,9 @@
   , _codeBuildProjectEnvironmentComputeType = computeTypearg
   , _codeBuildProjectEnvironmentEnvironmentVariables = Nothing
   , _codeBuildProjectEnvironmentImage = imagearg
+  , _codeBuildProjectEnvironmentImagePullCredentialsType = Nothing
   , _codeBuildProjectEnvironmentPrivilegedMode = Nothing
+  , _codeBuildProjectEnvironmentRegistryCredential = Nothing
   , _codeBuildProjectEnvironmentType = typearg
   }
 
@@ -77,9 +86,17 @@
 cbpeImage :: Lens' CodeBuildProjectEnvironment (Val Text)
 cbpeImage = lens _codeBuildProjectEnvironmentImage (\s a -> s { _codeBuildProjectEnvironmentImage = a })
 
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-imagepullcredentialstype
+cbpeImagePullCredentialsType :: Lens' CodeBuildProjectEnvironment (Maybe (Val Text))
+cbpeImagePullCredentialsType = lens _codeBuildProjectEnvironmentImagePullCredentialsType (\s a -> s { _codeBuildProjectEnvironmentImagePullCredentialsType = a })
+
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-privilegedmode
 cbpePrivilegedMode :: Lens' CodeBuildProjectEnvironment (Maybe (Val Bool))
 cbpePrivilegedMode = lens _codeBuildProjectEnvironmentPrivilegedMode (\s a -> s { _codeBuildProjectEnvironmentPrivilegedMode = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-registrycredential
+cbpeRegistryCredential :: Lens' CodeBuildProjectEnvironment (Maybe CodeBuildProjectRegistryCredential)
+cbpeRegistryCredential = lens _codeBuildProjectEnvironmentRegistryCredential (\s a -> s { _codeBuildProjectEnvironmentRegistryCredential = a })
 
 -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-type
 cbpeType :: Lens' CodeBuildProjectEnvironment (Val Text)
diff --git a/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectRegistryCredential.hs b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectRegistryCredential.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/CodeBuildProjectRegistryCredential.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html
+
+module Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for CodeBuildProjectRegistryCredential. See
+-- 'codeBuildProjectRegistryCredential' for a more convenient constructor.
+data CodeBuildProjectRegistryCredential =
+  CodeBuildProjectRegistryCredential
+  { _codeBuildProjectRegistryCredentialCredential :: Val Text
+  , _codeBuildProjectRegistryCredentialCredentialProvider :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON CodeBuildProjectRegistryCredential where
+  toJSON CodeBuildProjectRegistryCredential{..} =
+    object $
+    catMaybes
+    [ (Just . ("Credential",) . toJSON) _codeBuildProjectRegistryCredentialCredential
+    , (Just . ("CredentialProvider",) . toJSON) _codeBuildProjectRegistryCredentialCredentialProvider
+    ]
+
+instance FromJSON CodeBuildProjectRegistryCredential where
+  parseJSON (Object obj) =
+    CodeBuildProjectRegistryCredential <$>
+      (obj .: "Credential") <*>
+      (obj .: "CredentialProvider")
+  parseJSON _ = mempty
+
+-- | Constructor for 'CodeBuildProjectRegistryCredential' containing required
+-- fields as arguments.
+codeBuildProjectRegistryCredential
+  :: Val Text -- ^ 'cbprcCredential'
+  -> Val Text -- ^ 'cbprcCredentialProvider'
+  -> CodeBuildProjectRegistryCredential
+codeBuildProjectRegistryCredential credentialarg credentialProviderarg =
+  CodeBuildProjectRegistryCredential
+  { _codeBuildProjectRegistryCredentialCredential = credentialarg
+  , _codeBuildProjectRegistryCredentialCredentialProvider = credentialProviderarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html#cfn-codebuild-project-registrycredential-credential
+cbprcCredential :: Lens' CodeBuildProjectRegistryCredential (Val Text)
+cbprcCredential = lens _codeBuildProjectRegistryCredentialCredential (\s a -> s { _codeBuildProjectRegistryCredentialCredential = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-registrycredential.html#cfn-codebuild-project-registrycredential-credentialprovider
+cbprcCredentialProvider :: Lens' CodeBuildProjectRegistryCredential (Val Text)
+cbprcCredentialProvider = lens _codeBuildProjectRegistryCredentialCredentialProvider (\s a -> s { _codeBuildProjectRegistryCredentialCredentialProvider = a })
diff --git a/library-gen/Stratosphere/ResourceProperties/OpsWorksCMServerEngineAttribute.hs b/library-gen/Stratosphere/ResourceProperties/OpsWorksCMServerEngineAttribute.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/ResourceProperties/OpsWorksCMServerEngineAttribute.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworkscm-server-engineattribute.html
+
+module Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for OpsWorksCMServerEngineAttribute. See
+-- 'opsWorksCMServerEngineAttribute' for a more convenient constructor.
+data OpsWorksCMServerEngineAttribute =
+  OpsWorksCMServerEngineAttribute
+  { _opsWorksCMServerEngineAttributeName :: Maybe (Val Text)
+  , _opsWorksCMServerEngineAttributeValue :: Maybe (Val Text)
+  } deriving (Show, Eq)
+
+instance ToJSON OpsWorksCMServerEngineAttribute where
+  toJSON OpsWorksCMServerEngineAttribute{..} =
+    object $
+    catMaybes
+    [ fmap (("Name",) . toJSON) _opsWorksCMServerEngineAttributeName
+    , fmap (("Value",) . toJSON) _opsWorksCMServerEngineAttributeValue
+    ]
+
+instance FromJSON OpsWorksCMServerEngineAttribute where
+  parseJSON (Object obj) =
+    OpsWorksCMServerEngineAttribute <$>
+      (obj .:? "Name") <*>
+      (obj .:? "Value")
+  parseJSON _ = mempty
+
+-- | Constructor for 'OpsWorksCMServerEngineAttribute' containing required
+-- fields as arguments.
+opsWorksCMServerEngineAttribute
+  :: OpsWorksCMServerEngineAttribute
+opsWorksCMServerEngineAttribute  =
+  OpsWorksCMServerEngineAttribute
+  { _opsWorksCMServerEngineAttributeName = Nothing
+  , _opsWorksCMServerEngineAttributeValue = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworkscm-server-engineattribute.html#cfn-opsworkscm-server-engineattribute-name
+owcmseaName :: Lens' OpsWorksCMServerEngineAttribute (Maybe (Val Text))
+owcmseaName = lens _opsWorksCMServerEngineAttributeName (\s a -> s { _opsWorksCMServerEngineAttributeName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworkscm-server-engineattribute.html#cfn-opsworkscm-server-engineattribute-value
+owcmseaValue :: Lens' OpsWorksCMServerEngineAttribute (Maybe (Val Text))
+owcmseaValue = lens _opsWorksCMServerEngineAttributeValue (\s a -> s { _opsWorksCMServerEngineAttributeValue = a })
diff --git a/library-gen/Stratosphere/Resources.hs b/library-gen/Stratosphere/Resources.hs
--- a/library-gen/Stratosphere/Resources.hs
+++ b/library-gen/Stratosphere/Resources.hs
@@ -281,6 +281,7 @@
 import Stratosphere.Resources.LambdaEventSourceMapping as X
 import Stratosphere.Resources.LambdaFunction as X
 import Stratosphere.Resources.LambdaLayerVersion as X
+import Stratosphere.Resources.LambdaLayerVersionPermission as X
 import Stratosphere.Resources.LambdaPermission as X
 import Stratosphere.Resources.LambdaVersion as X
 import Stratosphere.Resources.LogsDestination as X
@@ -300,6 +301,7 @@
 import Stratosphere.Resources.OpsWorksStack as X
 import Stratosphere.Resources.OpsWorksUserProfile as X
 import Stratosphere.Resources.OpsWorksVolume as X
+import Stratosphere.Resources.OpsWorksCMServer as X
 import Stratosphere.Resources.RDSDBCluster as X
 import Stratosphere.Resources.RDSDBClusterParameterGroup as X
 import Stratosphere.Resources.RDSDBInstance as X
@@ -519,6 +521,7 @@
 import Stratosphere.ResourceProperties.CodeBuildProjectLogsConfig as X
 import Stratosphere.ResourceProperties.CodeBuildProjectProjectCache as X
 import Stratosphere.ResourceProperties.CodeBuildProjectProjectTriggers as X
+import Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential as X
 import Stratosphere.ResourceProperties.CodeBuildProjectS3LogsConfig as X
 import Stratosphere.ResourceProperties.CodeBuildProjectSource as X
 import Stratosphere.ResourceProperties.CodeBuildProjectSourceAuth as X
@@ -953,6 +956,7 @@
 import Stratosphere.ResourceProperties.OpsWorksStackRdsDbInstance as X
 import Stratosphere.ResourceProperties.OpsWorksStackSource as X
 import Stratosphere.ResourceProperties.OpsWorksStackStackConfigurationManager as X
+import Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute as X
 import Stratosphere.ResourceProperties.RDSDBClusterScalingConfiguration as X
 import Stratosphere.ResourceProperties.RDSDBInstanceProcessorFeature as X
 import Stratosphere.ResourceProperties.RDSDBSecurityGroupIngressProperty as X
@@ -1334,6 +1338,7 @@
   | LambdaEventSourceMappingProperties LambdaEventSourceMapping
   | LambdaFunctionProperties LambdaFunction
   | LambdaLayerVersionProperties LambdaLayerVersion
+  | LambdaLayerVersionPermissionProperties LambdaLayerVersionPermission
   | LambdaPermissionProperties LambdaPermission
   | LambdaVersionProperties LambdaVersion
   | LogsDestinationProperties LogsDestination
@@ -1353,6 +1358,7 @@
   | OpsWorksStackProperties OpsWorksStack
   | OpsWorksUserProfileProperties OpsWorksUserProfile
   | OpsWorksVolumeProperties OpsWorksVolume
+  | OpsWorksCMServerProperties OpsWorksCMServer
   | RDSDBClusterProperties RDSDBCluster
   | RDSDBClusterParameterGroupProperties RDSDBClusterParameterGroup
   | RDSDBInstanceProperties RDSDBInstance
@@ -1963,6 +1969,8 @@
   [ "Type" .= ("AWS::Lambda::Function" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (LambdaLayerVersionProperties x) =
   [ "Type" .= ("AWS::Lambda::LayerVersion" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (LambdaLayerVersionPermissionProperties x) =
+  [ "Type" .= ("AWS::Lambda::LayerVersionPermission" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (LambdaPermissionProperties x) =
   [ "Type" .= ("AWS::Lambda::Permission" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (LambdaVersionProperties x) =
@@ -2001,6 +2009,8 @@
   [ "Type" .= ("AWS::OpsWorks::UserProfile" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (OpsWorksVolumeProperties x) =
   [ "Type" .= ("AWS::OpsWorks::Volume" :: String), "Properties" .= toJSON x]
+resourcePropertiesJSON (OpsWorksCMServerProperties x) =
+  [ "Type" .= ("AWS::OpsWorksCM::Server" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (RDSDBClusterProperties x) =
   [ "Type" .= ("AWS::RDS::DBCluster" :: String), "Properties" .= toJSON x]
 resourcePropertiesJSON (RDSDBClusterParameterGroupProperties x) =
@@ -2415,6 +2425,7 @@
          "AWS::Lambda::EventSourceMapping" -> LambdaEventSourceMappingProperties <$> (o .: "Properties")
          "AWS::Lambda::Function" -> LambdaFunctionProperties <$> (o .: "Properties")
          "AWS::Lambda::LayerVersion" -> LambdaLayerVersionProperties <$> (o .: "Properties")
+         "AWS::Lambda::LayerVersionPermission" -> LambdaLayerVersionPermissionProperties <$> (o .: "Properties")
          "AWS::Lambda::Permission" -> LambdaPermissionProperties <$> (o .: "Properties")
          "AWS::Lambda::Version" -> LambdaVersionProperties <$> (o .: "Properties")
          "AWS::Logs::Destination" -> LogsDestinationProperties <$> (o .: "Properties")
@@ -2434,6 +2445,7 @@
          "AWS::OpsWorks::Stack" -> OpsWorksStackProperties <$> (o .: "Properties")
          "AWS::OpsWorks::UserProfile" -> OpsWorksUserProfileProperties <$> (o .: "Properties")
          "AWS::OpsWorks::Volume" -> OpsWorksVolumeProperties <$> (o .: "Properties")
+         "AWS::OpsWorksCM::Server" -> OpsWorksCMServerProperties <$> (o .: "Properties")
          "AWS::RDS::DBCluster" -> RDSDBClusterProperties <$> (o .: "Properties")
          "AWS::RDS::DBClusterParameterGroup" -> RDSDBClusterParameterGroupProperties <$> (o .: "Properties")
          "AWS::RDS::DBInstance" -> RDSDBInstanceProperties <$> (o .: "Properties")
diff --git a/library-gen/Stratosphere/Resources/LambdaLayerVersionPermission.hs b/library-gen/Stratosphere/Resources/LambdaLayerVersionPermission.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/LambdaLayerVersionPermission.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html
+
+module Stratosphere.Resources.LambdaLayerVersionPermission where
+
+import Stratosphere.ResourceImports
+
+
+-- | Full data type definition for LambdaLayerVersionPermission. See
+-- 'lambdaLayerVersionPermission' for a more convenient constructor.
+data LambdaLayerVersionPermission =
+  LambdaLayerVersionPermission
+  { _lambdaLayerVersionPermissionAction :: Val Text
+  , _lambdaLayerVersionPermissionLayerVersionArn :: Val Text
+  , _lambdaLayerVersionPermissionOrganizationId :: Maybe (Val Text)
+  , _lambdaLayerVersionPermissionPrincipal :: Val Text
+  } deriving (Show, Eq)
+
+instance ToJSON LambdaLayerVersionPermission where
+  toJSON LambdaLayerVersionPermission{..} =
+    object $
+    catMaybes
+    [ (Just . ("Action",) . toJSON) _lambdaLayerVersionPermissionAction
+    , (Just . ("LayerVersionArn",) . toJSON) _lambdaLayerVersionPermissionLayerVersionArn
+    , fmap (("OrganizationId",) . toJSON) _lambdaLayerVersionPermissionOrganizationId
+    , (Just . ("Principal",) . toJSON) _lambdaLayerVersionPermissionPrincipal
+    ]
+
+instance FromJSON LambdaLayerVersionPermission where
+  parseJSON (Object obj) =
+    LambdaLayerVersionPermission <$>
+      (obj .: "Action") <*>
+      (obj .: "LayerVersionArn") <*>
+      (obj .:? "OrganizationId") <*>
+      (obj .: "Principal")
+  parseJSON _ = mempty
+
+-- | Constructor for 'LambdaLayerVersionPermission' containing required fields
+-- as arguments.
+lambdaLayerVersionPermission
+  :: Val Text -- ^ 'llvpAction'
+  -> Val Text -- ^ 'llvpLayerVersionArn'
+  -> Val Text -- ^ 'llvpPrincipal'
+  -> LambdaLayerVersionPermission
+lambdaLayerVersionPermission actionarg layerVersionArnarg principalarg =
+  LambdaLayerVersionPermission
+  { _lambdaLayerVersionPermissionAction = actionarg
+  , _lambdaLayerVersionPermissionLayerVersionArn = layerVersionArnarg
+  , _lambdaLayerVersionPermissionOrganizationId = Nothing
+  , _lambdaLayerVersionPermissionPrincipal = principalarg
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html#cfn-lambda-layerversionpermission-action
+llvpAction :: Lens' LambdaLayerVersionPermission (Val Text)
+llvpAction = lens _lambdaLayerVersionPermissionAction (\s a -> s { _lambdaLayerVersionPermissionAction = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html#cfn-lambda-layerversionpermission-layerversionarn
+llvpLayerVersionArn :: Lens' LambdaLayerVersionPermission (Val Text)
+llvpLayerVersionArn = lens _lambdaLayerVersionPermissionLayerVersionArn (\s a -> s { _lambdaLayerVersionPermissionLayerVersionArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html#cfn-lambda-layerversionpermission-organizationid
+llvpOrganizationId :: Lens' LambdaLayerVersionPermission (Maybe (Val Text))
+llvpOrganizationId = lens _lambdaLayerVersionPermissionOrganizationId (\s a -> s { _lambdaLayerVersionPermissionOrganizationId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html#cfn-lambda-layerversionpermission-principal
+llvpPrincipal :: Lens' LambdaLayerVersionPermission (Val Text)
+llvpPrincipal = lens _lambdaLayerVersionPermissionPrincipal (\s a -> s { _lambdaLayerVersionPermissionPrincipal = a })
diff --git a/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs b/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
new file mode 100644
--- /dev/null
+++ b/library-gen/Stratosphere/Resources/OpsWorksCMServer.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html
+
+module Stratosphere.Resources.OpsWorksCMServer where
+
+import Stratosphere.ResourceImports
+import Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute
+
+-- | Full data type definition for OpsWorksCMServer. See 'opsWorksCMServer'
+-- for a more convenient constructor.
+data OpsWorksCMServer =
+  OpsWorksCMServer
+  { _opsWorksCMServerBackupId :: Maybe (Val Text)
+  , _opsWorksCMServerBackupRetentionCount :: Maybe (Val Integer)
+  , _opsWorksCMServerDisableAutomatedBackup :: Maybe (Val Bool)
+  , _opsWorksCMServerEngine :: Maybe (Val Text)
+  , _opsWorksCMServerEngineAttributes :: Maybe [OpsWorksCMServerEngineAttribute]
+  , _opsWorksCMServerEngineModel :: Maybe (Val Text)
+  , _opsWorksCMServerEngineVersion :: Maybe (Val Text)
+  , _opsWorksCMServerInstanceProfileArn :: Val Text
+  , _opsWorksCMServerInstanceType :: Val Text
+  , _opsWorksCMServerKeyPair :: Maybe (Val Text)
+  , _opsWorksCMServerPreferredBackupWindow :: Maybe (Val Text)
+  , _opsWorksCMServerPreferredMaintenanceWindow :: Maybe (Val Text)
+  , _opsWorksCMServerSecurityGroupIds :: Maybe (ValList Text)
+  , _opsWorksCMServerServerName :: Maybe (Val Text)
+  , _opsWorksCMServerServiceRoleArn :: Val Text
+  , _opsWorksCMServerSubnetIds :: Maybe (ValList Text)
+  } deriving (Show, Eq)
+
+instance ToJSON OpsWorksCMServer where
+  toJSON OpsWorksCMServer{..} =
+    object $
+    catMaybes
+    [ fmap (("BackupId",) . toJSON) _opsWorksCMServerBackupId
+    , fmap (("BackupRetentionCount",) . toJSON . fmap Integer') _opsWorksCMServerBackupRetentionCount
+    , fmap (("DisableAutomatedBackup",) . toJSON . fmap Bool') _opsWorksCMServerDisableAutomatedBackup
+    , fmap (("Engine",) . toJSON) _opsWorksCMServerEngine
+    , fmap (("EngineAttributes",) . toJSON) _opsWorksCMServerEngineAttributes
+    , fmap (("EngineModel",) . toJSON) _opsWorksCMServerEngineModel
+    , fmap (("EngineVersion",) . toJSON) _opsWorksCMServerEngineVersion
+    , (Just . ("InstanceProfileArn",) . toJSON) _opsWorksCMServerInstanceProfileArn
+    , (Just . ("InstanceType",) . toJSON) _opsWorksCMServerInstanceType
+    , fmap (("KeyPair",) . toJSON) _opsWorksCMServerKeyPair
+    , fmap (("PreferredBackupWindow",) . toJSON) _opsWorksCMServerPreferredBackupWindow
+    , fmap (("PreferredMaintenanceWindow",) . toJSON) _opsWorksCMServerPreferredMaintenanceWindow
+    , fmap (("SecurityGroupIds",) . toJSON) _opsWorksCMServerSecurityGroupIds
+    , fmap (("ServerName",) . toJSON) _opsWorksCMServerServerName
+    , (Just . ("ServiceRoleArn",) . toJSON) _opsWorksCMServerServiceRoleArn
+    , fmap (("SubnetIds",) . toJSON) _opsWorksCMServerSubnetIds
+    ]
+
+instance FromJSON OpsWorksCMServer where
+  parseJSON (Object obj) =
+    OpsWorksCMServer <$>
+      (obj .:? "BackupId") <*>
+      fmap (fmap (fmap unInteger')) (obj .:? "BackupRetentionCount") <*>
+      fmap (fmap (fmap unBool')) (obj .:? "DisableAutomatedBackup") <*>
+      (obj .:? "Engine") <*>
+      (obj .:? "EngineAttributes") <*>
+      (obj .:? "EngineModel") <*>
+      (obj .:? "EngineVersion") <*>
+      (obj .: "InstanceProfileArn") <*>
+      (obj .: "InstanceType") <*>
+      (obj .:? "KeyPair") <*>
+      (obj .:? "PreferredBackupWindow") <*>
+      (obj .:? "PreferredMaintenanceWindow") <*>
+      (obj .:? "SecurityGroupIds") <*>
+      (obj .:? "ServerName") <*>
+      (obj .: "ServiceRoleArn") <*>
+      (obj .:? "SubnetIds")
+  parseJSON _ = mempty
+
+-- | Constructor for 'OpsWorksCMServer' containing required fields as
+-- arguments.
+opsWorksCMServer
+  :: Val Text -- ^ 'owcmsInstanceProfileArn'
+  -> Val Text -- ^ 'owcmsInstanceType'
+  -> Val Text -- ^ 'owcmsServiceRoleArn'
+  -> OpsWorksCMServer
+opsWorksCMServer instanceProfileArnarg instanceTypearg serviceRoleArnarg =
+  OpsWorksCMServer
+  { _opsWorksCMServerBackupId = Nothing
+  , _opsWorksCMServerBackupRetentionCount = Nothing
+  , _opsWorksCMServerDisableAutomatedBackup = Nothing
+  , _opsWorksCMServerEngine = Nothing
+  , _opsWorksCMServerEngineAttributes = Nothing
+  , _opsWorksCMServerEngineModel = Nothing
+  , _opsWorksCMServerEngineVersion = Nothing
+  , _opsWorksCMServerInstanceProfileArn = instanceProfileArnarg
+  , _opsWorksCMServerInstanceType = instanceTypearg
+  , _opsWorksCMServerKeyPair = Nothing
+  , _opsWorksCMServerPreferredBackupWindow = Nothing
+  , _opsWorksCMServerPreferredMaintenanceWindow = Nothing
+  , _opsWorksCMServerSecurityGroupIds = Nothing
+  , _opsWorksCMServerServerName = Nothing
+  , _opsWorksCMServerServiceRoleArn = serviceRoleArnarg
+  , _opsWorksCMServerSubnetIds = Nothing
+  }
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-backupid
+owcmsBackupId :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsBackupId = lens _opsWorksCMServerBackupId (\s a -> s { _opsWorksCMServerBackupId = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-backupretentioncount
+owcmsBackupRetentionCount :: Lens' OpsWorksCMServer (Maybe (Val Integer))
+owcmsBackupRetentionCount = lens _opsWorksCMServerBackupRetentionCount (\s a -> s { _opsWorksCMServerBackupRetentionCount = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-disableautomatedbackup
+owcmsDisableAutomatedBackup :: Lens' OpsWorksCMServer (Maybe (Val Bool))
+owcmsDisableAutomatedBackup = lens _opsWorksCMServerDisableAutomatedBackup (\s a -> s { _opsWorksCMServerDisableAutomatedBackup = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-engine
+owcmsEngine :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsEngine = lens _opsWorksCMServerEngine (\s a -> s { _opsWorksCMServerEngine = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-engineattributes
+owcmsEngineAttributes :: Lens' OpsWorksCMServer (Maybe [OpsWorksCMServerEngineAttribute])
+owcmsEngineAttributes = lens _opsWorksCMServerEngineAttributes (\s a -> s { _opsWorksCMServerEngineAttributes = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-enginemodel
+owcmsEngineModel :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsEngineModel = lens _opsWorksCMServerEngineModel (\s a -> s { _opsWorksCMServerEngineModel = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-engineversion
+owcmsEngineVersion :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsEngineVersion = lens _opsWorksCMServerEngineVersion (\s a -> s { _opsWorksCMServerEngineVersion = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-instanceprofilearn
+owcmsInstanceProfileArn :: Lens' OpsWorksCMServer (Val Text)
+owcmsInstanceProfileArn = lens _opsWorksCMServerInstanceProfileArn (\s a -> s { _opsWorksCMServerInstanceProfileArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-instancetype
+owcmsInstanceType :: Lens' OpsWorksCMServer (Val Text)
+owcmsInstanceType = lens _opsWorksCMServerInstanceType (\s a -> s { _opsWorksCMServerInstanceType = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-keypair
+owcmsKeyPair :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsKeyPair = lens _opsWorksCMServerKeyPair (\s a -> s { _opsWorksCMServerKeyPair = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-preferredbackupwindow
+owcmsPreferredBackupWindow :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsPreferredBackupWindow = lens _opsWorksCMServerPreferredBackupWindow (\s a -> s { _opsWorksCMServerPreferredBackupWindow = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-preferredmaintenancewindow
+owcmsPreferredMaintenanceWindow :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsPreferredMaintenanceWindow = lens _opsWorksCMServerPreferredMaintenanceWindow (\s a -> s { _opsWorksCMServerPreferredMaintenanceWindow = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-securitygroupids
+owcmsSecurityGroupIds :: Lens' OpsWorksCMServer (Maybe (ValList Text))
+owcmsSecurityGroupIds = lens _opsWorksCMServerSecurityGroupIds (\s a -> s { _opsWorksCMServerSecurityGroupIds = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-servername
+owcmsServerName :: Lens' OpsWorksCMServer (Maybe (Val Text))
+owcmsServerName = lens _opsWorksCMServerServerName (\s a -> s { _opsWorksCMServerServerName = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-servicerolearn
+owcmsServiceRoleArn :: Lens' OpsWorksCMServer (Val Text)
+owcmsServiceRoleArn = lens _opsWorksCMServerServiceRoleArn (\s a -> s { _opsWorksCMServerServiceRoleArn = a })
+
+-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-subnetids
+owcmsSubnetIds :: Lens' OpsWorksCMServer (Maybe (ValList Text))
+owcmsSubnetIds = lens _opsWorksCMServerSubnetIds (\s a -> s { _opsWorksCMServerSubnetIds = 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: b3a52913eb633d72e31a2a48107a336d3113364313d70bc0d1964a31f28a2c40
+-- hash: e95cff19c73e1cabc2aa2df35a2af67996c3163bbe98fc87d625943bb0bb0279
 
 name:           stratosphere
-version:        0.30.0
+version:        0.30.1
 synopsis:       EDSL for AWS CloudFormation
 description:    EDSL for AWS CloudFormation
 category:       AWS, Cloud
@@ -183,6 +183,7 @@
       Stratosphere.ResourceProperties.CodeBuildProjectLogsConfig
       Stratosphere.ResourceProperties.CodeBuildProjectProjectCache
       Stratosphere.ResourceProperties.CodeBuildProjectProjectTriggers
+      Stratosphere.ResourceProperties.CodeBuildProjectRegistryCredential
       Stratosphere.ResourceProperties.CodeBuildProjectS3LogsConfig
       Stratosphere.ResourceProperties.CodeBuildProjectSource
       Stratosphere.ResourceProperties.CodeBuildProjectSourceAuth
@@ -603,6 +604,7 @@
       Stratosphere.ResourceProperties.OpsWorksAppEnvironmentVariable
       Stratosphere.ResourceProperties.OpsWorksAppSource
       Stratosphere.ResourceProperties.OpsWorksAppSslConfiguration
+      Stratosphere.ResourceProperties.OpsWorksCMServerEngineAttribute
       Stratosphere.ResourceProperties.OpsWorksInstanceBlockDeviceMapping
       Stratosphere.ResourceProperties.OpsWorksInstanceEbsBlockDevice
       Stratosphere.ResourceProperties.OpsWorksInstanceTimeBasedAutoScaling
@@ -986,6 +988,7 @@
       Stratosphere.Resources.LambdaEventSourceMapping
       Stratosphere.Resources.LambdaFunction
       Stratosphere.Resources.LambdaLayerVersion
+      Stratosphere.Resources.LambdaLayerVersionPermission
       Stratosphere.Resources.LambdaPermission
       Stratosphere.Resources.LambdaVersion
       Stratosphere.Resources.LogsDestination
@@ -999,6 +1002,7 @@
       Stratosphere.Resources.NeptuneDBParameterGroup
       Stratosphere.Resources.NeptuneDBSubnetGroup
       Stratosphere.Resources.OpsWorksApp
+      Stratosphere.Resources.OpsWorksCMServer
       Stratosphere.Resources.OpsWorksElasticLoadBalancerAttachment
       Stratosphere.Resources.OpsWorksInstance
       Stratosphere.Resources.OpsWorksLayer
