diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/CodeDeploy/Application.hs b/gen/Stratosphere/CodeDeploy/Application.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/Application.hs
@@ -0,0 +1,54 @@
+module Stratosphere.CodeDeploy.Application (
+        Application(..), mkApplication
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Application
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html>
+    Application {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html#cfn-codedeploy-application-applicationname>
+                 applicationName :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html#cfn-codedeploy-application-computeplatform>
+                 computePlatform :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html#cfn-codedeploy-application-tags>
+                 tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkApplication :: Application
+mkApplication
+  = Application
+      {haddock_workaround_ = (), applicationName = Prelude.Nothing,
+       computePlatform = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Application where
+  toResourceProperties Application {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::Application",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ApplicationName" Prelude.<$> applicationName,
+                            (JSON..=) "ComputePlatform" Prelude.<$> computePlatform,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON Application where
+  toJSON Application {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ApplicationName" Prelude.<$> applicationName,
+               (JSON..=) "ComputePlatform" Prelude.<$> computePlatform,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "ApplicationName" Application where
+  type PropertyType "ApplicationName" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {applicationName = Prelude.pure newValue, ..}
+instance Property "ComputePlatform" Application where
+  type PropertyType "ComputePlatform" Application = Value Prelude.Text
+  set newValue Application {..}
+    = Application {computePlatform = Prelude.pure newValue, ..}
+instance Property "Tags" Application where
+  type PropertyType "Tags" Application = [Tag]
+  set newValue Application {..}
+    = Application {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig.hs b/gen/Stratosphere/CodeDeploy/DeploymentConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig.hs
@@ -0,0 +1,78 @@
+module Stratosphere.CodeDeploy.DeploymentConfig (
+        module Exports, DeploymentConfig(..), mkDeploymentConfig
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentConfig.TrafficRoutingConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentConfig.ZonalConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DeploymentConfig
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html>
+    DeploymentConfig {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html#cfn-codedeploy-deploymentconfig-computeplatform>
+                      computePlatform :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html#cfn-codedeploy-deploymentconfig-deploymentconfigname>
+                      deploymentConfigName :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html#cfn-codedeploy-deploymentconfig-minimumhealthyhosts>
+                      minimumHealthyHosts :: (Prelude.Maybe MinimumHealthyHostsProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html#cfn-codedeploy-deploymentconfig-trafficroutingconfig>
+                      trafficRoutingConfig :: (Prelude.Maybe TrafficRoutingConfigProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html#cfn-codedeploy-deploymentconfig-zonalconfig>
+                      zonalConfig :: (Prelude.Maybe ZonalConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeploymentConfig :: DeploymentConfig
+mkDeploymentConfig
+  = DeploymentConfig
+      {haddock_workaround_ = (), computePlatform = Prelude.Nothing,
+       deploymentConfigName = Prelude.Nothing,
+       minimumHealthyHosts = Prelude.Nothing,
+       trafficRoutingConfig = Prelude.Nothing,
+       zonalConfig = Prelude.Nothing}
+instance ToResourceProperties DeploymentConfig where
+  toResourceProperties DeploymentConfig {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ComputePlatform" Prelude.<$> computePlatform,
+                            (JSON..=) "DeploymentConfigName" Prelude.<$> deploymentConfigName,
+                            (JSON..=) "MinimumHealthyHosts" Prelude.<$> minimumHealthyHosts,
+                            (JSON..=) "TrafficRoutingConfig" Prelude.<$> trafficRoutingConfig,
+                            (JSON..=) "ZonalConfig" Prelude.<$> zonalConfig])}
+instance JSON.ToJSON DeploymentConfig where
+  toJSON DeploymentConfig {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ComputePlatform" Prelude.<$> computePlatform,
+               (JSON..=) "DeploymentConfigName" Prelude.<$> deploymentConfigName,
+               (JSON..=) "MinimumHealthyHosts" Prelude.<$> minimumHealthyHosts,
+               (JSON..=) "TrafficRoutingConfig" Prelude.<$> trafficRoutingConfig,
+               (JSON..=) "ZonalConfig" Prelude.<$> zonalConfig]))
+instance Property "ComputePlatform" DeploymentConfig where
+  type PropertyType "ComputePlatform" DeploymentConfig = Value Prelude.Text
+  set newValue DeploymentConfig {..}
+    = DeploymentConfig {computePlatform = Prelude.pure newValue, ..}
+instance Property "DeploymentConfigName" DeploymentConfig where
+  type PropertyType "DeploymentConfigName" DeploymentConfig = Value Prelude.Text
+  set newValue DeploymentConfig {..}
+    = DeploymentConfig
+        {deploymentConfigName = Prelude.pure newValue, ..}
+instance Property "MinimumHealthyHosts" DeploymentConfig where
+  type PropertyType "MinimumHealthyHosts" DeploymentConfig = MinimumHealthyHostsProperty
+  set newValue DeploymentConfig {..}
+    = DeploymentConfig
+        {minimumHealthyHosts = Prelude.pure newValue, ..}
+instance Property "TrafficRoutingConfig" DeploymentConfig where
+  type PropertyType "TrafficRoutingConfig" DeploymentConfig = TrafficRoutingConfigProperty
+  set newValue DeploymentConfig {..}
+    = DeploymentConfig
+        {trafficRoutingConfig = Prelude.pure newValue, ..}
+instance Property "ZonalConfig" DeploymentConfig where
+  type PropertyType "ZonalConfig" DeploymentConfig = ZonalConfigProperty
+  set newValue DeploymentConfig {..}
+    = DeploymentConfig {zonalConfig = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsPerZoneProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsPerZoneProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsPerZoneProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsPerZoneProperty (
+        MinimumHealthyHostsPerZoneProperty(..),
+        mkMinimumHealthyHostsPerZoneProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MinimumHealthyHostsPerZoneProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhostsperzone.html>
+    MinimumHealthyHostsPerZoneProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhostsperzone.html#cfn-codedeploy-deploymentconfig-minimumhealthyhostsperzone-type>
+                                        type' :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhostsperzone.html#cfn-codedeploy-deploymentconfig-minimumhealthyhostsperzone-value>
+                                        value :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMinimumHealthyHostsPerZoneProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Integer -> MinimumHealthyHostsPerZoneProperty
+mkMinimumHealthyHostsPerZoneProperty type' value
+  = MinimumHealthyHostsPerZoneProperty
+      {haddock_workaround_ = (), type' = type', value = value}
+instance ToResourceProperties MinimumHealthyHostsPerZoneProperty where
+  toResourceProperties MinimumHealthyHostsPerZoneProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentConfig.MinimumHealthyHostsPerZone",
+         supportsTags = Prelude.False,
+         properties = ["Type" JSON..= type', "Value" JSON..= value]}
+instance JSON.ToJSON MinimumHealthyHostsPerZoneProperty where
+  toJSON MinimumHealthyHostsPerZoneProperty {..}
+    = JSON.object ["Type" JSON..= type', "Value" JSON..= value]
+instance Property "Type" MinimumHealthyHostsPerZoneProperty where
+  type PropertyType "Type" MinimumHealthyHostsPerZoneProperty = Value Prelude.Text
+  set newValue MinimumHealthyHostsPerZoneProperty {..}
+    = MinimumHealthyHostsPerZoneProperty {type' = newValue, ..}
+instance Property "Value" MinimumHealthyHostsPerZoneProperty where
+  type PropertyType "Value" MinimumHealthyHostsPerZoneProperty = Value Prelude.Integer
+  set newValue MinimumHealthyHostsPerZoneProperty {..}
+    = MinimumHealthyHostsPerZoneProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsPerZoneProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsPerZoneProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsPerZoneProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsPerZoneProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MinimumHealthyHostsPerZoneProperty :: Prelude.Type
+instance ToResourceProperties MinimumHealthyHostsPerZoneProperty
+instance Prelude.Eq MinimumHealthyHostsPerZoneProperty
+instance Prelude.Show MinimumHealthyHostsPerZoneProperty
+instance JSON.ToJSON MinimumHealthyHostsPerZoneProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsProperty (
+        MinimumHealthyHostsProperty(..), mkMinimumHealthyHostsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MinimumHealthyHostsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html>
+    MinimumHealthyHostsProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html#cfn-codedeploy-deploymentconfig-minimumhealthyhosts-type>
+                                 type' :: (Value Prelude.Text),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-minimumhealthyhosts.html#cfn-codedeploy-deploymentconfig-minimumhealthyhosts-value>
+                                 value :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMinimumHealthyHostsProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Integer -> MinimumHealthyHostsProperty
+mkMinimumHealthyHostsProperty type' value
+  = MinimumHealthyHostsProperty
+      {haddock_workaround_ = (), type' = type', value = value}
+instance ToResourceProperties MinimumHealthyHostsProperty where
+  toResourceProperties MinimumHealthyHostsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentConfig.MinimumHealthyHosts",
+         supportsTags = Prelude.False,
+         properties = ["Type" JSON..= type', "Value" JSON..= value]}
+instance JSON.ToJSON MinimumHealthyHostsProperty where
+  toJSON MinimumHealthyHostsProperty {..}
+    = JSON.object ["Type" JSON..= type', "Value" JSON..= value]
+instance Property "Type" MinimumHealthyHostsProperty where
+  type PropertyType "Type" MinimumHealthyHostsProperty = Value Prelude.Text
+  set newValue MinimumHealthyHostsProperty {..}
+    = MinimumHealthyHostsProperty {type' = newValue, ..}
+instance Property "Value" MinimumHealthyHostsProperty where
+  type PropertyType "Value" MinimumHealthyHostsProperty = Value Prelude.Integer
+  set newValue MinimumHealthyHostsProperty {..}
+    = MinimumHealthyHostsProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/MinimumHealthyHostsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MinimumHealthyHostsProperty :: Prelude.Type
+instance ToResourceProperties MinimumHealthyHostsProperty
+instance Prelude.Eq MinimumHealthyHostsProperty
+instance Prelude.Show MinimumHealthyHostsProperty
+instance JSON.ToJSON MinimumHealthyHostsProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedCanaryProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedCanaryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedCanaryProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedCanaryProperty (
+        TimeBasedCanaryProperty(..), mkTimeBasedCanaryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TimeBasedCanaryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-timebasedcanary.html>
+    TimeBasedCanaryProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-timebasedcanary.html#cfn-codedeploy-deploymentconfig-timebasedcanary-canaryinterval>
+                             canaryInterval :: (Value Prelude.Integer),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-timebasedcanary.html#cfn-codedeploy-deploymentconfig-timebasedcanary-canarypercentage>
+                             canaryPercentage :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTimeBasedCanaryProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer -> TimeBasedCanaryProperty
+mkTimeBasedCanaryProperty canaryInterval canaryPercentage
+  = TimeBasedCanaryProperty
+      {haddock_workaround_ = (), canaryInterval = canaryInterval,
+       canaryPercentage = canaryPercentage}
+instance ToResourceProperties TimeBasedCanaryProperty where
+  toResourceProperties TimeBasedCanaryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentConfig.TimeBasedCanary",
+         supportsTags = Prelude.False,
+         properties = ["CanaryInterval" JSON..= canaryInterval,
+                       "CanaryPercentage" JSON..= canaryPercentage]}
+instance JSON.ToJSON TimeBasedCanaryProperty where
+  toJSON TimeBasedCanaryProperty {..}
+    = JSON.object
+        ["CanaryInterval" JSON..= canaryInterval,
+         "CanaryPercentage" JSON..= canaryPercentage]
+instance Property "CanaryInterval" TimeBasedCanaryProperty where
+  type PropertyType "CanaryInterval" TimeBasedCanaryProperty = Value Prelude.Integer
+  set newValue TimeBasedCanaryProperty {..}
+    = TimeBasedCanaryProperty {canaryInterval = newValue, ..}
+instance Property "CanaryPercentage" TimeBasedCanaryProperty where
+  type PropertyType "CanaryPercentage" TimeBasedCanaryProperty = Value Prelude.Integer
+  set newValue TimeBasedCanaryProperty {..}
+    = TimeBasedCanaryProperty {canaryPercentage = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedCanaryProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedCanaryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedCanaryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedCanaryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TimeBasedCanaryProperty :: Prelude.Type
+instance ToResourceProperties TimeBasedCanaryProperty
+instance Prelude.Eq TimeBasedCanaryProperty
+instance Prelude.Show TimeBasedCanaryProperty
+instance JSON.ToJSON TimeBasedCanaryProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedLinearProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedLinearProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedLinearProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedLinearProperty (
+        TimeBasedLinearProperty(..), mkTimeBasedLinearProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TimeBasedLinearProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-timebasedlinear.html>
+    TimeBasedLinearProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-timebasedlinear.html#cfn-codedeploy-deploymentconfig-timebasedlinear-linearinterval>
+                             linearInterval :: (Value Prelude.Integer),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-timebasedlinear.html#cfn-codedeploy-deploymentconfig-timebasedlinear-linearpercentage>
+                             linearPercentage :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTimeBasedLinearProperty ::
+  Value Prelude.Integer
+  -> Value Prelude.Integer -> TimeBasedLinearProperty
+mkTimeBasedLinearProperty linearInterval linearPercentage
+  = TimeBasedLinearProperty
+      {haddock_workaround_ = (), linearInterval = linearInterval,
+       linearPercentage = linearPercentage}
+instance ToResourceProperties TimeBasedLinearProperty where
+  toResourceProperties TimeBasedLinearProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentConfig.TimeBasedLinear",
+         supportsTags = Prelude.False,
+         properties = ["LinearInterval" JSON..= linearInterval,
+                       "LinearPercentage" JSON..= linearPercentage]}
+instance JSON.ToJSON TimeBasedLinearProperty where
+  toJSON TimeBasedLinearProperty {..}
+    = JSON.object
+        ["LinearInterval" JSON..= linearInterval,
+         "LinearPercentage" JSON..= linearPercentage]
+instance Property "LinearInterval" TimeBasedLinearProperty where
+  type PropertyType "LinearInterval" TimeBasedLinearProperty = Value Prelude.Integer
+  set newValue TimeBasedLinearProperty {..}
+    = TimeBasedLinearProperty {linearInterval = newValue, ..}
+instance Property "LinearPercentage" TimeBasedLinearProperty where
+  type PropertyType "LinearPercentage" TimeBasedLinearProperty = Value Prelude.Integer
+  set newValue TimeBasedLinearProperty {..}
+    = TimeBasedLinearProperty {linearPercentage = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedLinearProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedLinearProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TimeBasedLinearProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedLinearProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TimeBasedLinearProperty :: Prelude.Type
+instance ToResourceProperties TimeBasedLinearProperty
+instance Prelude.Eq TimeBasedLinearProperty
+instance Prelude.Show TimeBasedLinearProperty
+instance JSON.ToJSON TimeBasedLinearProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/TrafficRoutingConfigProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TrafficRoutingConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TrafficRoutingConfigProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.TrafficRoutingConfigProperty (
+        module Exports, TrafficRoutingConfigProperty(..),
+        mkTrafficRoutingConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedCanaryProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedLinearProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TrafficRoutingConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-trafficroutingconfig.html>
+    TrafficRoutingConfigProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-trafficroutingconfig.html#cfn-codedeploy-deploymentconfig-trafficroutingconfig-timebasedcanary>
+                                  timeBasedCanary :: (Prelude.Maybe TimeBasedCanaryProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-trafficroutingconfig.html#cfn-codedeploy-deploymentconfig-trafficroutingconfig-timebasedlinear>
+                                  timeBasedLinear :: (Prelude.Maybe TimeBasedLinearProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-trafficroutingconfig.html#cfn-codedeploy-deploymentconfig-trafficroutingconfig-type>
+                                  type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTrafficRoutingConfigProperty ::
+  Value Prelude.Text -> TrafficRoutingConfigProperty
+mkTrafficRoutingConfigProperty type'
+  = TrafficRoutingConfigProperty
+      {haddock_workaround_ = (), type' = type',
+       timeBasedCanary = Prelude.Nothing,
+       timeBasedLinear = Prelude.Nothing}
+instance ToResourceProperties TrafficRoutingConfigProperty where
+  toResourceProperties TrafficRoutingConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentConfig.TrafficRoutingConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "TimeBasedCanary" Prelude.<$> timeBasedCanary,
+                               (JSON..=) "TimeBasedLinear" Prelude.<$> timeBasedLinear]))}
+instance JSON.ToJSON TrafficRoutingConfigProperty where
+  toJSON TrafficRoutingConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "TimeBasedCanary" Prelude.<$> timeBasedCanary,
+                  (JSON..=) "TimeBasedLinear" Prelude.<$> timeBasedLinear])))
+instance Property "TimeBasedCanary" TrafficRoutingConfigProperty where
+  type PropertyType "TimeBasedCanary" TrafficRoutingConfigProperty = TimeBasedCanaryProperty
+  set newValue TrafficRoutingConfigProperty {..}
+    = TrafficRoutingConfigProperty
+        {timeBasedCanary = Prelude.pure newValue, ..}
+instance Property "TimeBasedLinear" TrafficRoutingConfigProperty where
+  type PropertyType "TimeBasedLinear" TrafficRoutingConfigProperty = TimeBasedLinearProperty
+  set newValue TrafficRoutingConfigProperty {..}
+    = TrafficRoutingConfigProperty
+        {timeBasedLinear = Prelude.pure newValue, ..}
+instance Property "Type" TrafficRoutingConfigProperty where
+  type PropertyType "Type" TrafficRoutingConfigProperty = Value Prelude.Text
+  set newValue TrafficRoutingConfigProperty {..}
+    = TrafficRoutingConfigProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/TrafficRoutingConfigProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TrafficRoutingConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/TrafficRoutingConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.TrafficRoutingConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TrafficRoutingConfigProperty :: Prelude.Type
+instance ToResourceProperties TrafficRoutingConfigProperty
+instance Prelude.Eq TrafficRoutingConfigProperty
+instance Prelude.Show TrafficRoutingConfigProperty
+instance JSON.ToJSON TrafficRoutingConfigProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/ZonalConfigProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentConfig/ZonalConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/ZonalConfigProperty.hs
@@ -0,0 +1,65 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.ZonalConfigProperty (
+        module Exports, ZonalConfigProperty(..), mkZonalConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsPerZoneProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ZonalConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-zonalconfig.html>
+    ZonalConfigProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-zonalconfig.html#cfn-codedeploy-deploymentconfig-zonalconfig-firstzonemonitordurationinseconds>
+                         firstZoneMonitorDurationInSeconds :: (Prelude.Maybe (Value Prelude.Integer)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-zonalconfig.html#cfn-codedeploy-deploymentconfig-zonalconfig-minimumhealthyhostsperzone>
+                         minimumHealthyHostsPerZone :: (Prelude.Maybe MinimumHealthyHostsPerZoneProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentconfig-zonalconfig.html#cfn-codedeploy-deploymentconfig-zonalconfig-monitordurationinseconds>
+                         monitorDurationInSeconds :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkZonalConfigProperty :: ZonalConfigProperty
+mkZonalConfigProperty
+  = ZonalConfigProperty
+      {haddock_workaround_ = (),
+       firstZoneMonitorDurationInSeconds = Prelude.Nothing,
+       minimumHealthyHostsPerZone = Prelude.Nothing,
+       monitorDurationInSeconds = Prelude.Nothing}
+instance ToResourceProperties ZonalConfigProperty where
+  toResourceProperties ZonalConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentConfig.ZonalConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "FirstZoneMonitorDurationInSeconds"
+                              Prelude.<$> firstZoneMonitorDurationInSeconds,
+                            (JSON..=) "MinimumHealthyHostsPerZone"
+                              Prelude.<$> minimumHealthyHostsPerZone,
+                            (JSON..=) "MonitorDurationInSeconds"
+                              Prelude.<$> monitorDurationInSeconds])}
+instance JSON.ToJSON ZonalConfigProperty where
+  toJSON ZonalConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "FirstZoneMonitorDurationInSeconds"
+                 Prelude.<$> firstZoneMonitorDurationInSeconds,
+               (JSON..=) "MinimumHealthyHostsPerZone"
+                 Prelude.<$> minimumHealthyHostsPerZone,
+               (JSON..=) "MonitorDurationInSeconds"
+                 Prelude.<$> monitorDurationInSeconds]))
+instance Property "FirstZoneMonitorDurationInSeconds" ZonalConfigProperty where
+  type PropertyType "FirstZoneMonitorDurationInSeconds" ZonalConfigProperty = Value Prelude.Integer
+  set newValue ZonalConfigProperty {..}
+    = ZonalConfigProperty
+        {firstZoneMonitorDurationInSeconds = Prelude.pure newValue, ..}
+instance Property "MinimumHealthyHostsPerZone" ZonalConfigProperty where
+  type PropertyType "MinimumHealthyHostsPerZone" ZonalConfigProperty = MinimumHealthyHostsPerZoneProperty
+  set newValue ZonalConfigProperty {..}
+    = ZonalConfigProperty
+        {minimumHealthyHostsPerZone = Prelude.pure newValue, ..}
+instance Property "MonitorDurationInSeconds" ZonalConfigProperty where
+  type PropertyType "MonitorDurationInSeconds" ZonalConfigProperty = Value Prelude.Integer
+  set newValue ZonalConfigProperty {..}
+    = ZonalConfigProperty
+        {monitorDurationInSeconds = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentConfig/ZonalConfigProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentConfig/ZonalConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentConfig/ZonalConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentConfig.ZonalConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ZonalConfigProperty :: Prelude.Type
+instance ToResourceProperties ZonalConfigProperty
+instance Prelude.Eq ZonalConfigProperty
+instance Prelude.Show ZonalConfigProperty
+instance JSON.ToJSON ZonalConfigProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup.hs
@@ -0,0 +1,239 @@
+module Stratosphere.CodeDeploy.DeploymentGroup (
+        module Exports, DeploymentGroup(..), mkDeploymentGroup
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.AlarmConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.AutoRollbackConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.BlueGreenDeploymentConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.DeploymentProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.DeploymentStyleProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.EC2TagFilterProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.ECSServiceProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.LoadBalancerInfoProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.TagFilterProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.TriggerConfigProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data DeploymentGroup
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html>
+    DeploymentGroup {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-alarmconfiguration>
+                     alarmConfiguration :: (Prelude.Maybe AlarmConfigurationProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-applicationname>
+                     applicationName :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration>
+                     autoRollbackConfiguration :: (Prelude.Maybe AutoRollbackConfigurationProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-autoscalinggroups>
+                     autoScalingGroups :: (Prelude.Maybe (ValueList Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration>
+                     blueGreenDeploymentConfiguration :: (Prelude.Maybe BlueGreenDeploymentConfigurationProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deployment>
+                     deployment :: (Prelude.Maybe DeploymentProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentconfigname>
+                     deploymentConfigName :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentgroupname>
+                     deploymentGroupName :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-deploymentstyle>
+                     deploymentStyle :: (Prelude.Maybe DeploymentStyleProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ecsservices>
+                     eCSServices :: (Prelude.Maybe [ECSServiceProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ec2tagfilters>
+                     ec2TagFilters :: (Prelude.Maybe [EC2TagFilterProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-ec2tagset>
+                     ec2TagSet :: (Prelude.Maybe EC2TagSetProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo>
+                     loadBalancerInfo :: (Prelude.Maybe LoadBalancerInfoProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-onpremisesinstancetagfilters>
+                     onPremisesInstanceTagFilters :: (Prelude.Maybe [TagFilterProperty]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-onpremisestagset>
+                     onPremisesTagSet :: (Prelude.Maybe OnPremisesTagSetProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-outdatedinstancesstrategy>
+                     outdatedInstancesStrategy :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-servicerolearn>
+                     serviceRoleArn :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-tags>
+                     tags :: (Prelude.Maybe [Tag]),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-terminationhookenabled>
+                     terminationHookEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html#cfn-codedeploy-deploymentgroup-triggerconfigurations>
+                     triggerConfigurations :: (Prelude.Maybe [TriggerConfigProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeploymentGroup ::
+  Value Prelude.Text -> Value Prelude.Text -> DeploymentGroup
+mkDeploymentGroup applicationName serviceRoleArn
+  = DeploymentGroup
+      {haddock_workaround_ = (), applicationName = applicationName,
+       serviceRoleArn = serviceRoleArn,
+       alarmConfiguration = Prelude.Nothing,
+       autoRollbackConfiguration = Prelude.Nothing,
+       autoScalingGroups = Prelude.Nothing,
+       blueGreenDeploymentConfiguration = Prelude.Nothing,
+       deployment = Prelude.Nothing,
+       deploymentConfigName = Prelude.Nothing,
+       deploymentGroupName = Prelude.Nothing,
+       deploymentStyle = Prelude.Nothing, eCSServices = Prelude.Nothing,
+       ec2TagFilters = Prelude.Nothing, ec2TagSet = Prelude.Nothing,
+       loadBalancerInfo = Prelude.Nothing,
+       onPremisesInstanceTagFilters = Prelude.Nothing,
+       onPremisesTagSet = Prelude.Nothing,
+       outdatedInstancesStrategy = Prelude.Nothing,
+       tags = Prelude.Nothing, terminationHookEnabled = Prelude.Nothing,
+       triggerConfigurations = Prelude.Nothing}
+instance ToResourceProperties DeploymentGroup where
+  toResourceProperties DeploymentGroup {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ApplicationName" JSON..= applicationName,
+                            "ServiceRoleArn" JSON..= serviceRoleArn]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AlarmConfiguration" Prelude.<$> alarmConfiguration,
+                               (JSON..=) "AutoRollbackConfiguration"
+                                 Prelude.<$> autoRollbackConfiguration,
+                               (JSON..=) "AutoScalingGroups" Prelude.<$> autoScalingGroups,
+                               (JSON..=) "BlueGreenDeploymentConfiguration"
+                                 Prelude.<$> blueGreenDeploymentConfiguration,
+                               (JSON..=) "Deployment" Prelude.<$> deployment,
+                               (JSON..=) "DeploymentConfigName" Prelude.<$> deploymentConfigName,
+                               (JSON..=) "DeploymentGroupName" Prelude.<$> deploymentGroupName,
+                               (JSON..=) "DeploymentStyle" Prelude.<$> deploymentStyle,
+                               (JSON..=) "ECSServices" Prelude.<$> eCSServices,
+                               (JSON..=) "Ec2TagFilters" Prelude.<$> ec2TagFilters,
+                               (JSON..=) "Ec2TagSet" Prelude.<$> ec2TagSet,
+                               (JSON..=) "LoadBalancerInfo" Prelude.<$> loadBalancerInfo,
+                               (JSON..=) "OnPremisesInstanceTagFilters"
+                                 Prelude.<$> onPremisesInstanceTagFilters,
+                               (JSON..=) "OnPremisesTagSet" Prelude.<$> onPremisesTagSet,
+                               (JSON..=) "OutdatedInstancesStrategy"
+                                 Prelude.<$> outdatedInstancesStrategy,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "TerminationHookEnabled"
+                                 Prelude.<$> terminationHookEnabled,
+                               (JSON..=) "TriggerConfigurations"
+                                 Prelude.<$> triggerConfigurations]))}
+instance JSON.ToJSON DeploymentGroup where
+  toJSON DeploymentGroup {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ApplicationName" JSON..= applicationName,
+               "ServiceRoleArn" JSON..= serviceRoleArn]
+              (Prelude.catMaybes
+                 [(JSON..=) "AlarmConfiguration" Prelude.<$> alarmConfiguration,
+                  (JSON..=) "AutoRollbackConfiguration"
+                    Prelude.<$> autoRollbackConfiguration,
+                  (JSON..=) "AutoScalingGroups" Prelude.<$> autoScalingGroups,
+                  (JSON..=) "BlueGreenDeploymentConfiguration"
+                    Prelude.<$> blueGreenDeploymentConfiguration,
+                  (JSON..=) "Deployment" Prelude.<$> deployment,
+                  (JSON..=) "DeploymentConfigName" Prelude.<$> deploymentConfigName,
+                  (JSON..=) "DeploymentGroupName" Prelude.<$> deploymentGroupName,
+                  (JSON..=) "DeploymentStyle" Prelude.<$> deploymentStyle,
+                  (JSON..=) "ECSServices" Prelude.<$> eCSServices,
+                  (JSON..=) "Ec2TagFilters" Prelude.<$> ec2TagFilters,
+                  (JSON..=) "Ec2TagSet" Prelude.<$> ec2TagSet,
+                  (JSON..=) "LoadBalancerInfo" Prelude.<$> loadBalancerInfo,
+                  (JSON..=) "OnPremisesInstanceTagFilters"
+                    Prelude.<$> onPremisesInstanceTagFilters,
+                  (JSON..=) "OnPremisesTagSet" Prelude.<$> onPremisesTagSet,
+                  (JSON..=) "OutdatedInstancesStrategy"
+                    Prelude.<$> outdatedInstancesStrategy,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "TerminationHookEnabled"
+                    Prelude.<$> terminationHookEnabled,
+                  (JSON..=) "TriggerConfigurations"
+                    Prelude.<$> triggerConfigurations])))
+instance Property "AlarmConfiguration" DeploymentGroup where
+  type PropertyType "AlarmConfiguration" DeploymentGroup = AlarmConfigurationProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {alarmConfiguration = Prelude.pure newValue, ..}
+instance Property "ApplicationName" DeploymentGroup where
+  type PropertyType "ApplicationName" DeploymentGroup = Value Prelude.Text
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {applicationName = newValue, ..}
+instance Property "AutoRollbackConfiguration" DeploymentGroup where
+  type PropertyType "AutoRollbackConfiguration" DeploymentGroup = AutoRollbackConfigurationProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup
+        {autoRollbackConfiguration = Prelude.pure newValue, ..}
+instance Property "AutoScalingGroups" DeploymentGroup where
+  type PropertyType "AutoScalingGroups" DeploymentGroup = ValueList Prelude.Text
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {autoScalingGroups = Prelude.pure newValue, ..}
+instance Property "BlueGreenDeploymentConfiguration" DeploymentGroup where
+  type PropertyType "BlueGreenDeploymentConfiguration" DeploymentGroup = BlueGreenDeploymentConfigurationProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup
+        {blueGreenDeploymentConfiguration = Prelude.pure newValue, ..}
+instance Property "Deployment" DeploymentGroup where
+  type PropertyType "Deployment" DeploymentGroup = DeploymentProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {deployment = Prelude.pure newValue, ..}
+instance Property "DeploymentConfigName" DeploymentGroup where
+  type PropertyType "DeploymentConfigName" DeploymentGroup = Value Prelude.Text
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup
+        {deploymentConfigName = Prelude.pure newValue, ..}
+instance Property "DeploymentGroupName" DeploymentGroup where
+  type PropertyType "DeploymentGroupName" DeploymentGroup = Value Prelude.Text
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {deploymentGroupName = Prelude.pure newValue, ..}
+instance Property "DeploymentStyle" DeploymentGroup where
+  type PropertyType "DeploymentStyle" DeploymentGroup = DeploymentStyleProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {deploymentStyle = Prelude.pure newValue, ..}
+instance Property "ECSServices" DeploymentGroup where
+  type PropertyType "ECSServices" DeploymentGroup = [ECSServiceProperty]
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {eCSServices = Prelude.pure newValue, ..}
+instance Property "Ec2TagFilters" DeploymentGroup where
+  type PropertyType "Ec2TagFilters" DeploymentGroup = [EC2TagFilterProperty]
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {ec2TagFilters = Prelude.pure newValue, ..}
+instance Property "Ec2TagSet" DeploymentGroup where
+  type PropertyType "Ec2TagSet" DeploymentGroup = EC2TagSetProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {ec2TagSet = Prelude.pure newValue, ..}
+instance Property "LoadBalancerInfo" DeploymentGroup where
+  type PropertyType "LoadBalancerInfo" DeploymentGroup = LoadBalancerInfoProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {loadBalancerInfo = Prelude.pure newValue, ..}
+instance Property "OnPremisesInstanceTagFilters" DeploymentGroup where
+  type PropertyType "OnPremisesInstanceTagFilters" DeploymentGroup = [TagFilterProperty]
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup
+        {onPremisesInstanceTagFilters = Prelude.pure newValue, ..}
+instance Property "OnPremisesTagSet" DeploymentGroup where
+  type PropertyType "OnPremisesTagSet" DeploymentGroup = OnPremisesTagSetProperty
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {onPremisesTagSet = Prelude.pure newValue, ..}
+instance Property "OutdatedInstancesStrategy" DeploymentGroup where
+  type PropertyType "OutdatedInstancesStrategy" DeploymentGroup = Value Prelude.Text
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup
+        {outdatedInstancesStrategy = Prelude.pure newValue, ..}
+instance Property "ServiceRoleArn" DeploymentGroup where
+  type PropertyType "ServiceRoleArn" DeploymentGroup = Value Prelude.Text
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {serviceRoleArn = newValue, ..}
+instance Property "Tags" DeploymentGroup where
+  type PropertyType "Tags" DeploymentGroup = [Tag]
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup {tags = Prelude.pure newValue, ..}
+instance Property "TerminationHookEnabled" DeploymentGroup where
+  type PropertyType "TerminationHookEnabled" DeploymentGroup = Value Prelude.Bool
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup
+        {terminationHookEnabled = Prelude.pure newValue, ..}
+instance Property "TriggerConfigurations" DeploymentGroup where
+  type PropertyType "TriggerConfigurations" DeploymentGroup = [TriggerConfigProperty]
+  set newValue DeploymentGroup {..}
+    = DeploymentGroup
+        {triggerConfigurations = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmConfigurationProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmConfigurationProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.AlarmConfigurationProperty (
+        module Exports, AlarmConfigurationProperty(..),
+        mkAlarmConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.AlarmProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AlarmConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html>
+    AlarmConfigurationProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-alarms>
+                                alarms :: (Prelude.Maybe [AlarmProperty]),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-enabled>
+                                enabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarmconfiguration.html#cfn-codedeploy-deploymentgroup-alarmconfiguration-ignorepollalarmfailure>
+                                ignorePollAlarmFailure :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAlarmConfigurationProperty :: AlarmConfigurationProperty
+mkAlarmConfigurationProperty
+  = AlarmConfigurationProperty
+      {haddock_workaround_ = (), alarms = Prelude.Nothing,
+       enabled = Prelude.Nothing,
+       ignorePollAlarmFailure = Prelude.Nothing}
+instance ToResourceProperties AlarmConfigurationProperty where
+  toResourceProperties AlarmConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.AlarmConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Alarms" Prelude.<$> alarms,
+                            (JSON..=) "Enabled" Prelude.<$> enabled,
+                            (JSON..=) "IgnorePollAlarmFailure"
+                              Prelude.<$> ignorePollAlarmFailure])}
+instance JSON.ToJSON AlarmConfigurationProperty where
+  toJSON AlarmConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Alarms" Prelude.<$> alarms,
+               (JSON..=) "Enabled" Prelude.<$> enabled,
+               (JSON..=) "IgnorePollAlarmFailure"
+                 Prelude.<$> ignorePollAlarmFailure]))
+instance Property "Alarms" AlarmConfigurationProperty where
+  type PropertyType "Alarms" AlarmConfigurationProperty = [AlarmProperty]
+  set newValue AlarmConfigurationProperty {..}
+    = AlarmConfigurationProperty {alarms = Prelude.pure newValue, ..}
+instance Property "Enabled" AlarmConfigurationProperty where
+  type PropertyType "Enabled" AlarmConfigurationProperty = Value Prelude.Bool
+  set newValue AlarmConfigurationProperty {..}
+    = AlarmConfigurationProperty {enabled = Prelude.pure newValue, ..}
+instance Property "IgnorePollAlarmFailure" AlarmConfigurationProperty where
+  type PropertyType "IgnorePollAlarmFailure" AlarmConfigurationProperty = Value Prelude.Bool
+  set newValue AlarmConfigurationProperty {..}
+    = AlarmConfigurationProperty
+        {ignorePollAlarmFailure = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmConfigurationProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.AlarmConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AlarmConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AlarmConfigurationProperty
+instance Prelude.Eq AlarmConfigurationProperty
+instance Prelude.Show AlarmConfigurationProperty
+instance JSON.ToJSON AlarmConfigurationProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.AlarmProperty (
+        AlarmProperty(..), mkAlarmProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AlarmProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarm.html>
+    AlarmProperty {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-alarm.html#cfn-codedeploy-deploymentgroup-alarm-name>
+                   name :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAlarmProperty :: AlarmProperty
+mkAlarmProperty
+  = AlarmProperty {haddock_workaround_ = (), name = Prelude.Nothing}
+instance ToResourceProperties AlarmProperty where
+  toResourceProperties AlarmProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.Alarm",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Name" Prelude.<$> name])}
+instance JSON.ToJSON AlarmProperty where
+  toJSON AlarmProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Name" Prelude.<$> name]))
+instance Property "Name" AlarmProperty where
+  type PropertyType "Name" AlarmProperty = Value Prelude.Text
+  set newValue AlarmProperty {..}
+    = AlarmProperty {name = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AlarmProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.AlarmProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AlarmProperty :: Prelude.Type
+instance ToResourceProperties AlarmProperty
+instance Prelude.Eq AlarmProperty
+instance Prelude.Show AlarmProperty
+instance JSON.ToJSON AlarmProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/AutoRollbackConfigurationProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AutoRollbackConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AutoRollbackConfigurationProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.AutoRollbackConfigurationProperty (
+        AutoRollbackConfigurationProperty(..),
+        mkAutoRollbackConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AutoRollbackConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-autorollbackconfiguration.html>
+    AutoRollbackConfigurationProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-autorollbackconfiguration.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration-enabled>
+                                       enabled :: (Prelude.Maybe (Value Prelude.Bool)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-autorollbackconfiguration.html#cfn-codedeploy-deploymentgroup-autorollbackconfiguration-events>
+                                       events :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutoRollbackConfigurationProperty ::
+  AutoRollbackConfigurationProperty
+mkAutoRollbackConfigurationProperty
+  = AutoRollbackConfigurationProperty
+      {haddock_workaround_ = (), enabled = Prelude.Nothing,
+       events = Prelude.Nothing}
+instance ToResourceProperties AutoRollbackConfigurationProperty where
+  toResourceProperties AutoRollbackConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.AutoRollbackConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Enabled" Prelude.<$> enabled,
+                            (JSON..=) "Events" Prelude.<$> events])}
+instance JSON.ToJSON AutoRollbackConfigurationProperty where
+  toJSON AutoRollbackConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Enabled" Prelude.<$> enabled,
+               (JSON..=) "Events" Prelude.<$> events]))
+instance Property "Enabled" AutoRollbackConfigurationProperty where
+  type PropertyType "Enabled" AutoRollbackConfigurationProperty = Value Prelude.Bool
+  set newValue AutoRollbackConfigurationProperty {..}
+    = AutoRollbackConfigurationProperty
+        {enabled = Prelude.pure newValue, ..}
+instance Property "Events" AutoRollbackConfigurationProperty where
+  type PropertyType "Events" AutoRollbackConfigurationProperty = ValueList Prelude.Text
+  set newValue AutoRollbackConfigurationProperty {..}
+    = AutoRollbackConfigurationProperty
+        {events = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/AutoRollbackConfigurationProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AutoRollbackConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/AutoRollbackConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.AutoRollbackConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AutoRollbackConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AutoRollbackConfigurationProperty
+instance Prelude.Eq AutoRollbackConfigurationProperty
+instance Prelude.Show AutoRollbackConfigurationProperty
+instance JSON.ToJSON AutoRollbackConfigurationProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueGreenDeploymentConfigurationProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueGreenDeploymentConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueGreenDeploymentConfigurationProperty.hs
@@ -0,0 +1,68 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.BlueGreenDeploymentConfigurationProperty (
+        module Exports, BlueGreenDeploymentConfigurationProperty(..),
+        mkBlueGreenDeploymentConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.BlueInstanceTerminationOptionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.DeploymentReadyOptionProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.GreenFleetProvisioningOptionProperty as Exports
+import Stratosphere.ResourceProperties
+data BlueGreenDeploymentConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-bluegreendeploymentconfiguration.html>
+    BlueGreenDeploymentConfigurationProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-bluegreendeploymentconfiguration.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-deploymentreadyoption>
+                                              deploymentReadyOption :: (Prelude.Maybe DeploymentReadyOptionProperty),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-bluegreendeploymentconfiguration.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-greenfleetprovisioningoption>
+                                              greenFleetProvisioningOption :: (Prelude.Maybe GreenFleetProvisioningOptionProperty),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-bluegreendeploymentconfiguration.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-terminateblueinstancesondeploymentsuccess>
+                                              terminateBlueInstancesOnDeploymentSuccess :: (Prelude.Maybe BlueInstanceTerminationOptionProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBlueGreenDeploymentConfigurationProperty ::
+  BlueGreenDeploymentConfigurationProperty
+mkBlueGreenDeploymentConfigurationProperty
+  = BlueGreenDeploymentConfigurationProperty
+      {haddock_workaround_ = (), deploymentReadyOption = Prelude.Nothing,
+       greenFleetProvisioningOption = Prelude.Nothing,
+       terminateBlueInstancesOnDeploymentSuccess = Prelude.Nothing}
+instance ToResourceProperties BlueGreenDeploymentConfigurationProperty where
+  toResourceProperties BlueGreenDeploymentConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.BlueGreenDeploymentConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DeploymentReadyOption"
+                              Prelude.<$> deploymentReadyOption,
+                            (JSON..=) "GreenFleetProvisioningOption"
+                              Prelude.<$> greenFleetProvisioningOption,
+                            (JSON..=) "TerminateBlueInstancesOnDeploymentSuccess"
+                              Prelude.<$> terminateBlueInstancesOnDeploymentSuccess])}
+instance JSON.ToJSON BlueGreenDeploymentConfigurationProperty where
+  toJSON BlueGreenDeploymentConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DeploymentReadyOption"
+                 Prelude.<$> deploymentReadyOption,
+               (JSON..=) "GreenFleetProvisioningOption"
+                 Prelude.<$> greenFleetProvisioningOption,
+               (JSON..=) "TerminateBlueInstancesOnDeploymentSuccess"
+                 Prelude.<$> terminateBlueInstancesOnDeploymentSuccess]))
+instance Property "DeploymentReadyOption" BlueGreenDeploymentConfigurationProperty where
+  type PropertyType "DeploymentReadyOption" BlueGreenDeploymentConfigurationProperty = DeploymentReadyOptionProperty
+  set newValue BlueGreenDeploymentConfigurationProperty {..}
+    = BlueGreenDeploymentConfigurationProperty
+        {deploymentReadyOption = Prelude.pure newValue, ..}
+instance Property "GreenFleetProvisioningOption" BlueGreenDeploymentConfigurationProperty where
+  type PropertyType "GreenFleetProvisioningOption" BlueGreenDeploymentConfigurationProperty = GreenFleetProvisioningOptionProperty
+  set newValue BlueGreenDeploymentConfigurationProperty {..}
+    = BlueGreenDeploymentConfigurationProperty
+        {greenFleetProvisioningOption = Prelude.pure newValue, ..}
+instance Property "TerminateBlueInstancesOnDeploymentSuccess" BlueGreenDeploymentConfigurationProperty where
+  type PropertyType "TerminateBlueInstancesOnDeploymentSuccess" BlueGreenDeploymentConfigurationProperty = BlueInstanceTerminationOptionProperty
+  set newValue BlueGreenDeploymentConfigurationProperty {..}
+    = BlueGreenDeploymentConfigurationProperty
+        {terminateBlueInstancesOnDeploymentSuccess = Prelude.pure newValue,
+         ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueGreenDeploymentConfigurationProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueGreenDeploymentConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueGreenDeploymentConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.BlueGreenDeploymentConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BlueGreenDeploymentConfigurationProperty :: Prelude.Type
+instance ToResourceProperties BlueGreenDeploymentConfigurationProperty
+instance Prelude.Eq BlueGreenDeploymentConfigurationProperty
+instance Prelude.Show BlueGreenDeploymentConfigurationProperty
+instance JSON.ToJSON BlueGreenDeploymentConfigurationProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueInstanceTerminationOptionProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueInstanceTerminationOptionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueInstanceTerminationOptionProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.BlueInstanceTerminationOptionProperty (
+        BlueInstanceTerminationOptionProperty(..),
+        mkBlueInstanceTerminationOptionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BlueInstanceTerminationOptionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-blueinstanceterminationoption.html>
+    BlueInstanceTerminationOptionProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-blueinstanceterminationoption.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-blueinstanceterminationoption-action>
+                                           action :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-blueinstanceterminationoption.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-blueinstanceterminationoption-terminationwaittimeinminutes>
+                                           terminationWaitTimeInMinutes :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBlueInstanceTerminationOptionProperty ::
+  BlueInstanceTerminationOptionProperty
+mkBlueInstanceTerminationOptionProperty
+  = BlueInstanceTerminationOptionProperty
+      {haddock_workaround_ = (), action = Prelude.Nothing,
+       terminationWaitTimeInMinutes = Prelude.Nothing}
+instance ToResourceProperties BlueInstanceTerminationOptionProperty where
+  toResourceProperties BlueInstanceTerminationOptionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.BlueInstanceTerminationOption",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Action" Prelude.<$> action,
+                            (JSON..=) "TerminationWaitTimeInMinutes"
+                              Prelude.<$> terminationWaitTimeInMinutes])}
+instance JSON.ToJSON BlueInstanceTerminationOptionProperty where
+  toJSON BlueInstanceTerminationOptionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Action" Prelude.<$> action,
+               (JSON..=) "TerminationWaitTimeInMinutes"
+                 Prelude.<$> terminationWaitTimeInMinutes]))
+instance Property "Action" BlueInstanceTerminationOptionProperty where
+  type PropertyType "Action" BlueInstanceTerminationOptionProperty = Value Prelude.Text
+  set newValue BlueInstanceTerminationOptionProperty {..}
+    = BlueInstanceTerminationOptionProperty
+        {action = Prelude.pure newValue, ..}
+instance Property "TerminationWaitTimeInMinutes" BlueInstanceTerminationOptionProperty where
+  type PropertyType "TerminationWaitTimeInMinutes" BlueInstanceTerminationOptionProperty = Value Prelude.Integer
+  set newValue BlueInstanceTerminationOptionProperty {..}
+    = BlueInstanceTerminationOptionProperty
+        {terminationWaitTimeInMinutes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueInstanceTerminationOptionProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueInstanceTerminationOptionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/BlueInstanceTerminationOptionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.BlueInstanceTerminationOptionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BlueInstanceTerminationOptionProperty :: Prelude.Type
+instance ToResourceProperties BlueInstanceTerminationOptionProperty
+instance Prelude.Eq BlueInstanceTerminationOptionProperty
+instance Prelude.Show BlueInstanceTerminationOptionProperty
+instance JSON.ToJSON BlueInstanceTerminationOptionProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.DeploymentProperty (
+        module Exports, DeploymentProperty(..), mkDeploymentProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.RevisionLocationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DeploymentProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html>
+    DeploymentProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-description>
+                        description :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-ignoreapplicationstopfailures>
+                        ignoreApplicationStopFailures :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision>
+                        revision :: RevisionLocationProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeploymentProperty ::
+  RevisionLocationProperty -> DeploymentProperty
+mkDeploymentProperty revision
+  = DeploymentProperty
+      {haddock_workaround_ = (), revision = revision,
+       description = Prelude.Nothing,
+       ignoreApplicationStopFailures = Prelude.Nothing}
+instance ToResourceProperties DeploymentProperty where
+  toResourceProperties DeploymentProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.Deployment",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Revision" JSON..= revision]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Description" Prelude.<$> description,
+                               (JSON..=) "IgnoreApplicationStopFailures"
+                                 Prelude.<$> ignoreApplicationStopFailures]))}
+instance JSON.ToJSON DeploymentProperty where
+  toJSON DeploymentProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Revision" JSON..= revision]
+              (Prelude.catMaybes
+                 [(JSON..=) "Description" Prelude.<$> description,
+                  (JSON..=) "IgnoreApplicationStopFailures"
+                    Prelude.<$> ignoreApplicationStopFailures])))
+instance Property "Description" DeploymentProperty where
+  type PropertyType "Description" DeploymentProperty = Value Prelude.Text
+  set newValue DeploymentProperty {..}
+    = DeploymentProperty {description = Prelude.pure newValue, ..}
+instance Property "IgnoreApplicationStopFailures" DeploymentProperty where
+  type PropertyType "IgnoreApplicationStopFailures" DeploymentProperty = Value Prelude.Bool
+  set newValue DeploymentProperty {..}
+    = DeploymentProperty
+        {ignoreApplicationStopFailures = Prelude.pure newValue, ..}
+instance Property "Revision" DeploymentProperty where
+  type PropertyType "Revision" DeploymentProperty = RevisionLocationProperty
+  set newValue DeploymentProperty {..}
+    = DeploymentProperty {revision = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.DeploymentProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DeploymentProperty :: Prelude.Type
+instance ToResourceProperties DeploymentProperty
+instance Prelude.Eq DeploymentProperty
+instance Prelude.Show DeploymentProperty
+instance JSON.ToJSON DeploymentProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentReadyOptionProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentReadyOptionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentReadyOptionProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.DeploymentReadyOptionProperty (
+        DeploymentReadyOptionProperty(..), mkDeploymentReadyOptionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DeploymentReadyOptionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentreadyoption.html>
+    DeploymentReadyOptionProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentreadyoption.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-deploymentreadyoption-actionontimeout>
+                                   actionOnTimeout :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentreadyoption.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-deploymentreadyoption-waittimeinminutes>
+                                   waitTimeInMinutes :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeploymentReadyOptionProperty :: DeploymentReadyOptionProperty
+mkDeploymentReadyOptionProperty
+  = DeploymentReadyOptionProperty
+      {haddock_workaround_ = (), actionOnTimeout = Prelude.Nothing,
+       waitTimeInMinutes = Prelude.Nothing}
+instance ToResourceProperties DeploymentReadyOptionProperty where
+  toResourceProperties DeploymentReadyOptionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.DeploymentReadyOption",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ActionOnTimeout" Prelude.<$> actionOnTimeout,
+                            (JSON..=) "WaitTimeInMinutes" Prelude.<$> waitTimeInMinutes])}
+instance JSON.ToJSON DeploymentReadyOptionProperty where
+  toJSON DeploymentReadyOptionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ActionOnTimeout" Prelude.<$> actionOnTimeout,
+               (JSON..=) "WaitTimeInMinutes" Prelude.<$> waitTimeInMinutes]))
+instance Property "ActionOnTimeout" DeploymentReadyOptionProperty where
+  type PropertyType "ActionOnTimeout" DeploymentReadyOptionProperty = Value Prelude.Text
+  set newValue DeploymentReadyOptionProperty {..}
+    = DeploymentReadyOptionProperty
+        {actionOnTimeout = Prelude.pure newValue, ..}
+instance Property "WaitTimeInMinutes" DeploymentReadyOptionProperty where
+  type PropertyType "WaitTimeInMinutes" DeploymentReadyOptionProperty = Value Prelude.Integer
+  set newValue DeploymentReadyOptionProperty {..}
+    = DeploymentReadyOptionProperty
+        {waitTimeInMinutes = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentReadyOptionProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentReadyOptionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentReadyOptionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.DeploymentReadyOptionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DeploymentReadyOptionProperty :: Prelude.Type
+instance ToResourceProperties DeploymentReadyOptionProperty
+instance Prelude.Eq DeploymentReadyOptionProperty
+instance Prelude.Show DeploymentReadyOptionProperty
+instance JSON.ToJSON DeploymentReadyOptionProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentStyleProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentStyleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentStyleProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.DeploymentStyleProperty (
+        DeploymentStyleProperty(..), mkDeploymentStyleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data DeploymentStyleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentstyle.html>
+    DeploymentStyleProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentstyle.html#cfn-codedeploy-deploymentgroup-deploymentstyle-deploymentoption>
+                             deploymentOption :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deploymentstyle.html#cfn-codedeploy-deploymentgroup-deploymentstyle-deploymenttype>
+                             deploymentType :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkDeploymentStyleProperty :: DeploymentStyleProperty
+mkDeploymentStyleProperty
+  = DeploymentStyleProperty
+      {haddock_workaround_ = (), deploymentOption = Prelude.Nothing,
+       deploymentType = Prelude.Nothing}
+instance ToResourceProperties DeploymentStyleProperty where
+  toResourceProperties DeploymentStyleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.DeploymentStyle",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DeploymentOption" Prelude.<$> deploymentOption,
+                            (JSON..=) "DeploymentType" Prelude.<$> deploymentType])}
+instance JSON.ToJSON DeploymentStyleProperty where
+  toJSON DeploymentStyleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DeploymentOption" Prelude.<$> deploymentOption,
+               (JSON..=) "DeploymentType" Prelude.<$> deploymentType]))
+instance Property "DeploymentOption" DeploymentStyleProperty where
+  type PropertyType "DeploymentOption" DeploymentStyleProperty = Value Prelude.Text
+  set newValue DeploymentStyleProperty {..}
+    = DeploymentStyleProperty
+        {deploymentOption = Prelude.pure newValue, ..}
+instance Property "DeploymentType" DeploymentStyleProperty where
+  type PropertyType "DeploymentType" DeploymentStyleProperty = Value Prelude.Text
+  set newValue DeploymentStyleProperty {..}
+    = DeploymentStyleProperty
+        {deploymentType = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentStyleProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentStyleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/DeploymentStyleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.DeploymentStyleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data DeploymentStyleProperty :: Prelude.Type
+instance ToResourceProperties DeploymentStyleProperty
+instance Prelude.Eq DeploymentStyleProperty
+instance Prelude.Show DeploymentStyleProperty
+instance JSON.ToJSON DeploymentStyleProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagFilterProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagFilterProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.EC2TagFilterProperty (
+        EC2TagFilterProperty(..), mkEC2TagFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EC2TagFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilter.html>
+    EC2TagFilterProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilter.html#cfn-codedeploy-deploymentgroup-ec2tagfilter-key>
+                          key :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilter.html#cfn-codedeploy-deploymentgroup-ec2tagfilter-type>
+                          type' :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagfilter.html#cfn-codedeploy-deploymentgroup-ec2tagfilter-value>
+                          value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEC2TagFilterProperty :: EC2TagFilterProperty
+mkEC2TagFilterProperty
+  = EC2TagFilterProperty
+      {haddock_workaround_ = (), key = Prelude.Nothing,
+       type' = Prelude.Nothing, value = Prelude.Nothing}
+instance ToResourceProperties EC2TagFilterProperty where
+  toResourceProperties EC2TagFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.EC2TagFilter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Key" Prelude.<$> key,
+                            (JSON..=) "Type" Prelude.<$> type',
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON EC2TagFilterProperty where
+  toJSON EC2TagFilterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Key" Prelude.<$> key,
+               (JSON..=) "Type" Prelude.<$> type',
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Key" EC2TagFilterProperty where
+  type PropertyType "Key" EC2TagFilterProperty = Value Prelude.Text
+  set newValue EC2TagFilterProperty {..}
+    = EC2TagFilterProperty {key = Prelude.pure newValue, ..}
+instance Property "Type" EC2TagFilterProperty where
+  type PropertyType "Type" EC2TagFilterProperty = Value Prelude.Text
+  set newValue EC2TagFilterProperty {..}
+    = EC2TagFilterProperty {type' = Prelude.pure newValue, ..}
+instance Property "Value" EC2TagFilterProperty where
+  type PropertyType "Value" EC2TagFilterProperty = Value Prelude.Text
+  set newValue EC2TagFilterProperty {..}
+    = EC2TagFilterProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagFilterProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.EC2TagFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EC2TagFilterProperty :: Prelude.Type
+instance ToResourceProperties EC2TagFilterProperty
+instance Prelude.Eq EC2TagFilterProperty
+instance Prelude.Show EC2TagFilterProperty
+instance JSON.ToJSON EC2TagFilterProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetListObjectProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetListObjectProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetListObjectProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetListObjectProperty (
+        module Exports, EC2TagSetListObjectProperty(..),
+        mkEC2TagSetListObjectProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.EC2TagFilterProperty as Exports
+import Stratosphere.ResourceProperties
+data EC2TagSetListObjectProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagsetlistobject.html>
+    EC2TagSetListObjectProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagsetlistobject.html#cfn-codedeploy-deploymentgroup-ec2tagsetlistobject-ec2taggroup>
+                                 ec2TagGroup :: (Prelude.Maybe [EC2TagFilterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEC2TagSetListObjectProperty :: EC2TagSetListObjectProperty
+mkEC2TagSetListObjectProperty
+  = EC2TagSetListObjectProperty
+      {haddock_workaround_ = (), ec2TagGroup = Prelude.Nothing}
+instance ToResourceProperties EC2TagSetListObjectProperty where
+  toResourceProperties EC2TagSetListObjectProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.EC2TagSetListObject",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Ec2TagGroup" Prelude.<$> ec2TagGroup])}
+instance JSON.ToJSON EC2TagSetListObjectProperty where
+  toJSON EC2TagSetListObjectProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Ec2TagGroup" Prelude.<$> ec2TagGroup]))
+instance Property "Ec2TagGroup" EC2TagSetListObjectProperty where
+  type PropertyType "Ec2TagGroup" EC2TagSetListObjectProperty = [EC2TagFilterProperty]
+  set newValue EC2TagSetListObjectProperty {..}
+    = EC2TagSetListObjectProperty
+        {ec2TagGroup = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetListObjectProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetListObjectProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetListObjectProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetListObjectProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EC2TagSetListObjectProperty :: Prelude.Type
+instance ToResourceProperties EC2TagSetListObjectProperty
+instance Prelude.Eq EC2TagSetListObjectProperty
+instance Prelude.Show EC2TagSetListObjectProperty
+instance JSON.ToJSON EC2TagSetListObjectProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetProperty.hs
@@ -0,0 +1,36 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetProperty (
+        module Exports, EC2TagSetProperty(..), mkEC2TagSetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetListObjectProperty as Exports
+import Stratosphere.ResourceProperties
+data EC2TagSetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagset.html>
+    EC2TagSetProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ec2tagset.html#cfn-codedeploy-deploymentgroup-ec2tagset-ec2tagsetlist>
+                       ec2TagSetList :: (Prelude.Maybe [EC2TagSetListObjectProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEC2TagSetProperty :: EC2TagSetProperty
+mkEC2TagSetProperty
+  = EC2TagSetProperty
+      {haddock_workaround_ = (), ec2TagSetList = Prelude.Nothing}
+instance ToResourceProperties EC2TagSetProperty where
+  toResourceProperties EC2TagSetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.EC2TagSet",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Ec2TagSetList" Prelude.<$> ec2TagSetList])}
+instance JSON.ToJSON EC2TagSetProperty where
+  toJSON EC2TagSetProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Ec2TagSetList" Prelude.<$> ec2TagSetList]))
+instance Property "Ec2TagSetList" EC2TagSetProperty where
+  type PropertyType "Ec2TagSetList" EC2TagSetProperty = [EC2TagSetListObjectProperty]
+  set newValue EC2TagSetProperty {..}
+    = EC2TagSetProperty {ec2TagSetList = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/EC2TagSetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EC2TagSetProperty :: Prelude.Type
+instance ToResourceProperties EC2TagSetProperty
+instance Prelude.Eq EC2TagSetProperty
+instance Prelude.Show EC2TagSetProperty
+instance JSON.ToJSON EC2TagSetProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/ECSServiceProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ECSServiceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ECSServiceProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.ECSServiceProperty (
+        ECSServiceProperty(..), mkECSServiceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ECSServiceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ecsservice.html>
+    ECSServiceProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ecsservice.html#cfn-codedeploy-deploymentgroup-ecsservice-clustername>
+                        clusterName :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-ecsservice.html#cfn-codedeploy-deploymentgroup-ecsservice-servicename>
+                        serviceName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkECSServiceProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> ECSServiceProperty
+mkECSServiceProperty clusterName serviceName
+  = ECSServiceProperty
+      {haddock_workaround_ = (), clusterName = clusterName,
+       serviceName = serviceName}
+instance ToResourceProperties ECSServiceProperty where
+  toResourceProperties ECSServiceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.ECSService",
+         supportsTags = Prelude.False,
+         properties = ["ClusterName" JSON..= clusterName,
+                       "ServiceName" JSON..= serviceName]}
+instance JSON.ToJSON ECSServiceProperty where
+  toJSON ECSServiceProperty {..}
+    = JSON.object
+        ["ClusterName" JSON..= clusterName,
+         "ServiceName" JSON..= serviceName]
+instance Property "ClusterName" ECSServiceProperty where
+  type PropertyType "ClusterName" ECSServiceProperty = Value Prelude.Text
+  set newValue ECSServiceProperty {..}
+    = ECSServiceProperty {clusterName = newValue, ..}
+instance Property "ServiceName" ECSServiceProperty where
+  type PropertyType "ServiceName" ECSServiceProperty = Value Prelude.Text
+  set newValue ECSServiceProperty {..}
+    = ECSServiceProperty {serviceName = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/ECSServiceProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ECSServiceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ECSServiceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.ECSServiceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ECSServiceProperty :: Prelude.Type
+instance ToResourceProperties ECSServiceProperty
+instance Prelude.Eq ECSServiceProperty
+instance Prelude.Show ECSServiceProperty
+instance JSON.ToJSON ECSServiceProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/ELBInfoProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ELBInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ELBInfoProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.ELBInfoProperty (
+        ELBInfoProperty(..), mkELBInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ELBInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-elbinfo.html>
+    ELBInfoProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-elbinfo.html#cfn-codedeploy-deploymentgroup-elbinfo-name>
+                     name :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkELBInfoProperty :: ELBInfoProperty
+mkELBInfoProperty
+  = ELBInfoProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing}
+instance ToResourceProperties ELBInfoProperty where
+  toResourceProperties ELBInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.ELBInfo",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Name" Prelude.<$> name])}
+instance JSON.ToJSON ELBInfoProperty where
+  toJSON ELBInfoProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Name" Prelude.<$> name]))
+instance Property "Name" ELBInfoProperty where
+  type PropertyType "Name" ELBInfoProperty = Value Prelude.Text
+  set newValue ELBInfoProperty {..}
+    = ELBInfoProperty {name = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/ELBInfoProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ELBInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/ELBInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.ELBInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ELBInfoProperty :: Prelude.Type
+instance ToResourceProperties ELBInfoProperty
+instance Prelude.Eq ELBInfoProperty
+instance Prelude.Show ELBInfoProperty
+instance JSON.ToJSON ELBInfoProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/GitHubLocationProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GitHubLocationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GitHubLocationProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.GitHubLocationProperty (
+        GitHubLocationProperty(..), mkGitHubLocationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GitHubLocationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html>
+    GitHubLocationProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-githublocation-commitid>
+                            commitId :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-githublocation.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-githublocation-repository>
+                            repository :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGitHubLocationProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> GitHubLocationProperty
+mkGitHubLocationProperty commitId repository
+  = GitHubLocationProperty
+      {haddock_workaround_ = (), commitId = commitId,
+       repository = repository}
+instance ToResourceProperties GitHubLocationProperty where
+  toResourceProperties GitHubLocationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.GitHubLocation",
+         supportsTags = Prelude.False,
+         properties = ["CommitId" JSON..= commitId,
+                       "Repository" JSON..= repository]}
+instance JSON.ToJSON GitHubLocationProperty where
+  toJSON GitHubLocationProperty {..}
+    = JSON.object
+        ["CommitId" JSON..= commitId, "Repository" JSON..= repository]
+instance Property "CommitId" GitHubLocationProperty where
+  type PropertyType "CommitId" GitHubLocationProperty = Value Prelude.Text
+  set newValue GitHubLocationProperty {..}
+    = GitHubLocationProperty {commitId = newValue, ..}
+instance Property "Repository" GitHubLocationProperty where
+  type PropertyType "Repository" GitHubLocationProperty = Value Prelude.Text
+  set newValue GitHubLocationProperty {..}
+    = GitHubLocationProperty {repository = newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/GitHubLocationProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GitHubLocationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GitHubLocationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.GitHubLocationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GitHubLocationProperty :: Prelude.Type
+instance ToResourceProperties GitHubLocationProperty
+instance Prelude.Eq GitHubLocationProperty
+instance Prelude.Show GitHubLocationProperty
+instance JSON.ToJSON GitHubLocationProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/GreenFleetProvisioningOptionProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GreenFleetProvisioningOptionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GreenFleetProvisioningOptionProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.GreenFleetProvisioningOptionProperty (
+        GreenFleetProvisioningOptionProperty(..),
+        mkGreenFleetProvisioningOptionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data GreenFleetProvisioningOptionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-greenfleetprovisioningoption.html>
+    GreenFleetProvisioningOptionProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-greenfleetprovisioningoption.html#cfn-codedeploy-deploymentgroup-bluegreendeploymentconfiguration-greenfleetprovisioningoption-action>
+                                          action :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkGreenFleetProvisioningOptionProperty ::
+  GreenFleetProvisioningOptionProperty
+mkGreenFleetProvisioningOptionProperty
+  = GreenFleetProvisioningOptionProperty
+      {haddock_workaround_ = (), action = Prelude.Nothing}
+instance ToResourceProperties GreenFleetProvisioningOptionProperty where
+  toResourceProperties GreenFleetProvisioningOptionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.GreenFleetProvisioningOption",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Action" Prelude.<$> action])}
+instance JSON.ToJSON GreenFleetProvisioningOptionProperty where
+  toJSON GreenFleetProvisioningOptionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Action" Prelude.<$> action]))
+instance Property "Action" GreenFleetProvisioningOptionProperty where
+  type PropertyType "Action" GreenFleetProvisioningOptionProperty = Value Prelude.Text
+  set newValue GreenFleetProvisioningOptionProperty {..}
+    = GreenFleetProvisioningOptionProperty
+        {action = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/GreenFleetProvisioningOptionProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GreenFleetProvisioningOptionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/GreenFleetProvisioningOptionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.GreenFleetProvisioningOptionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data GreenFleetProvisioningOptionProperty :: Prelude.Type
+instance ToResourceProperties GreenFleetProvisioningOptionProperty
+instance Prelude.Eq GreenFleetProvisioningOptionProperty
+instance Prelude.Show GreenFleetProvisioningOptionProperty
+instance JSON.ToJSON GreenFleetProvisioningOptionProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/LoadBalancerInfoProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/LoadBalancerInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/LoadBalancerInfoProperty.hs
@@ -0,0 +1,62 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.LoadBalancerInfoProperty (
+        module Exports, LoadBalancerInfoProperty(..),
+        mkLoadBalancerInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.ELBInfoProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupInfoProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupPairInfoProperty as Exports
+import Stratosphere.ResourceProperties
+data LoadBalancerInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html>
+    LoadBalancerInfoProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo-elbinfolist>
+                              elbInfoList :: (Prelude.Maybe [ELBInfoProperty]),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo-targetgroupinfolist>
+                              targetGroupInfoList :: (Prelude.Maybe [TargetGroupInfoProperty]),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-loadbalancerinfo.html#cfn-codedeploy-deploymentgroup-loadbalancerinfo-targetgrouppairinfolist>
+                              targetGroupPairInfoList :: (Prelude.Maybe [TargetGroupPairInfoProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLoadBalancerInfoProperty :: LoadBalancerInfoProperty
+mkLoadBalancerInfoProperty
+  = LoadBalancerInfoProperty
+      {haddock_workaround_ = (), elbInfoList = Prelude.Nothing,
+       targetGroupInfoList = Prelude.Nothing,
+       targetGroupPairInfoList = Prelude.Nothing}
+instance ToResourceProperties LoadBalancerInfoProperty where
+  toResourceProperties LoadBalancerInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.LoadBalancerInfo",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ElbInfoList" Prelude.<$> elbInfoList,
+                            (JSON..=) "TargetGroupInfoList" Prelude.<$> targetGroupInfoList,
+                            (JSON..=) "TargetGroupPairInfoList"
+                              Prelude.<$> targetGroupPairInfoList])}
+instance JSON.ToJSON LoadBalancerInfoProperty where
+  toJSON LoadBalancerInfoProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ElbInfoList" Prelude.<$> elbInfoList,
+               (JSON..=) "TargetGroupInfoList" Prelude.<$> targetGroupInfoList,
+               (JSON..=) "TargetGroupPairInfoList"
+                 Prelude.<$> targetGroupPairInfoList]))
+instance Property "ElbInfoList" LoadBalancerInfoProperty where
+  type PropertyType "ElbInfoList" LoadBalancerInfoProperty = [ELBInfoProperty]
+  set newValue LoadBalancerInfoProperty {..}
+    = LoadBalancerInfoProperty
+        {elbInfoList = Prelude.pure newValue, ..}
+instance Property "TargetGroupInfoList" LoadBalancerInfoProperty where
+  type PropertyType "TargetGroupInfoList" LoadBalancerInfoProperty = [TargetGroupInfoProperty]
+  set newValue LoadBalancerInfoProperty {..}
+    = LoadBalancerInfoProperty
+        {targetGroupInfoList = Prelude.pure newValue, ..}
+instance Property "TargetGroupPairInfoList" LoadBalancerInfoProperty where
+  type PropertyType "TargetGroupPairInfoList" LoadBalancerInfoProperty = [TargetGroupPairInfoProperty]
+  set newValue LoadBalancerInfoProperty {..}
+    = LoadBalancerInfoProperty
+        {targetGroupPairInfoList = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/LoadBalancerInfoProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/LoadBalancerInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/LoadBalancerInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.LoadBalancerInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LoadBalancerInfoProperty :: Prelude.Type
+instance ToResourceProperties LoadBalancerInfoProperty
+instance Prelude.Eq LoadBalancerInfoProperty
+instance Prelude.Show LoadBalancerInfoProperty
+instance JSON.ToJSON LoadBalancerInfoProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetListObjectProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetListObjectProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetListObjectProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetListObjectProperty (
+        module Exports, OnPremisesTagSetListObjectProperty(..),
+        mkOnPremisesTagSetListObjectProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.TagFilterProperty as Exports
+import Stratosphere.ResourceProperties
+data OnPremisesTagSetListObjectProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisestagsetlistobject.html>
+    OnPremisesTagSetListObjectProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisestagsetlistobject.html#cfn-codedeploy-deploymentgroup-onpremisestagsetlistobject-onpremisestaggroup>
+                                        onPremisesTagGroup :: (Prelude.Maybe [TagFilterProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOnPremisesTagSetListObjectProperty ::
+  OnPremisesTagSetListObjectProperty
+mkOnPremisesTagSetListObjectProperty
+  = OnPremisesTagSetListObjectProperty
+      {haddock_workaround_ = (), onPremisesTagGroup = Prelude.Nothing}
+instance ToResourceProperties OnPremisesTagSetListObjectProperty where
+  toResourceProperties OnPremisesTagSetListObjectProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.OnPremisesTagSetListObject",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "OnPremisesTagGroup" Prelude.<$> onPremisesTagGroup])}
+instance JSON.ToJSON OnPremisesTagSetListObjectProperty where
+  toJSON OnPremisesTagSetListObjectProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "OnPremisesTagGroup" Prelude.<$> onPremisesTagGroup]))
+instance Property "OnPremisesTagGroup" OnPremisesTagSetListObjectProperty where
+  type PropertyType "OnPremisesTagGroup" OnPremisesTagSetListObjectProperty = [TagFilterProperty]
+  set newValue OnPremisesTagSetListObjectProperty {..}
+    = OnPremisesTagSetListObjectProperty
+        {onPremisesTagGroup = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetListObjectProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetListObjectProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetListObjectProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetListObjectProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OnPremisesTagSetListObjectProperty :: Prelude.Type
+instance ToResourceProperties OnPremisesTagSetListObjectProperty
+instance Prelude.Eq OnPremisesTagSetListObjectProperty
+instance Prelude.Show OnPremisesTagSetListObjectProperty
+instance JSON.ToJSON OnPremisesTagSetListObjectProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetProperty (
+        module Exports, OnPremisesTagSetProperty(..),
+        mkOnPremisesTagSetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetListObjectProperty as Exports
+import Stratosphere.ResourceProperties
+data OnPremisesTagSetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisestagset.html>
+    OnPremisesTagSetProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-onpremisestagset.html#cfn-codedeploy-deploymentgroup-onpremisestagset-onpremisestagsetlist>
+                              onPremisesTagSetList :: (Prelude.Maybe [OnPremisesTagSetListObjectProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOnPremisesTagSetProperty :: OnPremisesTagSetProperty
+mkOnPremisesTagSetProperty
+  = OnPremisesTagSetProperty
+      {haddock_workaround_ = (), onPremisesTagSetList = Prelude.Nothing}
+instance ToResourceProperties OnPremisesTagSetProperty where
+  toResourceProperties OnPremisesTagSetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.OnPremisesTagSet",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "OnPremisesTagSetList"
+                              Prelude.<$> onPremisesTagSetList])}
+instance JSON.ToJSON OnPremisesTagSetProperty where
+  toJSON OnPremisesTagSetProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "OnPremisesTagSetList"
+                 Prelude.<$> onPremisesTagSetList]))
+instance Property "OnPremisesTagSetList" OnPremisesTagSetProperty where
+  type PropertyType "OnPremisesTagSetList" OnPremisesTagSetProperty = [OnPremisesTagSetListObjectProperty]
+  set newValue OnPremisesTagSetProperty {..}
+    = OnPremisesTagSetProperty
+        {onPremisesTagSetList = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/OnPremisesTagSetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OnPremisesTagSetProperty :: Prelude.Type
+instance ToResourceProperties OnPremisesTagSetProperty
+instance Prelude.Eq OnPremisesTagSetProperty
+instance Prelude.Show OnPremisesTagSetProperty
+instance JSON.ToJSON OnPremisesTagSetProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/RevisionLocationProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/RevisionLocationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/RevisionLocationProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.RevisionLocationProperty (
+        module Exports, RevisionLocationProperty(..),
+        mkRevisionLocationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.GitHubLocationProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.S3LocationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data RevisionLocationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html>
+    RevisionLocationProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-githublocation>
+                              gitHubLocation :: (Prelude.Maybe GitHubLocationProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-revisiontype>
+                              revisionType :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location>
+                              s3Location :: (Prelude.Maybe S3LocationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkRevisionLocationProperty :: RevisionLocationProperty
+mkRevisionLocationProperty
+  = RevisionLocationProperty
+      {haddock_workaround_ = (), gitHubLocation = Prelude.Nothing,
+       revisionType = Prelude.Nothing, s3Location = Prelude.Nothing}
+instance ToResourceProperties RevisionLocationProperty where
+  toResourceProperties RevisionLocationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.RevisionLocation",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "GitHubLocation" Prelude.<$> gitHubLocation,
+                            (JSON..=) "RevisionType" Prelude.<$> revisionType,
+                            (JSON..=) "S3Location" Prelude.<$> s3Location])}
+instance JSON.ToJSON RevisionLocationProperty where
+  toJSON RevisionLocationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "GitHubLocation" Prelude.<$> gitHubLocation,
+               (JSON..=) "RevisionType" Prelude.<$> revisionType,
+               (JSON..=) "S3Location" Prelude.<$> s3Location]))
+instance Property "GitHubLocation" RevisionLocationProperty where
+  type PropertyType "GitHubLocation" RevisionLocationProperty = GitHubLocationProperty
+  set newValue RevisionLocationProperty {..}
+    = RevisionLocationProperty
+        {gitHubLocation = Prelude.pure newValue, ..}
+instance Property "RevisionType" RevisionLocationProperty where
+  type PropertyType "RevisionType" RevisionLocationProperty = Value Prelude.Text
+  set newValue RevisionLocationProperty {..}
+    = RevisionLocationProperty
+        {revisionType = Prelude.pure newValue, ..}
+instance Property "S3Location" RevisionLocationProperty where
+  type PropertyType "S3Location" RevisionLocationProperty = S3LocationProperty
+  set newValue RevisionLocationProperty {..}
+    = RevisionLocationProperty {s3Location = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/RevisionLocationProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/RevisionLocationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/RevisionLocationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.RevisionLocationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data RevisionLocationProperty :: Prelude.Type
+instance ToResourceProperties RevisionLocationProperty
+instance Prelude.Eq RevisionLocationProperty
+instance Prelude.Show RevisionLocationProperty
+instance JSON.ToJSON RevisionLocationProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/S3LocationProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/S3LocationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/S3LocationProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.S3LocationProperty (
+        S3LocationProperty(..), mkS3LocationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3LocationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html>
+    S3LocationProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-bucket>
+                        bucket :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-bundletype>
+                        bundleType :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-etag>
+                        eTag :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-key>
+                        key :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-deployment-revision-s3location.html#cfn-properties-codedeploy-deploymentgroup-deployment-revision-s3location-value>
+                        version :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3LocationProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> S3LocationProperty
+mkS3LocationProperty bucket key
+  = S3LocationProperty
+      {haddock_workaround_ = (), bucket = bucket, key = key,
+       bundleType = Prelude.Nothing, eTag = Prelude.Nothing,
+       version = Prelude.Nothing}
+instance ToResourceProperties S3LocationProperty where
+  toResourceProperties S3LocationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.S3Location",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Bucket" JSON..= bucket, "Key" JSON..= key]
+                           (Prelude.catMaybes
+                              [(JSON..=) "BundleType" Prelude.<$> bundleType,
+                               (JSON..=) "ETag" Prelude.<$> eTag,
+                               (JSON..=) "Version" Prelude.<$> version]))}
+instance JSON.ToJSON S3LocationProperty where
+  toJSON S3LocationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Bucket" JSON..= bucket, "Key" JSON..= key]
+              (Prelude.catMaybes
+                 [(JSON..=) "BundleType" Prelude.<$> bundleType,
+                  (JSON..=) "ETag" Prelude.<$> eTag,
+                  (JSON..=) "Version" Prelude.<$> version])))
+instance Property "Bucket" S3LocationProperty where
+  type PropertyType "Bucket" S3LocationProperty = Value Prelude.Text
+  set newValue S3LocationProperty {..}
+    = S3LocationProperty {bucket = newValue, ..}
+instance Property "BundleType" S3LocationProperty where
+  type PropertyType "BundleType" S3LocationProperty = Value Prelude.Text
+  set newValue S3LocationProperty {..}
+    = S3LocationProperty {bundleType = Prelude.pure newValue, ..}
+instance Property "ETag" S3LocationProperty where
+  type PropertyType "ETag" S3LocationProperty = Value Prelude.Text
+  set newValue S3LocationProperty {..}
+    = S3LocationProperty {eTag = Prelude.pure newValue, ..}
+instance Property "Key" S3LocationProperty where
+  type PropertyType "Key" S3LocationProperty = Value Prelude.Text
+  set newValue S3LocationProperty {..}
+    = S3LocationProperty {key = newValue, ..}
+instance Property "Version" S3LocationProperty where
+  type PropertyType "Version" S3LocationProperty = Value Prelude.Text
+  set newValue S3LocationProperty {..}
+    = S3LocationProperty {version = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/S3LocationProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/S3LocationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/S3LocationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.S3LocationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3LocationProperty :: Prelude.Type
+instance ToResourceProperties S3LocationProperty
+instance Prelude.Eq S3LocationProperty
+instance Prelude.Show S3LocationProperty
+instance JSON.ToJSON S3LocationProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TagFilterProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TagFilterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TagFilterProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TagFilterProperty (
+        TagFilterProperty(..), mkTagFilterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagFilterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-tagfilter.html>
+    TagFilterProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-tagfilter.html#cfn-codedeploy-deploymentgroup-tagfilter-key>
+                       key :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-tagfilter.html#cfn-codedeploy-deploymentgroup-tagfilter-type>
+                       type' :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-tagfilter.html#cfn-codedeploy-deploymentgroup-tagfilter-value>
+                       value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagFilterProperty :: TagFilterProperty
+mkTagFilterProperty
+  = TagFilterProperty
+      {haddock_workaround_ = (), key = Prelude.Nothing,
+       type' = Prelude.Nothing, value = Prelude.Nothing}
+instance ToResourceProperties TagFilterProperty where
+  toResourceProperties TagFilterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.TagFilter",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Key" Prelude.<$> key,
+                            (JSON..=) "Type" Prelude.<$> type',
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON TagFilterProperty where
+  toJSON TagFilterProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Key" Prelude.<$> key,
+               (JSON..=) "Type" Prelude.<$> type',
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Key" TagFilterProperty where
+  type PropertyType "Key" TagFilterProperty = Value Prelude.Text
+  set newValue TagFilterProperty {..}
+    = TagFilterProperty {key = Prelude.pure newValue, ..}
+instance Property "Type" TagFilterProperty where
+  type PropertyType "Type" TagFilterProperty = Value Prelude.Text
+  set newValue TagFilterProperty {..}
+    = TagFilterProperty {type' = Prelude.pure newValue, ..}
+instance Property "Value" TagFilterProperty where
+  type PropertyType "Value" TagFilterProperty = Value Prelude.Text
+  set newValue TagFilterProperty {..}
+    = TagFilterProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TagFilterProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TagFilterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TagFilterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TagFilterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagFilterProperty :: Prelude.Type
+instance ToResourceProperties TagFilterProperty
+instance Prelude.Eq TagFilterProperty
+instance Prelude.Show TagFilterProperty
+instance JSON.ToJSON TagFilterProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupInfoProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupInfoProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupInfoProperty (
+        TargetGroupInfoProperty(..), mkTargetGroupInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetGroupInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgroupinfo.html>
+    TargetGroupInfoProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgroupinfo.html#cfn-codedeploy-deploymentgroup-targetgroupinfo-name>
+                             name :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetGroupInfoProperty :: TargetGroupInfoProperty
+mkTargetGroupInfoProperty
+  = TargetGroupInfoProperty
+      {haddock_workaround_ = (), name = Prelude.Nothing}
+instance ToResourceProperties TargetGroupInfoProperty where
+  toResourceProperties TargetGroupInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.TargetGroupInfo",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Name" Prelude.<$> name])}
+instance JSON.ToJSON TargetGroupInfoProperty where
+  toJSON TargetGroupInfoProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Name" Prelude.<$> name]))
+instance Property "Name" TargetGroupInfoProperty where
+  type PropertyType "Name" TargetGroupInfoProperty = Value Prelude.Text
+  set newValue TargetGroupInfoProperty {..}
+    = TargetGroupInfoProperty {name = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupInfoProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetGroupInfoProperty :: Prelude.Type
+instance ToResourceProperties TargetGroupInfoProperty
+instance Prelude.Eq TargetGroupInfoProperty
+instance Prelude.Show TargetGroupInfoProperty
+instance JSON.ToJSON TargetGroupInfoProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupPairInfoProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupPairInfoProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupPairInfoProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupPairInfoProperty (
+        module Exports, TargetGroupPairInfoProperty(..),
+        mkTargetGroupPairInfoProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupInfoProperty as Exports
+import {-# SOURCE #-} Stratosphere.CodeDeploy.DeploymentGroup.TrafficRouteProperty as Exports
+import Stratosphere.ResourceProperties
+data TargetGroupPairInfoProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgrouppairinfo.html>
+    TargetGroupPairInfoProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgrouppairinfo.html#cfn-codedeploy-deploymentgroup-targetgrouppairinfo-prodtrafficroute>
+                                 prodTrafficRoute :: (Prelude.Maybe TrafficRouteProperty),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgrouppairinfo.html#cfn-codedeploy-deploymentgroup-targetgrouppairinfo-targetgroups>
+                                 targetGroups :: (Prelude.Maybe [TargetGroupInfoProperty]),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-targetgrouppairinfo.html#cfn-codedeploy-deploymentgroup-targetgrouppairinfo-testtrafficroute>
+                                 testTrafficRoute :: (Prelude.Maybe TrafficRouteProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetGroupPairInfoProperty :: TargetGroupPairInfoProperty
+mkTargetGroupPairInfoProperty
+  = TargetGroupPairInfoProperty
+      {haddock_workaround_ = (), prodTrafficRoute = Prelude.Nothing,
+       targetGroups = Prelude.Nothing, testTrafficRoute = Prelude.Nothing}
+instance ToResourceProperties TargetGroupPairInfoProperty where
+  toResourceProperties TargetGroupPairInfoProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.TargetGroupPairInfo",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ProdTrafficRoute" Prelude.<$> prodTrafficRoute,
+                            (JSON..=) "TargetGroups" Prelude.<$> targetGroups,
+                            (JSON..=) "TestTrafficRoute" Prelude.<$> testTrafficRoute])}
+instance JSON.ToJSON TargetGroupPairInfoProperty where
+  toJSON TargetGroupPairInfoProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ProdTrafficRoute" Prelude.<$> prodTrafficRoute,
+               (JSON..=) "TargetGroups" Prelude.<$> targetGroups,
+               (JSON..=) "TestTrafficRoute" Prelude.<$> testTrafficRoute]))
+instance Property "ProdTrafficRoute" TargetGroupPairInfoProperty where
+  type PropertyType "ProdTrafficRoute" TargetGroupPairInfoProperty = TrafficRouteProperty
+  set newValue TargetGroupPairInfoProperty {..}
+    = TargetGroupPairInfoProperty
+        {prodTrafficRoute = Prelude.pure newValue, ..}
+instance Property "TargetGroups" TargetGroupPairInfoProperty where
+  type PropertyType "TargetGroups" TargetGroupPairInfoProperty = [TargetGroupInfoProperty]
+  set newValue TargetGroupPairInfoProperty {..}
+    = TargetGroupPairInfoProperty
+        {targetGroups = Prelude.pure newValue, ..}
+instance Property "TestTrafficRoute" TargetGroupPairInfoProperty where
+  type PropertyType "TestTrafficRoute" TargetGroupPairInfoProperty = TrafficRouteProperty
+  set newValue TargetGroupPairInfoProperty {..}
+    = TargetGroupPairInfoProperty
+        {testTrafficRoute = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupPairInfoProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupPairInfoProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TargetGroupPairInfoProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupPairInfoProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetGroupPairInfoProperty :: Prelude.Type
+instance ToResourceProperties TargetGroupPairInfoProperty
+instance Prelude.Eq TargetGroupPairInfoProperty
+instance Prelude.Show TargetGroupPairInfoProperty
+instance JSON.ToJSON TargetGroupPairInfoProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TrafficRouteProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TrafficRouteProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TrafficRouteProperty.hs
@@ -0,0 +1,36 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TrafficRouteProperty (
+        TrafficRouteProperty(..), mkTrafficRouteProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TrafficRouteProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-trafficroute.html>
+    TrafficRouteProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-trafficroute.html#cfn-codedeploy-deploymentgroup-trafficroute-listenerarns>
+                          listenerArns :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTrafficRouteProperty :: TrafficRouteProperty
+mkTrafficRouteProperty
+  = TrafficRouteProperty
+      {haddock_workaround_ = (), listenerArns = Prelude.Nothing}
+instance ToResourceProperties TrafficRouteProperty where
+  toResourceProperties TrafficRouteProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.TrafficRoute",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ListenerArns" Prelude.<$> listenerArns])}
+instance JSON.ToJSON TrafficRouteProperty where
+  toJSON TrafficRouteProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ListenerArns" Prelude.<$> listenerArns]))
+instance Property "ListenerArns" TrafficRouteProperty where
+  type PropertyType "ListenerArns" TrafficRouteProperty = ValueList Prelude.Text
+  set newValue TrafficRouteProperty {..}
+    = TrafficRouteProperty {listenerArns = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TrafficRouteProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TrafficRouteProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TrafficRouteProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TrafficRouteProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TrafficRouteProperty :: Prelude.Type
+instance ToResourceProperties TrafficRouteProperty
+instance Prelude.Eq TrafficRouteProperty
+instance Prelude.Show TrafficRouteProperty
+instance JSON.ToJSON TrafficRouteProperty
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TriggerConfigProperty.hs b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TriggerConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TriggerConfigProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TriggerConfigProperty (
+        TriggerConfigProperty(..), mkTriggerConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TriggerConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html>
+    TriggerConfigProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggerevents>
+                           triggerEvents :: (Prelude.Maybe (ValueList Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggername>
+                           triggerName :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codedeploy-deploymentgroup-triggerconfig.html#cfn-codedeploy-deploymentgroup-triggerconfig-triggertargetarn>
+                           triggerTargetArn :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTriggerConfigProperty :: TriggerConfigProperty
+mkTriggerConfigProperty
+  = TriggerConfigProperty
+      {haddock_workaround_ = (), triggerEvents = Prelude.Nothing,
+       triggerName = Prelude.Nothing, triggerTargetArn = Prelude.Nothing}
+instance ToResourceProperties TriggerConfigProperty where
+  toResourceProperties TriggerConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::CodeDeploy::DeploymentGroup.TriggerConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "TriggerEvents" Prelude.<$> triggerEvents,
+                            (JSON..=) "TriggerName" Prelude.<$> triggerName,
+                            (JSON..=) "TriggerTargetArn" Prelude.<$> triggerTargetArn])}
+instance JSON.ToJSON TriggerConfigProperty where
+  toJSON TriggerConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "TriggerEvents" Prelude.<$> triggerEvents,
+               (JSON..=) "TriggerName" Prelude.<$> triggerName,
+               (JSON..=) "TriggerTargetArn" Prelude.<$> triggerTargetArn]))
+instance Property "TriggerEvents" TriggerConfigProperty where
+  type PropertyType "TriggerEvents" TriggerConfigProperty = ValueList Prelude.Text
+  set newValue TriggerConfigProperty {..}
+    = TriggerConfigProperty {triggerEvents = Prelude.pure newValue, ..}
+instance Property "TriggerName" TriggerConfigProperty where
+  type PropertyType "TriggerName" TriggerConfigProperty = Value Prelude.Text
+  set newValue TriggerConfigProperty {..}
+    = TriggerConfigProperty {triggerName = Prelude.pure newValue, ..}
+instance Property "TriggerTargetArn" TriggerConfigProperty where
+  type PropertyType "TriggerTargetArn" TriggerConfigProperty = Value Prelude.Text
+  set newValue TriggerConfigProperty {..}
+    = TriggerConfigProperty
+        {triggerTargetArn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/CodeDeploy/DeploymentGroup/TriggerConfigProperty.hs-boot b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TriggerConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/CodeDeploy/DeploymentGroup/TriggerConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.CodeDeploy.DeploymentGroup.TriggerConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TriggerConfigProperty :: Prelude.Type
+instance ToResourceProperties TriggerConfigProperty
+instance Prelude.Eq TriggerConfigProperty
+instance Prelude.Show TriggerConfigProperty
+instance JSON.ToJSON TriggerConfigProperty
diff --git a/stratosphere-codedeploy.cabal b/stratosphere-codedeploy.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-codedeploy.cabal
@@ -0,0 +1,106 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-codedeploy
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS CodeDeploy.
+description:    Integration into stratosphere to generate resources and properties for AWS CodeDeploy
+category:       AWS, Cloud, CodeDeploy
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.CodeDeploy.Application
+      Stratosphere.CodeDeploy.DeploymentConfig
+      Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsPerZoneProperty
+      Stratosphere.CodeDeploy.DeploymentConfig.MinimumHealthyHostsProperty
+      Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedCanaryProperty
+      Stratosphere.CodeDeploy.DeploymentConfig.TimeBasedLinearProperty
+      Stratosphere.CodeDeploy.DeploymentConfig.TrafficRoutingConfigProperty
+      Stratosphere.CodeDeploy.DeploymentConfig.ZonalConfigProperty
+      Stratosphere.CodeDeploy.DeploymentGroup
+      Stratosphere.CodeDeploy.DeploymentGroup.AlarmConfigurationProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.AlarmProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.AutoRollbackConfigurationProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.BlueGreenDeploymentConfigurationProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.BlueInstanceTerminationOptionProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.DeploymentProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.DeploymentReadyOptionProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.DeploymentStyleProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.EC2TagFilterProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetListObjectProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.EC2TagSetProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.ECSServiceProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.ELBInfoProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.GitHubLocationProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.GreenFleetProvisioningOptionProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.LoadBalancerInfoProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetListObjectProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.OnPremisesTagSetProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.RevisionLocationProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.S3LocationProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.TagFilterProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupInfoProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.TargetGroupPairInfoProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.TrafficRouteProperty
+      Stratosphere.CodeDeploy.DeploymentGroup.TriggerConfigProperty
+  other-modules:
+      Paths_stratosphere_codedeploy
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
