# Copyright (c) 2012-2025, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***
from . import AWSObject, AWSProperty, PropsDictType
from .validators import boolean, double, integer
[docs]class ScalableTargetAction(AWSProperty):
"""
`ScalableTargetAction <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scalabletargetaction.html>`__
"""
props: PropsDictType = {
"MaxCapacity": (integer, False),
"MinCapacity": (integer, False),
}
[docs]class ScheduledAction(AWSProperty):
"""
`ScheduledAction <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-scheduledaction.html>`__
"""
props: PropsDictType = {
"EndTime": (str, False),
"ScalableTargetAction": (ScalableTargetAction, False),
"Schedule": (str, True),
"ScheduledActionName": (str, True),
"StartTime": (str, False),
"Timezone": (str, False),
}
[docs]class SuspendedState(AWSProperty):
"""
`SuspendedState <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalabletarget-suspendedstate.html>`__
"""
props: PropsDictType = {
"DynamicScalingInSuspended": (boolean, False),
"DynamicScalingOutSuspended": (boolean, False),
"ScheduledScalingSuspended": (boolean, False),
}
[docs]class ScalableTarget(AWSObject):
"""
`ScalableTarget <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalabletarget.html>`__
"""
resource_type = "AWS::ApplicationAutoScaling::ScalableTarget"
props: PropsDictType = {
"MaxCapacity": (integer, True),
"MinCapacity": (integer, True),
"ResourceId": (str, True),
"RoleARN": (str, False),
"ScalableDimension": (str, True),
"ScheduledActions": ([ScheduledAction], False),
"ServiceNamespace": (str, True),
"SuspendedState": (SuspendedState, False),
}
[docs]class PredictiveScalingMetricDimension(AWSProperty):
"""
`PredictiveScalingMetricDimension <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdimension.html>`__
"""
props: PropsDictType = {
"Name": (str, False),
"Value": (str, False),
}
[docs]class PredictiveScalingMetric(AWSProperty):
"""
`PredictiveScalingMetric <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetric.html>`__
"""
props: PropsDictType = {
"Dimensions": ([PredictiveScalingMetricDimension], False),
"MetricName": (str, False),
"Namespace": (str, False),
}
[docs]class PredictiveScalingMetricStat(AWSProperty):
"""
`PredictiveScalingMetricStat <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricstat.html>`__
"""
props: PropsDictType = {
"Metric": (PredictiveScalingMetric, False),
"Stat": (str, False),
"Unit": (str, False),
}
[docs]class PredictiveScalingMetricDataQuery(AWSProperty):
"""
`PredictiveScalingMetricDataQuery <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricdataquery.html>`__
"""
props: PropsDictType = {
"Expression": (str, False),
"Id": (str, False),
"Label": (str, False),
"MetricStat": (PredictiveScalingMetricStat, False),
"ReturnData": (boolean, False),
}
[docs]class PredictiveScalingCustomizedCapacityMetric(AWSProperty):
"""
`PredictiveScalingCustomizedCapacityMetric <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedcapacitymetric.html>`__
"""
props: PropsDictType = {
"MetricDataQueries": ([PredictiveScalingMetricDataQuery], True),
}
[docs]class PredictiveScalingCustomizedLoadMetric(AWSProperty):
"""
`PredictiveScalingCustomizedLoadMetric <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedloadmetric.html>`__
"""
props: PropsDictType = {
"MetricDataQueries": ([PredictiveScalingMetricDataQuery], True),
}
[docs]class PredictiveScalingCustomizedScalingMetric(AWSProperty):
"""
`PredictiveScalingCustomizedScalingMetric <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingcustomizedscalingmetric.html>`__
"""
props: PropsDictType = {
"MetricDataQueries": ([PredictiveScalingMetricDataQuery], True),
}
[docs]class PredictiveScalingPredefinedLoadMetric(AWSProperty):
"""
`PredictiveScalingPredefinedLoadMetric <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedloadmetric.html>`__
"""
props: PropsDictType = {
"PredefinedMetricType": (str, True),
"ResourceLabel": (str, False),
}
[docs]class PredictiveScalingPredefinedMetricPair(AWSProperty):
"""
`PredictiveScalingPredefinedMetricPair <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedmetricpair.html>`__
"""
props: PropsDictType = {
"PredefinedMetricType": (str, True),
"ResourceLabel": (str, False),
}
[docs]class PredictiveScalingPredefinedScalingMetric(AWSProperty):
"""
`PredictiveScalingPredefinedScalingMetric <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpredefinedscalingmetric.html>`__
"""
props: PropsDictType = {
"PredefinedMetricType": (str, True),
"ResourceLabel": (str, False),
}
[docs]class PredictiveScalingMetricSpecification(AWSProperty):
"""
`PredictiveScalingMetricSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingmetricspecification.html>`__
"""
props: PropsDictType = {
"CustomizedCapacityMetricSpecification": (
PredictiveScalingCustomizedCapacityMetric,
False,
),
"CustomizedLoadMetricSpecification": (
PredictiveScalingCustomizedLoadMetric,
False,
),
"CustomizedScalingMetricSpecification": (
PredictiveScalingCustomizedScalingMetric,
False,
),
"PredefinedLoadMetricSpecification": (
PredictiveScalingPredefinedLoadMetric,
False,
),
"PredefinedMetricPairSpecification": (
PredictiveScalingPredefinedMetricPair,
False,
),
"PredefinedScalingMetricSpecification": (
PredictiveScalingPredefinedScalingMetric,
False,
),
"TargetValue": (double, True),
}
[docs]class PredictiveScalingPolicyConfiguration(AWSProperty):
"""
`PredictiveScalingPolicyConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predictivescalingpolicyconfiguration.html>`__
"""
props: PropsDictType = {
"MaxCapacityBreachBehavior": (str, False),
"MaxCapacityBuffer": (integer, False),
"MetricSpecifications": ([PredictiveScalingMetricSpecification], True),
"Mode": (str, False),
"SchedulingBufferTime": (integer, False),
}
[docs]class StepAdjustment(AWSProperty):
"""
`StepAdjustment <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepadjustment.html>`__
"""
props: PropsDictType = {
"MetricIntervalLowerBound": (double, False),
"MetricIntervalUpperBound": (double, False),
"ScalingAdjustment": (integer, True),
}
[docs]class StepScalingPolicyConfiguration(AWSProperty):
"""
`StepScalingPolicyConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-stepscalingpolicyconfiguration.html>`__
"""
props: PropsDictType = {
"AdjustmentType": (str, False),
"Cooldown": (integer, False),
"MetricAggregationType": (str, False),
"MinAdjustmentMagnitude": (integer, False),
"StepAdjustments": ([StepAdjustment], False),
}
[docs]class MetricDimension(AWSProperty):
"""
`MetricDimension <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-metricdimension.html>`__
"""
props: PropsDictType = {
"Name": (str, True),
"Value": (str, True),
}
[docs]class TargetTrackingMetricDimension(AWSProperty):
"""
`TargetTrackingMetricDimension <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdimension.html>`__
"""
props: PropsDictType = {
"Name": (str, False),
"Value": (str, False),
}
[docs]class TargetTrackingMetric(AWSProperty):
"""
`TargetTrackingMetric <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetric.html>`__
"""
props: PropsDictType = {
"Dimensions": ([TargetTrackingMetricDimension], False),
"MetricName": (str, False),
"Namespace": (str, False),
}
[docs]class TargetTrackingMetricStat(AWSProperty):
"""
`TargetTrackingMetricStat <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricstat.html>`__
"""
props: PropsDictType = {
"Metric": (TargetTrackingMetric, False),
"Stat": (str, False),
"Unit": (str, False),
}
[docs]class TargetTrackingMetricDataQuery(AWSProperty):
"""
`TargetTrackingMetricDataQuery <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html>`__
"""
props: PropsDictType = {
"Expression": (str, False),
"Id": (str, False),
"Label": (str, False),
"MetricStat": (TargetTrackingMetricStat, False),
"ReturnData": (boolean, False),
}
[docs]class CustomizedMetricSpecification(AWSProperty):
"""
`CustomizedMetricSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-customizedmetricspecification.html>`__
"""
props: PropsDictType = {
"Dimensions": ([MetricDimension], False),
"MetricName": (str, False),
"Metrics": ([TargetTrackingMetricDataQuery], False),
"Namespace": (str, False),
"Statistic": (str, False),
"Unit": (str, False),
}
[docs]class PredefinedMetricSpecification(AWSProperty):
"""
`PredefinedMetricSpecification <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-predefinedmetricspecification.html>`__
"""
props: PropsDictType = {
"PredefinedMetricType": (str, True),
"ResourceLabel": (str, False),
}
[docs]class TargetTrackingScalingPolicyConfiguration(AWSProperty):
"""
`TargetTrackingScalingPolicyConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingscalingpolicyconfiguration.html>`__
"""
props: PropsDictType = {
"CustomizedMetricSpecification": (CustomizedMetricSpecification, False),
"DisableScaleIn": (boolean, False),
"PredefinedMetricSpecification": (PredefinedMetricSpecification, False),
"ScaleInCooldown": (integer, False),
"ScaleOutCooldown": (integer, False),
"TargetValue": (double, True),
}
[docs]class ScalingPolicy(AWSObject):
"""
`ScalingPolicy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html>`__
"""
resource_type = "AWS::ApplicationAutoScaling::ScalingPolicy"
props: PropsDictType = {
"PolicyName": (str, True),
"PolicyType": (str, True),
"PredictiveScalingPolicyConfiguration": (
PredictiveScalingPolicyConfiguration,
False,
),
"ResourceId": (str, False),
"ScalableDimension": (str, False),
"ScalingTargetId": (str, False),
"ServiceNamespace": (str, False),
"StepScalingPolicyConfiguration": (StepScalingPolicyConfiguration, False),
"TargetTrackingScalingPolicyConfiguration": (
TargetTrackingScalingPolicyConfiguration,
False,
),
}