import * as core from "@terrascript/core"; export interface StepAdjustmentArgs extends core.SchemaArgs { metricIntervalLowerBound?: string | core.StringOut; metricIntervalUpperBound?: string | core.StringOut; scalingAdjustment: number | core.NumberOut; } export class StepAdjustment extends core.Schema { @core.attr(String) public metricIntervalLowerBound?: string | core.StringOut; @core.attr(String) public metricIntervalUpperBound?: string | core.StringOut; @core.attr(Number) public scalingAdjustment!: number | core.NumberOut; } export interface StepScalingPolicyConfigurationArgs extends core.SchemaArgs { adjustmentType?: string | core.StringOut; cooldown?: number | core.NumberOut; metricAggregationType?: string | core.StringOut; minAdjustmentMagnitude?: number | core.NumberOut; stepAdjustment?: core.Array | core.ArrayOut; } export class StepScalingPolicyConfiguration extends core.Schema { @core.attr(String) public adjustmentType?: string | core.StringOut; @core.attr(Number) public cooldown?: number | core.NumberOut; @core.attr(String) public metricAggregationType?: string | core.StringOut; @core.attr(Number) public minAdjustmentMagnitude?: number | core.NumberOut; @core.attr(StepAdjustment, { kind: "array" }) public stepAdjustment?: | core.Array | core.ArrayOut; } export interface DimensionsArgs extends core.SchemaArgs { name: string | core.StringOut; value: string | core.StringOut; } export class Dimensions extends core.Schema { @core.attr(String) public name!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface CustomizedMetricSpecificationArgs extends core.SchemaArgs { dimensions?: core.Array | core.ArrayOut; metricName: string | core.StringOut; namespace: string | core.StringOut; statistic: string | core.StringOut; unit?: string | core.StringOut; } export class CustomizedMetricSpecification extends core.Schema { @core.attr(Dimensions, { kind: "array" }) public dimensions?: core.Array | core.ArrayOut; @core.attr(String) public metricName!: string | core.StringOut; @core.attr(String) public namespace!: string | core.StringOut; @core.attr(String) public statistic!: string | core.StringOut; @core.attr(String) public unit?: string | core.StringOut; } export interface PredefinedMetricSpecificationArgs extends core.SchemaArgs { predefinedMetricType: string | core.StringOut; resourceLabel?: string | core.StringOut; } export class PredefinedMetricSpecification extends core.Schema { @core.attr(String) public predefinedMetricType!: string | core.StringOut; @core.attr(String) public resourceLabel?: string | core.StringOut; } export interface TargetTrackingScalingPolicyConfigurationArgs extends core.SchemaArgs { customizedMetricSpecification?: CustomizedMetricSpecification; disableScaleIn?: boolean | core.BooleanOut; predefinedMetricSpecification?: PredefinedMetricSpecification; scaleInCooldown?: number | core.NumberOut; scaleOutCooldown?: number | core.NumberOut; targetValue: number | core.NumberOut; } export class TargetTrackingScalingPolicyConfiguration extends core.Schema { @core.attr(CustomizedMetricSpecification) public customizedMetricSpecification?: CustomizedMetricSpecification; @core.attr(Boolean) public disableScaleIn?: boolean | core.BooleanOut; @core.attr(PredefinedMetricSpecification) public predefinedMetricSpecification?: PredefinedMetricSpecification; @core.attr(Number) public scaleInCooldown?: number | core.NumberOut; @core.attr(Number) public scaleOutCooldown?: number | core.NumberOut; @core.attr(Number) public targetValue!: number | core.NumberOut; } export interface AppautoscalingPolicyArgs extends core.ResourceArgs { /** * (Required) The name of the policy. Must be between 1 and 255 characters in length. */ name: string | core.StringOut; /** * (Optional) The policy type. Valid values are `StepScaling` and `TargetTrackingScaling`. Defaults to * StepScaling`. Certain services only support only one policy type. For more information see the [Tar * get Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/applica * tion-auto-scaling-target-tracking.html) and [Step Scaling Policies](https://docs.aws.amazon.com/auto * scaling/application/userguide/application-auto-scaling-step-scaling-policies.html) documentation. */ policyType?: string | core.StringOut; /** * (Required) The resource type and unique identifier string for the resource associated with the scali * ng policy. Documentation can be found in the `ResourceId` parameter at: [AWS Application Auto Scalin * g API Reference](http://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterS * calableTarget.html#API_RegisterScalableTarget_RequestParameters) */ resourceId: string | core.StringOut; /** * (Required) The scalable dimension of the scalable target. Documentation can be found in the `Scalabl * eDimension` parameter at: [AWS Application Auto Scaling API Reference](http://docs.aws.amazon.com/Ap * plicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html#API_RegisterScalableTarget_ * RequestParameters) */ scalableDimension: string | core.StringOut; /** * (Required) The AWS service namespace of the scalable target. Documentation can be found in the `Serv * iceNamespace` parameter at: [AWS Application Auto Scaling API Reference](http://docs.aws.amazon.com/ * ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html#API_RegisterScalableTarge * t_RequestParameters) */ serviceNamespace: string | core.StringOut; /** * (Optional) Step scaling policy configuration, requires `policy_type = "StepScaling"` (default). See * supported fields below. */ stepScalingPolicyConfiguration?: StepScalingPolicyConfiguration; /** * (Optional) A target tracking policy, requires `policy_type = "TargetTrackingScaling"`. See supported * fields below. */ targetTrackingScalingPolicyConfiguration?: TargetTrackingScalingPolicyConfiguration; } export class AppautoscalingPolicy extends core.Resource { /** * The ARN assigned by AWS to the scaling policy. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The name of the policy. Must be between 1 and 255 characters in length. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) The policy type. Valid values are `StepScaling` and `TargetTrackingScaling`. Defaults to * StepScaling`. Certain services only support only one policy type. For more information see the [Tar * get Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/applica * tion-auto-scaling-target-tracking.html) and [Step Scaling Policies](https://docs.aws.amazon.com/auto * scaling/application/userguide/application-auto-scaling-step-scaling-policies.html) documentation. */ @core.attr(String) public policyType?: string | core.StringOut; /** * (Required) The resource type and unique identifier string for the resource associated with the scali * ng policy. Documentation can be found in the `ResourceId` parameter at: [AWS Application Auto Scalin * g API Reference](http://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterS * calableTarget.html#API_RegisterScalableTarget_RequestParameters) */ @core.attr(String) public resourceId!: string | core.StringOut; /** * (Required) The scalable dimension of the scalable target. Documentation can be found in the `Scalabl * eDimension` parameter at: [AWS Application Auto Scaling API Reference](http://docs.aws.amazon.com/Ap * plicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html#API_RegisterScalableTarget_ * RequestParameters) */ @core.attr(String) public scalableDimension!: string | core.StringOut; /** * (Required) The AWS service namespace of the scalable target. Documentation can be found in the `Serv * iceNamespace` parameter at: [AWS Application Auto Scaling API Reference](http://docs.aws.amazon.com/ * ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html#API_RegisterScalableTarge * t_RequestParameters) */ @core.attr(String) public serviceNamespace!: string | core.StringOut; /** * (Optional) Step scaling policy configuration, requires `policy_type = "StepScaling"` (default). See * supported fields below. */ @core.attr(StepScalingPolicyConfiguration) public stepScalingPolicyConfiguration?: StepScalingPolicyConfiguration; /** * (Optional) A target tracking policy, requires `policy_type = "TargetTrackingScaling"`. See supported * fields below. */ @core.attr(TargetTrackingScalingPolicyConfiguration) public targetTrackingScalingPolicyConfiguration?: TargetTrackingScalingPolicyConfiguration; constructor(name: string, args?: AppautoscalingPolicyArgs) { super(name, "aws_appautoscaling_policy", args); } public override getNamespace(): string { return "aws_application_auto_scaling"; } }