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/AutoScaling/AutoScalingGroup.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup.hs
@@ -0,0 +1,380 @@
+module Stratosphere.AutoScaling.AutoScalingGroup (
+        module Exports, AutoScalingGroup(..), mkAutoScalingGroup
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneDistributionProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneImpairmentPolicyProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.InstanceMaintenancePolicyProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LifecycleHookSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.MetricsCollectionProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.MixedInstancesPolicyProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.NotificationConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.TagPropertyProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.TrafficSourceIdentifierProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AutoScalingGroup
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html>
+    AutoScalingGroup {haddock_workaround_ :: (),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-autoscalinggroupname>
+                      autoScalingGroupName :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzonedistribution>
+                      availabilityZoneDistribution :: (Prelude.Maybe AvailabilityZoneDistributionProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzoneimpairmentpolicy>
+                      availabilityZoneImpairmentPolicy :: (Prelude.Maybe AvailabilityZoneImpairmentPolicyProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-availabilityzones>
+                      availabilityZones :: (Prelude.Maybe (ValueList Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-capacityrebalance>
+                      capacityRebalance :: (Prelude.Maybe (Value Prelude.Bool)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-capacityreservationspecification>
+                      capacityReservationSpecification :: (Prelude.Maybe CapacityReservationSpecificationProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-context>
+                      context :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-cooldown>
+                      cooldown :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-defaultinstancewarmup>
+                      defaultInstanceWarmup :: (Prelude.Maybe (Value Prelude.Integer)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacity>
+                      desiredCapacity :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-desiredcapacitytype>
+                      desiredCapacityType :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthcheckgraceperiod>
+                      healthCheckGracePeriod :: (Prelude.Maybe (Value Prelude.Integer)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-healthchecktype>
+                      healthCheckType :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instanceid>
+                      instanceId :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-instancemaintenancepolicy>
+                      instanceMaintenancePolicy :: (Prelude.Maybe InstanceMaintenancePolicyProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchconfigurationname>
+                      launchConfigurationName :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-launchtemplate>
+                      launchTemplate :: (Prelude.Maybe LaunchTemplateSpecificationProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecificationlist>
+                      lifecycleHookSpecificationList :: (Prelude.Maybe [LifecycleHookSpecificationProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-loadbalancernames>
+                      loadBalancerNames :: (Prelude.Maybe (ValueList Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxinstancelifetime>
+                      maxInstanceLifetime :: (Prelude.Maybe (Value Prelude.Integer)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-maxsize>
+                      maxSize :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-metricscollection>
+                      metricsCollection :: (Prelude.Maybe [MetricsCollectionProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-minsize>
+                      minSize :: (Value Prelude.Text),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-mixedinstancespolicy>
+                      mixedInstancesPolicy :: (Prelude.Maybe MixedInstancesPolicyProperty),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-newinstancesprotectedfromscalein>
+                      newInstancesProtectedFromScaleIn :: (Prelude.Maybe (Value Prelude.Bool)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-notificationconfigurations>
+                      notificationConfigurations :: (Prelude.Maybe [NotificationConfigurationProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-placementgroup>
+                      placementGroup :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-servicelinkedrolearn>
+                      serviceLinkedRoleARN :: (Prelude.Maybe (Value Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-skipzonalshiftvalidation>
+                      skipZonalShiftValidation :: (Prelude.Maybe (Value Prelude.Bool)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-tags>
+                      tags :: (Prelude.Maybe [TagPropertyProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-targetgrouparns>
+                      targetGroupARNs :: (Prelude.Maybe (ValueList Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-terminationpolicies>
+                      terminationPolicies :: (Prelude.Maybe (ValueList Prelude.Text)),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-trafficsources>
+                      trafficSources :: (Prelude.Maybe [TrafficSourceIdentifierProperty]),
+                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-autoscalinggroup.html#cfn-autoscaling-autoscalinggroup-vpczoneidentifier>
+                      vPCZoneIdentifier :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAutoScalingGroup ::
+  Value Prelude.Text -> Value Prelude.Text -> AutoScalingGroup
+mkAutoScalingGroup maxSize minSize
+  = AutoScalingGroup
+      {haddock_workaround_ = (), maxSize = maxSize, minSize = minSize,
+       autoScalingGroupName = Prelude.Nothing,
+       availabilityZoneDistribution = Prelude.Nothing,
+       availabilityZoneImpairmentPolicy = Prelude.Nothing,
+       availabilityZones = Prelude.Nothing,
+       capacityRebalance = Prelude.Nothing,
+       capacityReservationSpecification = Prelude.Nothing,
+       context = Prelude.Nothing, cooldown = Prelude.Nothing,
+       defaultInstanceWarmup = Prelude.Nothing,
+       desiredCapacity = Prelude.Nothing,
+       desiredCapacityType = Prelude.Nothing,
+       healthCheckGracePeriod = Prelude.Nothing,
+       healthCheckType = Prelude.Nothing, instanceId = Prelude.Nothing,
+       instanceMaintenancePolicy = Prelude.Nothing,
+       launchConfigurationName = Prelude.Nothing,
+       launchTemplate = Prelude.Nothing,
+       lifecycleHookSpecificationList = Prelude.Nothing,
+       loadBalancerNames = Prelude.Nothing,
+       maxInstanceLifetime = Prelude.Nothing,
+       metricsCollection = Prelude.Nothing,
+       mixedInstancesPolicy = Prelude.Nothing,
+       newInstancesProtectedFromScaleIn = Prelude.Nothing,
+       notificationConfigurations = Prelude.Nothing,
+       placementGroup = Prelude.Nothing,
+       serviceLinkedRoleARN = Prelude.Nothing,
+       skipZonalShiftValidation = Prelude.Nothing, tags = Prelude.Nothing,
+       targetGroupARNs = Prelude.Nothing,
+       terminationPolicies = Prelude.Nothing,
+       trafficSources = Prelude.Nothing,
+       vPCZoneIdentifier = Prelude.Nothing}
+instance ToResourceProperties AutoScalingGroup where
+  toResourceProperties AutoScalingGroup {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MaxSize" JSON..= maxSize, "MinSize" JSON..= minSize]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AutoScalingGroupName" Prelude.<$> autoScalingGroupName,
+                               (JSON..=) "AvailabilityZoneDistribution"
+                                 Prelude.<$> availabilityZoneDistribution,
+                               (JSON..=) "AvailabilityZoneImpairmentPolicy"
+                                 Prelude.<$> availabilityZoneImpairmentPolicy,
+                               (JSON..=) "AvailabilityZones" Prelude.<$> availabilityZones,
+                               (JSON..=) "CapacityRebalance" Prelude.<$> capacityRebalance,
+                               (JSON..=) "CapacityReservationSpecification"
+                                 Prelude.<$> capacityReservationSpecification,
+                               (JSON..=) "Context" Prelude.<$> context,
+                               (JSON..=) "Cooldown" Prelude.<$> cooldown,
+                               (JSON..=) "DefaultInstanceWarmup"
+                                 Prelude.<$> defaultInstanceWarmup,
+                               (JSON..=) "DesiredCapacity" Prelude.<$> desiredCapacity,
+                               (JSON..=) "DesiredCapacityType" Prelude.<$> desiredCapacityType,
+                               (JSON..=) "HealthCheckGracePeriod"
+                                 Prelude.<$> healthCheckGracePeriod,
+                               (JSON..=) "HealthCheckType" Prelude.<$> healthCheckType,
+                               (JSON..=) "InstanceId" Prelude.<$> instanceId,
+                               (JSON..=) "InstanceMaintenancePolicy"
+                                 Prelude.<$> instanceMaintenancePolicy,
+                               (JSON..=) "LaunchConfigurationName"
+                                 Prelude.<$> launchConfigurationName,
+                               (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate,
+                               (JSON..=) "LifecycleHookSpecificationList"
+                                 Prelude.<$> lifecycleHookSpecificationList,
+                               (JSON..=) "LoadBalancerNames" Prelude.<$> loadBalancerNames,
+                               (JSON..=) "MaxInstanceLifetime" Prelude.<$> maxInstanceLifetime,
+                               (JSON..=) "MetricsCollection" Prelude.<$> metricsCollection,
+                               (JSON..=) "MixedInstancesPolicy" Prelude.<$> mixedInstancesPolicy,
+                               (JSON..=) "NewInstancesProtectedFromScaleIn"
+                                 Prelude.<$> newInstancesProtectedFromScaleIn,
+                               (JSON..=) "NotificationConfigurations"
+                                 Prelude.<$> notificationConfigurations,
+                               (JSON..=) "PlacementGroup" Prelude.<$> placementGroup,
+                               (JSON..=) "ServiceLinkedRoleARN" Prelude.<$> serviceLinkedRoleARN,
+                               (JSON..=) "SkipZonalShiftValidation"
+                                 Prelude.<$> skipZonalShiftValidation,
+                               (JSON..=) "Tags" Prelude.<$> tags,
+                               (JSON..=) "TargetGroupARNs" Prelude.<$> targetGroupARNs,
+                               (JSON..=) "TerminationPolicies" Prelude.<$> terminationPolicies,
+                               (JSON..=) "TrafficSources" Prelude.<$> trafficSources,
+                               (JSON..=) "VPCZoneIdentifier" Prelude.<$> vPCZoneIdentifier]))}
+instance JSON.ToJSON AutoScalingGroup where
+  toJSON AutoScalingGroup {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MaxSize" JSON..= maxSize, "MinSize" JSON..= minSize]
+              (Prelude.catMaybes
+                 [(JSON..=) "AutoScalingGroupName" Prelude.<$> autoScalingGroupName,
+                  (JSON..=) "AvailabilityZoneDistribution"
+                    Prelude.<$> availabilityZoneDistribution,
+                  (JSON..=) "AvailabilityZoneImpairmentPolicy"
+                    Prelude.<$> availabilityZoneImpairmentPolicy,
+                  (JSON..=) "AvailabilityZones" Prelude.<$> availabilityZones,
+                  (JSON..=) "CapacityRebalance" Prelude.<$> capacityRebalance,
+                  (JSON..=) "CapacityReservationSpecification"
+                    Prelude.<$> capacityReservationSpecification,
+                  (JSON..=) "Context" Prelude.<$> context,
+                  (JSON..=) "Cooldown" Prelude.<$> cooldown,
+                  (JSON..=) "DefaultInstanceWarmup"
+                    Prelude.<$> defaultInstanceWarmup,
+                  (JSON..=) "DesiredCapacity" Prelude.<$> desiredCapacity,
+                  (JSON..=) "DesiredCapacityType" Prelude.<$> desiredCapacityType,
+                  (JSON..=) "HealthCheckGracePeriod"
+                    Prelude.<$> healthCheckGracePeriod,
+                  (JSON..=) "HealthCheckType" Prelude.<$> healthCheckType,
+                  (JSON..=) "InstanceId" Prelude.<$> instanceId,
+                  (JSON..=) "InstanceMaintenancePolicy"
+                    Prelude.<$> instanceMaintenancePolicy,
+                  (JSON..=) "LaunchConfigurationName"
+                    Prelude.<$> launchConfigurationName,
+                  (JSON..=) "LaunchTemplate" Prelude.<$> launchTemplate,
+                  (JSON..=) "LifecycleHookSpecificationList"
+                    Prelude.<$> lifecycleHookSpecificationList,
+                  (JSON..=) "LoadBalancerNames" Prelude.<$> loadBalancerNames,
+                  (JSON..=) "MaxInstanceLifetime" Prelude.<$> maxInstanceLifetime,
+                  (JSON..=) "MetricsCollection" Prelude.<$> metricsCollection,
+                  (JSON..=) "MixedInstancesPolicy" Prelude.<$> mixedInstancesPolicy,
+                  (JSON..=) "NewInstancesProtectedFromScaleIn"
+                    Prelude.<$> newInstancesProtectedFromScaleIn,
+                  (JSON..=) "NotificationConfigurations"
+                    Prelude.<$> notificationConfigurations,
+                  (JSON..=) "PlacementGroup" Prelude.<$> placementGroup,
+                  (JSON..=) "ServiceLinkedRoleARN" Prelude.<$> serviceLinkedRoleARN,
+                  (JSON..=) "SkipZonalShiftValidation"
+                    Prelude.<$> skipZonalShiftValidation,
+                  (JSON..=) "Tags" Prelude.<$> tags,
+                  (JSON..=) "TargetGroupARNs" Prelude.<$> targetGroupARNs,
+                  (JSON..=) "TerminationPolicies" Prelude.<$> terminationPolicies,
+                  (JSON..=) "TrafficSources" Prelude.<$> trafficSources,
+                  (JSON..=) "VPCZoneIdentifier" Prelude.<$> vPCZoneIdentifier])))
+instance Property "AutoScalingGroupName" AutoScalingGroup where
+  type PropertyType "AutoScalingGroupName" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {autoScalingGroupName = Prelude.pure newValue, ..}
+instance Property "AvailabilityZoneDistribution" AutoScalingGroup where
+  type PropertyType "AvailabilityZoneDistribution" AutoScalingGroup = AvailabilityZoneDistributionProperty
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {availabilityZoneDistribution = Prelude.pure newValue, ..}
+instance Property "AvailabilityZoneImpairmentPolicy" AutoScalingGroup where
+  type PropertyType "AvailabilityZoneImpairmentPolicy" AutoScalingGroup = AvailabilityZoneImpairmentPolicyProperty
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {availabilityZoneImpairmentPolicy = Prelude.pure newValue, ..}
+instance Property "AvailabilityZones" AutoScalingGroup where
+  type PropertyType "AvailabilityZones" AutoScalingGroup = ValueList Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {availabilityZones = Prelude.pure newValue, ..}
+instance Property "CapacityRebalance" AutoScalingGroup where
+  type PropertyType "CapacityRebalance" AutoScalingGroup = Value Prelude.Bool
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {capacityRebalance = Prelude.pure newValue, ..}
+instance Property "CapacityReservationSpecification" AutoScalingGroup where
+  type PropertyType "CapacityReservationSpecification" AutoScalingGroup = CapacityReservationSpecificationProperty
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {capacityReservationSpecification = Prelude.pure newValue, ..}
+instance Property "Context" AutoScalingGroup where
+  type PropertyType "Context" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {context = Prelude.pure newValue, ..}
+instance Property "Cooldown" AutoScalingGroup where
+  type PropertyType "Cooldown" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {cooldown = Prelude.pure newValue, ..}
+instance Property "DefaultInstanceWarmup" AutoScalingGroup where
+  type PropertyType "DefaultInstanceWarmup" AutoScalingGroup = Value Prelude.Integer
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {defaultInstanceWarmup = Prelude.pure newValue, ..}
+instance Property "DesiredCapacity" AutoScalingGroup where
+  type PropertyType "DesiredCapacity" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {desiredCapacity = Prelude.pure newValue, ..}
+instance Property "DesiredCapacityType" AutoScalingGroup where
+  type PropertyType "DesiredCapacityType" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {desiredCapacityType = Prelude.pure newValue, ..}
+instance Property "HealthCheckGracePeriod" AutoScalingGroup where
+  type PropertyType "HealthCheckGracePeriod" AutoScalingGroup = Value Prelude.Integer
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {healthCheckGracePeriod = Prelude.pure newValue, ..}
+instance Property "HealthCheckType" AutoScalingGroup where
+  type PropertyType "HealthCheckType" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {healthCheckType = Prelude.pure newValue, ..}
+instance Property "InstanceId" AutoScalingGroup where
+  type PropertyType "InstanceId" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {instanceId = Prelude.pure newValue, ..}
+instance Property "InstanceMaintenancePolicy" AutoScalingGroup where
+  type PropertyType "InstanceMaintenancePolicy" AutoScalingGroup = InstanceMaintenancePolicyProperty
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {instanceMaintenancePolicy = Prelude.pure newValue, ..}
+instance Property "LaunchConfigurationName" AutoScalingGroup where
+  type PropertyType "LaunchConfigurationName" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {launchConfigurationName = Prelude.pure newValue, ..}
+instance Property "LaunchTemplate" AutoScalingGroup where
+  type PropertyType "LaunchTemplate" AutoScalingGroup = LaunchTemplateSpecificationProperty
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {launchTemplate = Prelude.pure newValue, ..}
+instance Property "LifecycleHookSpecificationList" AutoScalingGroup where
+  type PropertyType "LifecycleHookSpecificationList" AutoScalingGroup = [LifecycleHookSpecificationProperty]
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {lifecycleHookSpecificationList = Prelude.pure newValue, ..}
+instance Property "LoadBalancerNames" AutoScalingGroup where
+  type PropertyType "LoadBalancerNames" AutoScalingGroup = ValueList Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {loadBalancerNames = Prelude.pure newValue, ..}
+instance Property "MaxInstanceLifetime" AutoScalingGroup where
+  type PropertyType "MaxInstanceLifetime" AutoScalingGroup = Value Prelude.Integer
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {maxInstanceLifetime = Prelude.pure newValue, ..}
+instance Property "MaxSize" AutoScalingGroup where
+  type PropertyType "MaxSize" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {maxSize = newValue, ..}
+instance Property "MetricsCollection" AutoScalingGroup where
+  type PropertyType "MetricsCollection" AutoScalingGroup = [MetricsCollectionProperty]
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {metricsCollection = Prelude.pure newValue, ..}
+instance Property "MinSize" AutoScalingGroup where
+  type PropertyType "MinSize" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {minSize = newValue, ..}
+instance Property "MixedInstancesPolicy" AutoScalingGroup where
+  type PropertyType "MixedInstancesPolicy" AutoScalingGroup = MixedInstancesPolicyProperty
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {mixedInstancesPolicy = Prelude.pure newValue, ..}
+instance Property "NewInstancesProtectedFromScaleIn" AutoScalingGroup where
+  type PropertyType "NewInstancesProtectedFromScaleIn" AutoScalingGroup = Value Prelude.Bool
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {newInstancesProtectedFromScaleIn = Prelude.pure newValue, ..}
+instance Property "NotificationConfigurations" AutoScalingGroup where
+  type PropertyType "NotificationConfigurations" AutoScalingGroup = [NotificationConfigurationProperty]
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {notificationConfigurations = Prelude.pure newValue, ..}
+instance Property "PlacementGroup" AutoScalingGroup where
+  type PropertyType "PlacementGroup" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {placementGroup = Prelude.pure newValue, ..}
+instance Property "ServiceLinkedRoleARN" AutoScalingGroup where
+  type PropertyType "ServiceLinkedRoleARN" AutoScalingGroup = Value Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {serviceLinkedRoleARN = Prelude.pure newValue, ..}
+instance Property "SkipZonalShiftValidation" AutoScalingGroup where
+  type PropertyType "SkipZonalShiftValidation" AutoScalingGroup = Value Prelude.Bool
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {skipZonalShiftValidation = Prelude.pure newValue, ..}
+instance Property "Tags" AutoScalingGroup where
+  type PropertyType "Tags" AutoScalingGroup = [TagPropertyProperty]
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {tags = Prelude.pure newValue, ..}
+instance Property "TargetGroupARNs" AutoScalingGroup where
+  type PropertyType "TargetGroupARNs" AutoScalingGroup = ValueList Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {targetGroupARNs = Prelude.pure newValue, ..}
+instance Property "TerminationPolicies" AutoScalingGroup where
+  type PropertyType "TerminationPolicies" AutoScalingGroup = ValueList Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup
+        {terminationPolicies = Prelude.pure newValue, ..}
+instance Property "TrafficSources" AutoScalingGroup where
+  type PropertyType "TrafficSources" AutoScalingGroup = [TrafficSourceIdentifierProperty]
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {trafficSources = Prelude.pure newValue, ..}
+instance Property "VPCZoneIdentifier" AutoScalingGroup where
+  type PropertyType "VPCZoneIdentifier" AutoScalingGroup = ValueList Prelude.Text
+  set newValue AutoScalingGroup {..}
+    = AutoScalingGroup {vPCZoneIdentifier = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorCountRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorCountRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorCountRequestProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorCountRequestProperty (
+        AcceleratorCountRequestProperty(..),
+        mkAcceleratorCountRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AcceleratorCountRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-acceleratorcountrequest.html>
+    AcceleratorCountRequestProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-acceleratorcountrequest.html#cfn-autoscaling-autoscalinggroup-acceleratorcountrequest-max>
+                                     max :: (Prelude.Maybe (Value Prelude.Integer)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-acceleratorcountrequest.html#cfn-autoscaling-autoscalinggroup-acceleratorcountrequest-min>
+                                     min :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAcceleratorCountRequestProperty ::
+  AcceleratorCountRequestProperty
+mkAcceleratorCountRequestProperty
+  = AcceleratorCountRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties AcceleratorCountRequestProperty where
+  toResourceProperties AcceleratorCountRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.AcceleratorCountRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON AcceleratorCountRequestProperty where
+  toJSON AcceleratorCountRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" AcceleratorCountRequestProperty where
+  type PropertyType "Max" AcceleratorCountRequestProperty = Value Prelude.Integer
+  set newValue AcceleratorCountRequestProperty {..}
+    = AcceleratorCountRequestProperty {max = Prelude.pure newValue, ..}
+instance Property "Min" AcceleratorCountRequestProperty where
+  type PropertyType "Min" AcceleratorCountRequestProperty = Value Prelude.Integer
+  set newValue AcceleratorCountRequestProperty {..}
+    = AcceleratorCountRequestProperty {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorCountRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorCountRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorCountRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorCountRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AcceleratorCountRequestProperty :: Prelude.Type
+instance ToResourceProperties AcceleratorCountRequestProperty
+instance Prelude.Eq AcceleratorCountRequestProperty
+instance Prelude.Show AcceleratorCountRequestProperty
+instance JSON.ToJSON AcceleratorCountRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorTotalMemoryMiBRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorTotalMemoryMiBRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorTotalMemoryMiBRequestProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorTotalMemoryMiBRequestProperty (
+        AcceleratorTotalMemoryMiBRequestProperty(..),
+        mkAcceleratorTotalMemoryMiBRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AcceleratorTotalMemoryMiBRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-acceleratortotalmemorymibrequest.html>
+    AcceleratorTotalMemoryMiBRequestProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-acceleratortotalmemorymibrequest.html#cfn-autoscaling-autoscalinggroup-acceleratortotalmemorymibrequest-max>
+                                              max :: (Prelude.Maybe (Value Prelude.Integer)),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-acceleratortotalmemorymibrequest.html#cfn-autoscaling-autoscalinggroup-acceleratortotalmemorymibrequest-min>
+                                              min :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAcceleratorTotalMemoryMiBRequestProperty ::
+  AcceleratorTotalMemoryMiBRequestProperty
+mkAcceleratorTotalMemoryMiBRequestProperty
+  = AcceleratorTotalMemoryMiBRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties AcceleratorTotalMemoryMiBRequestProperty where
+  toResourceProperties AcceleratorTotalMemoryMiBRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.AcceleratorTotalMemoryMiBRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON AcceleratorTotalMemoryMiBRequestProperty where
+  toJSON AcceleratorTotalMemoryMiBRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" AcceleratorTotalMemoryMiBRequestProperty where
+  type PropertyType "Max" AcceleratorTotalMemoryMiBRequestProperty = Value Prelude.Integer
+  set newValue AcceleratorTotalMemoryMiBRequestProperty {..}
+    = AcceleratorTotalMemoryMiBRequestProperty
+        {max = Prelude.pure newValue, ..}
+instance Property "Min" AcceleratorTotalMemoryMiBRequestProperty where
+  type PropertyType "Min" AcceleratorTotalMemoryMiBRequestProperty = Value Prelude.Integer
+  set newValue AcceleratorTotalMemoryMiBRequestProperty {..}
+    = AcceleratorTotalMemoryMiBRequestProperty
+        {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorTotalMemoryMiBRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorTotalMemoryMiBRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AcceleratorTotalMemoryMiBRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorTotalMemoryMiBRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AcceleratorTotalMemoryMiBRequestProperty :: Prelude.Type
+instance ToResourceProperties AcceleratorTotalMemoryMiBRequestProperty
+instance Prelude.Eq AcceleratorTotalMemoryMiBRequestProperty
+instance Prelude.Show AcceleratorTotalMemoryMiBRequestProperty
+instance JSON.ToJSON AcceleratorTotalMemoryMiBRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneDistributionProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneDistributionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneDistributionProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneDistributionProperty (
+        AvailabilityZoneDistributionProperty(..),
+        mkAvailabilityZoneDistributionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AvailabilityZoneDistributionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-availabilityzonedistribution.html>
+    AvailabilityZoneDistributionProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-availabilityzonedistribution.html#cfn-autoscaling-autoscalinggroup-availabilityzonedistribution-capacitydistributionstrategy>
+                                          capacityDistributionStrategy :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAvailabilityZoneDistributionProperty ::
+  AvailabilityZoneDistributionProperty
+mkAvailabilityZoneDistributionProperty
+  = AvailabilityZoneDistributionProperty
+      {haddock_workaround_ = (),
+       capacityDistributionStrategy = Prelude.Nothing}
+instance ToResourceProperties AvailabilityZoneDistributionProperty where
+  toResourceProperties AvailabilityZoneDistributionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.AvailabilityZoneDistribution",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CapacityDistributionStrategy"
+                              Prelude.<$> capacityDistributionStrategy])}
+instance JSON.ToJSON AvailabilityZoneDistributionProperty where
+  toJSON AvailabilityZoneDistributionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CapacityDistributionStrategy"
+                 Prelude.<$> capacityDistributionStrategy]))
+instance Property "CapacityDistributionStrategy" AvailabilityZoneDistributionProperty where
+  type PropertyType "CapacityDistributionStrategy" AvailabilityZoneDistributionProperty = Value Prelude.Text
+  set newValue AvailabilityZoneDistributionProperty {..}
+    = AvailabilityZoneDistributionProperty
+        {capacityDistributionStrategy = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneDistributionProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneDistributionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneDistributionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneDistributionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AvailabilityZoneDistributionProperty :: Prelude.Type
+instance ToResourceProperties AvailabilityZoneDistributionProperty
+instance Prelude.Eq AvailabilityZoneDistributionProperty
+instance Prelude.Show AvailabilityZoneDistributionProperty
+instance JSON.ToJSON AvailabilityZoneDistributionProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneImpairmentPolicyProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneImpairmentPolicyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneImpairmentPolicyProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneImpairmentPolicyProperty (
+        AvailabilityZoneImpairmentPolicyProperty(..),
+        mkAvailabilityZoneImpairmentPolicyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AvailabilityZoneImpairmentPolicyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-availabilityzoneimpairmentpolicy.html>
+    AvailabilityZoneImpairmentPolicyProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-availabilityzoneimpairmentpolicy.html#cfn-autoscaling-autoscalinggroup-availabilityzoneimpairmentpolicy-impairedzonehealthcheckbehavior>
+                                              impairedZoneHealthCheckBehavior :: (Value Prelude.Text),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-availabilityzoneimpairmentpolicy.html#cfn-autoscaling-autoscalinggroup-availabilityzoneimpairmentpolicy-zonalshiftenabled>
+                                              zonalShiftEnabled :: (Value Prelude.Bool)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAvailabilityZoneImpairmentPolicyProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Bool -> AvailabilityZoneImpairmentPolicyProperty
+mkAvailabilityZoneImpairmentPolicyProperty
+  impairedZoneHealthCheckBehavior
+  zonalShiftEnabled
+  = AvailabilityZoneImpairmentPolicyProperty
+      {haddock_workaround_ = (),
+       impairedZoneHealthCheckBehavior = impairedZoneHealthCheckBehavior,
+       zonalShiftEnabled = zonalShiftEnabled}
+instance ToResourceProperties AvailabilityZoneImpairmentPolicyProperty where
+  toResourceProperties AvailabilityZoneImpairmentPolicyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.AvailabilityZoneImpairmentPolicy",
+         supportsTags = Prelude.False,
+         properties = ["ImpairedZoneHealthCheckBehavior"
+                         JSON..= impairedZoneHealthCheckBehavior,
+                       "ZonalShiftEnabled" JSON..= zonalShiftEnabled]}
+instance JSON.ToJSON AvailabilityZoneImpairmentPolicyProperty where
+  toJSON AvailabilityZoneImpairmentPolicyProperty {..}
+    = JSON.object
+        ["ImpairedZoneHealthCheckBehavior"
+           JSON..= impairedZoneHealthCheckBehavior,
+         "ZonalShiftEnabled" JSON..= zonalShiftEnabled]
+instance Property "ImpairedZoneHealthCheckBehavior" AvailabilityZoneImpairmentPolicyProperty where
+  type PropertyType "ImpairedZoneHealthCheckBehavior" AvailabilityZoneImpairmentPolicyProperty = Value Prelude.Text
+  set newValue AvailabilityZoneImpairmentPolicyProperty {..}
+    = AvailabilityZoneImpairmentPolicyProperty
+        {impairedZoneHealthCheckBehavior = newValue, ..}
+instance Property "ZonalShiftEnabled" AvailabilityZoneImpairmentPolicyProperty where
+  type PropertyType "ZonalShiftEnabled" AvailabilityZoneImpairmentPolicyProperty = Value Prelude.Bool
+  set newValue AvailabilityZoneImpairmentPolicyProperty {..}
+    = AvailabilityZoneImpairmentPolicyProperty
+        {zonalShiftEnabled = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneImpairmentPolicyProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneImpairmentPolicyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/AvailabilityZoneImpairmentPolicyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneImpairmentPolicyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AvailabilityZoneImpairmentPolicyProperty :: Prelude.Type
+instance ToResourceProperties AvailabilityZoneImpairmentPolicyProperty
+instance Prelude.Eq AvailabilityZoneImpairmentPolicyProperty
+instance Prelude.Show AvailabilityZoneImpairmentPolicyProperty
+instance JSON.ToJSON AvailabilityZoneImpairmentPolicyProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselineEbsBandwidthMbpsRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselineEbsBandwidthMbpsRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselineEbsBandwidthMbpsRequestProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.BaselineEbsBandwidthMbpsRequestProperty (
+        BaselineEbsBandwidthMbpsRequestProperty(..),
+        mkBaselineEbsBandwidthMbpsRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BaselineEbsBandwidthMbpsRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-baselineebsbandwidthmbpsrequest.html>
+    BaselineEbsBandwidthMbpsRequestProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-baselineebsbandwidthmbpsrequest.html#cfn-autoscaling-autoscalinggroup-baselineebsbandwidthmbpsrequest-max>
+                                             max :: (Prelude.Maybe (Value Prelude.Integer)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-baselineebsbandwidthmbpsrequest.html#cfn-autoscaling-autoscalinggroup-baselineebsbandwidthmbpsrequest-min>
+                                             min :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBaselineEbsBandwidthMbpsRequestProperty ::
+  BaselineEbsBandwidthMbpsRequestProperty
+mkBaselineEbsBandwidthMbpsRequestProperty
+  = BaselineEbsBandwidthMbpsRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties BaselineEbsBandwidthMbpsRequestProperty where
+  toResourceProperties BaselineEbsBandwidthMbpsRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.BaselineEbsBandwidthMbpsRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON BaselineEbsBandwidthMbpsRequestProperty where
+  toJSON BaselineEbsBandwidthMbpsRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" BaselineEbsBandwidthMbpsRequestProperty where
+  type PropertyType "Max" BaselineEbsBandwidthMbpsRequestProperty = Value Prelude.Integer
+  set newValue BaselineEbsBandwidthMbpsRequestProperty {..}
+    = BaselineEbsBandwidthMbpsRequestProperty
+        {max = Prelude.pure newValue, ..}
+instance Property "Min" BaselineEbsBandwidthMbpsRequestProperty where
+  type PropertyType "Min" BaselineEbsBandwidthMbpsRequestProperty = Value Prelude.Integer
+  set newValue BaselineEbsBandwidthMbpsRequestProperty {..}
+    = BaselineEbsBandwidthMbpsRequestProperty
+        {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselineEbsBandwidthMbpsRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselineEbsBandwidthMbpsRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselineEbsBandwidthMbpsRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.BaselineEbsBandwidthMbpsRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BaselineEbsBandwidthMbpsRequestProperty :: Prelude.Type
+instance ToResourceProperties BaselineEbsBandwidthMbpsRequestProperty
+instance Prelude.Eq BaselineEbsBandwidthMbpsRequestProperty
+instance Prelude.Show BaselineEbsBandwidthMbpsRequestProperty
+instance JSON.ToJSON BaselineEbsBandwidthMbpsRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselinePerformanceFactorsRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselinePerformanceFactorsRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselinePerformanceFactorsRequestProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.BaselinePerformanceFactorsRequestProperty (
+        module Exports, BaselinePerformanceFactorsRequestProperty(..),
+        mkBaselinePerformanceFactorsRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.CpuPerformanceFactorRequestProperty as Exports
+import Stratosphere.ResourceProperties
+data BaselinePerformanceFactorsRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-baselineperformancefactorsrequest.html>
+    BaselinePerformanceFactorsRequestProperty {haddock_workaround_ :: (),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-baselineperformancefactorsrequest.html#cfn-autoscaling-autoscalinggroup-baselineperformancefactorsrequest-cpu>
+                                               cpu :: (Prelude.Maybe CpuPerformanceFactorRequestProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBaselinePerformanceFactorsRequestProperty ::
+  BaselinePerformanceFactorsRequestProperty
+mkBaselinePerformanceFactorsRequestProperty
+  = BaselinePerformanceFactorsRequestProperty
+      {haddock_workaround_ = (), cpu = Prelude.Nothing}
+instance ToResourceProperties BaselinePerformanceFactorsRequestProperty where
+  toResourceProperties BaselinePerformanceFactorsRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.BaselinePerformanceFactorsRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Cpu" Prelude.<$> cpu])}
+instance JSON.ToJSON BaselinePerformanceFactorsRequestProperty where
+  toJSON BaselinePerformanceFactorsRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Cpu" Prelude.<$> cpu]))
+instance Property "Cpu" BaselinePerformanceFactorsRequestProperty where
+  type PropertyType "Cpu" BaselinePerformanceFactorsRequestProperty = CpuPerformanceFactorRequestProperty
+  set newValue BaselinePerformanceFactorsRequestProperty {..}
+    = BaselinePerformanceFactorsRequestProperty
+        {cpu = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselinePerformanceFactorsRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselinePerformanceFactorsRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/BaselinePerformanceFactorsRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.BaselinePerformanceFactorsRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BaselinePerformanceFactorsRequestProperty :: Prelude.Type
+instance ToResourceProperties BaselinePerformanceFactorsRequestProperty
+instance Prelude.Eq BaselinePerformanceFactorsRequestProperty
+instance Prelude.Show BaselinePerformanceFactorsRequestProperty
+instance JSON.ToJSON BaselinePerformanceFactorsRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationSpecificationProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationSpecificationProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationSpecificationProperty (
+        module Exports, CapacityReservationSpecificationProperty(..),
+        mkCapacityReservationSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationTargetProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CapacityReservationSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-capacityreservationspecification.html>
+    CapacityReservationSpecificationProperty {haddock_workaround_ :: (),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-capacityreservationspecification.html#cfn-autoscaling-autoscalinggroup-capacityreservationspecification-capacityreservationpreference>
+                                              capacityReservationPreference :: (Value Prelude.Text),
+                                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-capacityreservationspecification.html#cfn-autoscaling-autoscalinggroup-capacityreservationspecification-capacityreservationtarget>
+                                              capacityReservationTarget :: (Prelude.Maybe CapacityReservationTargetProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCapacityReservationSpecificationProperty ::
+  Value Prelude.Text -> CapacityReservationSpecificationProperty
+mkCapacityReservationSpecificationProperty
+  capacityReservationPreference
+  = CapacityReservationSpecificationProperty
+      {haddock_workaround_ = (),
+       capacityReservationPreference = capacityReservationPreference,
+       capacityReservationTarget = Prelude.Nothing}
+instance ToResourceProperties CapacityReservationSpecificationProperty where
+  toResourceProperties CapacityReservationSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.CapacityReservationSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["CapacityReservationPreference"
+                              JSON..= capacityReservationPreference]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CapacityReservationTarget"
+                                 Prelude.<$> capacityReservationTarget]))}
+instance JSON.ToJSON CapacityReservationSpecificationProperty where
+  toJSON CapacityReservationSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["CapacityReservationPreference"
+                 JSON..= capacityReservationPreference]
+              (Prelude.catMaybes
+                 [(JSON..=) "CapacityReservationTarget"
+                    Prelude.<$> capacityReservationTarget])))
+instance Property "CapacityReservationPreference" CapacityReservationSpecificationProperty where
+  type PropertyType "CapacityReservationPreference" CapacityReservationSpecificationProperty = Value Prelude.Text
+  set newValue CapacityReservationSpecificationProperty {..}
+    = CapacityReservationSpecificationProperty
+        {capacityReservationPreference = newValue, ..}
+instance Property "CapacityReservationTarget" CapacityReservationSpecificationProperty where
+  type PropertyType "CapacityReservationTarget" CapacityReservationSpecificationProperty = CapacityReservationTargetProperty
+  set newValue CapacityReservationSpecificationProperty {..}
+    = CapacityReservationSpecificationProperty
+        {capacityReservationTarget = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CapacityReservationSpecificationProperty :: Prelude.Type
+instance ToResourceProperties CapacityReservationSpecificationProperty
+instance Prelude.Eq CapacityReservationSpecificationProperty
+instance Prelude.Show CapacityReservationSpecificationProperty
+instance JSON.ToJSON CapacityReservationSpecificationProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationTargetProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationTargetProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationTargetProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationTargetProperty (
+        CapacityReservationTargetProperty(..),
+        mkCapacityReservationTargetProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CapacityReservationTargetProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-capacityreservationtarget.html>
+    CapacityReservationTargetProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-capacityreservationtarget.html#cfn-autoscaling-autoscalinggroup-capacityreservationtarget-capacityreservationids>
+                                       capacityReservationIds :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-capacityreservationtarget.html#cfn-autoscaling-autoscalinggroup-capacityreservationtarget-capacityreservationresourcegrouparns>
+                                       capacityReservationResourceGroupArns :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCapacityReservationTargetProperty ::
+  CapacityReservationTargetProperty
+mkCapacityReservationTargetProperty
+  = CapacityReservationTargetProperty
+      {haddock_workaround_ = (),
+       capacityReservationIds = Prelude.Nothing,
+       capacityReservationResourceGroupArns = Prelude.Nothing}
+instance ToResourceProperties CapacityReservationTargetProperty where
+  toResourceProperties CapacityReservationTargetProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.CapacityReservationTarget",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CapacityReservationIds"
+                              Prelude.<$> capacityReservationIds,
+                            (JSON..=) "CapacityReservationResourceGroupArns"
+                              Prelude.<$> capacityReservationResourceGroupArns])}
+instance JSON.ToJSON CapacityReservationTargetProperty where
+  toJSON CapacityReservationTargetProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CapacityReservationIds"
+                 Prelude.<$> capacityReservationIds,
+               (JSON..=) "CapacityReservationResourceGroupArns"
+                 Prelude.<$> capacityReservationResourceGroupArns]))
+instance Property "CapacityReservationIds" CapacityReservationTargetProperty where
+  type PropertyType "CapacityReservationIds" CapacityReservationTargetProperty = ValueList Prelude.Text
+  set newValue CapacityReservationTargetProperty {..}
+    = CapacityReservationTargetProperty
+        {capacityReservationIds = Prelude.pure newValue, ..}
+instance Property "CapacityReservationResourceGroupArns" CapacityReservationTargetProperty where
+  type PropertyType "CapacityReservationResourceGroupArns" CapacityReservationTargetProperty = ValueList Prelude.Text
+  set newValue CapacityReservationTargetProperty {..}
+    = CapacityReservationTargetProperty
+        {capacityReservationResourceGroupArns = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationTargetProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationTargetProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CapacityReservationTargetProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationTargetProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CapacityReservationTargetProperty :: Prelude.Type
+instance ToResourceProperties CapacityReservationTargetProperty
+instance Prelude.Eq CapacityReservationTargetProperty
+instance Prelude.Show CapacityReservationTargetProperty
+instance JSON.ToJSON CapacityReservationTargetProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/CpuPerformanceFactorRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CpuPerformanceFactorRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CpuPerformanceFactorRequestProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.CpuPerformanceFactorRequestProperty (
+        module Exports, CpuPerformanceFactorRequestProperty(..),
+        mkCpuPerformanceFactorRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.PerformanceFactorReferenceRequestProperty as Exports
+import Stratosphere.ResourceProperties
+data CpuPerformanceFactorRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-cpuperformancefactorrequest.html>
+    CpuPerformanceFactorRequestProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-cpuperformancefactorrequest.html#cfn-autoscaling-autoscalinggroup-cpuperformancefactorrequest-references>
+                                         references :: (Prelude.Maybe [PerformanceFactorReferenceRequestProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCpuPerformanceFactorRequestProperty ::
+  CpuPerformanceFactorRequestProperty
+mkCpuPerformanceFactorRequestProperty
+  = CpuPerformanceFactorRequestProperty
+      {haddock_workaround_ = (), references = Prelude.Nothing}
+instance ToResourceProperties CpuPerformanceFactorRequestProperty where
+  toResourceProperties CpuPerformanceFactorRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.CpuPerformanceFactorRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "References" Prelude.<$> references])}
+instance JSON.ToJSON CpuPerformanceFactorRequestProperty where
+  toJSON CpuPerformanceFactorRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "References" Prelude.<$> references]))
+instance Property "References" CpuPerformanceFactorRequestProperty where
+  type PropertyType "References" CpuPerformanceFactorRequestProperty = [PerformanceFactorReferenceRequestProperty]
+  set newValue CpuPerformanceFactorRequestProperty {..}
+    = CpuPerformanceFactorRequestProperty
+        {references = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/CpuPerformanceFactorRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CpuPerformanceFactorRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/CpuPerformanceFactorRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.CpuPerformanceFactorRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CpuPerformanceFactorRequestProperty :: Prelude.Type
+instance ToResourceProperties CpuPerformanceFactorRequestProperty
+instance Prelude.Eq CpuPerformanceFactorRequestProperty
+instance Prelude.Show CpuPerformanceFactorRequestProperty
+instance JSON.ToJSON CpuPerformanceFactorRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceMaintenancePolicyProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceMaintenancePolicyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceMaintenancePolicyProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.InstanceMaintenancePolicyProperty (
+        InstanceMaintenancePolicyProperty(..),
+        mkInstanceMaintenancePolicyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InstanceMaintenancePolicyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancemaintenancepolicy.html>
+    InstanceMaintenancePolicyProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancemaintenancepolicy.html#cfn-autoscaling-autoscalinggroup-instancemaintenancepolicy-maxhealthypercentage>
+                                       maxHealthyPercentage :: (Prelude.Maybe (Value Prelude.Integer)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancemaintenancepolicy.html#cfn-autoscaling-autoscalinggroup-instancemaintenancepolicy-minhealthypercentage>
+                                       minHealthyPercentage :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInstanceMaintenancePolicyProperty ::
+  InstanceMaintenancePolicyProperty
+mkInstanceMaintenancePolicyProperty
+  = InstanceMaintenancePolicyProperty
+      {haddock_workaround_ = (), maxHealthyPercentage = Prelude.Nothing,
+       minHealthyPercentage = Prelude.Nothing}
+instance ToResourceProperties InstanceMaintenancePolicyProperty where
+  toResourceProperties InstanceMaintenancePolicyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.InstanceMaintenancePolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "MaxHealthyPercentage" Prelude.<$> maxHealthyPercentage,
+                            (JSON..=) "MinHealthyPercentage"
+                              Prelude.<$> minHealthyPercentage])}
+instance JSON.ToJSON InstanceMaintenancePolicyProperty where
+  toJSON InstanceMaintenancePolicyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "MaxHealthyPercentage" Prelude.<$> maxHealthyPercentage,
+               (JSON..=) "MinHealthyPercentage"
+                 Prelude.<$> minHealthyPercentage]))
+instance Property "MaxHealthyPercentage" InstanceMaintenancePolicyProperty where
+  type PropertyType "MaxHealthyPercentage" InstanceMaintenancePolicyProperty = Value Prelude.Integer
+  set newValue InstanceMaintenancePolicyProperty {..}
+    = InstanceMaintenancePolicyProperty
+        {maxHealthyPercentage = Prelude.pure newValue, ..}
+instance Property "MinHealthyPercentage" InstanceMaintenancePolicyProperty where
+  type PropertyType "MinHealthyPercentage" InstanceMaintenancePolicyProperty = Value Prelude.Integer
+  set newValue InstanceMaintenancePolicyProperty {..}
+    = InstanceMaintenancePolicyProperty
+        {minHealthyPercentage = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceMaintenancePolicyProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceMaintenancePolicyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceMaintenancePolicyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.InstanceMaintenancePolicyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InstanceMaintenancePolicyProperty :: Prelude.Type
+instance ToResourceProperties InstanceMaintenancePolicyProperty
+instance Prelude.Eq InstanceMaintenancePolicyProperty
+instance Prelude.Show InstanceMaintenancePolicyProperty
+instance JSON.ToJSON InstanceMaintenancePolicyProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceRequirementsProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceRequirementsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceRequirementsProperty.hs
@@ -0,0 +1,310 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.InstanceRequirementsProperty (
+        module Exports, InstanceRequirementsProperty(..),
+        mkInstanceRequirementsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorCountRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorTotalMemoryMiBRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.BaselineEbsBandwidthMbpsRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.BaselinePerformanceFactorsRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.MemoryGiBPerVCpuRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.MemoryMiBRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.NetworkBandwidthGbpsRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.NetworkInterfaceCountRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.TotalLocalStorageGBRequestProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.VCpuCountRequestProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InstanceRequirementsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html>
+    InstanceRequirementsProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-acceleratorcount>
+                                  acceleratorCount :: (Prelude.Maybe AcceleratorCountRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-acceleratormanufacturers>
+                                  acceleratorManufacturers :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-acceleratornames>
+                                  acceleratorNames :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-acceleratortotalmemorymib>
+                                  acceleratorTotalMemoryMiB :: (Prelude.Maybe AcceleratorTotalMemoryMiBRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-acceleratortypes>
+                                  acceleratorTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-allowedinstancetypes>
+                                  allowedInstanceTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-baremetal>
+                                  bareMetal :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-baselineebsbandwidthmbps>
+                                  baselineEbsBandwidthMbps :: (Prelude.Maybe BaselineEbsBandwidthMbpsRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-baselineperformancefactors>
+                                  baselinePerformanceFactors :: (Prelude.Maybe BaselinePerformanceFactorsRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-burstableperformance>
+                                  burstablePerformance :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-cpumanufacturers>
+                                  cpuManufacturers :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-excludedinstancetypes>
+                                  excludedInstanceTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-instancegenerations>
+                                  instanceGenerations :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-localstorage>
+                                  localStorage :: (Prelude.Maybe (Value Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-localstoragetypes>
+                                  localStorageTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-maxspotpriceaspercentageofoptimalondemandprice>
+                                  maxSpotPriceAsPercentageOfOptimalOnDemandPrice :: (Prelude.Maybe (Value Prelude.Integer)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-memorygibpervcpu>
+                                  memoryGiBPerVCpu :: (Prelude.Maybe MemoryGiBPerVCpuRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-memorymib>
+                                  memoryMiB :: MemoryMiBRequestProperty,
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-networkbandwidthgbps>
+                                  networkBandwidthGbps :: (Prelude.Maybe NetworkBandwidthGbpsRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-networkinterfacecount>
+                                  networkInterfaceCount :: (Prelude.Maybe NetworkInterfaceCountRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-ondemandmaxpricepercentageoverlowestprice>
+                                  onDemandMaxPricePercentageOverLowestPrice :: (Prelude.Maybe (Value Prelude.Integer)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-requirehibernatesupport>
+                                  requireHibernateSupport :: (Prelude.Maybe (Value Prelude.Bool)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-spotmaxpricepercentageoverlowestprice>
+                                  spotMaxPricePercentageOverLowestPrice :: (Prelude.Maybe (Value Prelude.Integer)),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-totallocalstoragegb>
+                                  totalLocalStorageGB :: (Prelude.Maybe TotalLocalStorageGBRequestProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancerequirements.html#cfn-autoscaling-autoscalinggroup-instancerequirements-vcpucount>
+                                  vCpuCount :: VCpuCountRequestProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInstanceRequirementsProperty ::
+  MemoryMiBRequestProperty
+  -> VCpuCountRequestProperty -> InstanceRequirementsProperty
+mkInstanceRequirementsProperty memoryMiB vCpuCount
+  = InstanceRequirementsProperty
+      {haddock_workaround_ = (), memoryMiB = memoryMiB,
+       vCpuCount = vCpuCount, acceleratorCount = Prelude.Nothing,
+       acceleratorManufacturers = Prelude.Nothing,
+       acceleratorNames = Prelude.Nothing,
+       acceleratorTotalMemoryMiB = Prelude.Nothing,
+       acceleratorTypes = Prelude.Nothing,
+       allowedInstanceTypes = Prelude.Nothing,
+       bareMetal = Prelude.Nothing,
+       baselineEbsBandwidthMbps = Prelude.Nothing,
+       baselinePerformanceFactors = Prelude.Nothing,
+       burstablePerformance = Prelude.Nothing,
+       cpuManufacturers = Prelude.Nothing,
+       excludedInstanceTypes = Prelude.Nothing,
+       instanceGenerations = Prelude.Nothing,
+       localStorage = Prelude.Nothing,
+       localStorageTypes = Prelude.Nothing,
+       maxSpotPriceAsPercentageOfOptimalOnDemandPrice = Prelude.Nothing,
+       memoryGiBPerVCpu = Prelude.Nothing,
+       networkBandwidthGbps = Prelude.Nothing,
+       networkInterfaceCount = Prelude.Nothing,
+       onDemandMaxPricePercentageOverLowestPrice = Prelude.Nothing,
+       requireHibernateSupport = Prelude.Nothing,
+       spotMaxPricePercentageOverLowestPrice = Prelude.Nothing,
+       totalLocalStorageGB = Prelude.Nothing}
+instance ToResourceProperties InstanceRequirementsProperty where
+  toResourceProperties InstanceRequirementsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.InstanceRequirements",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MemoryMiB" JSON..= memoryMiB, "VCpuCount" JSON..= vCpuCount]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AcceleratorCount" Prelude.<$> acceleratorCount,
+                               (JSON..=) "AcceleratorManufacturers"
+                                 Prelude.<$> acceleratorManufacturers,
+                               (JSON..=) "AcceleratorNames" Prelude.<$> acceleratorNames,
+                               (JSON..=) "AcceleratorTotalMemoryMiB"
+                                 Prelude.<$> acceleratorTotalMemoryMiB,
+                               (JSON..=) "AcceleratorTypes" Prelude.<$> acceleratorTypes,
+                               (JSON..=) "AllowedInstanceTypes" Prelude.<$> allowedInstanceTypes,
+                               (JSON..=) "BareMetal" Prelude.<$> bareMetal,
+                               (JSON..=) "BaselineEbsBandwidthMbps"
+                                 Prelude.<$> baselineEbsBandwidthMbps,
+                               (JSON..=) "BaselinePerformanceFactors"
+                                 Prelude.<$> baselinePerformanceFactors,
+                               (JSON..=) "BurstablePerformance" Prelude.<$> burstablePerformance,
+                               (JSON..=) "CpuManufacturers" Prelude.<$> cpuManufacturers,
+                               (JSON..=) "ExcludedInstanceTypes"
+                                 Prelude.<$> excludedInstanceTypes,
+                               (JSON..=) "InstanceGenerations" Prelude.<$> instanceGenerations,
+                               (JSON..=) "LocalStorage" Prelude.<$> localStorage,
+                               (JSON..=) "LocalStorageTypes" Prelude.<$> localStorageTypes,
+                               (JSON..=) "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice"
+                                 Prelude.<$> maxSpotPriceAsPercentageOfOptimalOnDemandPrice,
+                               (JSON..=) "MemoryGiBPerVCpu" Prelude.<$> memoryGiBPerVCpu,
+                               (JSON..=) "NetworkBandwidthGbps" Prelude.<$> networkBandwidthGbps,
+                               (JSON..=) "NetworkInterfaceCount"
+                                 Prelude.<$> networkInterfaceCount,
+                               (JSON..=) "OnDemandMaxPricePercentageOverLowestPrice"
+                                 Prelude.<$> onDemandMaxPricePercentageOverLowestPrice,
+                               (JSON..=) "RequireHibernateSupport"
+                                 Prelude.<$> requireHibernateSupport,
+                               (JSON..=) "SpotMaxPricePercentageOverLowestPrice"
+                                 Prelude.<$> spotMaxPricePercentageOverLowestPrice,
+                               (JSON..=) "TotalLocalStorageGB" Prelude.<$> totalLocalStorageGB]))}
+instance JSON.ToJSON InstanceRequirementsProperty where
+  toJSON InstanceRequirementsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MemoryMiB" JSON..= memoryMiB, "VCpuCount" JSON..= vCpuCount]
+              (Prelude.catMaybes
+                 [(JSON..=) "AcceleratorCount" Prelude.<$> acceleratorCount,
+                  (JSON..=) "AcceleratorManufacturers"
+                    Prelude.<$> acceleratorManufacturers,
+                  (JSON..=) "AcceleratorNames" Prelude.<$> acceleratorNames,
+                  (JSON..=) "AcceleratorTotalMemoryMiB"
+                    Prelude.<$> acceleratorTotalMemoryMiB,
+                  (JSON..=) "AcceleratorTypes" Prelude.<$> acceleratorTypes,
+                  (JSON..=) "AllowedInstanceTypes" Prelude.<$> allowedInstanceTypes,
+                  (JSON..=) "BareMetal" Prelude.<$> bareMetal,
+                  (JSON..=) "BaselineEbsBandwidthMbps"
+                    Prelude.<$> baselineEbsBandwidthMbps,
+                  (JSON..=) "BaselinePerformanceFactors"
+                    Prelude.<$> baselinePerformanceFactors,
+                  (JSON..=) "BurstablePerformance" Prelude.<$> burstablePerformance,
+                  (JSON..=) "CpuManufacturers" Prelude.<$> cpuManufacturers,
+                  (JSON..=) "ExcludedInstanceTypes"
+                    Prelude.<$> excludedInstanceTypes,
+                  (JSON..=) "InstanceGenerations" Prelude.<$> instanceGenerations,
+                  (JSON..=) "LocalStorage" Prelude.<$> localStorage,
+                  (JSON..=) "LocalStorageTypes" Prelude.<$> localStorageTypes,
+                  (JSON..=) "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice"
+                    Prelude.<$> maxSpotPriceAsPercentageOfOptimalOnDemandPrice,
+                  (JSON..=) "MemoryGiBPerVCpu" Prelude.<$> memoryGiBPerVCpu,
+                  (JSON..=) "NetworkBandwidthGbps" Prelude.<$> networkBandwidthGbps,
+                  (JSON..=) "NetworkInterfaceCount"
+                    Prelude.<$> networkInterfaceCount,
+                  (JSON..=) "OnDemandMaxPricePercentageOverLowestPrice"
+                    Prelude.<$> onDemandMaxPricePercentageOverLowestPrice,
+                  (JSON..=) "RequireHibernateSupport"
+                    Prelude.<$> requireHibernateSupport,
+                  (JSON..=) "SpotMaxPricePercentageOverLowestPrice"
+                    Prelude.<$> spotMaxPricePercentageOverLowestPrice,
+                  (JSON..=) "TotalLocalStorageGB" Prelude.<$> totalLocalStorageGB])))
+instance Property "AcceleratorCount" InstanceRequirementsProperty where
+  type PropertyType "AcceleratorCount" InstanceRequirementsProperty = AcceleratorCountRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {acceleratorCount = Prelude.pure newValue, ..}
+instance Property "AcceleratorManufacturers" InstanceRequirementsProperty where
+  type PropertyType "AcceleratorManufacturers" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {acceleratorManufacturers = Prelude.pure newValue, ..}
+instance Property "AcceleratorNames" InstanceRequirementsProperty where
+  type PropertyType "AcceleratorNames" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {acceleratorNames = Prelude.pure newValue, ..}
+instance Property "AcceleratorTotalMemoryMiB" InstanceRequirementsProperty where
+  type PropertyType "AcceleratorTotalMemoryMiB" InstanceRequirementsProperty = AcceleratorTotalMemoryMiBRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {acceleratorTotalMemoryMiB = Prelude.pure newValue, ..}
+instance Property "AcceleratorTypes" InstanceRequirementsProperty where
+  type PropertyType "AcceleratorTypes" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {acceleratorTypes = Prelude.pure newValue, ..}
+instance Property "AllowedInstanceTypes" InstanceRequirementsProperty where
+  type PropertyType "AllowedInstanceTypes" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {allowedInstanceTypes = Prelude.pure newValue, ..}
+instance Property "BareMetal" InstanceRequirementsProperty where
+  type PropertyType "BareMetal" InstanceRequirementsProperty = Value Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {bareMetal = Prelude.pure newValue, ..}
+instance Property "BaselineEbsBandwidthMbps" InstanceRequirementsProperty where
+  type PropertyType "BaselineEbsBandwidthMbps" InstanceRequirementsProperty = BaselineEbsBandwidthMbpsRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {baselineEbsBandwidthMbps = Prelude.pure newValue, ..}
+instance Property "BaselinePerformanceFactors" InstanceRequirementsProperty where
+  type PropertyType "BaselinePerformanceFactors" InstanceRequirementsProperty = BaselinePerformanceFactorsRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {baselinePerformanceFactors = Prelude.pure newValue, ..}
+instance Property "BurstablePerformance" InstanceRequirementsProperty where
+  type PropertyType "BurstablePerformance" InstanceRequirementsProperty = Value Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {burstablePerformance = Prelude.pure newValue, ..}
+instance Property "CpuManufacturers" InstanceRequirementsProperty where
+  type PropertyType "CpuManufacturers" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {cpuManufacturers = Prelude.pure newValue, ..}
+instance Property "ExcludedInstanceTypes" InstanceRequirementsProperty where
+  type PropertyType "ExcludedInstanceTypes" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {excludedInstanceTypes = Prelude.pure newValue, ..}
+instance Property "InstanceGenerations" InstanceRequirementsProperty where
+  type PropertyType "InstanceGenerations" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {instanceGenerations = Prelude.pure newValue, ..}
+instance Property "LocalStorage" InstanceRequirementsProperty where
+  type PropertyType "LocalStorage" InstanceRequirementsProperty = Value Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {localStorage = Prelude.pure newValue, ..}
+instance Property "LocalStorageTypes" InstanceRequirementsProperty where
+  type PropertyType "LocalStorageTypes" InstanceRequirementsProperty = ValueList Prelude.Text
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {localStorageTypes = Prelude.pure newValue, ..}
+instance Property "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice" InstanceRequirementsProperty where
+  type PropertyType "MaxSpotPriceAsPercentageOfOptimalOnDemandPrice" InstanceRequirementsProperty = Value Prelude.Integer
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {maxSpotPriceAsPercentageOfOptimalOnDemandPrice = Prelude.pure
+                                                            newValue,
+         ..}
+instance Property "MemoryGiBPerVCpu" InstanceRequirementsProperty where
+  type PropertyType "MemoryGiBPerVCpu" InstanceRequirementsProperty = MemoryGiBPerVCpuRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {memoryGiBPerVCpu = Prelude.pure newValue, ..}
+instance Property "MemoryMiB" InstanceRequirementsProperty where
+  type PropertyType "MemoryMiB" InstanceRequirementsProperty = MemoryMiBRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty {memoryMiB = newValue, ..}
+instance Property "NetworkBandwidthGbps" InstanceRequirementsProperty where
+  type PropertyType "NetworkBandwidthGbps" InstanceRequirementsProperty = NetworkBandwidthGbpsRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {networkBandwidthGbps = Prelude.pure newValue, ..}
+instance Property "NetworkInterfaceCount" InstanceRequirementsProperty where
+  type PropertyType "NetworkInterfaceCount" InstanceRequirementsProperty = NetworkInterfaceCountRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {networkInterfaceCount = Prelude.pure newValue, ..}
+instance Property "OnDemandMaxPricePercentageOverLowestPrice" InstanceRequirementsProperty where
+  type PropertyType "OnDemandMaxPricePercentageOverLowestPrice" InstanceRequirementsProperty = Value Prelude.Integer
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {onDemandMaxPricePercentageOverLowestPrice = Prelude.pure newValue,
+         ..}
+instance Property "RequireHibernateSupport" InstanceRequirementsProperty where
+  type PropertyType "RequireHibernateSupport" InstanceRequirementsProperty = Value Prelude.Bool
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {requireHibernateSupport = Prelude.pure newValue, ..}
+instance Property "SpotMaxPricePercentageOverLowestPrice" InstanceRequirementsProperty where
+  type PropertyType "SpotMaxPricePercentageOverLowestPrice" InstanceRequirementsProperty = Value Prelude.Integer
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {spotMaxPricePercentageOverLowestPrice = Prelude.pure newValue, ..}
+instance Property "TotalLocalStorageGB" InstanceRequirementsProperty where
+  type PropertyType "TotalLocalStorageGB" InstanceRequirementsProperty = TotalLocalStorageGBRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty
+        {totalLocalStorageGB = Prelude.pure newValue, ..}
+instance Property "VCpuCount" InstanceRequirementsProperty where
+  type PropertyType "VCpuCount" InstanceRequirementsProperty = VCpuCountRequestProperty
+  set newValue InstanceRequirementsProperty {..}
+    = InstanceRequirementsProperty {vCpuCount = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceRequirementsProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceRequirementsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstanceRequirementsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.InstanceRequirementsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InstanceRequirementsProperty :: Prelude.Type
+instance ToResourceProperties InstanceRequirementsProperty
+instance Prelude.Eq InstanceRequirementsProperty
+instance Prelude.Show InstanceRequirementsProperty
+instance JSON.ToJSON InstanceRequirementsProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstancesDistributionProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstancesDistributionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstancesDistributionProperty.hs
@@ -0,0 +1,94 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.InstancesDistributionProperty (
+        InstancesDistributionProperty(..), mkInstancesDistributionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InstancesDistributionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancesdistribution.html>
+    InstancesDistributionProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-ondemandallocationstrategy>
+                                   onDemandAllocationStrategy :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-ondemandbasecapacity>
+                                   onDemandBaseCapacity :: (Prelude.Maybe (Value Prelude.Integer)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-ondemandpercentageabovebasecapacity>
+                                   onDemandPercentageAboveBaseCapacity :: (Prelude.Maybe (Value Prelude.Integer)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-spotallocationstrategy>
+                                   spotAllocationStrategy :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-spotinstancepools>
+                                   spotInstancePools :: (Prelude.Maybe (Value Prelude.Integer)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-instancesdistribution.html#cfn-autoscaling-autoscalinggroup-instancesdistribution-spotmaxprice>
+                                   spotMaxPrice :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInstancesDistributionProperty :: InstancesDistributionProperty
+mkInstancesDistributionProperty
+  = InstancesDistributionProperty
+      {haddock_workaround_ = (),
+       onDemandAllocationStrategy = Prelude.Nothing,
+       onDemandBaseCapacity = Prelude.Nothing,
+       onDemandPercentageAboveBaseCapacity = Prelude.Nothing,
+       spotAllocationStrategy = Prelude.Nothing,
+       spotInstancePools = Prelude.Nothing,
+       spotMaxPrice = Prelude.Nothing}
+instance ToResourceProperties InstancesDistributionProperty where
+  toResourceProperties InstancesDistributionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.InstancesDistribution",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "OnDemandAllocationStrategy"
+                              Prelude.<$> onDemandAllocationStrategy,
+                            (JSON..=) "OnDemandBaseCapacity" Prelude.<$> onDemandBaseCapacity,
+                            (JSON..=) "OnDemandPercentageAboveBaseCapacity"
+                              Prelude.<$> onDemandPercentageAboveBaseCapacity,
+                            (JSON..=) "SpotAllocationStrategy"
+                              Prelude.<$> spotAllocationStrategy,
+                            (JSON..=) "SpotInstancePools" Prelude.<$> spotInstancePools,
+                            (JSON..=) "SpotMaxPrice" Prelude.<$> spotMaxPrice])}
+instance JSON.ToJSON InstancesDistributionProperty where
+  toJSON InstancesDistributionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "OnDemandAllocationStrategy"
+                 Prelude.<$> onDemandAllocationStrategy,
+               (JSON..=) "OnDemandBaseCapacity" Prelude.<$> onDemandBaseCapacity,
+               (JSON..=) "OnDemandPercentageAboveBaseCapacity"
+                 Prelude.<$> onDemandPercentageAboveBaseCapacity,
+               (JSON..=) "SpotAllocationStrategy"
+                 Prelude.<$> spotAllocationStrategy,
+               (JSON..=) "SpotInstancePools" Prelude.<$> spotInstancePools,
+               (JSON..=) "SpotMaxPrice" Prelude.<$> spotMaxPrice]))
+instance Property "OnDemandAllocationStrategy" InstancesDistributionProperty where
+  type PropertyType "OnDemandAllocationStrategy" InstancesDistributionProperty = Value Prelude.Text
+  set newValue InstancesDistributionProperty {..}
+    = InstancesDistributionProperty
+        {onDemandAllocationStrategy = Prelude.pure newValue, ..}
+instance Property "OnDemandBaseCapacity" InstancesDistributionProperty where
+  type PropertyType "OnDemandBaseCapacity" InstancesDistributionProperty = Value Prelude.Integer
+  set newValue InstancesDistributionProperty {..}
+    = InstancesDistributionProperty
+        {onDemandBaseCapacity = Prelude.pure newValue, ..}
+instance Property "OnDemandPercentageAboveBaseCapacity" InstancesDistributionProperty where
+  type PropertyType "OnDemandPercentageAboveBaseCapacity" InstancesDistributionProperty = Value Prelude.Integer
+  set newValue InstancesDistributionProperty {..}
+    = InstancesDistributionProperty
+        {onDemandPercentageAboveBaseCapacity = Prelude.pure newValue, ..}
+instance Property "SpotAllocationStrategy" InstancesDistributionProperty where
+  type PropertyType "SpotAllocationStrategy" InstancesDistributionProperty = Value Prelude.Text
+  set newValue InstancesDistributionProperty {..}
+    = InstancesDistributionProperty
+        {spotAllocationStrategy = Prelude.pure newValue, ..}
+instance Property "SpotInstancePools" InstancesDistributionProperty where
+  type PropertyType "SpotInstancePools" InstancesDistributionProperty = Value Prelude.Integer
+  set newValue InstancesDistributionProperty {..}
+    = InstancesDistributionProperty
+        {spotInstancePools = Prelude.pure newValue, ..}
+instance Property "SpotMaxPrice" InstancesDistributionProperty where
+  type PropertyType "SpotMaxPrice" InstancesDistributionProperty = Value Prelude.Text
+  set newValue InstancesDistributionProperty {..}
+    = InstancesDistributionProperty
+        {spotMaxPrice = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstancesDistributionProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstancesDistributionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/InstancesDistributionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.InstancesDistributionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InstancesDistributionProperty :: Prelude.Type
+instance ToResourceProperties InstancesDistributionProperty
+instance Prelude.Eq InstancesDistributionProperty
+instance Prelude.Show InstancesDistributionProperty
+instance JSON.ToJSON InstancesDistributionProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateOverridesProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateOverridesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateOverridesProperty.hs
@@ -0,0 +1,73 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateOverridesProperty (
+        module Exports, LaunchTemplateOverridesProperty(..),
+        mkLaunchTemplateOverridesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.InstanceRequirementsProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateSpecificationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LaunchTemplateOverridesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html>
+    LaunchTemplateOverridesProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html#cfn-autoscaling-autoscalinggroup-launchtemplateoverrides-instancerequirements>
+                                     instanceRequirements :: (Prelude.Maybe InstanceRequirementsProperty),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html#cfn-autoscaling-autoscalinggroup-launchtemplateoverrides-instancetype>
+                                     instanceType :: (Prelude.Maybe (Value Prelude.Text)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html#cfn-autoscaling-autoscalinggroup-launchtemplateoverrides-launchtemplatespecification>
+                                     launchTemplateSpecification :: (Prelude.Maybe LaunchTemplateSpecificationProperty),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplateoverrides.html#cfn-autoscaling-autoscalinggroup-launchtemplateoverrides-weightedcapacity>
+                                     weightedCapacity :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLaunchTemplateOverridesProperty ::
+  LaunchTemplateOverridesProperty
+mkLaunchTemplateOverridesProperty
+  = LaunchTemplateOverridesProperty
+      {haddock_workaround_ = (), instanceRequirements = Prelude.Nothing,
+       instanceType = Prelude.Nothing,
+       launchTemplateSpecification = Prelude.Nothing,
+       weightedCapacity = Prelude.Nothing}
+instance ToResourceProperties LaunchTemplateOverridesProperty where
+  toResourceProperties LaunchTemplateOverridesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.LaunchTemplateOverrides",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "InstanceRequirements" Prelude.<$> instanceRequirements,
+                            (JSON..=) "InstanceType" Prelude.<$> instanceType,
+                            (JSON..=) "LaunchTemplateSpecification"
+                              Prelude.<$> launchTemplateSpecification,
+                            (JSON..=) "WeightedCapacity" Prelude.<$> weightedCapacity])}
+instance JSON.ToJSON LaunchTemplateOverridesProperty where
+  toJSON LaunchTemplateOverridesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "InstanceRequirements" Prelude.<$> instanceRequirements,
+               (JSON..=) "InstanceType" Prelude.<$> instanceType,
+               (JSON..=) "LaunchTemplateSpecification"
+                 Prelude.<$> launchTemplateSpecification,
+               (JSON..=) "WeightedCapacity" Prelude.<$> weightedCapacity]))
+instance Property "InstanceRequirements" LaunchTemplateOverridesProperty where
+  type PropertyType "InstanceRequirements" LaunchTemplateOverridesProperty = InstanceRequirementsProperty
+  set newValue LaunchTemplateOverridesProperty {..}
+    = LaunchTemplateOverridesProperty
+        {instanceRequirements = Prelude.pure newValue, ..}
+instance Property "InstanceType" LaunchTemplateOverridesProperty where
+  type PropertyType "InstanceType" LaunchTemplateOverridesProperty = Value Prelude.Text
+  set newValue LaunchTemplateOverridesProperty {..}
+    = LaunchTemplateOverridesProperty
+        {instanceType = Prelude.pure newValue, ..}
+instance Property "LaunchTemplateSpecification" LaunchTemplateOverridesProperty where
+  type PropertyType "LaunchTemplateSpecification" LaunchTemplateOverridesProperty = LaunchTemplateSpecificationProperty
+  set newValue LaunchTemplateOverridesProperty {..}
+    = LaunchTemplateOverridesProperty
+        {launchTemplateSpecification = Prelude.pure newValue, ..}
+instance Property "WeightedCapacity" LaunchTemplateOverridesProperty where
+  type PropertyType "WeightedCapacity" LaunchTemplateOverridesProperty = Value Prelude.Text
+  set newValue LaunchTemplateOverridesProperty {..}
+    = LaunchTemplateOverridesProperty
+        {weightedCapacity = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateOverridesProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateOverridesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateOverridesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateOverridesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LaunchTemplateOverridesProperty :: Prelude.Type
+instance ToResourceProperties LaunchTemplateOverridesProperty
+instance Prelude.Eq LaunchTemplateOverridesProperty
+instance Prelude.Show LaunchTemplateOverridesProperty
+instance JSON.ToJSON LaunchTemplateOverridesProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateProperty (
+        module Exports, LaunchTemplateProperty(..),
+        mkLaunchTemplateProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateOverridesProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateSpecificationProperty as Exports
+import Stratosphere.ResourceProperties
+data LaunchTemplateProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html>
+    LaunchTemplateProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html#cfn-autoscaling-autoscalinggroup-launchtemplate-launchtemplatespecification>
+                            launchTemplateSpecification :: LaunchTemplateSpecificationProperty,
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplate.html#cfn-autoscaling-autoscalinggroup-launchtemplate-overrides>
+                            overrides :: (Prelude.Maybe [LaunchTemplateOverridesProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLaunchTemplateProperty ::
+  LaunchTemplateSpecificationProperty -> LaunchTemplateProperty
+mkLaunchTemplateProperty launchTemplateSpecification
+  = LaunchTemplateProperty
+      {haddock_workaround_ = (),
+       launchTemplateSpecification = launchTemplateSpecification,
+       overrides = Prelude.Nothing}
+instance ToResourceProperties LaunchTemplateProperty where
+  toResourceProperties LaunchTemplateProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.LaunchTemplate",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["LaunchTemplateSpecification" JSON..= launchTemplateSpecification]
+                           (Prelude.catMaybes [(JSON..=) "Overrides" Prelude.<$> overrides]))}
+instance JSON.ToJSON LaunchTemplateProperty where
+  toJSON LaunchTemplateProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["LaunchTemplateSpecification" JSON..= launchTemplateSpecification]
+              (Prelude.catMaybes [(JSON..=) "Overrides" Prelude.<$> overrides])))
+instance Property "LaunchTemplateSpecification" LaunchTemplateProperty where
+  type PropertyType "LaunchTemplateSpecification" LaunchTemplateProperty = LaunchTemplateSpecificationProperty
+  set newValue LaunchTemplateProperty {..}
+    = LaunchTemplateProperty
+        {launchTemplateSpecification = newValue, ..}
+instance Property "Overrides" LaunchTemplateProperty where
+  type PropertyType "Overrides" LaunchTemplateProperty = [LaunchTemplateOverridesProperty]
+  set newValue LaunchTemplateProperty {..}
+    = LaunchTemplateProperty {overrides = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LaunchTemplateProperty :: Prelude.Type
+instance ToResourceProperties LaunchTemplateProperty
+instance Prelude.Eq LaunchTemplateProperty
+instance Prelude.Show LaunchTemplateProperty
+instance JSON.ToJSON LaunchTemplateProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateSpecificationProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateSpecificationProperty.hs
@@ -0,0 +1,60 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateSpecificationProperty (
+        LaunchTemplateSpecificationProperty(..),
+        mkLaunchTemplateSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LaunchTemplateSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplatespecification.html>
+    LaunchTemplateSpecificationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplatespecification.html#cfn-autoscaling-autoscalinggroup-launchtemplatespecification-launchtemplateid>
+                                         launchTemplateId :: (Prelude.Maybe (Value Prelude.Text)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplatespecification.html#cfn-autoscaling-autoscalinggroup-launchtemplatespecification-launchtemplatename>
+                                         launchTemplateName :: (Prelude.Maybe (Value Prelude.Text)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-launchtemplatespecification.html#cfn-autoscaling-autoscalinggroup-launchtemplatespecification-version>
+                                         version :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLaunchTemplateSpecificationProperty ::
+  Value Prelude.Text -> LaunchTemplateSpecificationProperty
+mkLaunchTemplateSpecificationProperty version
+  = LaunchTemplateSpecificationProperty
+      {haddock_workaround_ = (), version = version,
+       launchTemplateId = Prelude.Nothing,
+       launchTemplateName = Prelude.Nothing}
+instance ToResourceProperties LaunchTemplateSpecificationProperty where
+  toResourceProperties LaunchTemplateSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.LaunchTemplateSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Version" JSON..= version]
+                           (Prelude.catMaybes
+                              [(JSON..=) "LaunchTemplateId" Prelude.<$> launchTemplateId,
+                               (JSON..=) "LaunchTemplateName" Prelude.<$> launchTemplateName]))}
+instance JSON.ToJSON LaunchTemplateSpecificationProperty where
+  toJSON LaunchTemplateSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Version" JSON..= version]
+              (Prelude.catMaybes
+                 [(JSON..=) "LaunchTemplateId" Prelude.<$> launchTemplateId,
+                  (JSON..=) "LaunchTemplateName" Prelude.<$> launchTemplateName])))
+instance Property "LaunchTemplateId" LaunchTemplateSpecificationProperty where
+  type PropertyType "LaunchTemplateId" LaunchTemplateSpecificationProperty = Value Prelude.Text
+  set newValue LaunchTemplateSpecificationProperty {..}
+    = LaunchTemplateSpecificationProperty
+        {launchTemplateId = Prelude.pure newValue, ..}
+instance Property "LaunchTemplateName" LaunchTemplateSpecificationProperty where
+  type PropertyType "LaunchTemplateName" LaunchTemplateSpecificationProperty = Value Prelude.Text
+  set newValue LaunchTemplateSpecificationProperty {..}
+    = LaunchTemplateSpecificationProperty
+        {launchTemplateName = Prelude.pure newValue, ..}
+instance Property "Version" LaunchTemplateSpecificationProperty where
+  type PropertyType "Version" LaunchTemplateSpecificationProperty = Value Prelude.Text
+  set newValue LaunchTemplateSpecificationProperty {..}
+    = LaunchTemplateSpecificationProperty {version = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LaunchTemplateSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LaunchTemplateSpecificationProperty :: Prelude.Type
+instance ToResourceProperties LaunchTemplateSpecificationProperty
+instance Prelude.Eq LaunchTemplateSpecificationProperty
+instance Prelude.Show LaunchTemplateSpecificationProperty
+instance JSON.ToJSON LaunchTemplateSpecificationProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LifecycleHookSpecificationProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LifecycleHookSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LifecycleHookSpecificationProperty.hs
@@ -0,0 +1,105 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LifecycleHookSpecificationProperty (
+        LifecycleHookSpecificationProperty(..),
+        mkLifecycleHookSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LifecycleHookSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html>
+    LifecycleHookSpecificationProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-defaultresult>
+                                        defaultResult :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-heartbeattimeout>
+                                        heartbeatTimeout :: (Prelude.Maybe (Value Prelude.Integer)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-lifecyclehookname>
+                                        lifecycleHookName :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-lifecycletransition>
+                                        lifecycleTransition :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-notificationmetadata>
+                                        notificationMetadata :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-notificationtargetarn>
+                                        notificationTargetARN :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-lifecyclehookspecification.html#cfn-autoscaling-autoscalinggroup-lifecyclehookspecification-rolearn>
+                                        roleARN :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLifecycleHookSpecificationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> LifecycleHookSpecificationProperty
+mkLifecycleHookSpecificationProperty
+  lifecycleHookName
+  lifecycleTransition
+  = LifecycleHookSpecificationProperty
+      {haddock_workaround_ = (), lifecycleHookName = lifecycleHookName,
+       lifecycleTransition = lifecycleTransition,
+       defaultResult = Prelude.Nothing,
+       heartbeatTimeout = Prelude.Nothing,
+       notificationMetadata = Prelude.Nothing,
+       notificationTargetARN = Prelude.Nothing, roleARN = Prelude.Nothing}
+instance ToResourceProperties LifecycleHookSpecificationProperty where
+  toResourceProperties LifecycleHookSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.LifecycleHookSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["LifecycleHookName" JSON..= lifecycleHookName,
+                            "LifecycleTransition" JSON..= lifecycleTransition]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DefaultResult" Prelude.<$> defaultResult,
+                               (JSON..=) "HeartbeatTimeout" Prelude.<$> heartbeatTimeout,
+                               (JSON..=) "NotificationMetadata" Prelude.<$> notificationMetadata,
+                               (JSON..=) "NotificationTargetARN"
+                                 Prelude.<$> notificationTargetARN,
+                               (JSON..=) "RoleARN" Prelude.<$> roleARN]))}
+instance JSON.ToJSON LifecycleHookSpecificationProperty where
+  toJSON LifecycleHookSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["LifecycleHookName" JSON..= lifecycleHookName,
+               "LifecycleTransition" JSON..= lifecycleTransition]
+              (Prelude.catMaybes
+                 [(JSON..=) "DefaultResult" Prelude.<$> defaultResult,
+                  (JSON..=) "HeartbeatTimeout" Prelude.<$> heartbeatTimeout,
+                  (JSON..=) "NotificationMetadata" Prelude.<$> notificationMetadata,
+                  (JSON..=) "NotificationTargetARN"
+                    Prelude.<$> notificationTargetARN,
+                  (JSON..=) "RoleARN" Prelude.<$> roleARN])))
+instance Property "DefaultResult" LifecycleHookSpecificationProperty where
+  type PropertyType "DefaultResult" LifecycleHookSpecificationProperty = Value Prelude.Text
+  set newValue LifecycleHookSpecificationProperty {..}
+    = LifecycleHookSpecificationProperty
+        {defaultResult = Prelude.pure newValue, ..}
+instance Property "HeartbeatTimeout" LifecycleHookSpecificationProperty where
+  type PropertyType "HeartbeatTimeout" LifecycleHookSpecificationProperty = Value Prelude.Integer
+  set newValue LifecycleHookSpecificationProperty {..}
+    = LifecycleHookSpecificationProperty
+        {heartbeatTimeout = Prelude.pure newValue, ..}
+instance Property "LifecycleHookName" LifecycleHookSpecificationProperty where
+  type PropertyType "LifecycleHookName" LifecycleHookSpecificationProperty = Value Prelude.Text
+  set newValue LifecycleHookSpecificationProperty {..}
+    = LifecycleHookSpecificationProperty
+        {lifecycleHookName = newValue, ..}
+instance Property "LifecycleTransition" LifecycleHookSpecificationProperty where
+  type PropertyType "LifecycleTransition" LifecycleHookSpecificationProperty = Value Prelude.Text
+  set newValue LifecycleHookSpecificationProperty {..}
+    = LifecycleHookSpecificationProperty
+        {lifecycleTransition = newValue, ..}
+instance Property "NotificationMetadata" LifecycleHookSpecificationProperty where
+  type PropertyType "NotificationMetadata" LifecycleHookSpecificationProperty = Value Prelude.Text
+  set newValue LifecycleHookSpecificationProperty {..}
+    = LifecycleHookSpecificationProperty
+        {notificationMetadata = Prelude.pure newValue, ..}
+instance Property "NotificationTargetARN" LifecycleHookSpecificationProperty where
+  type PropertyType "NotificationTargetARN" LifecycleHookSpecificationProperty = Value Prelude.Text
+  set newValue LifecycleHookSpecificationProperty {..}
+    = LifecycleHookSpecificationProperty
+        {notificationTargetARN = Prelude.pure newValue, ..}
+instance Property "RoleARN" LifecycleHookSpecificationProperty where
+  type PropertyType "RoleARN" LifecycleHookSpecificationProperty = Value Prelude.Text
+  set newValue LifecycleHookSpecificationProperty {..}
+    = LifecycleHookSpecificationProperty
+        {roleARN = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/LifecycleHookSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LifecycleHookSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/LifecycleHookSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.LifecycleHookSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data LifecycleHookSpecificationProperty :: Prelude.Type
+instance ToResourceProperties LifecycleHookSpecificationProperty
+instance Prelude.Eq LifecycleHookSpecificationProperty
+instance Prelude.Show LifecycleHookSpecificationProperty
+instance JSON.ToJSON LifecycleHookSpecificationProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryGiBPerVCpuRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryGiBPerVCpuRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryGiBPerVCpuRequestProperty.hs
@@ -0,0 +1,47 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MemoryGiBPerVCpuRequestProperty (
+        MemoryGiBPerVCpuRequestProperty(..),
+        mkMemoryGiBPerVCpuRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MemoryGiBPerVCpuRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-memorygibpervcpurequest.html>
+    MemoryGiBPerVCpuRequestProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-memorygibpervcpurequest.html#cfn-autoscaling-autoscalinggroup-memorygibpervcpurequest-max>
+                                     max :: (Prelude.Maybe (Value Prelude.Double)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-memorygibpervcpurequest.html#cfn-autoscaling-autoscalinggroup-memorygibpervcpurequest-min>
+                                     min :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMemoryGiBPerVCpuRequestProperty ::
+  MemoryGiBPerVCpuRequestProperty
+mkMemoryGiBPerVCpuRequestProperty
+  = MemoryGiBPerVCpuRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties MemoryGiBPerVCpuRequestProperty where
+  toResourceProperties MemoryGiBPerVCpuRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.MemoryGiBPerVCpuRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON MemoryGiBPerVCpuRequestProperty where
+  toJSON MemoryGiBPerVCpuRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" MemoryGiBPerVCpuRequestProperty where
+  type PropertyType "Max" MemoryGiBPerVCpuRequestProperty = Value Prelude.Double
+  set newValue MemoryGiBPerVCpuRequestProperty {..}
+    = MemoryGiBPerVCpuRequestProperty {max = Prelude.pure newValue, ..}
+instance Property "Min" MemoryGiBPerVCpuRequestProperty where
+  type PropertyType "Min" MemoryGiBPerVCpuRequestProperty = Value Prelude.Double
+  set newValue MemoryGiBPerVCpuRequestProperty {..}
+    = MemoryGiBPerVCpuRequestProperty {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryGiBPerVCpuRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryGiBPerVCpuRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryGiBPerVCpuRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MemoryGiBPerVCpuRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MemoryGiBPerVCpuRequestProperty :: Prelude.Type
+instance ToResourceProperties MemoryGiBPerVCpuRequestProperty
+instance Prelude.Eq MemoryGiBPerVCpuRequestProperty
+instance Prelude.Show MemoryGiBPerVCpuRequestProperty
+instance JSON.ToJSON MemoryGiBPerVCpuRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryMiBRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryMiBRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryMiBRequestProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MemoryMiBRequestProperty (
+        MemoryMiBRequestProperty(..), mkMemoryMiBRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MemoryMiBRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-memorymibrequest.html>
+    MemoryMiBRequestProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-memorymibrequest.html#cfn-autoscaling-autoscalinggroup-memorymibrequest-max>
+                              max :: (Prelude.Maybe (Value Prelude.Integer)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-memorymibrequest.html#cfn-autoscaling-autoscalinggroup-memorymibrequest-min>
+                              min :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMemoryMiBRequestProperty :: MemoryMiBRequestProperty
+mkMemoryMiBRequestProperty
+  = MemoryMiBRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties MemoryMiBRequestProperty where
+  toResourceProperties MemoryMiBRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.MemoryMiBRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON MemoryMiBRequestProperty where
+  toJSON MemoryMiBRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" MemoryMiBRequestProperty where
+  type PropertyType "Max" MemoryMiBRequestProperty = Value Prelude.Integer
+  set newValue MemoryMiBRequestProperty {..}
+    = MemoryMiBRequestProperty {max = Prelude.pure newValue, ..}
+instance Property "Min" MemoryMiBRequestProperty where
+  type PropertyType "Min" MemoryMiBRequestProperty = Value Prelude.Integer
+  set newValue MemoryMiBRequestProperty {..}
+    = MemoryMiBRequestProperty {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryMiBRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryMiBRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MemoryMiBRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MemoryMiBRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MemoryMiBRequestProperty :: Prelude.Type
+instance ToResourceProperties MemoryMiBRequestProperty
+instance Prelude.Eq MemoryMiBRequestProperty
+instance Prelude.Show MemoryMiBRequestProperty
+instance JSON.ToJSON MemoryMiBRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MetricsCollectionProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MetricsCollectionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MetricsCollectionProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MetricsCollectionProperty (
+        MetricsCollectionProperty(..), mkMetricsCollectionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MetricsCollectionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-metricscollection.html>
+    MetricsCollectionProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-metricscollection.html#cfn-autoscaling-autoscalinggroup-metricscollection-granularity>
+                               granularity :: (Value Prelude.Text),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-metricscollection.html#cfn-autoscaling-autoscalinggroup-metricscollection-metrics>
+                               metrics :: (Prelude.Maybe (ValueList Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMetricsCollectionProperty ::
+  Value Prelude.Text -> MetricsCollectionProperty
+mkMetricsCollectionProperty granularity
+  = MetricsCollectionProperty
+      {haddock_workaround_ = (), granularity = granularity,
+       metrics = Prelude.Nothing}
+instance ToResourceProperties MetricsCollectionProperty where
+  toResourceProperties MetricsCollectionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.MetricsCollection",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Granularity" JSON..= granularity]
+                           (Prelude.catMaybes [(JSON..=) "Metrics" Prelude.<$> metrics]))}
+instance JSON.ToJSON MetricsCollectionProperty where
+  toJSON MetricsCollectionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Granularity" JSON..= granularity]
+              (Prelude.catMaybes [(JSON..=) "Metrics" Prelude.<$> metrics])))
+instance Property "Granularity" MetricsCollectionProperty where
+  type PropertyType "Granularity" MetricsCollectionProperty = Value Prelude.Text
+  set newValue MetricsCollectionProperty {..}
+    = MetricsCollectionProperty {granularity = newValue, ..}
+instance Property "Metrics" MetricsCollectionProperty where
+  type PropertyType "Metrics" MetricsCollectionProperty = ValueList Prelude.Text
+  set newValue MetricsCollectionProperty {..}
+    = MetricsCollectionProperty {metrics = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MetricsCollectionProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MetricsCollectionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MetricsCollectionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MetricsCollectionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MetricsCollectionProperty :: Prelude.Type
+instance ToResourceProperties MetricsCollectionProperty
+instance Prelude.Eq MetricsCollectionProperty
+instance Prelude.Show MetricsCollectionProperty
+instance JSON.ToJSON MetricsCollectionProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MixedInstancesPolicyProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MixedInstancesPolicyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MixedInstancesPolicyProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MixedInstancesPolicyProperty (
+        module Exports, MixedInstancesPolicyProperty(..),
+        mkMixedInstancesPolicyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.InstancesDistributionProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateProperty as Exports
+import Stratosphere.ResourceProperties
+data MixedInstancesPolicyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html>
+    MixedInstancesPolicyProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html#cfn-autoscaling-autoscalinggroup-mixedinstancespolicy-instancesdistribution>
+                                  instancesDistribution :: (Prelude.Maybe InstancesDistributionProperty),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-mixedinstancespolicy.html#cfn-autoscaling-autoscalinggroup-mixedinstancespolicy-launchtemplate>
+                                  launchTemplate :: LaunchTemplateProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMixedInstancesPolicyProperty ::
+  LaunchTemplateProperty -> MixedInstancesPolicyProperty
+mkMixedInstancesPolicyProperty launchTemplate
+  = MixedInstancesPolicyProperty
+      {haddock_workaround_ = (), launchTemplate = launchTemplate,
+       instancesDistribution = Prelude.Nothing}
+instance ToResourceProperties MixedInstancesPolicyProperty where
+  toResourceProperties MixedInstancesPolicyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.MixedInstancesPolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["LaunchTemplate" JSON..= launchTemplate]
+                           (Prelude.catMaybes
+                              [(JSON..=) "InstancesDistribution"
+                                 Prelude.<$> instancesDistribution]))}
+instance JSON.ToJSON MixedInstancesPolicyProperty where
+  toJSON MixedInstancesPolicyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["LaunchTemplate" JSON..= launchTemplate]
+              (Prelude.catMaybes
+                 [(JSON..=) "InstancesDistribution"
+                    Prelude.<$> instancesDistribution])))
+instance Property "InstancesDistribution" MixedInstancesPolicyProperty where
+  type PropertyType "InstancesDistribution" MixedInstancesPolicyProperty = InstancesDistributionProperty
+  set newValue MixedInstancesPolicyProperty {..}
+    = MixedInstancesPolicyProperty
+        {instancesDistribution = Prelude.pure newValue, ..}
+instance Property "LaunchTemplate" MixedInstancesPolicyProperty where
+  type PropertyType "LaunchTemplate" MixedInstancesPolicyProperty = LaunchTemplateProperty
+  set newValue MixedInstancesPolicyProperty {..}
+    = MixedInstancesPolicyProperty {launchTemplate = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/MixedInstancesPolicyProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MixedInstancesPolicyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/MixedInstancesPolicyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.MixedInstancesPolicyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MixedInstancesPolicyProperty :: Prelude.Type
+instance ToResourceProperties MixedInstancesPolicyProperty
+instance Prelude.Eq MixedInstancesPolicyProperty
+instance Prelude.Show MixedInstancesPolicyProperty
+instance JSON.ToJSON MixedInstancesPolicyProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkBandwidthGbpsRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkBandwidthGbpsRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkBandwidthGbpsRequestProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.NetworkBandwidthGbpsRequestProperty (
+        NetworkBandwidthGbpsRequestProperty(..),
+        mkNetworkBandwidthGbpsRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NetworkBandwidthGbpsRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-networkbandwidthgbpsrequest.html>
+    NetworkBandwidthGbpsRequestProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-networkbandwidthgbpsrequest.html#cfn-autoscaling-autoscalinggroup-networkbandwidthgbpsrequest-max>
+                                         max :: (Prelude.Maybe (Value Prelude.Double)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-networkbandwidthgbpsrequest.html#cfn-autoscaling-autoscalinggroup-networkbandwidthgbpsrequest-min>
+                                         min :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNetworkBandwidthGbpsRequestProperty ::
+  NetworkBandwidthGbpsRequestProperty
+mkNetworkBandwidthGbpsRequestProperty
+  = NetworkBandwidthGbpsRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties NetworkBandwidthGbpsRequestProperty where
+  toResourceProperties NetworkBandwidthGbpsRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.NetworkBandwidthGbpsRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON NetworkBandwidthGbpsRequestProperty where
+  toJSON NetworkBandwidthGbpsRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" NetworkBandwidthGbpsRequestProperty where
+  type PropertyType "Max" NetworkBandwidthGbpsRequestProperty = Value Prelude.Double
+  set newValue NetworkBandwidthGbpsRequestProperty {..}
+    = NetworkBandwidthGbpsRequestProperty
+        {max = Prelude.pure newValue, ..}
+instance Property "Min" NetworkBandwidthGbpsRequestProperty where
+  type PropertyType "Min" NetworkBandwidthGbpsRequestProperty = Value Prelude.Double
+  set newValue NetworkBandwidthGbpsRequestProperty {..}
+    = NetworkBandwidthGbpsRequestProperty
+        {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkBandwidthGbpsRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkBandwidthGbpsRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkBandwidthGbpsRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.NetworkBandwidthGbpsRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NetworkBandwidthGbpsRequestProperty :: Prelude.Type
+instance ToResourceProperties NetworkBandwidthGbpsRequestProperty
+instance Prelude.Eq NetworkBandwidthGbpsRequestProperty
+instance Prelude.Show NetworkBandwidthGbpsRequestProperty
+instance JSON.ToJSON NetworkBandwidthGbpsRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkInterfaceCountRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkInterfaceCountRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkInterfaceCountRequestProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.NetworkInterfaceCountRequestProperty (
+        NetworkInterfaceCountRequestProperty(..),
+        mkNetworkInterfaceCountRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NetworkInterfaceCountRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-networkinterfacecountrequest.html>
+    NetworkInterfaceCountRequestProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-networkinterfacecountrequest.html#cfn-autoscaling-autoscalinggroup-networkinterfacecountrequest-max>
+                                          max :: (Prelude.Maybe (Value Prelude.Integer)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-networkinterfacecountrequest.html#cfn-autoscaling-autoscalinggroup-networkinterfacecountrequest-min>
+                                          min :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNetworkInterfaceCountRequestProperty ::
+  NetworkInterfaceCountRequestProperty
+mkNetworkInterfaceCountRequestProperty
+  = NetworkInterfaceCountRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties NetworkInterfaceCountRequestProperty where
+  toResourceProperties NetworkInterfaceCountRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.NetworkInterfaceCountRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON NetworkInterfaceCountRequestProperty where
+  toJSON NetworkInterfaceCountRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" NetworkInterfaceCountRequestProperty where
+  type PropertyType "Max" NetworkInterfaceCountRequestProperty = Value Prelude.Integer
+  set newValue NetworkInterfaceCountRequestProperty {..}
+    = NetworkInterfaceCountRequestProperty
+        {max = Prelude.pure newValue, ..}
+instance Property "Min" NetworkInterfaceCountRequestProperty where
+  type PropertyType "Min" NetworkInterfaceCountRequestProperty = Value Prelude.Integer
+  set newValue NetworkInterfaceCountRequestProperty {..}
+    = NetworkInterfaceCountRequestProperty
+        {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkInterfaceCountRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkInterfaceCountRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NetworkInterfaceCountRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.NetworkInterfaceCountRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NetworkInterfaceCountRequestProperty :: Prelude.Type
+instance ToResourceProperties NetworkInterfaceCountRequestProperty
+instance Prelude.Eq NetworkInterfaceCountRequestProperty
+instance Prelude.Show NetworkInterfaceCountRequestProperty
+instance JSON.ToJSON NetworkInterfaceCountRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/NotificationConfigurationProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NotificationConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NotificationConfigurationProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.NotificationConfigurationProperty (
+        NotificationConfigurationProperty(..),
+        mkNotificationConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data NotificationConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-notificationconfiguration.html>
+    NotificationConfigurationProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-notificationconfiguration.html#cfn-autoscaling-autoscalinggroup-notificationconfiguration-notificationtypes>
+                                       notificationTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-notificationconfiguration.html#cfn-autoscaling-autoscalinggroup-notificationconfiguration-topicarn>
+                                       topicARN :: (ValueList Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkNotificationConfigurationProperty ::
+  ValueList Prelude.Text -> NotificationConfigurationProperty
+mkNotificationConfigurationProperty topicARN
+  = NotificationConfigurationProperty
+      {haddock_workaround_ = (), topicARN = topicARN,
+       notificationTypes = Prelude.Nothing}
+instance ToResourceProperties NotificationConfigurationProperty where
+  toResourceProperties NotificationConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.NotificationConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TopicARN" JSON..= topicARN]
+                           (Prelude.catMaybes
+                              [(JSON..=) "NotificationTypes" Prelude.<$> notificationTypes]))}
+instance JSON.ToJSON NotificationConfigurationProperty where
+  toJSON NotificationConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TopicARN" JSON..= topicARN]
+              (Prelude.catMaybes
+                 [(JSON..=) "NotificationTypes" Prelude.<$> notificationTypes])))
+instance Property "NotificationTypes" NotificationConfigurationProperty where
+  type PropertyType "NotificationTypes" NotificationConfigurationProperty = ValueList Prelude.Text
+  set newValue NotificationConfigurationProperty {..}
+    = NotificationConfigurationProperty
+        {notificationTypes = Prelude.pure newValue, ..}
+instance Property "TopicARN" NotificationConfigurationProperty where
+  type PropertyType "TopicARN" NotificationConfigurationProperty = ValueList Prelude.Text
+  set newValue NotificationConfigurationProperty {..}
+    = NotificationConfigurationProperty {topicARN = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/NotificationConfigurationProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NotificationConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/NotificationConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.NotificationConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data NotificationConfigurationProperty :: Prelude.Type
+instance ToResourceProperties NotificationConfigurationProperty
+instance Prelude.Eq NotificationConfigurationProperty
+instance Prelude.Show NotificationConfigurationProperty
+instance JSON.ToJSON NotificationConfigurationProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/PerformanceFactorReferenceRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/PerformanceFactorReferenceRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/PerformanceFactorReferenceRequestProperty.hs
@@ -0,0 +1,39 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.PerformanceFactorReferenceRequestProperty (
+        PerformanceFactorReferenceRequestProperty(..),
+        mkPerformanceFactorReferenceRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PerformanceFactorReferenceRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-performancefactorreferencerequest.html>
+    PerformanceFactorReferenceRequestProperty {haddock_workaround_ :: (),
+                                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-performancefactorreferencerequest.html#cfn-autoscaling-autoscalinggroup-performancefactorreferencerequest-instancefamily>
+                                               instanceFamily :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPerformanceFactorReferenceRequestProperty ::
+  PerformanceFactorReferenceRequestProperty
+mkPerformanceFactorReferenceRequestProperty
+  = PerformanceFactorReferenceRequestProperty
+      {haddock_workaround_ = (), instanceFamily = Prelude.Nothing}
+instance ToResourceProperties PerformanceFactorReferenceRequestProperty where
+  toResourceProperties PerformanceFactorReferenceRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.PerformanceFactorReferenceRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "InstanceFamily" Prelude.<$> instanceFamily])}
+instance JSON.ToJSON PerformanceFactorReferenceRequestProperty where
+  toJSON PerformanceFactorReferenceRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "InstanceFamily" Prelude.<$> instanceFamily]))
+instance Property "InstanceFamily" PerformanceFactorReferenceRequestProperty where
+  type PropertyType "InstanceFamily" PerformanceFactorReferenceRequestProperty = Value Prelude.Text
+  set newValue PerformanceFactorReferenceRequestProperty {..}
+    = PerformanceFactorReferenceRequestProperty
+        {instanceFamily = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/PerformanceFactorReferenceRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/PerformanceFactorReferenceRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/PerformanceFactorReferenceRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.PerformanceFactorReferenceRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PerformanceFactorReferenceRequestProperty :: Prelude.Type
+instance ToResourceProperties PerformanceFactorReferenceRequestProperty
+instance Prelude.Eq PerformanceFactorReferenceRequestProperty
+instance Prelude.Show PerformanceFactorReferenceRequestProperty
+instance JSON.ToJSON PerformanceFactorReferenceRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/TagPropertyProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TagPropertyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TagPropertyProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.TagPropertyProperty (
+        TagPropertyProperty(..), mkTagPropertyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TagPropertyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-tagproperty.html>
+    TagPropertyProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-tagproperty.html#cfn-autoscaling-autoscalinggroup-tagproperty-key>
+                         key :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-tagproperty.html#cfn-autoscaling-autoscalinggroup-tagproperty-propagateatlaunch>
+                         propagateAtLaunch :: (Value Prelude.Bool),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-tagproperty.html#cfn-autoscaling-autoscalinggroup-tagproperty-value>
+                         value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTagPropertyProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Bool -> Value Prelude.Text -> TagPropertyProperty
+mkTagPropertyProperty key propagateAtLaunch value
+  = TagPropertyProperty
+      {haddock_workaround_ = (), key = key,
+       propagateAtLaunch = propagateAtLaunch, value = value}
+instance ToResourceProperties TagPropertyProperty where
+  toResourceProperties TagPropertyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.TagProperty",
+         supportsTags = Prelude.False,
+         properties = ["Key" JSON..= key,
+                       "PropagateAtLaunch" JSON..= propagateAtLaunch,
+                       "Value" JSON..= value]}
+instance JSON.ToJSON TagPropertyProperty where
+  toJSON TagPropertyProperty {..}
+    = JSON.object
+        ["Key" JSON..= key, "PropagateAtLaunch" JSON..= propagateAtLaunch,
+         "Value" JSON..= value]
+instance Property "Key" TagPropertyProperty where
+  type PropertyType "Key" TagPropertyProperty = Value Prelude.Text
+  set newValue TagPropertyProperty {..}
+    = TagPropertyProperty {key = newValue, ..}
+instance Property "PropagateAtLaunch" TagPropertyProperty where
+  type PropertyType "PropagateAtLaunch" TagPropertyProperty = Value Prelude.Bool
+  set newValue TagPropertyProperty {..}
+    = TagPropertyProperty {propagateAtLaunch = newValue, ..}
+instance Property "Value" TagPropertyProperty where
+  type PropertyType "Value" TagPropertyProperty = Value Prelude.Text
+  set newValue TagPropertyProperty {..}
+    = TagPropertyProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/TagPropertyProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TagPropertyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TagPropertyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.TagPropertyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TagPropertyProperty :: Prelude.Type
+instance ToResourceProperties TagPropertyProperty
+instance Prelude.Eq TagPropertyProperty
+instance Prelude.Show TagPropertyProperty
+instance JSON.ToJSON TagPropertyProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/TotalLocalStorageGBRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TotalLocalStorageGBRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TotalLocalStorageGBRequestProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.TotalLocalStorageGBRequestProperty (
+        TotalLocalStorageGBRequestProperty(..),
+        mkTotalLocalStorageGBRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TotalLocalStorageGBRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-totallocalstoragegbrequest.html>
+    TotalLocalStorageGBRequestProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-totallocalstoragegbrequest.html#cfn-autoscaling-autoscalinggroup-totallocalstoragegbrequest-max>
+                                        max :: (Prelude.Maybe (Value Prelude.Double)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-totallocalstoragegbrequest.html#cfn-autoscaling-autoscalinggroup-totallocalstoragegbrequest-min>
+                                        min :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTotalLocalStorageGBRequestProperty ::
+  TotalLocalStorageGBRequestProperty
+mkTotalLocalStorageGBRequestProperty
+  = TotalLocalStorageGBRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties TotalLocalStorageGBRequestProperty where
+  toResourceProperties TotalLocalStorageGBRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.TotalLocalStorageGBRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON TotalLocalStorageGBRequestProperty where
+  toJSON TotalLocalStorageGBRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" TotalLocalStorageGBRequestProperty where
+  type PropertyType "Max" TotalLocalStorageGBRequestProperty = Value Prelude.Double
+  set newValue TotalLocalStorageGBRequestProperty {..}
+    = TotalLocalStorageGBRequestProperty
+        {max = Prelude.pure newValue, ..}
+instance Property "Min" TotalLocalStorageGBRequestProperty where
+  type PropertyType "Min" TotalLocalStorageGBRequestProperty = Value Prelude.Double
+  set newValue TotalLocalStorageGBRequestProperty {..}
+    = TotalLocalStorageGBRequestProperty
+        {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/TotalLocalStorageGBRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TotalLocalStorageGBRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TotalLocalStorageGBRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.TotalLocalStorageGBRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TotalLocalStorageGBRequestProperty :: Prelude.Type
+instance ToResourceProperties TotalLocalStorageGBRequestProperty
+instance Prelude.Eq TotalLocalStorageGBRequestProperty
+instance Prelude.Show TotalLocalStorageGBRequestProperty
+instance JSON.ToJSON TotalLocalStorageGBRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/TrafficSourceIdentifierProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TrafficSourceIdentifierProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TrafficSourceIdentifierProperty.hs
@@ -0,0 +1,42 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.TrafficSourceIdentifierProperty (
+        TrafficSourceIdentifierProperty(..),
+        mkTrafficSourceIdentifierProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TrafficSourceIdentifierProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-trafficsourceidentifier.html>
+    TrafficSourceIdentifierProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-trafficsourceidentifier.html#cfn-autoscaling-autoscalinggroup-trafficsourceidentifier-identifier>
+                                     identifier :: (Value Prelude.Text),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-trafficsourceidentifier.html#cfn-autoscaling-autoscalinggroup-trafficsourceidentifier-type>
+                                     type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTrafficSourceIdentifierProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> TrafficSourceIdentifierProperty
+mkTrafficSourceIdentifierProperty identifier type'
+  = TrafficSourceIdentifierProperty
+      {haddock_workaround_ = (), identifier = identifier, type' = type'}
+instance ToResourceProperties TrafficSourceIdentifierProperty where
+  toResourceProperties TrafficSourceIdentifierProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.TrafficSourceIdentifier",
+         supportsTags = Prelude.False,
+         properties = ["Identifier" JSON..= identifier,
+                       "Type" JSON..= type']}
+instance JSON.ToJSON TrafficSourceIdentifierProperty where
+  toJSON TrafficSourceIdentifierProperty {..}
+    = JSON.object
+        ["Identifier" JSON..= identifier, "Type" JSON..= type']
+instance Property "Identifier" TrafficSourceIdentifierProperty where
+  type PropertyType "Identifier" TrafficSourceIdentifierProperty = Value Prelude.Text
+  set newValue TrafficSourceIdentifierProperty {..}
+    = TrafficSourceIdentifierProperty {identifier = newValue, ..}
+instance Property "Type" TrafficSourceIdentifierProperty where
+  type PropertyType "Type" TrafficSourceIdentifierProperty = Value Prelude.Text
+  set newValue TrafficSourceIdentifierProperty {..}
+    = TrafficSourceIdentifierProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/TrafficSourceIdentifierProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TrafficSourceIdentifierProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/TrafficSourceIdentifierProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.TrafficSourceIdentifierProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TrafficSourceIdentifierProperty :: Prelude.Type
+instance ToResourceProperties TrafficSourceIdentifierProperty
+instance Prelude.Eq TrafficSourceIdentifierProperty
+instance Prelude.Show TrafficSourceIdentifierProperty
+instance JSON.ToJSON TrafficSourceIdentifierProperty
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/VCpuCountRequestProperty.hs b/gen/Stratosphere/AutoScaling/AutoScalingGroup/VCpuCountRequestProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/VCpuCountRequestProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.VCpuCountRequestProperty (
+        VCpuCountRequestProperty(..), mkVCpuCountRequestProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data VCpuCountRequestProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-vcpucountrequest.html>
+    VCpuCountRequestProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-vcpucountrequest.html#cfn-autoscaling-autoscalinggroup-vcpucountrequest-max>
+                              max :: (Prelude.Maybe (Value Prelude.Integer)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-autoscalinggroup-vcpucountrequest.html#cfn-autoscaling-autoscalinggroup-vcpucountrequest-min>
+                              min :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkVCpuCountRequestProperty :: VCpuCountRequestProperty
+mkVCpuCountRequestProperty
+  = VCpuCountRequestProperty
+      {haddock_workaround_ = (), max = Prelude.Nothing,
+       min = Prelude.Nothing}
+instance ToResourceProperties VCpuCountRequestProperty where
+  toResourceProperties VCpuCountRequestProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::AutoScalingGroup.VCpuCountRequest",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Max" Prelude.<$> max,
+                            (JSON..=) "Min" Prelude.<$> min])}
+instance JSON.ToJSON VCpuCountRequestProperty where
+  toJSON VCpuCountRequestProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Max" Prelude.<$> max,
+               (JSON..=) "Min" Prelude.<$> min]))
+instance Property "Max" VCpuCountRequestProperty where
+  type PropertyType "Max" VCpuCountRequestProperty = Value Prelude.Integer
+  set newValue VCpuCountRequestProperty {..}
+    = VCpuCountRequestProperty {max = Prelude.pure newValue, ..}
+instance Property "Min" VCpuCountRequestProperty where
+  type PropertyType "Min" VCpuCountRequestProperty = Value Prelude.Integer
+  set newValue VCpuCountRequestProperty {..}
+    = VCpuCountRequestProperty {min = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/AutoScalingGroup/VCpuCountRequestProperty.hs-boot b/gen/Stratosphere/AutoScaling/AutoScalingGroup/VCpuCountRequestProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/AutoScalingGroup/VCpuCountRequestProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.AutoScalingGroup.VCpuCountRequestProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data VCpuCountRequestProperty :: Prelude.Type
+instance ToResourceProperties VCpuCountRequestProperty
+instance Prelude.Eq VCpuCountRequestProperty
+instance Prelude.Show VCpuCountRequestProperty
+instance JSON.ToJSON VCpuCountRequestProperty
diff --git a/gen/Stratosphere/AutoScaling/LaunchConfiguration.hs b/gen/Stratosphere/AutoScaling/LaunchConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LaunchConfiguration.hs
@@ -0,0 +1,211 @@
+module Stratosphere.AutoScaling.LaunchConfiguration (
+        module Exports, LaunchConfiguration(..), mkLaunchConfiguration
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceMappingProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.LaunchConfiguration.MetadataOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LaunchConfiguration
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html>
+    LaunchConfiguration {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-associatepublicipaddress>
+                         associatePublicIpAddress :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-blockdevicemappings>
+                         blockDeviceMappings :: (Prelude.Maybe [BlockDeviceMappingProperty]),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-classiclinkvpcid>
+                         classicLinkVPCId :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-classiclinkvpcsecuritygroups>
+                         classicLinkVPCSecurityGroups :: (Prelude.Maybe (ValueList Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-ebsoptimized>
+                         ebsOptimized :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-iaminstanceprofile>
+                         iamInstanceProfile :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-imageid>
+                         imageId :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-instanceid>
+                         instanceId :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-instancemonitoring>
+                         instanceMonitoring :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-instancetype>
+                         instanceType :: (Value Prelude.Text),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-kernelid>
+                         kernelId :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-keyname>
+                         keyName :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-launchconfigurationname>
+                         launchConfigurationName :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-metadataoptions>
+                         metadataOptions :: (Prelude.Maybe MetadataOptionsProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-placementtenancy>
+                         placementTenancy :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-ramdiskid>
+                         ramDiskId :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-securitygroups>
+                         securityGroups :: (Prelude.Maybe (ValueList Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-spotprice>
+                         spotPrice :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-launchconfiguration.html#cfn-autoscaling-launchconfiguration-userdata>
+                         userData :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLaunchConfiguration ::
+  Value Prelude.Text -> Value Prelude.Text -> LaunchConfiguration
+mkLaunchConfiguration imageId instanceType
+  = LaunchConfiguration
+      {haddock_workaround_ = (), imageId = imageId,
+       instanceType = instanceType,
+       associatePublicIpAddress = Prelude.Nothing,
+       blockDeviceMappings = Prelude.Nothing,
+       classicLinkVPCId = Prelude.Nothing,
+       classicLinkVPCSecurityGroups = Prelude.Nothing,
+       ebsOptimized = Prelude.Nothing,
+       iamInstanceProfile = Prelude.Nothing, instanceId = Prelude.Nothing,
+       instanceMonitoring = Prelude.Nothing, kernelId = Prelude.Nothing,
+       keyName = Prelude.Nothing,
+       launchConfigurationName = Prelude.Nothing,
+       metadataOptions = Prelude.Nothing,
+       placementTenancy = Prelude.Nothing, ramDiskId = Prelude.Nothing,
+       securityGroups = Prelude.Nothing, spotPrice = Prelude.Nothing,
+       userData = Prelude.Nothing}
+instance ToResourceProperties LaunchConfiguration where
+  toResourceProperties LaunchConfiguration {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::LaunchConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ImageId" JSON..= imageId, "InstanceType" JSON..= instanceType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AssociatePublicIpAddress"
+                                 Prelude.<$> associatePublicIpAddress,
+                               (JSON..=) "BlockDeviceMappings" Prelude.<$> blockDeviceMappings,
+                               (JSON..=) "ClassicLinkVPCId" Prelude.<$> classicLinkVPCId,
+                               (JSON..=) "ClassicLinkVPCSecurityGroups"
+                                 Prelude.<$> classicLinkVPCSecurityGroups,
+                               (JSON..=) "EbsOptimized" Prelude.<$> ebsOptimized,
+                               (JSON..=) "IamInstanceProfile" Prelude.<$> iamInstanceProfile,
+                               (JSON..=) "InstanceId" Prelude.<$> instanceId,
+                               (JSON..=) "InstanceMonitoring" Prelude.<$> instanceMonitoring,
+                               (JSON..=) "KernelId" Prelude.<$> kernelId,
+                               (JSON..=) "KeyName" Prelude.<$> keyName,
+                               (JSON..=) "LaunchConfigurationName"
+                                 Prelude.<$> launchConfigurationName,
+                               (JSON..=) "MetadataOptions" Prelude.<$> metadataOptions,
+                               (JSON..=) "PlacementTenancy" Prelude.<$> placementTenancy,
+                               (JSON..=) "RamDiskId" Prelude.<$> ramDiskId,
+                               (JSON..=) "SecurityGroups" Prelude.<$> securityGroups,
+                               (JSON..=) "SpotPrice" Prelude.<$> spotPrice,
+                               (JSON..=) "UserData" Prelude.<$> userData]))}
+instance JSON.ToJSON LaunchConfiguration where
+  toJSON LaunchConfiguration {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ImageId" JSON..= imageId, "InstanceType" JSON..= instanceType]
+              (Prelude.catMaybes
+                 [(JSON..=) "AssociatePublicIpAddress"
+                    Prelude.<$> associatePublicIpAddress,
+                  (JSON..=) "BlockDeviceMappings" Prelude.<$> blockDeviceMappings,
+                  (JSON..=) "ClassicLinkVPCId" Prelude.<$> classicLinkVPCId,
+                  (JSON..=) "ClassicLinkVPCSecurityGroups"
+                    Prelude.<$> classicLinkVPCSecurityGroups,
+                  (JSON..=) "EbsOptimized" Prelude.<$> ebsOptimized,
+                  (JSON..=) "IamInstanceProfile" Prelude.<$> iamInstanceProfile,
+                  (JSON..=) "InstanceId" Prelude.<$> instanceId,
+                  (JSON..=) "InstanceMonitoring" Prelude.<$> instanceMonitoring,
+                  (JSON..=) "KernelId" Prelude.<$> kernelId,
+                  (JSON..=) "KeyName" Prelude.<$> keyName,
+                  (JSON..=) "LaunchConfigurationName"
+                    Prelude.<$> launchConfigurationName,
+                  (JSON..=) "MetadataOptions" Prelude.<$> metadataOptions,
+                  (JSON..=) "PlacementTenancy" Prelude.<$> placementTenancy,
+                  (JSON..=) "RamDiskId" Prelude.<$> ramDiskId,
+                  (JSON..=) "SecurityGroups" Prelude.<$> securityGroups,
+                  (JSON..=) "SpotPrice" Prelude.<$> spotPrice,
+                  (JSON..=) "UserData" Prelude.<$> userData])))
+instance Property "AssociatePublicIpAddress" LaunchConfiguration where
+  type PropertyType "AssociatePublicIpAddress" LaunchConfiguration = Value Prelude.Bool
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {associatePublicIpAddress = Prelude.pure newValue, ..}
+instance Property "BlockDeviceMappings" LaunchConfiguration where
+  type PropertyType "BlockDeviceMappings" LaunchConfiguration = [BlockDeviceMappingProperty]
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {blockDeviceMappings = Prelude.pure newValue, ..}
+instance Property "ClassicLinkVPCId" LaunchConfiguration where
+  type PropertyType "ClassicLinkVPCId" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {classicLinkVPCId = Prelude.pure newValue, ..}
+instance Property "ClassicLinkVPCSecurityGroups" LaunchConfiguration where
+  type PropertyType "ClassicLinkVPCSecurityGroups" LaunchConfiguration = ValueList Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {classicLinkVPCSecurityGroups = Prelude.pure newValue, ..}
+instance Property "EbsOptimized" LaunchConfiguration where
+  type PropertyType "EbsOptimized" LaunchConfiguration = Value Prelude.Bool
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {ebsOptimized = Prelude.pure newValue, ..}
+instance Property "IamInstanceProfile" LaunchConfiguration where
+  type PropertyType "IamInstanceProfile" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {iamInstanceProfile = Prelude.pure newValue, ..}
+instance Property "ImageId" LaunchConfiguration where
+  type PropertyType "ImageId" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {imageId = newValue, ..}
+instance Property "InstanceId" LaunchConfiguration where
+  type PropertyType "InstanceId" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {instanceId = Prelude.pure newValue, ..}
+instance Property "InstanceMonitoring" LaunchConfiguration where
+  type PropertyType "InstanceMonitoring" LaunchConfiguration = Value Prelude.Bool
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {instanceMonitoring = Prelude.pure newValue, ..}
+instance Property "InstanceType" LaunchConfiguration where
+  type PropertyType "InstanceType" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {instanceType = newValue, ..}
+instance Property "KernelId" LaunchConfiguration where
+  type PropertyType "KernelId" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {kernelId = Prelude.pure newValue, ..}
+instance Property "KeyName" LaunchConfiguration where
+  type PropertyType "KeyName" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {keyName = Prelude.pure newValue, ..}
+instance Property "LaunchConfigurationName" LaunchConfiguration where
+  type PropertyType "LaunchConfigurationName" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {launchConfigurationName = Prelude.pure newValue, ..}
+instance Property "MetadataOptions" LaunchConfiguration where
+  type PropertyType "MetadataOptions" LaunchConfiguration = MetadataOptionsProperty
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {metadataOptions = Prelude.pure newValue, ..}
+instance Property "PlacementTenancy" LaunchConfiguration where
+  type PropertyType "PlacementTenancy" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration
+        {placementTenancy = Prelude.pure newValue, ..}
+instance Property "RamDiskId" LaunchConfiguration where
+  type PropertyType "RamDiskId" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {ramDiskId = Prelude.pure newValue, ..}
+instance Property "SecurityGroups" LaunchConfiguration where
+  type PropertyType "SecurityGroups" LaunchConfiguration = ValueList Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {securityGroups = Prelude.pure newValue, ..}
+instance Property "SpotPrice" LaunchConfiguration where
+  type PropertyType "SpotPrice" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {spotPrice = Prelude.pure newValue, ..}
+instance Property "UserData" LaunchConfiguration where
+  type PropertyType "UserData" LaunchConfiguration = Value Prelude.Text
+  set newValue LaunchConfiguration {..}
+    = LaunchConfiguration {userData = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceMappingProperty.hs b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceMappingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceMappingProperty.hs
@@ -0,0 +1,68 @@
+module Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceMappingProperty (
+        module Exports, BlockDeviceMappingProperty(..),
+        mkBlockDeviceMappingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BlockDeviceMappingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevicemapping.html>
+    BlockDeviceMappingProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevicemapping.html#cfn-autoscaling-launchconfiguration-blockdevicemapping-devicename>
+                                deviceName :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevicemapping.html#cfn-autoscaling-launchconfiguration-blockdevicemapping-ebs>
+                                ebs :: (Prelude.Maybe BlockDeviceProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevicemapping.html#cfn-autoscaling-launchconfiguration-blockdevicemapping-nodevice>
+                                noDevice :: (Prelude.Maybe (Value Prelude.Bool)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevicemapping.html#cfn-autoscaling-launchconfiguration-blockdevicemapping-virtualname>
+                                virtualName :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBlockDeviceMappingProperty ::
+  Value Prelude.Text -> BlockDeviceMappingProperty
+mkBlockDeviceMappingProperty deviceName
+  = BlockDeviceMappingProperty
+      {haddock_workaround_ = (), deviceName = deviceName,
+       ebs = Prelude.Nothing, noDevice = Prelude.Nothing,
+       virtualName = Prelude.Nothing}
+instance ToResourceProperties BlockDeviceMappingProperty where
+  toResourceProperties BlockDeviceMappingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::LaunchConfiguration.BlockDeviceMapping",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["DeviceName" JSON..= deviceName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Ebs" Prelude.<$> ebs,
+                               (JSON..=) "NoDevice" Prelude.<$> noDevice,
+                               (JSON..=) "VirtualName" Prelude.<$> virtualName]))}
+instance JSON.ToJSON BlockDeviceMappingProperty where
+  toJSON BlockDeviceMappingProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["DeviceName" JSON..= deviceName]
+              (Prelude.catMaybes
+                 [(JSON..=) "Ebs" Prelude.<$> ebs,
+                  (JSON..=) "NoDevice" Prelude.<$> noDevice,
+                  (JSON..=) "VirtualName" Prelude.<$> virtualName])))
+instance Property "DeviceName" BlockDeviceMappingProperty where
+  type PropertyType "DeviceName" BlockDeviceMappingProperty = Value Prelude.Text
+  set newValue BlockDeviceMappingProperty {..}
+    = BlockDeviceMappingProperty {deviceName = newValue, ..}
+instance Property "Ebs" BlockDeviceMappingProperty where
+  type PropertyType "Ebs" BlockDeviceMappingProperty = BlockDeviceProperty
+  set newValue BlockDeviceMappingProperty {..}
+    = BlockDeviceMappingProperty {ebs = Prelude.pure newValue, ..}
+instance Property "NoDevice" BlockDeviceMappingProperty where
+  type PropertyType "NoDevice" BlockDeviceMappingProperty = Value Prelude.Bool
+  set newValue BlockDeviceMappingProperty {..}
+    = BlockDeviceMappingProperty {noDevice = Prelude.pure newValue, ..}
+instance Property "VirtualName" BlockDeviceMappingProperty where
+  type PropertyType "VirtualName" BlockDeviceMappingProperty = Value Prelude.Text
+  set newValue BlockDeviceMappingProperty {..}
+    = BlockDeviceMappingProperty
+        {virtualName = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceMappingProperty.hs-boot b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceMappingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceMappingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceMappingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BlockDeviceMappingProperty :: Prelude.Type
+instance ToResourceProperties BlockDeviceMappingProperty
+instance Prelude.Eq BlockDeviceMappingProperty
+instance Prelude.Show BlockDeviceMappingProperty
+instance JSON.ToJSON BlockDeviceMappingProperty
diff --git a/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceProperty.hs b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceProperty.hs
@@ -0,0 +1,88 @@
+module Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceProperty (
+        BlockDeviceProperty(..), mkBlockDeviceProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data BlockDeviceProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html>
+    BlockDeviceProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html#cfn-autoscaling-launchconfiguration-blockdevice-deleteontermination>
+                         deleteOnTermination :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html#cfn-autoscaling-launchconfiguration-blockdevice-encrypted>
+                         encrypted :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html#cfn-autoscaling-launchconfiguration-blockdevice-iops>
+                         iops :: (Prelude.Maybe (Value Prelude.Integer)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html#cfn-autoscaling-launchconfiguration-blockdevice-snapshotid>
+                         snapshotId :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html#cfn-autoscaling-launchconfiguration-blockdevice-throughput>
+                         throughput :: (Prelude.Maybe (Value Prelude.Integer)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html#cfn-autoscaling-launchconfiguration-blockdevice-volumesize>
+                         volumeSize :: (Prelude.Maybe (Value Prelude.Integer)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-blockdevice.html#cfn-autoscaling-launchconfiguration-blockdevice-volumetype>
+                         volumeType :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkBlockDeviceProperty :: BlockDeviceProperty
+mkBlockDeviceProperty
+  = BlockDeviceProperty
+      {haddock_workaround_ = (), deleteOnTermination = Prelude.Nothing,
+       encrypted = Prelude.Nothing, iops = Prelude.Nothing,
+       snapshotId = Prelude.Nothing, throughput = Prelude.Nothing,
+       volumeSize = Prelude.Nothing, volumeType = Prelude.Nothing}
+instance ToResourceProperties BlockDeviceProperty where
+  toResourceProperties BlockDeviceProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::LaunchConfiguration.BlockDevice",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "DeleteOnTermination" Prelude.<$> deleteOnTermination,
+                            (JSON..=) "Encrypted" Prelude.<$> encrypted,
+                            (JSON..=) "Iops" Prelude.<$> iops,
+                            (JSON..=) "SnapshotId" Prelude.<$> snapshotId,
+                            (JSON..=) "Throughput" Prelude.<$> throughput,
+                            (JSON..=) "VolumeSize" Prelude.<$> volumeSize,
+                            (JSON..=) "VolumeType" Prelude.<$> volumeType])}
+instance JSON.ToJSON BlockDeviceProperty where
+  toJSON BlockDeviceProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "DeleteOnTermination" Prelude.<$> deleteOnTermination,
+               (JSON..=) "Encrypted" Prelude.<$> encrypted,
+               (JSON..=) "Iops" Prelude.<$> iops,
+               (JSON..=) "SnapshotId" Prelude.<$> snapshotId,
+               (JSON..=) "Throughput" Prelude.<$> throughput,
+               (JSON..=) "VolumeSize" Prelude.<$> volumeSize,
+               (JSON..=) "VolumeType" Prelude.<$> volumeType]))
+instance Property "DeleteOnTermination" BlockDeviceProperty where
+  type PropertyType "DeleteOnTermination" BlockDeviceProperty = Value Prelude.Bool
+  set newValue BlockDeviceProperty {..}
+    = BlockDeviceProperty
+        {deleteOnTermination = Prelude.pure newValue, ..}
+instance Property "Encrypted" BlockDeviceProperty where
+  type PropertyType "Encrypted" BlockDeviceProperty = Value Prelude.Bool
+  set newValue BlockDeviceProperty {..}
+    = BlockDeviceProperty {encrypted = Prelude.pure newValue, ..}
+instance Property "Iops" BlockDeviceProperty where
+  type PropertyType "Iops" BlockDeviceProperty = Value Prelude.Integer
+  set newValue BlockDeviceProperty {..}
+    = BlockDeviceProperty {iops = Prelude.pure newValue, ..}
+instance Property "SnapshotId" BlockDeviceProperty where
+  type PropertyType "SnapshotId" BlockDeviceProperty = Value Prelude.Text
+  set newValue BlockDeviceProperty {..}
+    = BlockDeviceProperty {snapshotId = Prelude.pure newValue, ..}
+instance Property "Throughput" BlockDeviceProperty where
+  type PropertyType "Throughput" BlockDeviceProperty = Value Prelude.Integer
+  set newValue BlockDeviceProperty {..}
+    = BlockDeviceProperty {throughput = Prelude.pure newValue, ..}
+instance Property "VolumeSize" BlockDeviceProperty where
+  type PropertyType "VolumeSize" BlockDeviceProperty = Value Prelude.Integer
+  set newValue BlockDeviceProperty {..}
+    = BlockDeviceProperty {volumeSize = Prelude.pure newValue, ..}
+instance Property "VolumeType" BlockDeviceProperty where
+  type PropertyType "VolumeType" BlockDeviceProperty = Value Prelude.Text
+  set newValue BlockDeviceProperty {..}
+    = BlockDeviceProperty {volumeType = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceProperty.hs-boot b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LaunchConfiguration/BlockDeviceProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data BlockDeviceProperty :: Prelude.Type
+instance ToResourceProperties BlockDeviceProperty
+instance Prelude.Eq BlockDeviceProperty
+instance Prelude.Show BlockDeviceProperty
+instance JSON.ToJSON BlockDeviceProperty
diff --git a/gen/Stratosphere/AutoScaling/LaunchConfiguration/MetadataOptionsProperty.hs b/gen/Stratosphere/AutoScaling/LaunchConfiguration/MetadataOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LaunchConfiguration/MetadataOptionsProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.AutoScaling.LaunchConfiguration.MetadataOptionsProperty (
+        MetadataOptionsProperty(..), mkMetadataOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MetadataOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-metadataoptions.html>
+    MetadataOptionsProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-metadataoptions.html#cfn-autoscaling-launchconfiguration-metadataoptions-httpendpoint>
+                             httpEndpoint :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-metadataoptions.html#cfn-autoscaling-launchconfiguration-metadataoptions-httpputresponsehoplimit>
+                             httpPutResponseHopLimit :: (Prelude.Maybe (Value Prelude.Integer)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-launchconfiguration-metadataoptions.html#cfn-autoscaling-launchconfiguration-metadataoptions-httptokens>
+                             httpTokens :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMetadataOptionsProperty :: MetadataOptionsProperty
+mkMetadataOptionsProperty
+  = MetadataOptionsProperty
+      {haddock_workaround_ = (), httpEndpoint = Prelude.Nothing,
+       httpPutResponseHopLimit = Prelude.Nothing,
+       httpTokens = Prelude.Nothing}
+instance ToResourceProperties MetadataOptionsProperty where
+  toResourceProperties MetadataOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::LaunchConfiguration.MetadataOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "HttpEndpoint" Prelude.<$> httpEndpoint,
+                            (JSON..=) "HttpPutResponseHopLimit"
+                              Prelude.<$> httpPutResponseHopLimit,
+                            (JSON..=) "HttpTokens" Prelude.<$> httpTokens])}
+instance JSON.ToJSON MetadataOptionsProperty where
+  toJSON MetadataOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "HttpEndpoint" Prelude.<$> httpEndpoint,
+               (JSON..=) "HttpPutResponseHopLimit"
+                 Prelude.<$> httpPutResponseHopLimit,
+               (JSON..=) "HttpTokens" Prelude.<$> httpTokens]))
+instance Property "HttpEndpoint" MetadataOptionsProperty where
+  type PropertyType "HttpEndpoint" MetadataOptionsProperty = Value Prelude.Text
+  set newValue MetadataOptionsProperty {..}
+    = MetadataOptionsProperty
+        {httpEndpoint = Prelude.pure newValue, ..}
+instance Property "HttpPutResponseHopLimit" MetadataOptionsProperty where
+  type PropertyType "HttpPutResponseHopLimit" MetadataOptionsProperty = Value Prelude.Integer
+  set newValue MetadataOptionsProperty {..}
+    = MetadataOptionsProperty
+        {httpPutResponseHopLimit = Prelude.pure newValue, ..}
+instance Property "HttpTokens" MetadataOptionsProperty where
+  type PropertyType "HttpTokens" MetadataOptionsProperty = Value Prelude.Text
+  set newValue MetadataOptionsProperty {..}
+    = MetadataOptionsProperty {httpTokens = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/LaunchConfiguration/MetadataOptionsProperty.hs-boot b/gen/Stratosphere/AutoScaling/LaunchConfiguration/MetadataOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LaunchConfiguration/MetadataOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.LaunchConfiguration.MetadataOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MetadataOptionsProperty :: Prelude.Type
+instance ToResourceProperties MetadataOptionsProperty
+instance Prelude.Eq MetadataOptionsProperty
+instance Prelude.Show MetadataOptionsProperty
+instance JSON.ToJSON MetadataOptionsProperty
diff --git a/gen/Stratosphere/AutoScaling/LifecycleHook.hs b/gen/Stratosphere/AutoScaling/LifecycleHook.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/LifecycleHook.hs
@@ -0,0 +1,104 @@
+module Stratosphere.AutoScaling.LifecycleHook (
+        LifecycleHook(..), mkLifecycleHook
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data LifecycleHook
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html>
+    LifecycleHook {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-autoscalinggroupname>
+                   autoScalingGroupName :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-defaultresult>
+                   defaultResult :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-heartbeattimeout>
+                   heartbeatTimeout :: (Prelude.Maybe (Value Prelude.Integer)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-lifecyclehookname>
+                   lifecycleHookName :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-lifecycletransition>
+                   lifecycleTransition :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-notificationmetadata>
+                   notificationMetadata :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-notificationtargetarn>
+                   notificationTargetARN :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#cfn-autoscaling-lifecyclehook-rolearn>
+                   roleARN :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkLifecycleHook ::
+  Value Prelude.Text -> Value Prelude.Text -> LifecycleHook
+mkLifecycleHook autoScalingGroupName lifecycleTransition
+  = LifecycleHook
+      {haddock_workaround_ = (),
+       autoScalingGroupName = autoScalingGroupName,
+       lifecycleTransition = lifecycleTransition,
+       defaultResult = Prelude.Nothing,
+       heartbeatTimeout = Prelude.Nothing,
+       lifecycleHookName = Prelude.Nothing,
+       notificationMetadata = Prelude.Nothing,
+       notificationTargetARN = Prelude.Nothing, roleARN = Prelude.Nothing}
+instance ToResourceProperties LifecycleHook where
+  toResourceProperties LifecycleHook {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::LifecycleHook",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AutoScalingGroupName" JSON..= autoScalingGroupName,
+                            "LifecycleTransition" JSON..= lifecycleTransition]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DefaultResult" Prelude.<$> defaultResult,
+                               (JSON..=) "HeartbeatTimeout" Prelude.<$> heartbeatTimeout,
+                               (JSON..=) "LifecycleHookName" Prelude.<$> lifecycleHookName,
+                               (JSON..=) "NotificationMetadata" Prelude.<$> notificationMetadata,
+                               (JSON..=) "NotificationTargetARN"
+                                 Prelude.<$> notificationTargetARN,
+                               (JSON..=) "RoleARN" Prelude.<$> roleARN]))}
+instance JSON.ToJSON LifecycleHook where
+  toJSON LifecycleHook {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AutoScalingGroupName" JSON..= autoScalingGroupName,
+               "LifecycleTransition" JSON..= lifecycleTransition]
+              (Prelude.catMaybes
+                 [(JSON..=) "DefaultResult" Prelude.<$> defaultResult,
+                  (JSON..=) "HeartbeatTimeout" Prelude.<$> heartbeatTimeout,
+                  (JSON..=) "LifecycleHookName" Prelude.<$> lifecycleHookName,
+                  (JSON..=) "NotificationMetadata" Prelude.<$> notificationMetadata,
+                  (JSON..=) "NotificationTargetARN"
+                    Prelude.<$> notificationTargetARN,
+                  (JSON..=) "RoleARN" Prelude.<$> roleARN])))
+instance Property "AutoScalingGroupName" LifecycleHook where
+  type PropertyType "AutoScalingGroupName" LifecycleHook = Value Prelude.Text
+  set newValue LifecycleHook {..}
+    = LifecycleHook {autoScalingGroupName = newValue, ..}
+instance Property "DefaultResult" LifecycleHook where
+  type PropertyType "DefaultResult" LifecycleHook = Value Prelude.Text
+  set newValue LifecycleHook {..}
+    = LifecycleHook {defaultResult = Prelude.pure newValue, ..}
+instance Property "HeartbeatTimeout" LifecycleHook where
+  type PropertyType "HeartbeatTimeout" LifecycleHook = Value Prelude.Integer
+  set newValue LifecycleHook {..}
+    = LifecycleHook {heartbeatTimeout = Prelude.pure newValue, ..}
+instance Property "LifecycleHookName" LifecycleHook where
+  type PropertyType "LifecycleHookName" LifecycleHook = Value Prelude.Text
+  set newValue LifecycleHook {..}
+    = LifecycleHook {lifecycleHookName = Prelude.pure newValue, ..}
+instance Property "LifecycleTransition" LifecycleHook where
+  type PropertyType "LifecycleTransition" LifecycleHook = Value Prelude.Text
+  set newValue LifecycleHook {..}
+    = LifecycleHook {lifecycleTransition = newValue, ..}
+instance Property "NotificationMetadata" LifecycleHook where
+  type PropertyType "NotificationMetadata" LifecycleHook = Value Prelude.Text
+  set newValue LifecycleHook {..}
+    = LifecycleHook {notificationMetadata = Prelude.pure newValue, ..}
+instance Property "NotificationTargetARN" LifecycleHook where
+  type PropertyType "NotificationTargetARN" LifecycleHook = Value Prelude.Text
+  set newValue LifecycleHook {..}
+    = LifecycleHook {notificationTargetARN = Prelude.pure newValue, ..}
+instance Property "RoleARN" LifecycleHook where
+  type PropertyType "RoleARN" LifecycleHook = Value Prelude.Text
+  set newValue LifecycleHook {..}
+    = LifecycleHook {roleARN = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy.hs
@@ -0,0 +1,145 @@
+module Stratosphere.AutoScaling.ScalingPolicy (
+        module Exports, ScalingPolicy(..), mkScalingPolicy
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.StepAdjustmentProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScalingPolicy
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html>
+    ScalingPolicy {haddock_workaround_ :: (),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-adjustmenttype>
+                   adjustmentType :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-autoscalinggroupname>
+                   autoScalingGroupName :: (Value Prelude.Text),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-cooldown>
+                   cooldown :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-estimatedinstancewarmup>
+                   estimatedInstanceWarmup :: (Prelude.Maybe (Value Prelude.Integer)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-metricaggregationtype>
+                   metricAggregationType :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-minadjustmentmagnitude>
+                   minAdjustmentMagnitude :: (Prelude.Maybe (Value Prelude.Integer)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-policytype>
+                   policyType :: (Prelude.Maybe (Value Prelude.Text)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-predictivescalingconfiguration>
+                   predictiveScalingConfiguration :: (Prelude.Maybe PredictiveScalingConfigurationProperty),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-scalingadjustment>
+                   scalingAdjustment :: (Prelude.Maybe (Value Prelude.Integer)),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-stepadjustments>
+                   stepAdjustments :: (Prelude.Maybe [StepAdjustmentProperty]),
+                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration>
+                   targetTrackingConfiguration :: (Prelude.Maybe TargetTrackingConfigurationProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScalingPolicy :: Value Prelude.Text -> ScalingPolicy
+mkScalingPolicy autoScalingGroupName
+  = ScalingPolicy
+      {haddock_workaround_ = (),
+       autoScalingGroupName = autoScalingGroupName,
+       adjustmentType = Prelude.Nothing, cooldown = Prelude.Nothing,
+       estimatedInstanceWarmup = Prelude.Nothing,
+       metricAggregationType = Prelude.Nothing,
+       minAdjustmentMagnitude = Prelude.Nothing,
+       policyType = Prelude.Nothing,
+       predictiveScalingConfiguration = Prelude.Nothing,
+       scalingAdjustment = Prelude.Nothing,
+       stepAdjustments = Prelude.Nothing,
+       targetTrackingConfiguration = Prelude.Nothing}
+instance ToResourceProperties ScalingPolicy where
+  toResourceProperties ScalingPolicy {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AutoScalingGroupName" JSON..= autoScalingGroupName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AdjustmentType" Prelude.<$> adjustmentType,
+                               (JSON..=) "Cooldown" Prelude.<$> cooldown,
+                               (JSON..=) "EstimatedInstanceWarmup"
+                                 Prelude.<$> estimatedInstanceWarmup,
+                               (JSON..=) "MetricAggregationType"
+                                 Prelude.<$> metricAggregationType,
+                               (JSON..=) "MinAdjustmentMagnitude"
+                                 Prelude.<$> minAdjustmentMagnitude,
+                               (JSON..=) "PolicyType" Prelude.<$> policyType,
+                               (JSON..=) "PredictiveScalingConfiguration"
+                                 Prelude.<$> predictiveScalingConfiguration,
+                               (JSON..=) "ScalingAdjustment" Prelude.<$> scalingAdjustment,
+                               (JSON..=) "StepAdjustments" Prelude.<$> stepAdjustments,
+                               (JSON..=) "TargetTrackingConfiguration"
+                                 Prelude.<$> targetTrackingConfiguration]))}
+instance JSON.ToJSON ScalingPolicy where
+  toJSON ScalingPolicy {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AutoScalingGroupName" JSON..= autoScalingGroupName]
+              (Prelude.catMaybes
+                 [(JSON..=) "AdjustmentType" Prelude.<$> adjustmentType,
+                  (JSON..=) "Cooldown" Prelude.<$> cooldown,
+                  (JSON..=) "EstimatedInstanceWarmup"
+                    Prelude.<$> estimatedInstanceWarmup,
+                  (JSON..=) "MetricAggregationType"
+                    Prelude.<$> metricAggregationType,
+                  (JSON..=) "MinAdjustmentMagnitude"
+                    Prelude.<$> minAdjustmentMagnitude,
+                  (JSON..=) "PolicyType" Prelude.<$> policyType,
+                  (JSON..=) "PredictiveScalingConfiguration"
+                    Prelude.<$> predictiveScalingConfiguration,
+                  (JSON..=) "ScalingAdjustment" Prelude.<$> scalingAdjustment,
+                  (JSON..=) "StepAdjustments" Prelude.<$> stepAdjustments,
+                  (JSON..=) "TargetTrackingConfiguration"
+                    Prelude.<$> targetTrackingConfiguration])))
+instance Property "AdjustmentType" ScalingPolicy where
+  type PropertyType "AdjustmentType" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {adjustmentType = Prelude.pure newValue, ..}
+instance Property "AutoScalingGroupName" ScalingPolicy where
+  type PropertyType "AutoScalingGroupName" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {autoScalingGroupName = newValue, ..}
+instance Property "Cooldown" ScalingPolicy where
+  type PropertyType "Cooldown" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {cooldown = Prelude.pure newValue, ..}
+instance Property "EstimatedInstanceWarmup" ScalingPolicy where
+  type PropertyType "EstimatedInstanceWarmup" ScalingPolicy = Value Prelude.Integer
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy
+        {estimatedInstanceWarmup = Prelude.pure newValue, ..}
+instance Property "MetricAggregationType" ScalingPolicy where
+  type PropertyType "MetricAggregationType" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {metricAggregationType = Prelude.pure newValue, ..}
+instance Property "MinAdjustmentMagnitude" ScalingPolicy where
+  type PropertyType "MinAdjustmentMagnitude" ScalingPolicy = Value Prelude.Integer
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy
+        {minAdjustmentMagnitude = Prelude.pure newValue, ..}
+instance Property "PolicyType" ScalingPolicy where
+  type PropertyType "PolicyType" ScalingPolicy = Value Prelude.Text
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {policyType = Prelude.pure newValue, ..}
+instance Property "PredictiveScalingConfiguration" ScalingPolicy where
+  type PropertyType "PredictiveScalingConfiguration" ScalingPolicy = PredictiveScalingConfigurationProperty
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy
+        {predictiveScalingConfiguration = Prelude.pure newValue, ..}
+instance Property "ScalingAdjustment" ScalingPolicy where
+  type PropertyType "ScalingAdjustment" ScalingPolicy = Value Prelude.Integer
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {scalingAdjustment = Prelude.pure newValue, ..}
+instance Property "StepAdjustments" ScalingPolicy where
+  type PropertyType "StepAdjustments" ScalingPolicy = [StepAdjustmentProperty]
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy {stepAdjustments = Prelude.pure newValue, ..}
+instance Property "TargetTrackingConfiguration" ScalingPolicy where
+  type PropertyType "TargetTrackingConfiguration" ScalingPolicy = TargetTrackingConfigurationProperty
+  set newValue ScalingPolicy {..}
+    = ScalingPolicy
+        {targetTrackingConfiguration = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs
@@ -0,0 +1,98 @@
+module Stratosphere.AutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty (
+        module Exports, CustomizedMetricSpecificationProperty(..),
+        mkCustomizedMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricDimensionProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data CustomizedMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html>
+    CustomizedMetricSpecificationProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-dimensions>
+                                           dimensions :: (Prelude.Maybe [MetricDimensionProperty]),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-metricname>
+                                           metricName :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-metrics>
+                                           metrics :: (Prelude.Maybe [TargetTrackingMetricDataQueryProperty]),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-namespace>
+                                           namespace :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-period>
+                                           period :: (Prelude.Maybe (Value Prelude.Integer)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-statistic>
+                                           statistic :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-unit>
+                                           unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCustomizedMetricSpecificationProperty ::
+  CustomizedMetricSpecificationProperty
+mkCustomizedMetricSpecificationProperty
+  = CustomizedMetricSpecificationProperty
+      {haddock_workaround_ = (), dimensions = Prelude.Nothing,
+       metricName = Prelude.Nothing, metrics = Prelude.Nothing,
+       namespace = Prelude.Nothing, period = Prelude.Nothing,
+       statistic = Prelude.Nothing, unit = Prelude.Nothing}
+instance ToResourceProperties CustomizedMetricSpecificationProperty where
+  toResourceProperties CustomizedMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.CustomizedMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+                            (JSON..=) "MetricName" Prelude.<$> metricName,
+                            (JSON..=) "Metrics" Prelude.<$> metrics,
+                            (JSON..=) "Namespace" Prelude.<$> namespace,
+                            (JSON..=) "Period" Prelude.<$> period,
+                            (JSON..=) "Statistic" Prelude.<$> statistic,
+                            (JSON..=) "Unit" Prelude.<$> unit])}
+instance JSON.ToJSON CustomizedMetricSpecificationProperty where
+  toJSON CustomizedMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Dimensions" Prelude.<$> dimensions,
+               (JSON..=) "MetricName" Prelude.<$> metricName,
+               (JSON..=) "Metrics" Prelude.<$> metrics,
+               (JSON..=) "Namespace" Prelude.<$> namespace,
+               (JSON..=) "Period" Prelude.<$> period,
+               (JSON..=) "Statistic" Prelude.<$> statistic,
+               (JSON..=) "Unit" Prelude.<$> unit]))
+instance Property "Dimensions" CustomizedMetricSpecificationProperty where
+  type PropertyType "Dimensions" CustomizedMetricSpecificationProperty = [MetricDimensionProperty]
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {dimensions = Prelude.pure newValue, ..}
+instance Property "MetricName" CustomizedMetricSpecificationProperty where
+  type PropertyType "MetricName" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {metricName = Prelude.pure newValue, ..}
+instance Property "Metrics" CustomizedMetricSpecificationProperty where
+  type PropertyType "Metrics" CustomizedMetricSpecificationProperty = [TargetTrackingMetricDataQueryProperty]
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {metrics = Prelude.pure newValue, ..}
+instance Property "Namespace" CustomizedMetricSpecificationProperty where
+  type PropertyType "Namespace" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {namespace = Prelude.pure newValue, ..}
+instance Property "Period" CustomizedMetricSpecificationProperty where
+  type PropertyType "Period" CustomizedMetricSpecificationProperty = Value Prelude.Integer
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {period = Prelude.pure newValue, ..}
+instance Property "Statistic" CustomizedMetricSpecificationProperty where
+  type PropertyType "Statistic" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {statistic = Prelude.pure newValue, ..}
+instance Property "Unit" CustomizedMetricSpecificationProperty where
+  type PropertyType "Unit" CustomizedMetricSpecificationProperty = Value Prelude.Text
+  set newValue CustomizedMetricSpecificationProperty {..}
+    = CustomizedMetricSpecificationProperty
+        {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/CustomizedMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CustomizedMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties CustomizedMetricSpecificationProperty
+instance Prelude.Eq CustomizedMetricSpecificationProperty
+instance Prelude.Show CustomizedMetricSpecificationProperty
+instance JSON.ToJSON CustomizedMetricSpecificationProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDataQueryProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDataQueryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDataQueryProperty.hs
@@ -0,0 +1,75 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricDataQueryProperty (
+        module Exports, MetricDataQueryProperty(..),
+        mkMetricDataQueryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricStatProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MetricDataQueryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdataquery.html>
+    MetricDataQueryProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdataquery.html#cfn-autoscaling-scalingpolicy-metricdataquery-expression>
+                             expression :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdataquery.html#cfn-autoscaling-scalingpolicy-metricdataquery-id>
+                             id :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdataquery.html#cfn-autoscaling-scalingpolicy-metricdataquery-label>
+                             label :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdataquery.html#cfn-autoscaling-scalingpolicy-metricdataquery-metricstat>
+                             metricStat :: (Prelude.Maybe MetricStatProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdataquery.html#cfn-autoscaling-scalingpolicy-metricdataquery-returndata>
+                             returnData :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMetricDataQueryProperty ::
+  Value Prelude.Text -> MetricDataQueryProperty
+mkMetricDataQueryProperty id
+  = MetricDataQueryProperty
+      {haddock_workaround_ = (), id = id, expression = Prelude.Nothing,
+       label = Prelude.Nothing, metricStat = Prelude.Nothing,
+       returnData = Prelude.Nothing}
+instance ToResourceProperties MetricDataQueryProperty where
+  toResourceProperties MetricDataQueryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.MetricDataQuery",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Id" JSON..= id]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Expression" Prelude.<$> expression,
+                               (JSON..=) "Label" Prelude.<$> label,
+                               (JSON..=) "MetricStat" Prelude.<$> metricStat,
+                               (JSON..=) "ReturnData" Prelude.<$> returnData]))}
+instance JSON.ToJSON MetricDataQueryProperty where
+  toJSON MetricDataQueryProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Id" JSON..= id]
+              (Prelude.catMaybes
+                 [(JSON..=) "Expression" Prelude.<$> expression,
+                  (JSON..=) "Label" Prelude.<$> label,
+                  (JSON..=) "MetricStat" Prelude.<$> metricStat,
+                  (JSON..=) "ReturnData" Prelude.<$> returnData])))
+instance Property "Expression" MetricDataQueryProperty where
+  type PropertyType "Expression" MetricDataQueryProperty = Value Prelude.Text
+  set newValue MetricDataQueryProperty {..}
+    = MetricDataQueryProperty {expression = Prelude.pure newValue, ..}
+instance Property "Id" MetricDataQueryProperty where
+  type PropertyType "Id" MetricDataQueryProperty = Value Prelude.Text
+  set newValue MetricDataQueryProperty {..}
+    = MetricDataQueryProperty {id = newValue, ..}
+instance Property "Label" MetricDataQueryProperty where
+  type PropertyType "Label" MetricDataQueryProperty = Value Prelude.Text
+  set newValue MetricDataQueryProperty {..}
+    = MetricDataQueryProperty {label = Prelude.pure newValue, ..}
+instance Property "MetricStat" MetricDataQueryProperty where
+  type PropertyType "MetricStat" MetricDataQueryProperty = MetricStatProperty
+  set newValue MetricDataQueryProperty {..}
+    = MetricDataQueryProperty {metricStat = Prelude.pure newValue, ..}
+instance Property "ReturnData" MetricDataQueryProperty where
+  type PropertyType "ReturnData" MetricDataQueryProperty = Value Prelude.Bool
+  set newValue MetricDataQueryProperty {..}
+    = MetricDataQueryProperty {returnData = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDataQueryProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDataQueryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDataQueryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricDataQueryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MetricDataQueryProperty :: Prelude.Type
+instance ToResourceProperties MetricDataQueryProperty
+instance Prelude.Eq MetricDataQueryProperty
+instance Prelude.Show MetricDataQueryProperty
+instance JSON.ToJSON MetricDataQueryProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDimensionProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDimensionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDimensionProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricDimensionProperty (
+        MetricDimensionProperty(..), mkMetricDimensionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MetricDimensionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html>
+    MetricDimensionProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html#cfn-autoscaling-scalingpolicy-metricdimension-name>
+                             name :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricdimension.html#cfn-autoscaling-scalingpolicy-metricdimension-value>
+                             value :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMetricDimensionProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> MetricDimensionProperty
+mkMetricDimensionProperty name value
+  = MetricDimensionProperty
+      {haddock_workaround_ = (), name = name, value = value}
+instance ToResourceProperties MetricDimensionProperty where
+  toResourceProperties MetricDimensionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.MetricDimension",
+         supportsTags = Prelude.False,
+         properties = ["Name" JSON..= name, "Value" JSON..= value]}
+instance JSON.ToJSON MetricDimensionProperty where
+  toJSON MetricDimensionProperty {..}
+    = JSON.object ["Name" JSON..= name, "Value" JSON..= value]
+instance Property "Name" MetricDimensionProperty where
+  type PropertyType "Name" MetricDimensionProperty = Value Prelude.Text
+  set newValue MetricDimensionProperty {..}
+    = MetricDimensionProperty {name = newValue, ..}
+instance Property "Value" MetricDimensionProperty where
+  type PropertyType "Value" MetricDimensionProperty = Value Prelude.Text
+  set newValue MetricDimensionProperty {..}
+    = MetricDimensionProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDimensionProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDimensionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricDimensionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricDimensionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MetricDimensionProperty :: Prelude.Type
+instance ToResourceProperties MetricDimensionProperty
+instance Prelude.Eq MetricDimensionProperty
+instance Prelude.Show MetricDimensionProperty
+instance JSON.ToJSON MetricDimensionProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricProperty (
+        module Exports, MetricProperty(..), mkMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricDimensionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metric.html>
+    MetricProperty {haddock_workaround_ :: (),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metric.html#cfn-autoscaling-scalingpolicy-metric-dimensions>
+                    dimensions :: (Prelude.Maybe [MetricDimensionProperty]),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metric.html#cfn-autoscaling-scalingpolicy-metric-metricname>
+                    metricName :: (Value Prelude.Text),
+                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metric.html#cfn-autoscaling-scalingpolicy-metric-namespace>
+                    namespace :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMetricProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> MetricProperty
+mkMetricProperty metricName namespace
+  = MetricProperty
+      {haddock_workaround_ = (), metricName = metricName,
+       namespace = namespace, dimensions = Prelude.Nothing}
+instance ToResourceProperties MetricProperty where
+  toResourceProperties MetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.Metric",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MetricName" JSON..= metricName, "Namespace" JSON..= namespace]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Dimensions" Prelude.<$> dimensions]))}
+instance JSON.ToJSON MetricProperty where
+  toJSON MetricProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MetricName" JSON..= metricName, "Namespace" JSON..= namespace]
+              (Prelude.catMaybes
+                 [(JSON..=) "Dimensions" Prelude.<$> dimensions])))
+instance Property "Dimensions" MetricProperty where
+  type PropertyType "Dimensions" MetricProperty = [MetricDimensionProperty]
+  set newValue MetricProperty {..}
+    = MetricProperty {dimensions = Prelude.pure newValue, ..}
+instance Property "MetricName" MetricProperty where
+  type PropertyType "MetricName" MetricProperty = Value Prelude.Text
+  set newValue MetricProperty {..}
+    = MetricProperty {metricName = newValue, ..}
+instance Property "Namespace" MetricProperty where
+  type PropertyType "Namespace" MetricProperty = Value Prelude.Text
+  set newValue MetricProperty {..}
+    = MetricProperty {namespace = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MetricProperty :: Prelude.Type
+instance ToResourceProperties MetricProperty
+instance Prelude.Eq MetricProperty
+instance Prelude.Show MetricProperty
+instance JSON.ToJSON MetricProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricStatProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricStatProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricStatProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricStatProperty (
+        module Exports, MetricStatProperty(..), mkMetricStatProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MetricStatProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricstat.html>
+    MetricStatProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricstat.html#cfn-autoscaling-scalingpolicy-metricstat-metric>
+                        metric :: MetricProperty,
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricstat.html#cfn-autoscaling-scalingpolicy-metricstat-stat>
+                        stat :: (Value Prelude.Text),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-metricstat.html#cfn-autoscaling-scalingpolicy-metricstat-unit>
+                        unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMetricStatProperty ::
+  MetricProperty -> Value Prelude.Text -> MetricStatProperty
+mkMetricStatProperty metric stat
+  = MetricStatProperty
+      {haddock_workaround_ = (), metric = metric, stat = stat,
+       unit = Prelude.Nothing}
+instance ToResourceProperties MetricStatProperty where
+  toResourceProperties MetricStatProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.MetricStat",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Metric" JSON..= metric, "Stat" JSON..= stat]
+                           (Prelude.catMaybes [(JSON..=) "Unit" Prelude.<$> unit]))}
+instance JSON.ToJSON MetricStatProperty where
+  toJSON MetricStatProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Metric" JSON..= metric, "Stat" JSON..= stat]
+              (Prelude.catMaybes [(JSON..=) "Unit" Prelude.<$> unit])))
+instance Property "Metric" MetricStatProperty where
+  type PropertyType "Metric" MetricStatProperty = MetricProperty
+  set newValue MetricStatProperty {..}
+    = MetricStatProperty {metric = newValue, ..}
+instance Property "Stat" MetricStatProperty where
+  type PropertyType "Stat" MetricStatProperty = Value Prelude.Text
+  set newValue MetricStatProperty {..}
+    = MetricStatProperty {stat = newValue, ..}
+instance Property "Unit" MetricStatProperty where
+  type PropertyType "Unit" MetricStatProperty = Value Prelude.Text
+  set newValue MetricStatProperty {..}
+    = MetricStatProperty {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricStatProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricStatProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/MetricStatProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.MetricStatProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MetricStatProperty :: Prelude.Type
+instance ToResourceProperties MetricStatProperty
+instance Prelude.Eq MetricStatProperty
+instance Prelude.Show MetricStatProperty
+instance JSON.ToJSON MetricStatProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs
@@ -0,0 +1,52 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty (
+        PredefinedMetricSpecificationProperty(..),
+        mkPredefinedMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredefinedMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html>
+    PredefinedMetricSpecificationProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-autoscaling-scalingpolicy-predefinedmetricspecification-predefinedmetrictype>
+                                           predefinedMetricType :: (Value Prelude.Text),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predefinedmetricspecification.html#cfn-autoscaling-scalingpolicy-predefinedmetricspecification-resourcelabel>
+                                           resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredefinedMetricSpecificationProperty ::
+  Value Prelude.Text -> PredefinedMetricSpecificationProperty
+mkPredefinedMetricSpecificationProperty predefinedMetricType
+  = PredefinedMetricSpecificationProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredefinedMetricSpecificationProperty where
+  toResourceProperties PredefinedMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredefinedMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredefinedMetricSpecificationProperty where
+  toJSON PredefinedMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredefinedMetricSpecificationProperty where
+  type PropertyType "PredefinedMetricType" PredefinedMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedMetricSpecificationProperty {..}
+    = PredefinedMetricSpecificationProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredefinedMetricSpecificationProperty where
+  type PropertyType "ResourceLabel" PredefinedMetricSpecificationProperty = Value Prelude.Text
+  set newValue PredefinedMetricSpecificationProperty {..}
+    = PredefinedMetricSpecificationProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredefinedMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredefinedMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties PredefinedMetricSpecificationProperty
+instance Prelude.Eq PredefinedMetricSpecificationProperty
+instance Prelude.Show PredefinedMetricSpecificationProperty
+instance JSON.ToJSON PredefinedMetricSpecificationProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingConfigurationProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingConfigurationProperty.hs
@@ -0,0 +1,87 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingConfigurationProperty (
+        module Exports, PredictiveScalingConfigurationProperty(..),
+        mkPredictiveScalingConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingconfiguration.html>
+    PredictiveScalingConfigurationProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingconfiguration.html#cfn-autoscaling-scalingpolicy-predictivescalingconfiguration-maxcapacitybreachbehavior>
+                                            maxCapacityBreachBehavior :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingconfiguration.html#cfn-autoscaling-scalingpolicy-predictivescalingconfiguration-maxcapacitybuffer>
+                                            maxCapacityBuffer :: (Prelude.Maybe (Value Prelude.Integer)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingconfiguration.html#cfn-autoscaling-scalingpolicy-predictivescalingconfiguration-metricspecifications>
+                                            metricSpecifications :: [PredictiveScalingMetricSpecificationProperty],
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingconfiguration.html#cfn-autoscaling-scalingpolicy-predictivescalingconfiguration-mode>
+                                            mode :: (Prelude.Maybe (Value Prelude.Text)),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingconfiguration.html#cfn-autoscaling-scalingpolicy-predictivescalingconfiguration-schedulingbuffertime>
+                                            schedulingBufferTime :: (Prelude.Maybe (Value Prelude.Integer))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingConfigurationProperty ::
+  [PredictiveScalingMetricSpecificationProperty]
+  -> PredictiveScalingConfigurationProperty
+mkPredictiveScalingConfigurationProperty metricSpecifications
+  = PredictiveScalingConfigurationProperty
+      {haddock_workaround_ = (),
+       metricSpecifications = metricSpecifications,
+       maxCapacityBreachBehavior = Prelude.Nothing,
+       maxCapacityBuffer = Prelude.Nothing, mode = Prelude.Nothing,
+       schedulingBufferTime = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingConfigurationProperty where
+  toResourceProperties PredictiveScalingConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["MetricSpecifications" JSON..= metricSpecifications]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MaxCapacityBreachBehavior"
+                                 Prelude.<$> maxCapacityBreachBehavior,
+                               (JSON..=) "MaxCapacityBuffer" Prelude.<$> maxCapacityBuffer,
+                               (JSON..=) "Mode" Prelude.<$> mode,
+                               (JSON..=) "SchedulingBufferTime"
+                                 Prelude.<$> schedulingBufferTime]))}
+instance JSON.ToJSON PredictiveScalingConfigurationProperty where
+  toJSON PredictiveScalingConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["MetricSpecifications" JSON..= metricSpecifications]
+              (Prelude.catMaybes
+                 [(JSON..=) "MaxCapacityBreachBehavior"
+                    Prelude.<$> maxCapacityBreachBehavior,
+                  (JSON..=) "MaxCapacityBuffer" Prelude.<$> maxCapacityBuffer,
+                  (JSON..=) "Mode" Prelude.<$> mode,
+                  (JSON..=) "SchedulingBufferTime"
+                    Prelude.<$> schedulingBufferTime])))
+instance Property "MaxCapacityBreachBehavior" PredictiveScalingConfigurationProperty where
+  type PropertyType "MaxCapacityBreachBehavior" PredictiveScalingConfigurationProperty = Value Prelude.Text
+  set newValue PredictiveScalingConfigurationProperty {..}
+    = PredictiveScalingConfigurationProperty
+        {maxCapacityBreachBehavior = Prelude.pure newValue, ..}
+instance Property "MaxCapacityBuffer" PredictiveScalingConfigurationProperty where
+  type PropertyType "MaxCapacityBuffer" PredictiveScalingConfigurationProperty = Value Prelude.Integer
+  set newValue PredictiveScalingConfigurationProperty {..}
+    = PredictiveScalingConfigurationProperty
+        {maxCapacityBuffer = Prelude.pure newValue, ..}
+instance Property "MetricSpecifications" PredictiveScalingConfigurationProperty where
+  type PropertyType "MetricSpecifications" PredictiveScalingConfigurationProperty = [PredictiveScalingMetricSpecificationProperty]
+  set newValue PredictiveScalingConfigurationProperty {..}
+    = PredictiveScalingConfigurationProperty
+        {metricSpecifications = newValue, ..}
+instance Property "Mode" PredictiveScalingConfigurationProperty where
+  type PropertyType "Mode" PredictiveScalingConfigurationProperty = Value Prelude.Text
+  set newValue PredictiveScalingConfigurationProperty {..}
+    = PredictiveScalingConfigurationProperty
+        {mode = Prelude.pure newValue, ..}
+instance Property "SchedulingBufferTime" PredictiveScalingConfigurationProperty where
+  type PropertyType "SchedulingBufferTime" PredictiveScalingConfigurationProperty = Value Prelude.Integer
+  set newValue PredictiveScalingConfigurationProperty {..}
+    = PredictiveScalingConfigurationProperty
+        {schedulingBufferTime = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingConfigurationProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingConfigurationProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingConfigurationProperty
+instance Prelude.Eq PredictiveScalingConfigurationProperty
+instance Prelude.Show PredictiveScalingConfigurationProperty
+instance JSON.ToJSON PredictiveScalingConfigurationProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty (
+        module Exports,
+        PredictiveScalingCustomizedCapacityMetricProperty(..),
+        mkPredictiveScalingCustomizedCapacityMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedCapacityMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingcustomizedcapacitymetric.html>
+    PredictiveScalingCustomizedCapacityMetricProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingcustomizedcapacitymetric.html#cfn-autoscaling-scalingpolicy-predictivescalingcustomizedcapacitymetric-metricdataqueries>
+                                                       metricDataQueries :: [MetricDataQueryProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingCustomizedCapacityMetricProperty ::
+  [MetricDataQueryProperty]
+  -> PredictiveScalingCustomizedCapacityMetricProperty
+mkPredictiveScalingCustomizedCapacityMetricProperty
+  metricDataQueries
+  = PredictiveScalingCustomizedCapacityMetricProperty
+      {haddock_workaround_ = (), metricDataQueries = metricDataQueries}
+instance ToResourceProperties PredictiveScalingCustomizedCapacityMetricProperty where
+  toResourceProperties
+    PredictiveScalingCustomizedCapacityMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingCustomizedCapacityMetric",
+         supportsTags = Prelude.False,
+         properties = ["MetricDataQueries" JSON..= metricDataQueries]}
+instance JSON.ToJSON PredictiveScalingCustomizedCapacityMetricProperty where
+  toJSON PredictiveScalingCustomizedCapacityMetricProperty {..}
+    = JSON.object ["MetricDataQueries" JSON..= metricDataQueries]
+instance Property "MetricDataQueries" PredictiveScalingCustomizedCapacityMetricProperty where
+  type PropertyType "MetricDataQueries" PredictiveScalingCustomizedCapacityMetricProperty = [MetricDataQueryProperty]
+  set newValue PredictiveScalingCustomizedCapacityMetricProperty {..}
+    = PredictiveScalingCustomizedCapacityMetricProperty
+        {metricDataQueries = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedCapacityMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedCapacityMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingCustomizedCapacityMetricProperty
+instance Prelude.Eq PredictiveScalingCustomizedCapacityMetricProperty
+instance Prelude.Show PredictiveScalingCustomizedCapacityMetricProperty
+instance JSON.ToJSON PredictiveScalingCustomizedCapacityMetricProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs
@@ -0,0 +1,36 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty (
+        module Exports, PredictiveScalingCustomizedLoadMetricProperty(..),
+        mkPredictiveScalingCustomizedLoadMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedLoadMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingcustomizedloadmetric.html>
+    PredictiveScalingCustomizedLoadMetricProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingcustomizedloadmetric.html#cfn-autoscaling-scalingpolicy-predictivescalingcustomizedloadmetric-metricdataqueries>
+                                                   metricDataQueries :: [MetricDataQueryProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingCustomizedLoadMetricProperty ::
+  [MetricDataQueryProperty]
+  -> PredictiveScalingCustomizedLoadMetricProperty
+mkPredictiveScalingCustomizedLoadMetricProperty metricDataQueries
+  = PredictiveScalingCustomizedLoadMetricProperty
+      {haddock_workaround_ = (), metricDataQueries = metricDataQueries}
+instance ToResourceProperties PredictiveScalingCustomizedLoadMetricProperty where
+  toResourceProperties
+    PredictiveScalingCustomizedLoadMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingCustomizedLoadMetric",
+         supportsTags = Prelude.False,
+         properties = ["MetricDataQueries" JSON..= metricDataQueries]}
+instance JSON.ToJSON PredictiveScalingCustomizedLoadMetricProperty where
+  toJSON PredictiveScalingCustomizedLoadMetricProperty {..}
+    = JSON.object ["MetricDataQueries" JSON..= metricDataQueries]
+instance Property "MetricDataQueries" PredictiveScalingCustomizedLoadMetricProperty where
+  type PropertyType "MetricDataQueries" PredictiveScalingCustomizedLoadMetricProperty = [MetricDataQueryProperty]
+  set newValue PredictiveScalingCustomizedLoadMetricProperty {..}
+    = PredictiveScalingCustomizedLoadMetricProperty
+        {metricDataQueries = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedLoadMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedLoadMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingCustomizedLoadMetricProperty
+instance Prelude.Eq PredictiveScalingCustomizedLoadMetricProperty
+instance Prelude.Show PredictiveScalingCustomizedLoadMetricProperty
+instance JSON.ToJSON PredictiveScalingCustomizedLoadMetricProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty (
+        module Exports,
+        PredictiveScalingCustomizedScalingMetricProperty(..),
+        mkPredictiveScalingCustomizedScalingMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricDataQueryProperty as Exports
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedScalingMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingcustomizedscalingmetric.html>
+    PredictiveScalingCustomizedScalingMetricProperty {haddock_workaround_ :: (),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingcustomizedscalingmetric.html#cfn-autoscaling-scalingpolicy-predictivescalingcustomizedscalingmetric-metricdataqueries>
+                                                      metricDataQueries :: [MetricDataQueryProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingCustomizedScalingMetricProperty ::
+  [MetricDataQueryProperty]
+  -> PredictiveScalingCustomizedScalingMetricProperty
+mkPredictiveScalingCustomizedScalingMetricProperty
+  metricDataQueries
+  = PredictiveScalingCustomizedScalingMetricProperty
+      {haddock_workaround_ = (), metricDataQueries = metricDataQueries}
+instance ToResourceProperties PredictiveScalingCustomizedScalingMetricProperty where
+  toResourceProperties
+    PredictiveScalingCustomizedScalingMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingCustomizedScalingMetric",
+         supportsTags = Prelude.False,
+         properties = ["MetricDataQueries" JSON..= metricDataQueries]}
+instance JSON.ToJSON PredictiveScalingCustomizedScalingMetricProperty where
+  toJSON PredictiveScalingCustomizedScalingMetricProperty {..}
+    = JSON.object ["MetricDataQueries" JSON..= metricDataQueries]
+instance Property "MetricDataQueries" PredictiveScalingCustomizedScalingMetricProperty where
+  type PropertyType "MetricDataQueries" PredictiveScalingCustomizedScalingMetricProperty = [MetricDataQueryProperty]
+  set newValue PredictiveScalingCustomizedScalingMetricProperty {..}
+    = PredictiveScalingCustomizedScalingMetricProperty
+        {metricDataQueries = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingCustomizedScalingMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingCustomizedScalingMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingCustomizedScalingMetricProperty
+instance Prelude.Eq PredictiveScalingCustomizedScalingMetricProperty
+instance Prelude.Show PredictiveScalingCustomizedScalingMetricProperty
+instance JSON.ToJSON PredictiveScalingCustomizedScalingMetricProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs
@@ -0,0 +1,121 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty (
+        module Exports, PredictiveScalingMetricSpecificationProperty(..),
+        mkPredictiveScalingMetricSpecificationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingMetricSpecificationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html>
+    PredictiveScalingMetricSpecificationProperty {haddock_workaround_ :: (),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-autoscaling-scalingpolicy-predictivescalingmetricspecification-customizedcapacitymetricspecification>
+                                                  customizedCapacityMetricSpecification :: (Prelude.Maybe PredictiveScalingCustomizedCapacityMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-autoscaling-scalingpolicy-predictivescalingmetricspecification-customizedloadmetricspecification>
+                                                  customizedLoadMetricSpecification :: (Prelude.Maybe PredictiveScalingCustomizedLoadMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-autoscaling-scalingpolicy-predictivescalingmetricspecification-customizedscalingmetricspecification>
+                                                  customizedScalingMetricSpecification :: (Prelude.Maybe PredictiveScalingCustomizedScalingMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-autoscaling-scalingpolicy-predictivescalingmetricspecification-predefinedloadmetricspecification>
+                                                  predefinedLoadMetricSpecification :: (Prelude.Maybe PredictiveScalingPredefinedLoadMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-autoscaling-scalingpolicy-predictivescalingmetricspecification-predefinedmetricpairspecification>
+                                                  predefinedMetricPairSpecification :: (Prelude.Maybe PredictiveScalingPredefinedMetricPairProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-autoscaling-scalingpolicy-predictivescalingmetricspecification-predefinedscalingmetricspecification>
+                                                  predefinedScalingMetricSpecification :: (Prelude.Maybe PredictiveScalingPredefinedScalingMetricProperty),
+                                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingmetricspecification.html#cfn-autoscaling-scalingpolicy-predictivescalingmetricspecification-targetvalue>
+                                                  targetValue :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingMetricSpecificationProperty ::
+  Value Prelude.Double
+  -> PredictiveScalingMetricSpecificationProperty
+mkPredictiveScalingMetricSpecificationProperty targetValue
+  = PredictiveScalingMetricSpecificationProperty
+      {haddock_workaround_ = (), targetValue = targetValue,
+       customizedCapacityMetricSpecification = Prelude.Nothing,
+       customizedLoadMetricSpecification = Prelude.Nothing,
+       customizedScalingMetricSpecification = Prelude.Nothing,
+       predefinedLoadMetricSpecification = Prelude.Nothing,
+       predefinedMetricPairSpecification = Prelude.Nothing,
+       predefinedScalingMetricSpecification = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingMetricSpecificationProperty where
+  toResourceProperties
+    PredictiveScalingMetricSpecificationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingMetricSpecification",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TargetValue" JSON..= targetValue]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CustomizedCapacityMetricSpecification"
+                                 Prelude.<$> customizedCapacityMetricSpecification,
+                               (JSON..=) "CustomizedLoadMetricSpecification"
+                                 Prelude.<$> customizedLoadMetricSpecification,
+                               (JSON..=) "CustomizedScalingMetricSpecification"
+                                 Prelude.<$> customizedScalingMetricSpecification,
+                               (JSON..=) "PredefinedLoadMetricSpecification"
+                                 Prelude.<$> predefinedLoadMetricSpecification,
+                               (JSON..=) "PredefinedMetricPairSpecification"
+                                 Prelude.<$> predefinedMetricPairSpecification,
+                               (JSON..=) "PredefinedScalingMetricSpecification"
+                                 Prelude.<$> predefinedScalingMetricSpecification]))}
+instance JSON.ToJSON PredictiveScalingMetricSpecificationProperty where
+  toJSON PredictiveScalingMetricSpecificationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TargetValue" JSON..= targetValue]
+              (Prelude.catMaybes
+                 [(JSON..=) "CustomizedCapacityMetricSpecification"
+                    Prelude.<$> customizedCapacityMetricSpecification,
+                  (JSON..=) "CustomizedLoadMetricSpecification"
+                    Prelude.<$> customizedLoadMetricSpecification,
+                  (JSON..=) "CustomizedScalingMetricSpecification"
+                    Prelude.<$> customizedScalingMetricSpecification,
+                  (JSON..=) "PredefinedLoadMetricSpecification"
+                    Prelude.<$> predefinedLoadMetricSpecification,
+                  (JSON..=) "PredefinedMetricPairSpecification"
+                    Prelude.<$> predefinedMetricPairSpecification,
+                  (JSON..=) "PredefinedScalingMetricSpecification"
+                    Prelude.<$> predefinedScalingMetricSpecification])))
+instance Property "CustomizedCapacityMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "CustomizedCapacityMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingCustomizedCapacityMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {customizedCapacityMetricSpecification = Prelude.pure newValue, ..}
+instance Property "CustomizedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "CustomizedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingCustomizedLoadMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {customizedLoadMetricSpecification = Prelude.pure newValue, ..}
+instance Property "CustomizedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "CustomizedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingCustomizedScalingMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {customizedScalingMetricSpecification = Prelude.pure newValue, ..}
+instance Property "PredefinedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "PredefinedLoadMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingPredefinedLoadMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {predefinedLoadMetricSpecification = Prelude.pure newValue, ..}
+instance Property "PredefinedMetricPairSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "PredefinedMetricPairSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingPredefinedMetricPairProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {predefinedMetricPairSpecification = Prelude.pure newValue, ..}
+instance Property "PredefinedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "PredefinedScalingMetricSpecification" PredictiveScalingMetricSpecificationProperty = PredictiveScalingPredefinedScalingMetricProperty
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {predefinedScalingMetricSpecification = Prelude.pure newValue, ..}
+instance Property "TargetValue" PredictiveScalingMetricSpecificationProperty where
+  type PropertyType "TargetValue" PredictiveScalingMetricSpecificationProperty = Value Prelude.Double
+  set newValue PredictiveScalingMetricSpecificationProperty {..}
+    = PredictiveScalingMetricSpecificationProperty
+        {targetValue = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingMetricSpecificationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingMetricSpecificationProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingMetricSpecificationProperty
+instance Prelude.Eq PredictiveScalingMetricSpecificationProperty
+instance Prelude.Show PredictiveScalingMetricSpecificationProperty
+instance JSON.ToJSON PredictiveScalingMetricSpecificationProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty (
+        PredictiveScalingPredefinedLoadMetricProperty(..),
+        mkPredictiveScalingPredefinedLoadMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingPredefinedLoadMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html>
+    PredictiveScalingPredefinedLoadMetricProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html#cfn-autoscaling-scalingpolicy-predictivescalingpredefinedloadmetric-predefinedmetrictype>
+                                                   predefinedMetricType :: (Value Prelude.Text),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html#cfn-autoscaling-scalingpolicy-predictivescalingpredefinedloadmetric-resourcelabel>
+                                                   resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingPredefinedLoadMetricProperty ::
+  Value Prelude.Text -> PredictiveScalingPredefinedLoadMetricProperty
+mkPredictiveScalingPredefinedLoadMetricProperty
+  predefinedMetricType
+  = PredictiveScalingPredefinedLoadMetricProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingPredefinedLoadMetricProperty where
+  toResourceProperties
+    PredictiveScalingPredefinedLoadMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingPredefinedLoadMetric",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredictiveScalingPredefinedLoadMetricProperty where
+  toJSON PredictiveScalingPredefinedLoadMetricProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredictiveScalingPredefinedLoadMetricProperty where
+  type PropertyType "PredefinedMetricType" PredictiveScalingPredefinedLoadMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedLoadMetricProperty {..}
+    = PredictiveScalingPredefinedLoadMetricProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredictiveScalingPredefinedLoadMetricProperty where
+  type PropertyType "ResourceLabel" PredictiveScalingPredefinedLoadMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedLoadMetricProperty {..}
+    = PredictiveScalingPredefinedLoadMetricProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedLoadMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingPredefinedLoadMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingPredefinedLoadMetricProperty
+instance Prelude.Eq PredictiveScalingPredefinedLoadMetricProperty
+instance Prelude.Show PredictiveScalingPredefinedLoadMetricProperty
+instance JSON.ToJSON PredictiveScalingPredefinedLoadMetricProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty (
+        PredictiveScalingPredefinedMetricPairProperty(..),
+        mkPredictiveScalingPredefinedMetricPairProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingPredefinedMetricPairProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html>
+    PredictiveScalingPredefinedMetricPairProperty {haddock_workaround_ :: (),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html#cfn-autoscaling-scalingpolicy-predictivescalingpredefinedmetricpair-predefinedmetrictype>
+                                                   predefinedMetricType :: (Value Prelude.Text),
+                                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html#cfn-autoscaling-scalingpolicy-predictivescalingpredefinedmetricpair-resourcelabel>
+                                                   resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingPredefinedMetricPairProperty ::
+  Value Prelude.Text -> PredictiveScalingPredefinedMetricPairProperty
+mkPredictiveScalingPredefinedMetricPairProperty
+  predefinedMetricType
+  = PredictiveScalingPredefinedMetricPairProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingPredefinedMetricPairProperty where
+  toResourceProperties
+    PredictiveScalingPredefinedMetricPairProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingPredefinedMetricPair",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredictiveScalingPredefinedMetricPairProperty where
+  toJSON PredictiveScalingPredefinedMetricPairProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredictiveScalingPredefinedMetricPairProperty where
+  type PropertyType "PredefinedMetricType" PredictiveScalingPredefinedMetricPairProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedMetricPairProperty {..}
+    = PredictiveScalingPredefinedMetricPairProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredictiveScalingPredefinedMetricPairProperty where
+  type PropertyType "ResourceLabel" PredictiveScalingPredefinedMetricPairProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedMetricPairProperty {..}
+    = PredictiveScalingPredefinedMetricPairProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedMetricPairProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingPredefinedMetricPairProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingPredefinedMetricPairProperty
+instance Prelude.Eq PredictiveScalingPredefinedMetricPairProperty
+instance Prelude.Show PredictiveScalingPredefinedMetricPairProperty
+instance JSON.ToJSON PredictiveScalingPredefinedMetricPairProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty (
+        PredictiveScalingPredefinedScalingMetricProperty(..),
+        mkPredictiveScalingPredefinedScalingMetricProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredictiveScalingPredefinedScalingMetricProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html>
+    PredictiveScalingPredefinedScalingMetricProperty {haddock_workaround_ :: (),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html#cfn-autoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric-predefinedmetrictype>
+                                                      predefinedMetricType :: (Value Prelude.Text),
+                                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html#cfn-autoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric-resourcelabel>
+                                                      resourceLabel :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredictiveScalingPredefinedScalingMetricProperty ::
+  Value Prelude.Text
+  -> PredictiveScalingPredefinedScalingMetricProperty
+mkPredictiveScalingPredefinedScalingMetricProperty
+  predefinedMetricType
+  = PredictiveScalingPredefinedScalingMetricProperty
+      {haddock_workaround_ = (),
+       predefinedMetricType = predefinedMetricType,
+       resourceLabel = Prelude.Nothing}
+instance ToResourceProperties PredictiveScalingPredefinedScalingMetricProperty where
+  toResourceProperties
+    PredictiveScalingPredefinedScalingMetricProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.PredictiveScalingPredefinedScalingMetric",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["PredefinedMetricType" JSON..= predefinedMetricType]
+                           (Prelude.catMaybes
+                              [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel]))}
+instance JSON.ToJSON PredictiveScalingPredefinedScalingMetricProperty where
+  toJSON PredictiveScalingPredefinedScalingMetricProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["PredefinedMetricType" JSON..= predefinedMetricType]
+              (Prelude.catMaybes
+                 [(JSON..=) "ResourceLabel" Prelude.<$> resourceLabel])))
+instance Property "PredefinedMetricType" PredictiveScalingPredefinedScalingMetricProperty where
+  type PropertyType "PredefinedMetricType" PredictiveScalingPredefinedScalingMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedScalingMetricProperty {..}
+    = PredictiveScalingPredefinedScalingMetricProperty
+        {predefinedMetricType = newValue, ..}
+instance Property "ResourceLabel" PredictiveScalingPredefinedScalingMetricProperty where
+  type PropertyType "ResourceLabel" PredictiveScalingPredefinedScalingMetricProperty = Value Prelude.Text
+  set newValue PredictiveScalingPredefinedScalingMetricProperty {..}
+    = PredictiveScalingPredefinedScalingMetricProperty
+        {resourceLabel = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/PredictiveScalingPredefinedScalingMetricProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredictiveScalingPredefinedScalingMetricProperty :: Prelude.Type
+instance ToResourceProperties PredictiveScalingPredefinedScalingMetricProperty
+instance Prelude.Eq PredictiveScalingPredefinedScalingMetricProperty
+instance Prelude.Show PredictiveScalingPredefinedScalingMetricProperty
+instance JSON.ToJSON PredictiveScalingPredefinedScalingMetricProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/StepAdjustmentProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/StepAdjustmentProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/StepAdjustmentProperty.hs
@@ -0,0 +1,63 @@
+module Stratosphere.AutoScaling.ScalingPolicy.StepAdjustmentProperty (
+        StepAdjustmentProperty(..), mkStepAdjustmentProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data StepAdjustmentProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustment.html>
+    StepAdjustmentProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustment.html#cfn-autoscaling-scalingpolicy-stepadjustment-metricintervallowerbound>
+                            metricIntervalLowerBound :: (Prelude.Maybe (Value Prelude.Double)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustment.html#cfn-autoscaling-scalingpolicy-stepadjustment-metricintervalupperbound>
+                            metricIntervalUpperBound :: (Prelude.Maybe (Value Prelude.Double)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-stepadjustment.html#cfn-autoscaling-scalingpolicy-stepadjustment-scalingadjustment>
+                            scalingAdjustment :: (Value Prelude.Integer)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkStepAdjustmentProperty ::
+  Value Prelude.Integer -> StepAdjustmentProperty
+mkStepAdjustmentProperty scalingAdjustment
+  = StepAdjustmentProperty
+      {haddock_workaround_ = (), scalingAdjustment = scalingAdjustment,
+       metricIntervalLowerBound = Prelude.Nothing,
+       metricIntervalUpperBound = Prelude.Nothing}
+instance ToResourceProperties StepAdjustmentProperty where
+  toResourceProperties StepAdjustmentProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.StepAdjustment",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ScalingAdjustment" JSON..= scalingAdjustment]
+                           (Prelude.catMaybes
+                              [(JSON..=) "MetricIntervalLowerBound"
+                                 Prelude.<$> metricIntervalLowerBound,
+                               (JSON..=) "MetricIntervalUpperBound"
+                                 Prelude.<$> metricIntervalUpperBound]))}
+instance JSON.ToJSON StepAdjustmentProperty where
+  toJSON StepAdjustmentProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ScalingAdjustment" JSON..= scalingAdjustment]
+              (Prelude.catMaybes
+                 [(JSON..=) "MetricIntervalLowerBound"
+                    Prelude.<$> metricIntervalLowerBound,
+                  (JSON..=) "MetricIntervalUpperBound"
+                    Prelude.<$> metricIntervalUpperBound])))
+instance Property "MetricIntervalLowerBound" StepAdjustmentProperty where
+  type PropertyType "MetricIntervalLowerBound" StepAdjustmentProperty = Value Prelude.Double
+  set newValue StepAdjustmentProperty {..}
+    = StepAdjustmentProperty
+        {metricIntervalLowerBound = Prelude.pure newValue, ..}
+instance Property "MetricIntervalUpperBound" StepAdjustmentProperty where
+  type PropertyType "MetricIntervalUpperBound" StepAdjustmentProperty = Value Prelude.Double
+  set newValue StepAdjustmentProperty {..}
+    = StepAdjustmentProperty
+        {metricIntervalUpperBound = Prelude.pure newValue, ..}
+instance Property "ScalingAdjustment" StepAdjustmentProperty where
+  type PropertyType "ScalingAdjustment" StepAdjustmentProperty = Value Prelude.Integer
+  set newValue StepAdjustmentProperty {..}
+    = StepAdjustmentProperty {scalingAdjustment = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/StepAdjustmentProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/StepAdjustmentProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/StepAdjustmentProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.StepAdjustmentProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data StepAdjustmentProperty :: Prelude.Type
+instance ToResourceProperties StepAdjustmentProperty
+instance Prelude.Eq StepAdjustmentProperty
+instance Prelude.Show StepAdjustmentProperty
+instance JSON.ToJSON StepAdjustmentProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingConfigurationProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingConfigurationProperty.hs
@@ -0,0 +1,76 @@
+module Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingConfigurationProperty (
+        module Exports, TargetTrackingConfigurationProperty(..),
+        mkTargetTrackingConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html>
+    TargetTrackingConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-customizedmetricspecification>
+                                         customizedMetricSpecification :: (Prelude.Maybe CustomizedMetricSpecificationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-disablescalein>
+                                         disableScaleIn :: (Prelude.Maybe (Value Prelude.Bool)),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-predefinedmetricspecification>
+                                         predefinedMetricSpecification :: (Prelude.Maybe PredefinedMetricSpecificationProperty),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingconfiguration.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration-targetvalue>
+                                         targetValue :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingConfigurationProperty ::
+  Value Prelude.Double -> TargetTrackingConfigurationProperty
+mkTargetTrackingConfigurationProperty targetValue
+  = TargetTrackingConfigurationProperty
+      {haddock_workaround_ = (), targetValue = targetValue,
+       customizedMetricSpecification = Prelude.Nothing,
+       disableScaleIn = Prelude.Nothing,
+       predefinedMetricSpecification = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingConfigurationProperty where
+  toResourceProperties TargetTrackingConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.TargetTrackingConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TargetValue" JSON..= targetValue]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CustomizedMetricSpecification"
+                                 Prelude.<$> customizedMetricSpecification,
+                               (JSON..=) "DisableScaleIn" Prelude.<$> disableScaleIn,
+                               (JSON..=) "PredefinedMetricSpecification"
+                                 Prelude.<$> predefinedMetricSpecification]))}
+instance JSON.ToJSON TargetTrackingConfigurationProperty where
+  toJSON TargetTrackingConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TargetValue" JSON..= targetValue]
+              (Prelude.catMaybes
+                 [(JSON..=) "CustomizedMetricSpecification"
+                    Prelude.<$> customizedMetricSpecification,
+                  (JSON..=) "DisableScaleIn" Prelude.<$> disableScaleIn,
+                  (JSON..=) "PredefinedMetricSpecification"
+                    Prelude.<$> predefinedMetricSpecification])))
+instance Property "CustomizedMetricSpecification" TargetTrackingConfigurationProperty where
+  type PropertyType "CustomizedMetricSpecification" TargetTrackingConfigurationProperty = CustomizedMetricSpecificationProperty
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {customizedMetricSpecification = Prelude.pure newValue, ..}
+instance Property "DisableScaleIn" TargetTrackingConfigurationProperty where
+  type PropertyType "DisableScaleIn" TargetTrackingConfigurationProperty = Value Prelude.Bool
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {disableScaleIn = Prelude.pure newValue, ..}
+instance Property "PredefinedMetricSpecification" TargetTrackingConfigurationProperty where
+  type PropertyType "PredefinedMetricSpecification" TargetTrackingConfigurationProperty = PredefinedMetricSpecificationProperty
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty
+        {predefinedMetricSpecification = Prelude.pure newValue, ..}
+instance Property "TargetValue" TargetTrackingConfigurationProperty where
+  type PropertyType "TargetValue" TargetTrackingConfigurationProperty = Value Prelude.Double
+  set newValue TargetTrackingConfigurationProperty {..}
+    = TargetTrackingConfigurationProperty {targetValue = newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingConfigurationProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingConfigurationProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingConfigurationProperty
+instance Prelude.Eq TargetTrackingConfigurationProperty
+instance Prelude.Show TargetTrackingConfigurationProperty
+instance JSON.ToJSON TargetTrackingConfigurationProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs
@@ -0,0 +1,88 @@
+module Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty (
+        module Exports, TargetTrackingMetricDataQueryProperty(..),
+        mkTargetTrackingMetricDataQueryProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingMetricDataQueryProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricdataquery.html>
+    TargetTrackingMetricDataQueryProperty {haddock_workaround_ :: (),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-autoscaling-scalingpolicy-targettrackingmetricdataquery-expression>
+                                           expression :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-autoscaling-scalingpolicy-targettrackingmetricdataquery-id>
+                                           id :: (Value Prelude.Text),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-autoscaling-scalingpolicy-targettrackingmetricdataquery-label>
+                                           label :: (Prelude.Maybe (Value Prelude.Text)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-autoscaling-scalingpolicy-targettrackingmetricdataquery-metricstat>
+                                           metricStat :: (Prelude.Maybe TargetTrackingMetricStatProperty),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-autoscaling-scalingpolicy-targettrackingmetricdataquery-period>
+                                           period :: (Prelude.Maybe (Value Prelude.Integer)),
+                                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricdataquery.html#cfn-autoscaling-scalingpolicy-targettrackingmetricdataquery-returndata>
+                                           returnData :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingMetricDataQueryProperty ::
+  Value Prelude.Text -> TargetTrackingMetricDataQueryProperty
+mkTargetTrackingMetricDataQueryProperty id
+  = TargetTrackingMetricDataQueryProperty
+      {haddock_workaround_ = (), id = id, expression = Prelude.Nothing,
+       label = Prelude.Nothing, metricStat = Prelude.Nothing,
+       period = Prelude.Nothing, returnData = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingMetricDataQueryProperty where
+  toResourceProperties TargetTrackingMetricDataQueryProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.TargetTrackingMetricDataQuery",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Id" JSON..= id]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Expression" Prelude.<$> expression,
+                               (JSON..=) "Label" Prelude.<$> label,
+                               (JSON..=) "MetricStat" Prelude.<$> metricStat,
+                               (JSON..=) "Period" Prelude.<$> period,
+                               (JSON..=) "ReturnData" Prelude.<$> returnData]))}
+instance JSON.ToJSON TargetTrackingMetricDataQueryProperty where
+  toJSON TargetTrackingMetricDataQueryProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Id" JSON..= id]
+              (Prelude.catMaybes
+                 [(JSON..=) "Expression" Prelude.<$> expression,
+                  (JSON..=) "Label" Prelude.<$> label,
+                  (JSON..=) "MetricStat" Prelude.<$> metricStat,
+                  (JSON..=) "Period" Prelude.<$> period,
+                  (JSON..=) "ReturnData" Prelude.<$> returnData])))
+instance Property "Expression" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "Expression" TargetTrackingMetricDataQueryProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {expression = Prelude.pure newValue, ..}
+instance Property "Id" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "Id" TargetTrackingMetricDataQueryProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty {id = newValue, ..}
+instance Property "Label" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "Label" TargetTrackingMetricDataQueryProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {label = Prelude.pure newValue, ..}
+instance Property "MetricStat" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "MetricStat" TargetTrackingMetricDataQueryProperty = TargetTrackingMetricStatProperty
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {metricStat = Prelude.pure newValue, ..}
+instance Property "Period" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "Period" TargetTrackingMetricDataQueryProperty = Value Prelude.Integer
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {period = Prelude.pure newValue, ..}
+instance Property "ReturnData" TargetTrackingMetricDataQueryProperty where
+  type PropertyType "ReturnData" TargetTrackingMetricDataQueryProperty = Value Prelude.Bool
+  set newValue TargetTrackingMetricDataQueryProperty {..}
+    = TargetTrackingMetricDataQueryProperty
+        {returnData = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricDataQueryProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingMetricDataQueryProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingMetricDataQueryProperty
+instance Prelude.Eq TargetTrackingMetricDataQueryProperty
+instance Prelude.Show TargetTrackingMetricDataQueryProperty
+instance JSON.ToJSON TargetTrackingMetricDataQueryProperty
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs
@@ -0,0 +1,67 @@
+module Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty (
+        module Exports, TargetTrackingMetricStatProperty(..),
+        mkTargetTrackingMetricStatProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.ScalingPolicy.MetricProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data TargetTrackingMetricStatProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricstat.html>
+    TargetTrackingMetricStatProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricstat.html#cfn-autoscaling-scalingpolicy-targettrackingmetricstat-metric>
+                                      metric :: MetricProperty,
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricstat.html#cfn-autoscaling-scalingpolicy-targettrackingmetricstat-period>
+                                      period :: (Prelude.Maybe (Value Prelude.Integer)),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricstat.html#cfn-autoscaling-scalingpolicy-targettrackingmetricstat-stat>
+                                      stat :: (Value Prelude.Text),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-targettrackingmetricstat.html#cfn-autoscaling-scalingpolicy-targettrackingmetricstat-unit>
+                                      unit :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTargetTrackingMetricStatProperty ::
+  MetricProperty
+  -> Value Prelude.Text -> TargetTrackingMetricStatProperty
+mkTargetTrackingMetricStatProperty metric stat
+  = TargetTrackingMetricStatProperty
+      {haddock_workaround_ = (), metric = metric, stat = stat,
+       period = Prelude.Nothing, unit = Prelude.Nothing}
+instance ToResourceProperties TargetTrackingMetricStatProperty where
+  toResourceProperties TargetTrackingMetricStatProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScalingPolicy.TargetTrackingMetricStat",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Metric" JSON..= metric, "Stat" JSON..= stat]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Period" Prelude.<$> period,
+                               (JSON..=) "Unit" Prelude.<$> unit]))}
+instance JSON.ToJSON TargetTrackingMetricStatProperty where
+  toJSON TargetTrackingMetricStatProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Metric" JSON..= metric, "Stat" JSON..= stat]
+              (Prelude.catMaybes
+                 [(JSON..=) "Period" Prelude.<$> period,
+                  (JSON..=) "Unit" Prelude.<$> unit])))
+instance Property "Metric" TargetTrackingMetricStatProperty where
+  type PropertyType "Metric" TargetTrackingMetricStatProperty = MetricProperty
+  set newValue TargetTrackingMetricStatProperty {..}
+    = TargetTrackingMetricStatProperty {metric = newValue, ..}
+instance Property "Period" TargetTrackingMetricStatProperty where
+  type PropertyType "Period" TargetTrackingMetricStatProperty = Value Prelude.Integer
+  set newValue TargetTrackingMetricStatProperty {..}
+    = TargetTrackingMetricStatProperty
+        {period = Prelude.pure newValue, ..}
+instance Property "Stat" TargetTrackingMetricStatProperty where
+  type PropertyType "Stat" TargetTrackingMetricStatProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricStatProperty {..}
+    = TargetTrackingMetricStatProperty {stat = newValue, ..}
+instance Property "Unit" TargetTrackingMetricStatProperty where
+  type PropertyType "Unit" TargetTrackingMetricStatProperty = Value Prelude.Text
+  set newValue TargetTrackingMetricStatProperty {..}
+    = TargetTrackingMetricStatProperty
+        {unit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs-boot b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScalingPolicy/TargetTrackingMetricStatProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data TargetTrackingMetricStatProperty :: Prelude.Type
+instance ToResourceProperties TargetTrackingMetricStatProperty
+instance Prelude.Eq TargetTrackingMetricStatProperty
+instance Prelude.Show TargetTrackingMetricStatProperty
+instance JSON.ToJSON TargetTrackingMetricStatProperty
diff --git a/gen/Stratosphere/AutoScaling/ScheduledAction.hs b/gen/Stratosphere/AutoScaling/ScheduledAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/ScheduledAction.hs
@@ -0,0 +1,99 @@
+module Stratosphere.AutoScaling.ScheduledAction (
+        ScheduledAction(..), mkScheduledAction
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ScheduledAction
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html>
+    ScheduledAction {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-autoscalinggroupname>
+                     autoScalingGroupName :: (Value Prelude.Text),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-desiredcapacity>
+                     desiredCapacity :: (Prelude.Maybe (Value Prelude.Integer)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-endtime>
+                     endTime :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-maxsize>
+                     maxSize :: (Prelude.Maybe (Value Prelude.Integer)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-minsize>
+                     minSize :: (Prelude.Maybe (Value Prelude.Integer)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-recurrence>
+                     recurrence :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-starttime>
+                     startTime :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scheduledaction.html#cfn-autoscaling-scheduledaction-timezone>
+                     timeZone :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkScheduledAction :: Value Prelude.Text -> ScheduledAction
+mkScheduledAction autoScalingGroupName
+  = ScheduledAction
+      {haddock_workaround_ = (),
+       autoScalingGroupName = autoScalingGroupName,
+       desiredCapacity = Prelude.Nothing, endTime = Prelude.Nothing,
+       maxSize = Prelude.Nothing, minSize = Prelude.Nothing,
+       recurrence = Prelude.Nothing, startTime = Prelude.Nothing,
+       timeZone = Prelude.Nothing}
+instance ToResourceProperties ScheduledAction where
+  toResourceProperties ScheduledAction {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::ScheduledAction",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AutoScalingGroupName" JSON..= autoScalingGroupName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DesiredCapacity" Prelude.<$> desiredCapacity,
+                               (JSON..=) "EndTime" Prelude.<$> endTime,
+                               (JSON..=) "MaxSize" Prelude.<$> maxSize,
+                               (JSON..=) "MinSize" Prelude.<$> minSize,
+                               (JSON..=) "Recurrence" Prelude.<$> recurrence,
+                               (JSON..=) "StartTime" Prelude.<$> startTime,
+                               (JSON..=) "TimeZone" Prelude.<$> timeZone]))}
+instance JSON.ToJSON ScheduledAction where
+  toJSON ScheduledAction {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AutoScalingGroupName" JSON..= autoScalingGroupName]
+              (Prelude.catMaybes
+                 [(JSON..=) "DesiredCapacity" Prelude.<$> desiredCapacity,
+                  (JSON..=) "EndTime" Prelude.<$> endTime,
+                  (JSON..=) "MaxSize" Prelude.<$> maxSize,
+                  (JSON..=) "MinSize" Prelude.<$> minSize,
+                  (JSON..=) "Recurrence" Prelude.<$> recurrence,
+                  (JSON..=) "StartTime" Prelude.<$> startTime,
+                  (JSON..=) "TimeZone" Prelude.<$> timeZone])))
+instance Property "AutoScalingGroupName" ScheduledAction where
+  type PropertyType "AutoScalingGroupName" ScheduledAction = Value Prelude.Text
+  set newValue ScheduledAction {..}
+    = ScheduledAction {autoScalingGroupName = newValue, ..}
+instance Property "DesiredCapacity" ScheduledAction where
+  type PropertyType "DesiredCapacity" ScheduledAction = Value Prelude.Integer
+  set newValue ScheduledAction {..}
+    = ScheduledAction {desiredCapacity = Prelude.pure newValue, ..}
+instance Property "EndTime" ScheduledAction where
+  type PropertyType "EndTime" ScheduledAction = Value Prelude.Text
+  set newValue ScheduledAction {..}
+    = ScheduledAction {endTime = Prelude.pure newValue, ..}
+instance Property "MaxSize" ScheduledAction where
+  type PropertyType "MaxSize" ScheduledAction = Value Prelude.Integer
+  set newValue ScheduledAction {..}
+    = ScheduledAction {maxSize = Prelude.pure newValue, ..}
+instance Property "MinSize" ScheduledAction where
+  type PropertyType "MinSize" ScheduledAction = Value Prelude.Integer
+  set newValue ScheduledAction {..}
+    = ScheduledAction {minSize = Prelude.pure newValue, ..}
+instance Property "Recurrence" ScheduledAction where
+  type PropertyType "Recurrence" ScheduledAction = Value Prelude.Text
+  set newValue ScheduledAction {..}
+    = ScheduledAction {recurrence = Prelude.pure newValue, ..}
+instance Property "StartTime" ScheduledAction where
+  type PropertyType "StartTime" ScheduledAction = Value Prelude.Text
+  set newValue ScheduledAction {..}
+    = ScheduledAction {startTime = Prelude.pure newValue, ..}
+instance Property "TimeZone" ScheduledAction where
+  type PropertyType "TimeZone" ScheduledAction = Value Prelude.Text
+  set newValue ScheduledAction {..}
+    = ScheduledAction {timeZone = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/WarmPool.hs b/gen/Stratosphere/AutoScaling/WarmPool.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/WarmPool.hs
@@ -0,0 +1,77 @@
+module Stratosphere.AutoScaling.WarmPool (
+        module Exports, WarmPool(..), mkWarmPool
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AutoScaling.WarmPool.InstanceReusePolicyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data WarmPool
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-warmpool.html>
+    WarmPool {haddock_workaround_ :: (),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-warmpool.html#cfn-autoscaling-warmpool-autoscalinggroupname>
+              autoScalingGroupName :: (Value Prelude.Text),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-warmpool.html#cfn-autoscaling-warmpool-instancereusepolicy>
+              instanceReusePolicy :: (Prelude.Maybe InstanceReusePolicyProperty),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-warmpool.html#cfn-autoscaling-warmpool-maxgrouppreparedcapacity>
+              maxGroupPreparedCapacity :: (Prelude.Maybe (Value Prelude.Integer)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-warmpool.html#cfn-autoscaling-warmpool-minsize>
+              minSize :: (Prelude.Maybe (Value Prelude.Integer)),
+              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-warmpool.html#cfn-autoscaling-warmpool-poolstate>
+              poolState :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWarmPool :: Value Prelude.Text -> WarmPool
+mkWarmPool autoScalingGroupName
+  = WarmPool
+      {haddock_workaround_ = (),
+       autoScalingGroupName = autoScalingGroupName,
+       instanceReusePolicy = Prelude.Nothing,
+       maxGroupPreparedCapacity = Prelude.Nothing,
+       minSize = Prelude.Nothing, poolState = Prelude.Nothing}
+instance ToResourceProperties WarmPool where
+  toResourceProperties WarmPool {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::WarmPool",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AutoScalingGroupName" JSON..= autoScalingGroupName]
+                           (Prelude.catMaybes
+                              [(JSON..=) "InstanceReusePolicy" Prelude.<$> instanceReusePolicy,
+                               (JSON..=) "MaxGroupPreparedCapacity"
+                                 Prelude.<$> maxGroupPreparedCapacity,
+                               (JSON..=) "MinSize" Prelude.<$> minSize,
+                               (JSON..=) "PoolState" Prelude.<$> poolState]))}
+instance JSON.ToJSON WarmPool where
+  toJSON WarmPool {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AutoScalingGroupName" JSON..= autoScalingGroupName]
+              (Prelude.catMaybes
+                 [(JSON..=) "InstanceReusePolicy" Prelude.<$> instanceReusePolicy,
+                  (JSON..=) "MaxGroupPreparedCapacity"
+                    Prelude.<$> maxGroupPreparedCapacity,
+                  (JSON..=) "MinSize" Prelude.<$> minSize,
+                  (JSON..=) "PoolState" Prelude.<$> poolState])))
+instance Property "AutoScalingGroupName" WarmPool where
+  type PropertyType "AutoScalingGroupName" WarmPool = Value Prelude.Text
+  set newValue WarmPool {..}
+    = WarmPool {autoScalingGroupName = newValue, ..}
+instance Property "InstanceReusePolicy" WarmPool where
+  type PropertyType "InstanceReusePolicy" WarmPool = InstanceReusePolicyProperty
+  set newValue WarmPool {..}
+    = WarmPool {instanceReusePolicy = Prelude.pure newValue, ..}
+instance Property "MaxGroupPreparedCapacity" WarmPool where
+  type PropertyType "MaxGroupPreparedCapacity" WarmPool = Value Prelude.Integer
+  set newValue WarmPool {..}
+    = WarmPool {maxGroupPreparedCapacity = Prelude.pure newValue, ..}
+instance Property "MinSize" WarmPool where
+  type PropertyType "MinSize" WarmPool = Value Prelude.Integer
+  set newValue WarmPool {..}
+    = WarmPool {minSize = Prelude.pure newValue, ..}
+instance Property "PoolState" WarmPool where
+  type PropertyType "PoolState" WarmPool = Value Prelude.Text
+  set newValue WarmPool {..}
+    = WarmPool {poolState = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/WarmPool/InstanceReusePolicyProperty.hs b/gen/Stratosphere/AutoScaling/WarmPool/InstanceReusePolicyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/WarmPool/InstanceReusePolicyProperty.hs
@@ -0,0 +1,37 @@
+module Stratosphere.AutoScaling.WarmPool.InstanceReusePolicyProperty (
+        InstanceReusePolicyProperty(..), mkInstanceReusePolicyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InstanceReusePolicyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-warmpool-instancereusepolicy.html>
+    InstanceReusePolicyProperty {haddock_workaround_ :: (),
+                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-warmpool-instancereusepolicy.html#cfn-autoscaling-warmpool-instancereusepolicy-reuseonscalein>
+                                 reuseOnScaleIn :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInstanceReusePolicyProperty :: InstanceReusePolicyProperty
+mkInstanceReusePolicyProperty
+  = InstanceReusePolicyProperty
+      {haddock_workaround_ = (), reuseOnScaleIn = Prelude.Nothing}
+instance ToResourceProperties InstanceReusePolicyProperty where
+  toResourceProperties InstanceReusePolicyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AutoScaling::WarmPool.InstanceReusePolicy",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ReuseOnScaleIn" Prelude.<$> reuseOnScaleIn])}
+instance JSON.ToJSON InstanceReusePolicyProperty where
+  toJSON InstanceReusePolicyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ReuseOnScaleIn" Prelude.<$> reuseOnScaleIn]))
+instance Property "ReuseOnScaleIn" InstanceReusePolicyProperty where
+  type PropertyType "ReuseOnScaleIn" InstanceReusePolicyProperty = Value Prelude.Bool
+  set newValue InstanceReusePolicyProperty {..}
+    = InstanceReusePolicyProperty
+        {reuseOnScaleIn = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AutoScaling/WarmPool/InstanceReusePolicyProperty.hs-boot b/gen/Stratosphere/AutoScaling/WarmPool/InstanceReusePolicyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AutoScaling/WarmPool/InstanceReusePolicyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AutoScaling.WarmPool.InstanceReusePolicyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InstanceReusePolicyProperty :: Prelude.Type
+instance ToResourceProperties InstanceReusePolicyProperty
+instance Prelude.Eq InstanceReusePolicyProperty
+instance Prelude.Show InstanceReusePolicyProperty
+instance JSON.ToJSON InstanceReusePolicyProperty
diff --git a/stratosphere-autoscaling.cabal b/stratosphere-autoscaling.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-autoscaling.cabal
@@ -0,0 +1,128 @@
+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-autoscaling
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS AutoScaling.
+description:    Integration into stratosphere to generate resources and properties for AWS AutoScaling
+category:       AWS, Cloud, AutoScaling
+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.AutoScaling.AutoScalingGroup
+      Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorCountRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.AcceleratorTotalMemoryMiBRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneDistributionProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.AvailabilityZoneImpairmentPolicyProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.BaselineEbsBandwidthMbpsRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.BaselinePerformanceFactorsRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationSpecificationProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.CapacityReservationTargetProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.CpuPerformanceFactorRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.InstanceMaintenancePolicyProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.InstanceRequirementsProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.InstancesDistributionProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateOverridesProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.LaunchTemplateSpecificationProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.LifecycleHookSpecificationProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.MemoryGiBPerVCpuRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.MemoryMiBRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.MetricsCollectionProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.MixedInstancesPolicyProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.NetworkBandwidthGbpsRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.NetworkInterfaceCountRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.NotificationConfigurationProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.PerformanceFactorReferenceRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.TagPropertyProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.TotalLocalStorageGBRequestProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.TrafficSourceIdentifierProperty
+      Stratosphere.AutoScaling.AutoScalingGroup.VCpuCountRequestProperty
+      Stratosphere.AutoScaling.LaunchConfiguration
+      Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceMappingProperty
+      Stratosphere.AutoScaling.LaunchConfiguration.BlockDeviceProperty
+      Stratosphere.AutoScaling.LaunchConfiguration.MetadataOptionsProperty
+      Stratosphere.AutoScaling.LifecycleHook
+      Stratosphere.AutoScaling.ScalingPolicy
+      Stratosphere.AutoScaling.ScalingPolicy.CustomizedMetricSpecificationProperty
+      Stratosphere.AutoScaling.ScalingPolicy.MetricDataQueryProperty
+      Stratosphere.AutoScaling.ScalingPolicy.MetricDimensionProperty
+      Stratosphere.AutoScaling.ScalingPolicy.MetricProperty
+      Stratosphere.AutoScaling.ScalingPolicy.MetricStatProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredefinedMetricSpecificationProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingConfigurationProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedCapacityMetricProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedLoadMetricProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingCustomizedScalingMetricProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingMetricSpecificationProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedLoadMetricProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedMetricPairProperty
+      Stratosphere.AutoScaling.ScalingPolicy.PredictiveScalingPredefinedScalingMetricProperty
+      Stratosphere.AutoScaling.ScalingPolicy.StepAdjustmentProperty
+      Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingConfigurationProperty
+      Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricDataQueryProperty
+      Stratosphere.AutoScaling.ScalingPolicy.TargetTrackingMetricStatProperty
+      Stratosphere.AutoScaling.ScheduledAction
+      Stratosphere.AutoScaling.WarmPool
+      Stratosphere.AutoScaling.WarmPool.InstanceReusePolicyProperty
+  other-modules:
+      Paths_stratosphere_autoscaling
+  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
