1. Packages
  2. AWS Classic
  3. API Docs
  4. autoscaling
  5. Policy

Try AWS Native preview for resources not in the classic version.

AWS Classic v6.40.0 published on Wednesday, Jun 12, 2024 by Pulumi

aws.autoscaling.Policy

Explore with Pulumi AI

aws logo

Try AWS Native preview for resources not in the classic version.

AWS Classic v6.40.0 published on Wednesday, Jun 12, 2024 by Pulumi

    Provides an AutoScaling Scaling Policy resource.

    NOTE: You may want to omit desired_capacity attribute from attached aws.autoscaling.Group when using autoscaling policies. It’s good practice to pick either manual or dynamic (policy-based) scaling.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const bar = new aws.autoscaling.Group("bar", {
        availabilityZones: ["us-east-1a"],
        name: "foobar3-test",
        maxSize: 5,
        minSize: 2,
        healthCheckGracePeriod: 300,
        healthCheckType: "ELB",
        forceDelete: true,
        launchConfiguration: foo.name,
    });
    const bat = new aws.autoscaling.Policy("bat", {
        name: "foobar3-test",
        scalingAdjustment: 4,
        adjustmentType: "ChangeInCapacity",
        cooldown: 300,
        autoscalingGroupName: bar.name,
    });
    
    import pulumi
    import pulumi_aws as aws
    
    bar = aws.autoscaling.Group("bar",
        availability_zones=["us-east-1a"],
        name="foobar3-test",
        max_size=5,
        min_size=2,
        health_check_grace_period=300,
        health_check_type="ELB",
        force_delete=True,
        launch_configuration=foo["name"])
    bat = aws.autoscaling.Policy("bat",
        name="foobar3-test",
        scaling_adjustment=4,
        adjustment_type="ChangeInCapacity",
        cooldown=300,
        autoscaling_group_name=bar.name)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		bar, err := autoscaling.NewGroup(ctx, "bar", &autoscaling.GroupArgs{
    			AvailabilityZones: pulumi.StringArray{
    				pulumi.String("us-east-1a"),
    			},
    			Name:                   pulumi.String("foobar3-test"),
    			MaxSize:                pulumi.Int(5),
    			MinSize:                pulumi.Int(2),
    			HealthCheckGracePeriod: pulumi.Int(300),
    			HealthCheckType:        pulumi.String("ELB"),
    			ForceDelete:            pulumi.Bool(true),
    			LaunchConfiguration:    pulumi.Any(foo.Name),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = autoscaling.NewPolicy(ctx, "bat", &autoscaling.PolicyArgs{
    			Name:                 pulumi.String("foobar3-test"),
    			ScalingAdjustment:    pulumi.Int(4),
    			AdjustmentType:       pulumi.String("ChangeInCapacity"),
    			Cooldown:             pulumi.Int(300),
    			AutoscalingGroupName: bar.Name,
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var bar = new Aws.AutoScaling.Group("bar", new()
        {
            AvailabilityZones = new[]
            {
                "us-east-1a",
            },
            Name = "foobar3-test",
            MaxSize = 5,
            MinSize = 2,
            HealthCheckGracePeriod = 300,
            HealthCheckType = "ELB",
            ForceDelete = true,
            LaunchConfiguration = foo.Name,
        });
    
        var bat = new Aws.AutoScaling.Policy("bat", new()
        {
            Name = "foobar3-test",
            ScalingAdjustment = 4,
            AdjustmentType = "ChangeInCapacity",
            Cooldown = 300,
            AutoscalingGroupName = bar.Name,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Group;
    import com.pulumi.aws.autoscaling.GroupArgs;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var bar = new Group("bar", GroupArgs.builder()
                .availabilityZones("us-east-1a")
                .name("foobar3-test")
                .maxSize(5)
                .minSize(2)
                .healthCheckGracePeriod(300)
                .healthCheckType("ELB")
                .forceDelete(true)
                .launchConfiguration(foo.name())
                .build());
    
            var bat = new Policy("bat", PolicyArgs.builder()
                .name("foobar3-test")
                .scalingAdjustment(4)
                .adjustmentType("ChangeInCapacity")
                .cooldown(300)
                .autoscalingGroupName(bar.name())
                .build());
    
        }
    }
    
    resources:
      bat:
        type: aws:autoscaling:Policy
        properties:
          name: foobar3-test
          scalingAdjustment: 4
          adjustmentType: ChangeInCapacity
          cooldown: 300
          autoscalingGroupName: ${bar.name}
      bar:
        type: aws:autoscaling:Group
        properties:
          availabilityZones:
            - us-east-1a
          name: foobar3-test
          maxSize: 5
          minSize: 2
          healthCheckGracePeriod: 300
          healthCheckType: ELB
          forceDelete: true
          launchConfiguration: ${foo.name}
    

    Create target tracking scaling policy using metric math

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.autoscaling.Policy("example", {
        autoscalingGroupName: "my-test-asg",
        name: "foo",
        policyType: "TargetTrackingScaling",
        targetTrackingConfiguration: {
            targetValue: 100,
            customizedMetricSpecification: {
                metrics: [
                    {
                        label: "Get the queue size (the number of messages waiting to be processed)",
                        id: "m1",
                        metricStat: {
                            metric: {
                                namespace: "AWS/SQS",
                                metricName: "ApproximateNumberOfMessagesVisible",
                                dimensions: [{
                                    name: "QueueName",
                                    value: "my-queue",
                                }],
                            },
                            stat: "Sum",
                        },
                        returnData: false,
                    },
                    {
                        label: "Get the group size (the number of InService instances)",
                        id: "m2",
                        metricStat: {
                            metric: {
                                namespace: "AWS/AutoScaling",
                                metricName: "GroupInServiceInstances",
                                dimensions: [{
                                    name: "AutoScalingGroupName",
                                    value: "my-asg",
                                }],
                            },
                            stat: "Average",
                        },
                        returnData: false,
                    },
                    {
                        label: "Calculate the backlog per instance",
                        id: "e1",
                        expression: "m1 / m2",
                        returnData: true,
                    },
                ],
            },
        },
    });
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example",
        autoscaling_group_name="my-test-asg",
        name="foo",
        policy_type="TargetTrackingScaling",
        target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
            target_value=100,
            customized_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs(
                metrics=[
                    aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs(
                        label="Get the queue size (the number of messages waiting to be processed)",
                        id="m1",
                        metric_stat=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs(
                            metric=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs(
                                namespace="AWS/SQS",
                                metric_name="ApproximateNumberOfMessagesVisible",
                                dimensions=[aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs(
                                    name="QueueName",
                                    value="my-queue",
                                )],
                            ),
                            stat="Sum",
                        ),
                        return_data=False,
                    ),
                    aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs(
                        label="Get the group size (the number of InService instances)",
                        id="m2",
                        metric_stat=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs(
                            metric=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs(
                                namespace="AWS/AutoScaling",
                                metric_name="GroupInServiceInstances",
                                dimensions=[aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs(
                                    name="AutoScalingGroupName",
                                    value="my-asg",
                                )],
                            ),
                            stat="Average",
                        ),
                        return_data=False,
                    ),
                    aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs(
                        label="Calculate the backlog per instance",
                        id="e1",
                        expression="m1 / m2",
                        return_data=True,
                    ),
                ],
            ),
        ))
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			AutoscalingGroupName: pulumi.String("my-test-asg"),
    			Name:                 pulumi.String("foo"),
    			PolicyType:           pulumi.String("TargetTrackingScaling"),
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				TargetValue: pulumi.Float64(100),
    				CustomizedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs{
    					Metrics: autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArray{
    						&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs{
    							Label: pulumi.String("Get the queue size (the number of messages waiting to be processed)"),
    							Id:    pulumi.String("m1"),
    							MetricStat: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs{
    								Metric: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs{
    									Namespace:  pulumi.String("AWS/SQS"),
    									MetricName: pulumi.String("ApproximateNumberOfMessagesVisible"),
    									Dimensions: autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArray{
    										&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs{
    											Name:  pulumi.String("QueueName"),
    											Value: pulumi.String("my-queue"),
    										},
    									},
    								},
    								Stat: pulumi.String("Sum"),
    							},
    							ReturnData: pulumi.Bool(false),
    						},
    						&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs{
    							Label: pulumi.String("Get the group size (the number of InService instances)"),
    							Id:    pulumi.String("m2"),
    							MetricStat: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs{
    								Metric: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs{
    									Namespace:  pulumi.String("AWS/AutoScaling"),
    									MetricName: pulumi.String("GroupInServiceInstances"),
    									Dimensions: autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArray{
    										&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs{
    											Name:  pulumi.String("AutoScalingGroupName"),
    											Value: pulumi.String("my-asg"),
    										},
    									},
    								},
    								Stat: pulumi.String("Average"),
    							},
    							ReturnData: pulumi.Bool(false),
    						},
    						&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs{
    							Label:      pulumi.String("Calculate the backlog per instance"),
    							Id:         pulumi.String("e1"),
    							Expression: pulumi.String("m1 / m2"),
    							ReturnData: pulumi.Bool(true),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            AutoscalingGroupName = "my-test-asg",
            Name = "foo",
            PolicyType = "TargetTrackingScaling",
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                TargetValue = 100,
                CustomizedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs
                {
                    Metrics = new[]
                    {
                        new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs
                        {
                            Label = "Get the queue size (the number of messages waiting to be processed)",
                            Id = "m1",
                            MetricStat = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs
                            {
                                Metric = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs
                                {
                                    Namespace = "AWS/SQS",
                                    MetricName = "ApproximateNumberOfMessagesVisible",
                                    Dimensions = new[]
                                    {
                                        new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs
                                        {
                                            Name = "QueueName",
                                            Value = "my-queue",
                                        },
                                    },
                                },
                                Stat = "Sum",
                            },
                            ReturnData = false,
                        },
                        new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs
                        {
                            Label = "Get the group size (the number of InService instances)",
                            Id = "m2",
                            MetricStat = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs
                            {
                                Metric = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs
                                {
                                    Namespace = "AWS/AutoScaling",
                                    MetricName = "GroupInServiceInstances",
                                    Dimensions = new[]
                                    {
                                        new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs
                                        {
                                            Name = "AutoScalingGroupName",
                                            Value = "my-asg",
                                        },
                                    },
                                },
                                Stat = "Average",
                            },
                            ReturnData = false,
                        },
                        new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs
                        {
                            Label = "Calculate the backlog per instance",
                            Id = "e1",
                            Expression = "m1 / m2",
                            ReturnData = true,
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .autoscalingGroupName("my-test-asg")
                .name("foo")
                .policyType("TargetTrackingScaling")
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .targetValue(100)
                    .customizedMetricSpecification(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs.builder()
                        .metrics(                    
                            PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs.builder()
                                .label("Get the queue size (the number of messages waiting to be processed)")
                                .id("m1")
                                .metricStat(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs.builder()
                                    .metric(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs.builder()
                                        .namespace("AWS/SQS")
                                        .metricName("ApproximateNumberOfMessagesVisible")
                                        .dimensions(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder()
                                            .name("QueueName")
                                            .value("my-queue")
                                            .build())
                                        .build())
                                    .stat("Sum")
                                    .build())
                                .returnData(false)
                                .build(),
                            PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs.builder()
                                .label("Get the group size (the number of InService instances)")
                                .id("m2")
                                .metricStat(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs.builder()
                                    .metric(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs.builder()
                                        .namespace("AWS/AutoScaling")
                                        .metricName("GroupInServiceInstances")
                                        .dimensions(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder()
                                            .name("AutoScalingGroupName")
                                            .value("my-asg")
                                            .build())
                                        .build())
                                    .stat("Average")
                                    .build())
                                .returnData(false)
                                .build(),
                            PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs.builder()
                                .label("Calculate the backlog per instance")
                                .id("e1")
                                .expression("m1 / m2")
                                .returnData(true)
                                .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          autoscalingGroupName: my-test-asg
          name: foo
          policyType: TargetTrackingScaling
          targetTrackingConfiguration:
            targetValue: 100
            customizedMetricSpecification:
              metrics:
                - label: Get the queue size (the number of messages waiting to be processed)
                  id: m1
                  metricStat:
                    metric:
                      namespace: AWS/SQS
                      metricName: ApproximateNumberOfMessagesVisible
                      dimensions:
                        - name: QueueName
                          value: my-queue
                    stat: Sum
                  returnData: false
                - label: Get the group size (the number of InService instances)
                  id: m2
                  metricStat:
                    metric:
                      namespace: AWS/AutoScaling
                      metricName: GroupInServiceInstances
                      dimensions:
                        - name: AutoScalingGroupName
                          value: my-asg
                    stat: Average
                  returnData: false
                - label: Calculate the backlog per instance
                  id: e1
                  expression: m1 / m2
                  returnData: true
    

    Create predictive scaling policy using customized metrics

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.autoscaling.Policy("example", {
        autoscalingGroupName: "my-test-asg",
        name: "foo",
        policyType: "PredictiveScaling",
        predictiveScalingConfiguration: {
            metricSpecification: {
                targetValue: 10,
                customizedLoadMetricSpecification: {
                    metricDataQueries: [{
                        id: "load_sum",
                        expression: "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 3600))",
                    }],
                },
                customizedCapacityMetricSpecification: {
                    metricDataQueries: [{
                        id: "capacity_sum",
                        expression: "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))",
                    }],
                },
                customizedScalingMetricSpecification: {
                    metricDataQueries: [
                        {
                            id: "capacity_sum",
                            expression: "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))",
                            returnData: false,
                        },
                        {
                            id: "load_sum",
                            expression: "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 300))",
                            returnData: false,
                        },
                        {
                            id: "weighted_average",
                            expression: "load_sum / (capacity_sum * PERIOD(capacity_sum) / 60)",
                        },
                    ],
                },
            },
        },
    });
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example",
        autoscaling_group_name="my-test-asg",
        name="foo",
        policy_type="PredictiveScaling",
        predictive_scaling_configuration=aws.autoscaling.PolicyPredictiveScalingConfigurationArgs(
            metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationArgs(
                target_value=10,
                customized_load_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs(
                    metric_data_queries=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs(
                        id="load_sum",
                        expression="SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 3600))",
                    )],
                ),
                customized_capacity_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs(
                    metric_data_queries=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs(
                        id="capacity_sum",
                        expression="SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))",
                    )],
                ),
                customized_scaling_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs(
                    metric_data_queries=[
                        aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs(
                            id="capacity_sum",
                            expression="SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))",
                            return_data=False,
                        ),
                        aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs(
                            id="load_sum",
                            expression="SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 300))",
                            return_data=False,
                        ),
                        aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs(
                            id="weighted_average",
                            expression="load_sum / (capacity_sum * PERIOD(capacity_sum) / 60)",
                        ),
                    ],
                ),
            ),
        ))
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			AutoscalingGroupName: pulumi.String("my-test-asg"),
    			Name:                 pulumi.String("foo"),
    			PolicyType:           pulumi.String("PredictiveScaling"),
    			PredictiveScalingConfiguration: &autoscaling.PolicyPredictiveScalingConfigurationArgs{
    				MetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationArgs{
    					TargetValue: pulumi.Float64(10),
    					CustomizedLoadMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs{
    						MetricDataQueries: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArray{
    							&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs{
    								Id:         pulumi.String("load_sum"),
    								Expression: pulumi.String("SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 3600))"),
    							},
    						},
    					},
    					CustomizedCapacityMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs{
    						MetricDataQueries: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArray{
    							&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs{
    								Id:         pulumi.String("capacity_sum"),
    								Expression: pulumi.String("SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))"),
    							},
    						},
    					},
    					CustomizedScalingMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs{
    						MetricDataQueries: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArray{
    							&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs{
    								Id:         pulumi.String("capacity_sum"),
    								Expression: pulumi.String("SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))"),
    								ReturnData: pulumi.Bool(false),
    							},
    							&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs{
    								Id:         pulumi.String("load_sum"),
    								Expression: pulumi.String("SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 300))"),
    								ReturnData: pulumi.Bool(false),
    							},
    							&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs{
    								Id:         pulumi.String("weighted_average"),
    								Expression: pulumi.String("load_sum / (capacity_sum * PERIOD(capacity_sum) / 60)"),
    							},
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            AutoscalingGroupName = "my-test-asg",
            Name = "foo",
            PolicyType = "PredictiveScaling",
            PredictiveScalingConfiguration = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationArgs
            {
                MetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationArgs
                {
                    TargetValue = 10,
                    CustomizedLoadMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs
                    {
                        MetricDataQueries = new[]
                        {
                            new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs
                            {
                                Id = "load_sum",
                                Expression = "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 3600))",
                            },
                        },
                    },
                    CustomizedCapacityMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs
                    {
                        MetricDataQueries = new[]
                        {
                            new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs
                            {
                                Id = "capacity_sum",
                                Expression = "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))",
                            },
                        },
                    },
                    CustomizedScalingMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs
                    {
                        MetricDataQueries = new[]
                        {
                            new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs
                            {
                                Id = "capacity_sum",
                                Expression = "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))",
                                ReturnData = false,
                            },
                            new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs
                            {
                                Id = "load_sum",
                                Expression = "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 300))",
                                ReturnData = false,
                            },
                            new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs
                            {
                                Id = "weighted_average",
                                Expression = "load_sum / (capacity_sum * PERIOD(capacity_sum) / 60)",
                            },
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .autoscalingGroupName("my-test-asg")
                .name("foo")
                .policyType("PredictiveScaling")
                .predictiveScalingConfiguration(PolicyPredictiveScalingConfigurationArgs.builder()
                    .metricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationArgs.builder()
                        .targetValue(10)
                        .customizedLoadMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs.builder()
                            .metricDataQueries(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs.builder()
                                .id("load_sum")
                                .expression("SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 3600))")
                                .build())
                            .build())
                        .customizedCapacityMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs.builder()
                            .metricDataQueries(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs.builder()
                                .id("capacity_sum")
                                .expression("SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))")
                                .build())
                            .build())
                        .customizedScalingMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs.builder()
                            .metricDataQueries(                        
                                PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs.builder()
                                    .id("capacity_sum")
                                    .expression("SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceIntances\" my-test-asg', 'Average', 300))")
                                    .returnData(false)
                                    .build(),
                                PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs.builder()
                                    .id("load_sum")
                                    .expression("SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" my-test-asg', 'Sum', 300))")
                                    .returnData(false)
                                    .build(),
                                PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs.builder()
                                    .id("weighted_average")
                                    .expression("load_sum / (capacity_sum * PERIOD(capacity_sum) / 60)")
                                    .build())
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          autoscalingGroupName: my-test-asg
          name: foo
          policyType: PredictiveScaling
          predictiveScalingConfiguration:
            metricSpecification:
              targetValue: 10
              customizedLoadMetricSpecification:
                metricDataQueries:
                  - id: load_sum
                    expression: SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName="CPUUtilization" my-test-asg', 'Sum', 3600))
              customizedCapacityMetricSpecification:
                metricDataQueries:
                  - id: capacity_sum
                    expression: SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName="GroupInServiceIntances" my-test-asg', 'Average', 300))
              customizedScalingMetricSpecification:
                metricDataQueries:
                  - id: capacity_sum
                    expression: SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName="GroupInServiceIntances" my-test-asg', 'Average', 300))
                    returnData: false
                  - id: load_sum
                    expression: SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName="CPUUtilization" my-test-asg', 'Sum', 300))
                    returnData: false
                  - id: weighted_average
                    expression: load_sum / (capacity_sum * PERIOD(capacity_sum) / 60)
    

    Create predictive scaling policy using customized scaling and predefined load metric

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.autoscaling.Policy("example", {
        autoscalingGroupName: "my-test-asg",
        name: "foo",
        policyType: "PredictiveScaling",
        predictiveScalingConfiguration: {
            metricSpecification: {
                targetValue: 10,
                predefinedLoadMetricSpecification: {
                    predefinedMetricType: "ASGTotalCPUUtilization",
                    resourceLabel: "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff",
                },
                customizedScalingMetricSpecification: {
                    metricDataQueries: [{
                        id: "scaling",
                        metricStat: {
                            metric: {
                                metricName: "CPUUtilization",
                                namespace: "AWS/EC2",
                                dimensions: [{
                                    name: "AutoScalingGroupName",
                                    value: "my-test-asg",
                                }],
                            },
                            stat: "Average",
                        },
                    }],
                },
            },
        },
    });
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example",
        autoscaling_group_name="my-test-asg",
        name="foo",
        policy_type="PredictiveScaling",
        predictive_scaling_configuration=aws.autoscaling.PolicyPredictiveScalingConfigurationArgs(
            metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationArgs(
                target_value=10,
                predefined_load_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs(
                    predefined_metric_type="ASGTotalCPUUtilization",
                    resource_label="app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff",
                ),
                customized_scaling_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs(
                    metric_data_queries=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs(
                        id="scaling",
                        metric_stat=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs(
                            metric=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs(
                                metric_name="CPUUtilization",
                                namespace="AWS/EC2",
                                dimensions=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs(
                                    name="AutoScalingGroupName",
                                    value="my-test-asg",
                                )],
                            ),
                            stat="Average",
                        ),
                    )],
                ),
            ),
        ))
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			AutoscalingGroupName: pulumi.String("my-test-asg"),
    			Name:                 pulumi.String("foo"),
    			PolicyType:           pulumi.String("PredictiveScaling"),
    			PredictiveScalingConfiguration: &autoscaling.PolicyPredictiveScalingConfigurationArgs{
    				MetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationArgs{
    					TargetValue: pulumi.Float64(10),
    					PredefinedLoadMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs{
    						PredefinedMetricType: pulumi.String("ASGTotalCPUUtilization"),
    						ResourceLabel:        pulumi.String("app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff"),
    					},
    					CustomizedScalingMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs{
    						MetricDataQueries: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArray{
    							&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs{
    								Id: pulumi.String("scaling"),
    								MetricStat: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs{
    									Metric: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs{
    										MetricName: pulumi.String("CPUUtilization"),
    										Namespace:  pulumi.String("AWS/EC2"),
    										Dimensions: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArray{
    											&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs{
    												Name:  pulumi.String("AutoScalingGroupName"),
    												Value: pulumi.String("my-test-asg"),
    											},
    										},
    									},
    									Stat: pulumi.String("Average"),
    								},
    							},
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            AutoscalingGroupName = "my-test-asg",
            Name = "foo",
            PolicyType = "PredictiveScaling",
            PredictiveScalingConfiguration = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationArgs
            {
                MetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationArgs
                {
                    TargetValue = 10,
                    PredefinedLoadMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs
                    {
                        PredefinedMetricType = "ASGTotalCPUUtilization",
                        ResourceLabel = "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff",
                    },
                    CustomizedScalingMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs
                    {
                        MetricDataQueries = new[]
                        {
                            new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs
                            {
                                Id = "scaling",
                                MetricStat = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs
                                {
                                    Metric = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs
                                    {
                                        MetricName = "CPUUtilization",
                                        Namespace = "AWS/EC2",
                                        Dimensions = new[]
                                        {
                                            new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs
                                            {
                                                Name = "AutoScalingGroupName",
                                                Value = "my-test-asg",
                                            },
                                        },
                                    },
                                    Stat = "Average",
                                },
                            },
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .autoscalingGroupName("my-test-asg")
                .name("foo")
                .policyType("PredictiveScaling")
                .predictiveScalingConfiguration(PolicyPredictiveScalingConfigurationArgs.builder()
                    .metricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationArgs.builder()
                        .targetValue(10)
                        .predefinedLoadMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs.builder()
                            .predefinedMetricType("ASGTotalCPUUtilization")
                            .resourceLabel("app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff")
                            .build())
                        .customizedScalingMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs.builder()
                            .metricDataQueries(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs.builder()
                                .id("scaling")
                                .metricStat(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs.builder()
                                    .metric(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs.builder()
                                        .metricName("CPUUtilization")
                                        .namespace("AWS/EC2")
                                        .dimensions(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs.builder()
                                            .name("AutoScalingGroupName")
                                            .value("my-test-asg")
                                            .build())
                                        .build())
                                    .stat("Average")
                                    .build())
                                .build())
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          autoscalingGroupName: my-test-asg
          name: foo
          policyType: PredictiveScaling
          predictiveScalingConfiguration:
            metricSpecification:
              targetValue: 10
              predefinedLoadMetricSpecification:
                predefinedMetricType: ASGTotalCPUUtilization
                resourceLabel: app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff
              customizedScalingMetricSpecification:
                metricDataQueries:
                  - id: scaling
                    metricStat:
                      metric:
                        metricName: CPUUtilization
                        namespace: AWS/EC2
                        dimensions:
                          - name: AutoScalingGroupName
                            value: my-test-asg
                      stat: Average
    

    Create Policy Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Policy(name: string, args: PolicyArgs, opts?: CustomResourceOptions);
    @overload
    def Policy(resource_name: str,
               args: PolicyArgs,
               opts: Optional[ResourceOptions] = None)
    
    @overload
    def Policy(resource_name: str,
               opts: Optional[ResourceOptions] = None,
               autoscaling_group_name: Optional[str] = None,
               min_adjustment_magnitude: Optional[int] = None,
               cooldown: Optional[int] = None,
               enabled: Optional[bool] = None,
               estimated_instance_warmup: Optional[int] = None,
               metric_aggregation_type: Optional[str] = None,
               adjustment_type: Optional[str] = None,
               name: Optional[str] = None,
               policy_type: Optional[str] = None,
               predictive_scaling_configuration: Optional[PolicyPredictiveScalingConfigurationArgs] = None,
               scaling_adjustment: Optional[int] = None,
               step_adjustments: Optional[Sequence[PolicyStepAdjustmentArgs]] = None,
               target_tracking_configuration: Optional[PolicyTargetTrackingConfigurationArgs] = None)
    func NewPolicy(ctx *Context, name string, args PolicyArgs, opts ...ResourceOption) (*Policy, error)
    public Policy(string name, PolicyArgs args, CustomResourceOptions? opts = null)
    public Policy(String name, PolicyArgs args)
    public Policy(String name, PolicyArgs args, CustomResourceOptions options)
    
    type: aws:autoscaling:Policy
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args PolicyArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args PolicyArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args PolicyArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args PolicyArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args PolicyArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Example

    The following reference example uses placeholder values for all input properties.

    var examplepolicyResourceResourceFromAutoscalingpolicy = new Aws.AutoScaling.Policy("examplepolicyResourceResourceFromAutoscalingpolicy", new()
    {
        AutoscalingGroupName = "string",
        MinAdjustmentMagnitude = 0,
        Cooldown = 0,
        Enabled = false,
        EstimatedInstanceWarmup = 0,
        MetricAggregationType = "string",
        AdjustmentType = "string",
        Name = "string",
        PolicyType = "string",
        PredictiveScalingConfiguration = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationArgs
        {
            MetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationArgs
            {
                TargetValue = 0,
                CustomizedCapacityMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs
                {
                    MetricDataQueries = new[]
                    {
                        new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs
                        {
                            Id = "string",
                            Expression = "string",
                            Label = "string",
                            MetricStat = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatArgs
                            {
                                Metric = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricArgs
                                {
                                    MetricName = "string",
                                    Namespace = "string",
                                    Dimensions = new[]
                                    {
                                        new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs
                                        {
                                            Name = "string",
                                            Value = "string",
                                        },
                                    },
                                },
                                Stat = "string",
                                Unit = "string",
                            },
                            ReturnData = false,
                        },
                    },
                },
                CustomizedLoadMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs
                {
                    MetricDataQueries = new[]
                    {
                        new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs
                        {
                            Id = "string",
                            Expression = "string",
                            Label = "string",
                            MetricStat = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatArgs
                            {
                                Metric = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricArgs
                                {
                                    MetricName = "string",
                                    Namespace = "string",
                                    Dimensions = new[]
                                    {
                                        new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs
                                        {
                                            Name = "string",
                                            Value = "string",
                                        },
                                    },
                                },
                                Stat = "string",
                                Unit = "string",
                            },
                            ReturnData = false,
                        },
                    },
                },
                CustomizedScalingMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs
                {
                    MetricDataQueries = new[]
                    {
                        new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs
                        {
                            Id = "string",
                            Expression = "string",
                            Label = "string",
                            MetricStat = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs
                            {
                                Metric = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs
                                {
                                    MetricName = "string",
                                    Namespace = "string",
                                    Dimensions = new[]
                                    {
                                        new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs
                                        {
                                            Name = "string",
                                            Value = "string",
                                        },
                                    },
                                },
                                Stat = "string",
                                Unit = "string",
                            },
                            ReturnData = false,
                        },
                    },
                },
                PredefinedLoadMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs
                {
                    PredefinedMetricType = "string",
                    ResourceLabel = "string",
                },
                PredefinedMetricPairSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecificationArgs
                {
                    PredefinedMetricType = "string",
                    ResourceLabel = "string",
                },
                PredefinedScalingMetricSpecification = new Aws.AutoScaling.Inputs.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecificationArgs
                {
                    PredefinedMetricType = "string",
                    ResourceLabel = "string",
                },
            },
            MaxCapacityBreachBehavior = "string",
            MaxCapacityBuffer = "string",
            Mode = "string",
            SchedulingBufferTime = "string",
        },
        ScalingAdjustment = 0,
        StepAdjustments = new[]
        {
            new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
            {
                ScalingAdjustment = 0,
                MetricIntervalLowerBound = "string",
                MetricIntervalUpperBound = "string",
            },
        },
        TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
        {
            TargetValue = 0,
            CustomizedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs
            {
                MetricDimensions = new[]
                {
                    new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimensionArgs
                    {
                        Name = "string",
                        Value = "string",
                    },
                },
                MetricName = "string",
                Metrics = new[]
                {
                    new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs
                    {
                        Id = "string",
                        Expression = "string",
                        Label = "string",
                        MetricStat = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs
                        {
                            Metric = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs
                            {
                                MetricName = "string",
                                Namespace = "string",
                                Dimensions = new[]
                                {
                                    new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs
                                    {
                                        Name = "string",
                                        Value = "string",
                                    },
                                },
                            },
                            Stat = "string",
                            Unit = "string",
                        },
                        ReturnData = false,
                    },
                },
                Namespace = "string",
                Statistic = "string",
                Unit = "string",
            },
            DisableScaleIn = false,
            PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
            {
                PredefinedMetricType = "string",
                ResourceLabel = "string",
            },
        },
    });
    
    example, err := autoscaling.NewPolicy(ctx, "examplepolicyResourceResourceFromAutoscalingpolicy", &autoscaling.PolicyArgs{
    	AutoscalingGroupName:    pulumi.String("string"),
    	MinAdjustmentMagnitude:  pulumi.Int(0),
    	Cooldown:                pulumi.Int(0),
    	Enabled:                 pulumi.Bool(false),
    	EstimatedInstanceWarmup: pulumi.Int(0),
    	MetricAggregationType:   pulumi.String("string"),
    	AdjustmentType:          pulumi.String("string"),
    	Name:                    pulumi.String("string"),
    	PolicyType:              pulumi.String("string"),
    	PredictiveScalingConfiguration: &autoscaling.PolicyPredictiveScalingConfigurationArgs{
    		MetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationArgs{
    			TargetValue: pulumi.Float64(0),
    			CustomizedCapacityMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs{
    				MetricDataQueries: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArray{
    					&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs{
    						Id:         pulumi.String("string"),
    						Expression: pulumi.String("string"),
    						Label:      pulumi.String("string"),
    						MetricStat: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatArgs{
    							Metric: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricArgs{
    								MetricName: pulumi.String("string"),
    								Namespace:  pulumi.String("string"),
    								Dimensions: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricDimensionArray{
    									&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs{
    										Name:  pulumi.String("string"),
    										Value: pulumi.String("string"),
    									},
    								},
    							},
    							Stat: pulumi.String("string"),
    							Unit: pulumi.String("string"),
    						},
    						ReturnData: pulumi.Bool(false),
    					},
    				},
    			},
    			CustomizedLoadMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs{
    				MetricDataQueries: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArray{
    					&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs{
    						Id:         pulumi.String("string"),
    						Expression: pulumi.String("string"),
    						Label:      pulumi.String("string"),
    						MetricStat: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatArgs{
    							Metric: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricArgs{
    								MetricName: pulumi.String("string"),
    								Namespace:  pulumi.String("string"),
    								Dimensions: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricDimensionArray{
    									&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs{
    										Name:  pulumi.String("string"),
    										Value: pulumi.String("string"),
    									},
    								},
    							},
    							Stat: pulumi.String("string"),
    							Unit: pulumi.String("string"),
    						},
    						ReturnData: pulumi.Bool(false),
    					},
    				},
    			},
    			CustomizedScalingMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs{
    				MetricDataQueries: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArray{
    					&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs{
    						Id:         pulumi.String("string"),
    						Expression: pulumi.String("string"),
    						Label:      pulumi.String("string"),
    						MetricStat: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs{
    							Metric: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs{
    								MetricName: pulumi.String("string"),
    								Namespace:  pulumi.String("string"),
    								Dimensions: autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArray{
    									&autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs{
    										Name:  pulumi.String("string"),
    										Value: pulumi.String("string"),
    									},
    								},
    							},
    							Stat: pulumi.String("string"),
    							Unit: pulumi.String("string"),
    						},
    						ReturnData: pulumi.Bool(false),
    					},
    				},
    			},
    			PredefinedLoadMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs{
    				PredefinedMetricType: pulumi.String("string"),
    				ResourceLabel:        pulumi.String("string"),
    			},
    			PredefinedMetricPairSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecificationArgs{
    				PredefinedMetricType: pulumi.String("string"),
    				ResourceLabel:        pulumi.String("string"),
    			},
    			PredefinedScalingMetricSpecification: &autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecificationArgs{
    				PredefinedMetricType: pulumi.String("string"),
    				ResourceLabel:        pulumi.String("string"),
    			},
    		},
    		MaxCapacityBreachBehavior: pulumi.String("string"),
    		MaxCapacityBuffer:         pulumi.String("string"),
    		Mode:                      pulumi.String("string"),
    		SchedulingBufferTime:      pulumi.String("string"),
    	},
    	ScalingAdjustment: pulumi.Int(0),
    	StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    		&autoscaling.PolicyStepAdjustmentArgs{
    			ScalingAdjustment:        pulumi.Int(0),
    			MetricIntervalLowerBound: pulumi.String("string"),
    			MetricIntervalUpperBound: pulumi.String("string"),
    		},
    	},
    	TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    		TargetValue: pulumi.Float64(0),
    		CustomizedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs{
    			MetricDimensions: autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimensionArray{
    				&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimensionArgs{
    					Name:  pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    			MetricName: pulumi.String("string"),
    			Metrics: autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArray{
    				&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs{
    					Id:         pulumi.String("string"),
    					Expression: pulumi.String("string"),
    					Label:      pulumi.String("string"),
    					MetricStat: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs{
    						Metric: &autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs{
    							MetricName: pulumi.String("string"),
    							Namespace:  pulumi.String("string"),
    							Dimensions: autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArray{
    								&autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs{
    									Name:  pulumi.String("string"),
    									Value: pulumi.String("string"),
    								},
    							},
    						},
    						Stat: pulumi.String("string"),
    						Unit: pulumi.String("string"),
    					},
    					ReturnData: pulumi.Bool(false),
    				},
    			},
    			Namespace: pulumi.String("string"),
    			Statistic: pulumi.String("string"),
    			Unit:      pulumi.String("string"),
    		},
    		DisableScaleIn: pulumi.Bool(false),
    		PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    			PredefinedMetricType: pulumi.String("string"),
    			ResourceLabel:        pulumi.String("string"),
    		},
    	},
    })
    
    var examplepolicyResourceResourceFromAutoscalingpolicy = new Policy("examplepolicyResourceResourceFromAutoscalingpolicy", PolicyArgs.builder()
        .autoscalingGroupName("string")
        .minAdjustmentMagnitude(0)
        .cooldown(0)
        .enabled(false)
        .estimatedInstanceWarmup(0)
        .metricAggregationType("string")
        .adjustmentType("string")
        .name("string")
        .policyType("string")
        .predictiveScalingConfiguration(PolicyPredictiveScalingConfigurationArgs.builder()
            .metricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationArgs.builder()
                .targetValue(0)
                .customizedCapacityMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs.builder()
                    .metricDataQueries(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs.builder()
                        .id("string")
                        .expression("string")
                        .label("string")
                        .metricStat(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatArgs.builder()
                            .metric(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricArgs.builder()
                                .metricName("string")
                                .namespace("string")
                                .dimensions(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs.builder()
                                    .name("string")
                                    .value("string")
                                    .build())
                                .build())
                            .stat("string")
                            .unit("string")
                            .build())
                        .returnData(false)
                        .build())
                    .build())
                .customizedLoadMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs.builder()
                    .metricDataQueries(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs.builder()
                        .id("string")
                        .expression("string")
                        .label("string")
                        .metricStat(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatArgs.builder()
                            .metric(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricArgs.builder()
                                .metricName("string")
                                .namespace("string")
                                .dimensions(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs.builder()
                                    .name("string")
                                    .value("string")
                                    .build())
                                .build())
                            .stat("string")
                            .unit("string")
                            .build())
                        .returnData(false)
                        .build())
                    .build())
                .customizedScalingMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs.builder()
                    .metricDataQueries(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs.builder()
                        .id("string")
                        .expression("string")
                        .label("string")
                        .metricStat(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs.builder()
                            .metric(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs.builder()
                                .metricName("string")
                                .namespace("string")
                                .dimensions(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs.builder()
                                    .name("string")
                                    .value("string")
                                    .build())
                                .build())
                            .stat("string")
                            .unit("string")
                            .build())
                        .returnData(false)
                        .build())
                    .build())
                .predefinedLoadMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs.builder()
                    .predefinedMetricType("string")
                    .resourceLabel("string")
                    .build())
                .predefinedMetricPairSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecificationArgs.builder()
                    .predefinedMetricType("string")
                    .resourceLabel("string")
                    .build())
                .predefinedScalingMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecificationArgs.builder()
                    .predefinedMetricType("string")
                    .resourceLabel("string")
                    .build())
                .build())
            .maxCapacityBreachBehavior("string")
            .maxCapacityBuffer("string")
            .mode("string")
            .schedulingBufferTime("string")
            .build())
        .scalingAdjustment(0)
        .stepAdjustments(PolicyStepAdjustmentArgs.builder()
            .scalingAdjustment(0)
            .metricIntervalLowerBound("string")
            .metricIntervalUpperBound("string")
            .build())
        .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
            .targetValue(0)
            .customizedMetricSpecification(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs.builder()
                .metricDimensions(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimensionArgs.builder()
                    .name("string")
                    .value("string")
                    .build())
                .metricName("string")
                .metrics(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs.builder()
                    .id("string")
                    .expression("string")
                    .label("string")
                    .metricStat(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs.builder()
                        .metric(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs.builder()
                            .metricName("string")
                            .namespace("string")
                            .dimensions(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder()
                                .name("string")
                                .value("string")
                                .build())
                            .build())
                        .stat("string")
                        .unit("string")
                        .build())
                    .returnData(false)
                    .build())
                .namespace("string")
                .statistic("string")
                .unit("string")
                .build())
            .disableScaleIn(false)
            .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                .predefinedMetricType("string")
                .resourceLabel("string")
                .build())
            .build())
        .build());
    
    examplepolicy_resource_resource_from_autoscalingpolicy = aws.autoscaling.Policy("examplepolicyResourceResourceFromAutoscalingpolicy",
        autoscaling_group_name="string",
        min_adjustment_magnitude=0,
        cooldown=0,
        enabled=False,
        estimated_instance_warmup=0,
        metric_aggregation_type="string",
        adjustment_type="string",
        name="string",
        policy_type="string",
        predictive_scaling_configuration=aws.autoscaling.PolicyPredictiveScalingConfigurationArgs(
            metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationArgs(
                target_value=0,
                customized_capacity_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs(
                    metric_data_queries=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs(
                        id="string",
                        expression="string",
                        label="string",
                        metric_stat=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatArgs(
                            metric=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricArgs(
                                metric_name="string",
                                namespace="string",
                                dimensions=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs(
                                    name="string",
                                    value="string",
                                )],
                            ),
                            stat="string",
                            unit="string",
                        ),
                        return_data=False,
                    )],
                ),
                customized_load_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs(
                    metric_data_queries=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs(
                        id="string",
                        expression="string",
                        label="string",
                        metric_stat=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatArgs(
                            metric=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricArgs(
                                metric_name="string",
                                namespace="string",
                                dimensions=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs(
                                    name="string",
                                    value="string",
                                )],
                            ),
                            stat="string",
                            unit="string",
                        ),
                        return_data=False,
                    )],
                ),
                customized_scaling_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs(
                    metric_data_queries=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs(
                        id="string",
                        expression="string",
                        label="string",
                        metric_stat=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs(
                            metric=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs(
                                metric_name="string",
                                namespace="string",
                                dimensions=[aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs(
                                    name="string",
                                    value="string",
                                )],
                            ),
                            stat="string",
                            unit="string",
                        ),
                        return_data=False,
                    )],
                ),
                predefined_load_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs(
                    predefined_metric_type="string",
                    resource_label="string",
                ),
                predefined_metric_pair_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecificationArgs(
                    predefined_metric_type="string",
                    resource_label="string",
                ),
                predefined_scaling_metric_specification=aws.autoscaling.PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecificationArgs(
                    predefined_metric_type="string",
                    resource_label="string",
                ),
            ),
            max_capacity_breach_behavior="string",
            max_capacity_buffer="string",
            mode="string",
            scheduling_buffer_time="string",
        ),
        scaling_adjustment=0,
        step_adjustments=[aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=0,
            metric_interval_lower_bound="string",
            metric_interval_upper_bound="string",
        )],
        target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
            target_value=0,
            customized_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs(
                metric_dimensions=[aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimensionArgs(
                    name="string",
                    value="string",
                )],
                metric_name="string",
                metrics=[aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs(
                    id="string",
                    expression="string",
                    label="string",
                    metric_stat=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs(
                        metric=aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs(
                            metric_name="string",
                            namespace="string",
                            dimensions=[aws.autoscaling.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs(
                                name="string",
                                value="string",
                            )],
                        ),
                        stat="string",
                        unit="string",
                    ),
                    return_data=False,
                )],
                namespace="string",
                statistic="string",
                unit="string",
            ),
            disable_scale_in=False,
            predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
                predefined_metric_type="string",
                resource_label="string",
            ),
        ))
    
    const examplepolicyResourceResourceFromAutoscalingpolicy = new aws.autoscaling.Policy("examplepolicyResourceResourceFromAutoscalingpolicy", {
        autoscalingGroupName: "string",
        minAdjustmentMagnitude: 0,
        cooldown: 0,
        enabled: false,
        estimatedInstanceWarmup: 0,
        metricAggregationType: "string",
        adjustmentType: "string",
        name: "string",
        policyType: "string",
        predictiveScalingConfiguration: {
            metricSpecification: {
                targetValue: 0,
                customizedCapacityMetricSpecification: {
                    metricDataQueries: [{
                        id: "string",
                        expression: "string",
                        label: "string",
                        metricStat: {
                            metric: {
                                metricName: "string",
                                namespace: "string",
                                dimensions: [{
                                    name: "string",
                                    value: "string",
                                }],
                            },
                            stat: "string",
                            unit: "string",
                        },
                        returnData: false,
                    }],
                },
                customizedLoadMetricSpecification: {
                    metricDataQueries: [{
                        id: "string",
                        expression: "string",
                        label: "string",
                        metricStat: {
                            metric: {
                                metricName: "string",
                                namespace: "string",
                                dimensions: [{
                                    name: "string",
                                    value: "string",
                                }],
                            },
                            stat: "string",
                            unit: "string",
                        },
                        returnData: false,
                    }],
                },
                customizedScalingMetricSpecification: {
                    metricDataQueries: [{
                        id: "string",
                        expression: "string",
                        label: "string",
                        metricStat: {
                            metric: {
                                metricName: "string",
                                namespace: "string",
                                dimensions: [{
                                    name: "string",
                                    value: "string",
                                }],
                            },
                            stat: "string",
                            unit: "string",
                        },
                        returnData: false,
                    }],
                },
                predefinedLoadMetricSpecification: {
                    predefinedMetricType: "string",
                    resourceLabel: "string",
                },
                predefinedMetricPairSpecification: {
                    predefinedMetricType: "string",
                    resourceLabel: "string",
                },
                predefinedScalingMetricSpecification: {
                    predefinedMetricType: "string",
                    resourceLabel: "string",
                },
            },
            maxCapacityBreachBehavior: "string",
            maxCapacityBuffer: "string",
            mode: "string",
            schedulingBufferTime: "string",
        },
        scalingAdjustment: 0,
        stepAdjustments: [{
            scalingAdjustment: 0,
            metricIntervalLowerBound: "string",
            metricIntervalUpperBound: "string",
        }],
        targetTrackingConfiguration: {
            targetValue: 0,
            customizedMetricSpecification: {
                metricDimensions: [{
                    name: "string",
                    value: "string",
                }],
                metricName: "string",
                metrics: [{
                    id: "string",
                    expression: "string",
                    label: "string",
                    metricStat: {
                        metric: {
                            metricName: "string",
                            namespace: "string",
                            dimensions: [{
                                name: "string",
                                value: "string",
                            }],
                        },
                        stat: "string",
                        unit: "string",
                    },
                    returnData: false,
                }],
                namespace: "string",
                statistic: "string",
                unit: "string",
            },
            disableScaleIn: false,
            predefinedMetricSpecification: {
                predefinedMetricType: "string",
                resourceLabel: "string",
            },
        },
    });
    
    type: aws:autoscaling:Policy
    properties:
        adjustmentType: string
        autoscalingGroupName: string
        cooldown: 0
        enabled: false
        estimatedInstanceWarmup: 0
        metricAggregationType: string
        minAdjustmentMagnitude: 0
        name: string
        policyType: string
        predictiveScalingConfiguration:
            maxCapacityBreachBehavior: string
            maxCapacityBuffer: string
            metricSpecification:
                customizedCapacityMetricSpecification:
                    metricDataQueries:
                        - expression: string
                          id: string
                          label: string
                          metricStat:
                            metric:
                                dimensions:
                                    - name: string
                                      value: string
                                metricName: string
                                namespace: string
                            stat: string
                            unit: string
                          returnData: false
                customizedLoadMetricSpecification:
                    metricDataQueries:
                        - expression: string
                          id: string
                          label: string
                          metricStat:
                            metric:
                                dimensions:
                                    - name: string
                                      value: string
                                metricName: string
                                namespace: string
                            stat: string
                            unit: string
                          returnData: false
                customizedScalingMetricSpecification:
                    metricDataQueries:
                        - expression: string
                          id: string
                          label: string
                          metricStat:
                            metric:
                                dimensions:
                                    - name: string
                                      value: string
                                metricName: string
                                namespace: string
                            stat: string
                            unit: string
                          returnData: false
                predefinedLoadMetricSpecification:
                    predefinedMetricType: string
                    resourceLabel: string
                predefinedMetricPairSpecification:
                    predefinedMetricType: string
                    resourceLabel: string
                predefinedScalingMetricSpecification:
                    predefinedMetricType: string
                    resourceLabel: string
                targetValue: 0
            mode: string
            schedulingBufferTime: string
        scalingAdjustment: 0
        stepAdjustments:
            - metricIntervalLowerBound: string
              metricIntervalUpperBound: string
              scalingAdjustment: 0
        targetTrackingConfiguration:
            customizedMetricSpecification:
                metricDimensions:
                    - name: string
                      value: string
                metricName: string
                metrics:
                    - expression: string
                      id: string
                      label: string
                      metricStat:
                        metric:
                            dimensions:
                                - name: string
                                  value: string
                            metricName: string
                            namespace: string
                        stat: string
                        unit: string
                      returnData: false
                namespace: string
                statistic: string
                unit: string
            disableScaleIn: false
            predefinedMetricSpecification:
                predefinedMetricType: string
                resourceLabel: string
            targetValue: 0
    

    Policy Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The Policy resource accepts the following input properties:

    AutoscalingGroupName string
    Name of the autoscaling group.
    AdjustmentType string
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    Cooldown int
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    Enabled bool

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    EstimatedInstanceWarmup int
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    MetricAggregationType string
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    MinAdjustmentMagnitude int

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    Name string
    Name of the policy.
    PolicyType string
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    PredictiveScalingConfiguration PolicyPredictiveScalingConfiguration
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    ScalingAdjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    StepAdjustments List<PolicyStepAdjustment>

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    TargetTrackingConfiguration PolicyTargetTrackingConfiguration

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    AutoscalingGroupName string
    Name of the autoscaling group.
    AdjustmentType string
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    Cooldown int
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    Enabled bool

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    EstimatedInstanceWarmup int
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    MetricAggregationType string
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    MinAdjustmentMagnitude int

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    Name string
    Name of the policy.
    PolicyType string
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    PredictiveScalingConfiguration PolicyPredictiveScalingConfigurationArgs
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    ScalingAdjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    StepAdjustments []PolicyStepAdjustmentArgs

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    TargetTrackingConfiguration PolicyTargetTrackingConfigurationArgs

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    autoscalingGroupName String
    Name of the autoscaling group.
    adjustmentType String
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    cooldown Integer
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled Boolean

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimatedInstanceWarmup Integer
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metricAggregationType String
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    minAdjustmentMagnitude Integer

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name String
    Name of the policy.
    policyType String
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictiveScalingConfiguration PolicyPredictiveScalingConfiguration
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scalingAdjustment Integer
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    stepAdjustments List<PolicyStepAdjustment>

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    targetTrackingConfiguration PolicyTargetTrackingConfiguration

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    autoscalingGroupName string
    Name of the autoscaling group.
    adjustmentType string
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    cooldown number
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled boolean

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimatedInstanceWarmup number
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metricAggregationType string
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    minAdjustmentMagnitude number

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name string
    Name of the policy.
    policyType string
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictiveScalingConfiguration PolicyPredictiveScalingConfiguration
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scalingAdjustment number
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    stepAdjustments PolicyStepAdjustment[]

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    targetTrackingConfiguration PolicyTargetTrackingConfiguration

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    autoscaling_group_name str
    Name of the autoscaling group.
    adjustment_type str
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    cooldown int
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled bool

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimated_instance_warmup int
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metric_aggregation_type str
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    min_adjustment_magnitude int

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name str
    Name of the policy.
    policy_type str
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictive_scaling_configuration PolicyPredictiveScalingConfigurationArgs
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scaling_adjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    step_adjustments Sequence[PolicyStepAdjustmentArgs]

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    target_tracking_configuration PolicyTargetTrackingConfigurationArgs

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    autoscalingGroupName String
    Name of the autoscaling group.
    adjustmentType String
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    cooldown Number
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled Boolean

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimatedInstanceWarmup Number
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metricAggregationType String
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    minAdjustmentMagnitude Number

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name String
    Name of the policy.
    policyType String
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictiveScalingConfiguration Property Map
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scalingAdjustment Number
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    stepAdjustments List<Property Map>

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    targetTrackingConfiguration Property Map

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Policy resource produces the following output properties:

    Arn string
    ARN assigned by AWS to the scaling policy.
    Id string
    The provider-assigned unique ID for this managed resource.
    Arn string
    ARN assigned by AWS to the scaling policy.
    Id string
    The provider-assigned unique ID for this managed resource.
    arn String
    ARN assigned by AWS to the scaling policy.
    id String
    The provider-assigned unique ID for this managed resource.
    arn string
    ARN assigned by AWS to the scaling policy.
    id string
    The provider-assigned unique ID for this managed resource.
    arn str
    ARN assigned by AWS to the scaling policy.
    id str
    The provider-assigned unique ID for this managed resource.
    arn String
    ARN assigned by AWS to the scaling policy.
    id String
    The provider-assigned unique ID for this managed resource.

    Look up Existing Policy Resource

    Get an existing Policy resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: PolicyState, opts?: CustomResourceOptions): Policy
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            adjustment_type: Optional[str] = None,
            arn: Optional[str] = None,
            autoscaling_group_name: Optional[str] = None,
            cooldown: Optional[int] = None,
            enabled: Optional[bool] = None,
            estimated_instance_warmup: Optional[int] = None,
            metric_aggregation_type: Optional[str] = None,
            min_adjustment_magnitude: Optional[int] = None,
            name: Optional[str] = None,
            policy_type: Optional[str] = None,
            predictive_scaling_configuration: Optional[PolicyPredictiveScalingConfigurationArgs] = None,
            scaling_adjustment: Optional[int] = None,
            step_adjustments: Optional[Sequence[PolicyStepAdjustmentArgs]] = None,
            target_tracking_configuration: Optional[PolicyTargetTrackingConfigurationArgs] = None) -> Policy
    func GetPolicy(ctx *Context, name string, id IDInput, state *PolicyState, opts ...ResourceOption) (*Policy, error)
    public static Policy Get(string name, Input<string> id, PolicyState? state, CustomResourceOptions? opts = null)
    public static Policy get(String name, Output<String> id, PolicyState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AdjustmentType string
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    Arn string
    ARN assigned by AWS to the scaling policy.
    AutoscalingGroupName string
    Name of the autoscaling group.
    Cooldown int
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    Enabled bool

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    EstimatedInstanceWarmup int
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    MetricAggregationType string
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    MinAdjustmentMagnitude int

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    Name string
    Name of the policy.
    PolicyType string
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    PredictiveScalingConfiguration PolicyPredictiveScalingConfiguration
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    ScalingAdjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    StepAdjustments List<PolicyStepAdjustment>

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    TargetTrackingConfiguration PolicyTargetTrackingConfiguration

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    AdjustmentType string
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    Arn string
    ARN assigned by AWS to the scaling policy.
    AutoscalingGroupName string
    Name of the autoscaling group.
    Cooldown int
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    Enabled bool

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    EstimatedInstanceWarmup int
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    MetricAggregationType string
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    MinAdjustmentMagnitude int

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    Name string
    Name of the policy.
    PolicyType string
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    PredictiveScalingConfiguration PolicyPredictiveScalingConfigurationArgs
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    ScalingAdjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    StepAdjustments []PolicyStepAdjustmentArgs

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    TargetTrackingConfiguration PolicyTargetTrackingConfigurationArgs

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    adjustmentType String
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    arn String
    ARN assigned by AWS to the scaling policy.
    autoscalingGroupName String
    Name of the autoscaling group.
    cooldown Integer
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled Boolean

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimatedInstanceWarmup Integer
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metricAggregationType String
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    minAdjustmentMagnitude Integer

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name String
    Name of the policy.
    policyType String
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictiveScalingConfiguration PolicyPredictiveScalingConfiguration
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scalingAdjustment Integer
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    stepAdjustments List<PolicyStepAdjustment>

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    targetTrackingConfiguration PolicyTargetTrackingConfiguration

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    adjustmentType string
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    arn string
    ARN assigned by AWS to the scaling policy.
    autoscalingGroupName string
    Name of the autoscaling group.
    cooldown number
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled boolean

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimatedInstanceWarmup number
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metricAggregationType string
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    minAdjustmentMagnitude number

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name string
    Name of the policy.
    policyType string
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictiveScalingConfiguration PolicyPredictiveScalingConfiguration
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scalingAdjustment number
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    stepAdjustments PolicyStepAdjustment[]

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    targetTrackingConfiguration PolicyTargetTrackingConfiguration

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    adjustment_type str
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    arn str
    ARN assigned by AWS to the scaling policy.
    autoscaling_group_name str
    Name of the autoscaling group.
    cooldown int
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled bool

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimated_instance_warmup int
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metric_aggregation_type str
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    min_adjustment_magnitude int

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name str
    Name of the policy.
    policy_type str
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictive_scaling_configuration PolicyPredictiveScalingConfigurationArgs
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scaling_adjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    step_adjustments Sequence[PolicyStepAdjustmentArgs]

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    target_tracking_configuration PolicyTargetTrackingConfigurationArgs

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    adjustmentType String
    Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are ChangeInCapacity, ExactCapacity, and PercentChangeInCapacity.
    arn String
    ARN assigned by AWS to the scaling policy.
    autoscalingGroupName String
    Name of the autoscaling group.
    cooldown Number
    Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
    enabled Boolean

    Whether the scaling policy is enabled or disabled. Default: true.

    The following argument is only available to "SimpleScaling" and "StepScaling" type policies:

    estimatedInstanceWarmup Number
    Estimated time, in seconds, until a newly launched instance will contribute CloudWatch metrics. Without a value, AWS will default to the group's specified cooldown period.
    metricAggregationType String
    Aggregation type for the policy's metrics. Valid values are "Minimum", "Maximum", and "Average". Without a value, AWS will treat the aggregation type as "Average".
    minAdjustmentMagnitude Number

    Minimum value to scale by when adjustment_type is set to PercentChangeInCapacity.

    The following arguments are only available to "SimpleScaling" type policies:

    name String
    Name of the policy.
    policyType String
    Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
    predictiveScalingConfiguration Property Map
    Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
    scalingAdjustment Number
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    stepAdjustments List<Property Map>

    Set of adjustments that manage group scaling. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {stepAdjustments: [ { scalingAdjustment: -1, metricIntervalLowerBound: "1", metricIntervalUpperBound: "2", }, { scalingAdjustment: 1, metricIntervalLowerBound: "2", metricIntervalUpperBound: "3", }, ]});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", step_adjustments=[
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=-1,
            metric_interval_lower_bound="1",
            metric_interval_upper_bound="2",
        ),
        aws.autoscaling.PolicyStepAdjustmentArgs(
            scaling_adjustment=1,
            metric_interval_lower_bound="2",
            metric_interval_upper_bound="3",
        ),
    ])
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            StepAdjustments = new[]
            {
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = -1,
                    MetricIntervalLowerBound = "1",
                    MetricIntervalUpperBound = "2",
                },
                new Aws.AutoScaling.Inputs.PolicyStepAdjustmentArgs
                {
                    ScalingAdjustment = 1,
                    MetricIntervalLowerBound = "2",
                    MetricIntervalUpperBound = "3",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			StepAdjustments: autoscaling.PolicyStepAdjustmentArray{
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        -1,
    					MetricIntervalLowerBound: pulumi.String("1"),
    					MetricIntervalUpperBound: pulumi.String("2"),
    				},
    				&autoscaling.PolicyStepAdjustmentArgs{
    					ScalingAdjustment:        pulumi.Int(1),
    					MetricIntervalLowerBound: pulumi.String("2"),
    					MetricIntervalUpperBound: pulumi.String("3"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          stepAdjustments:
            - scalingAdjustment: -1
              metricIntervalLowerBound: 1
              metricIntervalUpperBound: 2
            - scalingAdjustment: 1
              metricIntervalLowerBound: 2
              metricIntervalUpperBound: 3
    

    The following fields are available in step adjustments:

    targetTrackingConfiguration Property Map

    Target tracking policy. These have the following structure:

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    

    const example = new aws.autoscaling.Policy("example", {targetTrackingConfiguration: { predefinedMetricSpecification: { predefinedMetricType: "ASGAverageCPUUtilization", }, targetValue: 40, }});

    import pulumi
    import pulumi_aws as aws
    
    example = aws.autoscaling.Policy("example", target_tracking_configuration=aws.autoscaling.PolicyTargetTrackingConfigurationArgs(
        predefined_metric_specification=aws.autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs(
            predefined_metric_type="ASGAverageCPUUtilization",
        ),
        target_value=40,
    ))
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.AutoScaling.Policy("example", new()
        {
            TargetTrackingConfiguration = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationArgs
            {
                PredefinedMetricSpecification = new Aws.AutoScaling.Inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs
                {
                    PredefinedMetricType = "ASGAverageCPUUtilization",
                },
                TargetValue = 40,
            },
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := autoscaling.NewPolicy(ctx, "example", &autoscaling.PolicyArgs{
    			TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
    				PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
    					PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
    				},
    				TargetValue: pulumi.Float64(40),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.autoscaling.Policy;
    import com.pulumi.aws.autoscaling.PolicyArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationArgs;
    import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Policy("example", PolicyArgs.builder()
                .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder()
                    .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder()
                        .predefinedMetricType("ASGAverageCPUUtilization")
                        .build())
                    .targetValue(40)
                    .build())
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:autoscaling:Policy
        properties:
          targetTrackingConfiguration:
            predefinedMetricSpecification:
              predefinedMetricType: ASGAverageCPUUtilization
            targetValue: 40
    

    The following fields are available in target tracking configuration:

    Supporting Types

    PolicyPredictiveScalingConfiguration, PolicyPredictiveScalingConfigurationArgs

    MetricSpecification PolicyPredictiveScalingConfigurationMetricSpecification
    This structure includes the metrics and target utilization to use for predictive scaling.
    MaxCapacityBreachBehavior string
    Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity of the Auto Scaling group. Valid values are HonorMaxCapacity or IncreaseMaxCapacity. Default is HonorMaxCapacity.
    MaxCapacityBuffer string
    Size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. Valid range is 0 to 100. If set to 0, Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to equal but not exceed forecast capacity.
    Mode string
    Predictive scaling mode. Valid values are ForecastAndScale and ForecastOnly. Default is ForecastOnly.
    SchedulingBufferTime string
    Amount of time, in seconds, by which the instance launch time can be advanced. Minimum is 0.
    MetricSpecification PolicyPredictiveScalingConfigurationMetricSpecification
    This structure includes the metrics and target utilization to use for predictive scaling.
    MaxCapacityBreachBehavior string
    Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity of the Auto Scaling group. Valid values are HonorMaxCapacity or IncreaseMaxCapacity. Default is HonorMaxCapacity.
    MaxCapacityBuffer string
    Size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. Valid range is 0 to 100. If set to 0, Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to equal but not exceed forecast capacity.
    Mode string
    Predictive scaling mode. Valid values are ForecastAndScale and ForecastOnly. Default is ForecastOnly.
    SchedulingBufferTime string
    Amount of time, in seconds, by which the instance launch time can be advanced. Minimum is 0.
    metricSpecification PolicyPredictiveScalingConfigurationMetricSpecification
    This structure includes the metrics and target utilization to use for predictive scaling.
    maxCapacityBreachBehavior String
    Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity of the Auto Scaling group. Valid values are HonorMaxCapacity or IncreaseMaxCapacity. Default is HonorMaxCapacity.
    maxCapacityBuffer String
    Size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. Valid range is 0 to 100. If set to 0, Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to equal but not exceed forecast capacity.
    mode String
    Predictive scaling mode. Valid values are ForecastAndScale and ForecastOnly. Default is ForecastOnly.
    schedulingBufferTime String
    Amount of time, in seconds, by which the instance launch time can be advanced. Minimum is 0.
    metricSpecification PolicyPredictiveScalingConfigurationMetricSpecification
    This structure includes the metrics and target utilization to use for predictive scaling.
    maxCapacityBreachBehavior string
    Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity of the Auto Scaling group. Valid values are HonorMaxCapacity or IncreaseMaxCapacity. Default is HonorMaxCapacity.
    maxCapacityBuffer string
    Size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. Valid range is 0 to 100. If set to 0, Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to equal but not exceed forecast capacity.
    mode string
    Predictive scaling mode. Valid values are ForecastAndScale and ForecastOnly. Default is ForecastOnly.
    schedulingBufferTime string
    Amount of time, in seconds, by which the instance launch time can be advanced. Minimum is 0.
    metric_specification PolicyPredictiveScalingConfigurationMetricSpecification
    This structure includes the metrics and target utilization to use for predictive scaling.
    max_capacity_breach_behavior str
    Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity of the Auto Scaling group. Valid values are HonorMaxCapacity or IncreaseMaxCapacity. Default is HonorMaxCapacity.
    max_capacity_buffer str
    Size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. Valid range is 0 to 100. If set to 0, Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to equal but not exceed forecast capacity.
    mode str
    Predictive scaling mode. Valid values are ForecastAndScale and ForecastOnly. Default is ForecastOnly.
    scheduling_buffer_time str
    Amount of time, in seconds, by which the instance launch time can be advanced. Minimum is 0.
    metricSpecification Property Map
    This structure includes the metrics and target utilization to use for predictive scaling.
    maxCapacityBreachBehavior String
    Defines the behavior that should be applied if the forecast capacity approaches or exceeds the maximum capacity of the Auto Scaling group. Valid values are HonorMaxCapacity or IncreaseMaxCapacity. Default is HonorMaxCapacity.
    maxCapacityBuffer String
    Size of the capacity buffer to use when the forecast capacity is close to or exceeds the maximum capacity. Valid range is 0 to 100. If set to 0, Amazon EC2 Auto Scaling may scale capacity higher than the maximum capacity to equal but not exceed forecast capacity.
    mode String
    Predictive scaling mode. Valid values are ForecastAndScale and ForecastOnly. Default is ForecastOnly.
    schedulingBufferTime String
    Amount of time, in seconds, by which the instance launch time can be advanced. Minimum is 0.

    PolicyPredictiveScalingConfigurationMetricSpecification, PolicyPredictiveScalingConfigurationMetricSpecificationArgs

    TargetValue double
    Target value for the metric.
    CustomizedCapacityMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecification
    Customized capacity metric specification. The field is only valid when you use customized_load_metric_specification
    CustomizedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecification
    Customized load metric specification.
    CustomizedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecification
    Customized scaling metric specification.
    PredefinedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecification
    Predefined load metric specification.
    PredefinedMetricPairSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecification
    Metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
    PredefinedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecification
    Predefined scaling metric specification.
    TargetValue float64
    Target value for the metric.
    CustomizedCapacityMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecification
    Customized capacity metric specification. The field is only valid when you use customized_load_metric_specification
    CustomizedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecification
    Customized load metric specification.
    CustomizedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecification
    Customized scaling metric specification.
    PredefinedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecification
    Predefined load metric specification.
    PredefinedMetricPairSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecification
    Metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
    PredefinedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecification
    Predefined scaling metric specification.
    targetValue Double
    Target value for the metric.
    customizedCapacityMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecification
    Customized capacity metric specification. The field is only valid when you use customized_load_metric_specification
    customizedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecification
    Customized load metric specification.
    customizedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecification
    Customized scaling metric specification.
    predefinedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecification
    Predefined load metric specification.
    predefinedMetricPairSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecification
    Metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
    predefinedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecification
    Predefined scaling metric specification.
    targetValue number
    Target value for the metric.
    customizedCapacityMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecification
    Customized capacity metric specification. The field is only valid when you use customized_load_metric_specification
    customizedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecification
    Customized load metric specification.
    customizedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecification
    Customized scaling metric specification.
    predefinedLoadMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecification
    Predefined load metric specification.
    predefinedMetricPairSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecification
    Metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
    predefinedScalingMetricSpecification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecification
    Predefined scaling metric specification.
    target_value float
    Target value for the metric.
    customized_capacity_metric_specification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecification
    Customized capacity metric specification. The field is only valid when you use customized_load_metric_specification
    customized_load_metric_specification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecification
    Customized load metric specification.
    customized_scaling_metric_specification PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecification
    Customized scaling metric specification.
    predefined_load_metric_specification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecification
    Predefined load metric specification.
    predefined_metric_pair_specification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecification
    Metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
    predefined_scaling_metric_specification PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecification
    Predefined scaling metric specification.
    targetValue Number
    Target value for the metric.
    customizedCapacityMetricSpecification Property Map
    Customized capacity metric specification. The field is only valid when you use customized_load_metric_specification
    customizedLoadMetricSpecification Property Map
    Customized load metric specification.
    customizedScalingMetricSpecification Property Map
    Customized scaling metric specification.
    predefinedLoadMetricSpecification Property Map
    Predefined load metric specification.
    predefinedMetricPairSpecification Property Map
    Metric pair specification from which Amazon EC2 Auto Scaling determines the appropriate scaling metric and load metric to use.
    predefinedScalingMetricSpecification Property Map
    Predefined scaling metric specification.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecification, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs

    MetricDataQueries List<PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQuery>
    List of up to 10 structures that defines custom capacity metric in predictive scaling policy
    MetricDataQueries []PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQuery
    List of up to 10 structures that defines custom capacity metric in predictive scaling policy
    metricDataQueries List<PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQuery>
    List of up to 10 structures that defines custom capacity metric in predictive scaling policy
    metricDataQueries PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQuery[]
    List of up to 10 structures that defines custom capacity metric in predictive scaling policy
    metric_data_queries Sequence[PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQuery]
    List of up to 10 structures that defines custom capacity metric in predictive scaling policy
    metricDataQueries List<Property Map>
    List of up to 10 structures that defines custom capacity metric in predictive scaling policy

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQuery, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs

    Id string
    Short name for the metric used in predictive scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    Id string
    Short name for the metric used in predictive scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in predictive scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id string
    Short name for the metric used in predictive scaling policy.
    expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label string
    Human-readable label for this metric or expression.
    metricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id str
    Short name for the metric used in predictive scaling policy.
    expression str
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label str
    Human-readable label for this metric or expression.
    metric_stat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    return_data bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in predictive scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat Property Map
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStat, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatArgs

    Metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    Metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat string
    Statistic of the metrics to return.
    unit string
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat str
    Statistic of the metrics to return.
    unit str
    Unit of the metrics to return.
    metric Property Map
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetric, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricArgs

    metricName String
    Name of the metric.
    namespace String
    Namespace of the metric.
    dimensions List<Property Map>
    Dimensions of the metric.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricDimension, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs

    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.
    name string
    Name of the dimension.
    value string
    Value of the dimension.
    name str
    Name of the dimension.
    value str
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecification, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationArgs

    MetricDataQueries List<PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQuery>
    List of up to 10 structures that defines custom load metric in predictive scaling policy
    MetricDataQueries []PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQuery
    List of up to 10 structures that defines custom load metric in predictive scaling policy
    metricDataQueries List<PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQuery>
    List of up to 10 structures that defines custom load metric in predictive scaling policy
    metricDataQueries PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQuery[]
    List of up to 10 structures that defines custom load metric in predictive scaling policy
    metric_data_queries Sequence[PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQuery]
    List of up to 10 structures that defines custom load metric in predictive scaling policy
    metricDataQueries List<Property Map>
    List of up to 10 structures that defines custom load metric in predictive scaling policy

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQuery, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs

    Id string
    Short name for the metric used in predictive scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    Id string
    Short name for the metric used in predictive scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in predictive scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id string
    Short name for the metric used in predictive scaling policy.
    expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label string
    Human-readable label for this metric or expression.
    metricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id str
    Short name for the metric used in predictive scaling policy.
    expression str
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label str
    Human-readable label for this metric or expression.
    metric_stat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    return_data bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in predictive scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat Property Map
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStat, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatArgs

    Metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    Metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat string
    Statistic of the metrics to return.
    unit string
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat str
    Statistic of the metrics to return.
    unit str
    Unit of the metrics to return.
    metric Property Map
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetric, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricArgs

    metricName String
    Name of the metric.
    namespace String
    Namespace of the metric.
    dimensions List<Property Map>
    Dimensions of the metric.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricDimension, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs

    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.
    name string
    Name of the dimension.
    value string
    Value of the dimension.
    name str
    Name of the dimension.
    value str
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecification, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs

    MetricDataQueries List<PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQuery>
    List of up to 10 structures that defines custom scaling metric in predictive scaling policy
    MetricDataQueries []PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQuery
    List of up to 10 structures that defines custom scaling metric in predictive scaling policy
    metricDataQueries List<PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQuery>
    List of up to 10 structures that defines custom scaling metric in predictive scaling policy
    metricDataQueries PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQuery[]
    List of up to 10 structures that defines custom scaling metric in predictive scaling policy
    metric_data_queries Sequence[PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQuery]
    List of up to 10 structures that defines custom scaling metric in predictive scaling policy
    metricDataQueries List<Property Map>
    List of up to 10 structures that defines custom scaling metric in predictive scaling policy

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQuery, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs

    Id string
    Short name for the metric used in predictive scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    Id string
    Short name for the metric used in predictive scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in predictive scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id string
    Short name for the metric used in predictive scaling policy.
    expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label string
    Human-readable label for this metric or expression.
    metricStat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id str
    Short name for the metric used in predictive scaling policy.
    expression str
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label str
    Human-readable label for this metric or expression.
    metric_stat PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStat
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    return_data bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in predictive scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat Property Map
    Structure that defines CloudWatch metric to be used in predictive scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStat, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs

    Metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    Metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat string
    Statistic of the metrics to return.
    unit string
    Unit of the metrics to return.
    metric PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat str
    Statistic of the metrics to return.
    unit str
    Unit of the metrics to return.
    metric Property Map
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetric, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs

    metricName String
    Name of the metric.
    namespace String
    Namespace of the metric.
    dimensions List<Property Map>
    Dimensions of the metric.

    PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimension, PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs

    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.
    name string
    Name of the dimension.
    value string
    Value of the dimension.
    name str
    Name of the dimension.
    value str
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.

    PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecification, PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs

    PredefinedMetricType string
    Metric type. Valid values are ASGTotalCPUUtilization, ASGTotalNetworkIn, ASGTotalNetworkOut, or ALBTargetGroupRequestCount.
    ResourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    PredefinedMetricType string
    Metric type. Valid values are ASGTotalCPUUtilization, ASGTotalNetworkIn, ASGTotalNetworkOut, or ALBTargetGroupRequestCount.
    ResourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType String
    Metric type. Valid values are ASGTotalCPUUtilization, ASGTotalNetworkIn, ASGTotalNetworkOut, or ALBTargetGroupRequestCount.
    resourceLabel String
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType string
    Metric type. Valid values are ASGTotalCPUUtilization, ASGTotalNetworkIn, ASGTotalNetworkOut, or ALBTargetGroupRequestCount.
    resourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefined_metric_type str
    Metric type. Valid values are ASGTotalCPUUtilization, ASGTotalNetworkIn, ASGTotalNetworkOut, or ALBTargetGroupRequestCount.
    resource_label str
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType String
    Metric type. Valid values are ASGTotalCPUUtilization, ASGTotalNetworkIn, ASGTotalNetworkOut, or ALBTargetGroupRequestCount.
    resourceLabel String
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.

    PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecification, PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedMetricPairSpecificationArgs

    PredefinedMetricType string
    Which metrics to use. There are two different types of metrics for each metric type: one is a load metric and one is a scaling metric. For example, if the metric type is ASGCPUUtilization, the Auto Scaling group's total CPU metric is used as the load metric, and the average CPU metric is used for the scaling metric. Valid values are ASGCPUUtilization, ASGNetworkIn, ASGNetworkOut, or ALBRequestCount.
    ResourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    PredefinedMetricType string
    Which metrics to use. There are two different types of metrics for each metric type: one is a load metric and one is a scaling metric. For example, if the metric type is ASGCPUUtilization, the Auto Scaling group's total CPU metric is used as the load metric, and the average CPU metric is used for the scaling metric. Valid values are ASGCPUUtilization, ASGNetworkIn, ASGNetworkOut, or ALBRequestCount.
    ResourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType String
    Which metrics to use. There are two different types of metrics for each metric type: one is a load metric and one is a scaling metric. For example, if the metric type is ASGCPUUtilization, the Auto Scaling group's total CPU metric is used as the load metric, and the average CPU metric is used for the scaling metric. Valid values are ASGCPUUtilization, ASGNetworkIn, ASGNetworkOut, or ALBRequestCount.
    resourceLabel String
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType string
    Which metrics to use. There are two different types of metrics for each metric type: one is a load metric and one is a scaling metric. For example, if the metric type is ASGCPUUtilization, the Auto Scaling group's total CPU metric is used as the load metric, and the average CPU metric is used for the scaling metric. Valid values are ASGCPUUtilization, ASGNetworkIn, ASGNetworkOut, or ALBRequestCount.
    resourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefined_metric_type str
    Which metrics to use. There are two different types of metrics for each metric type: one is a load metric and one is a scaling metric. For example, if the metric type is ASGCPUUtilization, the Auto Scaling group's total CPU metric is used as the load metric, and the average CPU metric is used for the scaling metric. Valid values are ASGCPUUtilization, ASGNetworkIn, ASGNetworkOut, or ALBRequestCount.
    resource_label str
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType String
    Which metrics to use. There are two different types of metrics for each metric type: one is a load metric and one is a scaling metric. For example, if the metric type is ASGCPUUtilization, the Auto Scaling group's total CPU metric is used as the load metric, and the average CPU metric is used for the scaling metric. Valid values are ASGCPUUtilization, ASGNetworkIn, ASGNetworkOut, or ALBRequestCount.
    resourceLabel String
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.

    PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecification, PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedScalingMetricSpecificationArgs

    PredefinedMetricType string
    Describes a scaling metric for a predictive scaling policy. Valid values are ASGAverageCPUUtilization, ASGAverageNetworkIn, ASGAverageNetworkOut, or ALBRequestCountPerTarget.
    ResourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    PredefinedMetricType string
    Describes a scaling metric for a predictive scaling policy. Valid values are ASGAverageCPUUtilization, ASGAverageNetworkIn, ASGAverageNetworkOut, or ALBRequestCountPerTarget.
    ResourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType String
    Describes a scaling metric for a predictive scaling policy. Valid values are ASGAverageCPUUtilization, ASGAverageNetworkIn, ASGAverageNetworkOut, or ALBRequestCountPerTarget.
    resourceLabel String
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType string
    Describes a scaling metric for a predictive scaling policy. Valid values are ASGAverageCPUUtilization, ASGAverageNetworkIn, ASGAverageNetworkOut, or ALBRequestCountPerTarget.
    resourceLabel string
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefined_metric_type str
    Describes a scaling metric for a predictive scaling policy. Valid values are ASGAverageCPUUtilization, ASGAverageNetworkIn, ASGAverageNetworkOut, or ALBRequestCountPerTarget.
    resource_label str
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.
    predefinedMetricType String
    Describes a scaling metric for a predictive scaling policy. Valid values are ASGAverageCPUUtilization, ASGAverageNetworkIn, ASGAverageNetworkOut, or ALBRequestCountPerTarget.
    resourceLabel String
    Label that uniquely identifies a specific Application Load Balancer target group from which to determine the request count served by your Auto Scaling group. You create the resource label by appending the final portion of the load balancer ARN and the final portion of the target group ARN into a single value, separated by a forward slash (/). Refer to PredefinedMetricSpecification for more information.

    PolicyStepAdjustment, PolicyStepAdjustmentArgs

    ScalingAdjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    MetricIntervalLowerBound string
    Lower bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as negative infinity.
    MetricIntervalUpperBound string

    Upper bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as positive infinity. The upper bound must be greater than the lower bound.

    Notice the bounds are relative to the alarm threshold, meaning that the starting point is not 0%, but the alarm threshold. Check the official docs for a detailed example.

    The following arguments are only available to "TargetTrackingScaling" type policies:

    ScalingAdjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    MetricIntervalLowerBound string
    Lower bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as negative infinity.
    MetricIntervalUpperBound string

    Upper bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as positive infinity. The upper bound must be greater than the lower bound.

    Notice the bounds are relative to the alarm threshold, meaning that the starting point is not 0%, but the alarm threshold. Check the official docs for a detailed example.

    The following arguments are only available to "TargetTrackingScaling" type policies:

    scalingAdjustment Integer
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    metricIntervalLowerBound String
    Lower bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as negative infinity.
    metricIntervalUpperBound String

    Upper bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as positive infinity. The upper bound must be greater than the lower bound.

    Notice the bounds are relative to the alarm threshold, meaning that the starting point is not 0%, but the alarm threshold. Check the official docs for a detailed example.

    The following arguments are only available to "TargetTrackingScaling" type policies:

    scalingAdjustment number
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    metricIntervalLowerBound string
    Lower bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as negative infinity.
    metricIntervalUpperBound string

    Upper bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as positive infinity. The upper bound must be greater than the lower bound.

    Notice the bounds are relative to the alarm threshold, meaning that the starting point is not 0%, but the alarm threshold. Check the official docs for a detailed example.

    The following arguments are only available to "TargetTrackingScaling" type policies:

    scaling_adjustment int
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    metric_interval_lower_bound str
    Lower bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as negative infinity.
    metric_interval_upper_bound str

    Upper bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as positive infinity. The upper bound must be greater than the lower bound.

    Notice the bounds are relative to the alarm threshold, meaning that the starting point is not 0%, but the alarm threshold. Check the official docs for a detailed example.

    The following arguments are only available to "TargetTrackingScaling" type policies:

    scalingAdjustment Number
    Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
    metricIntervalLowerBound String
    Lower bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as negative infinity.
    metricIntervalUpperBound String

    Upper bound for the difference between the alarm threshold and the CloudWatch metric. Without a value, AWS will treat this bound as positive infinity. The upper bound must be greater than the lower bound.

    Notice the bounds are relative to the alarm threshold, meaning that the starting point is not 0%, but the alarm threshold. Check the official docs for a detailed example.

    The following arguments are only available to "TargetTrackingScaling" type policies:

    PolicyTargetTrackingConfiguration, PolicyTargetTrackingConfigurationArgs

    TargetValue double
    Target value for the metric.
    CustomizedMetricSpecification PolicyTargetTrackingConfigurationCustomizedMetricSpecification
    Customized metric. Conflicts with predefined_metric_specification.
    DisableScaleIn bool
    Whether scale in by the target tracking policy is disabled.
    PredefinedMetricSpecification PolicyTargetTrackingConfigurationPredefinedMetricSpecification
    Predefined metric. Conflicts with customized_metric_specification.
    TargetValue float64
    Target value for the metric.
    CustomizedMetricSpecification PolicyTargetTrackingConfigurationCustomizedMetricSpecification
    Customized metric. Conflicts with predefined_metric_specification.
    DisableScaleIn bool
    Whether scale in by the target tracking policy is disabled.
    PredefinedMetricSpecification PolicyTargetTrackingConfigurationPredefinedMetricSpecification
    Predefined metric. Conflicts with customized_metric_specification.
    targetValue Double
    Target value for the metric.
    customizedMetricSpecification PolicyTargetTrackingConfigurationCustomizedMetricSpecification
    Customized metric. Conflicts with predefined_metric_specification.
    disableScaleIn Boolean
    Whether scale in by the target tracking policy is disabled.
    predefinedMetricSpecification PolicyTargetTrackingConfigurationPredefinedMetricSpecification
    Predefined metric. Conflicts with customized_metric_specification.
    targetValue number
    Target value for the metric.
    customizedMetricSpecification PolicyTargetTrackingConfigurationCustomizedMetricSpecification
    Customized metric. Conflicts with predefined_metric_specification.
    disableScaleIn boolean
    Whether scale in by the target tracking policy is disabled.
    predefinedMetricSpecification PolicyTargetTrackingConfigurationPredefinedMetricSpecification
    Predefined metric. Conflicts with customized_metric_specification.
    target_value float
    Target value for the metric.
    customized_metric_specification PolicyTargetTrackingConfigurationCustomizedMetricSpecification
    Customized metric. Conflicts with predefined_metric_specification.
    disable_scale_in bool
    Whether scale in by the target tracking policy is disabled.
    predefined_metric_specification PolicyTargetTrackingConfigurationPredefinedMetricSpecification
    Predefined metric. Conflicts with customized_metric_specification.
    targetValue Number
    Target value for the metric.
    customizedMetricSpecification Property Map
    Customized metric. Conflicts with predefined_metric_specification.
    disableScaleIn Boolean
    Whether scale in by the target tracking policy is disabled.
    predefinedMetricSpecification Property Map
    Predefined metric. Conflicts with customized_metric_specification.

    PolicyTargetTrackingConfigurationCustomizedMetricSpecification, PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs

    MetricDimensions List<PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimension>
    Dimensions of the metric.
    MetricName string
    Name of the metric.
    Metrics List<PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetric>
    Metrics to include, as a metric data query.
    Namespace string
    Namespace of the metric.
    Statistic string
    Statistic of the metric.
    Unit string
    Unit of the metric.
    MetricDimensions []PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimension
    Dimensions of the metric.
    MetricName string
    Name of the metric.
    Metrics []PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetric
    Metrics to include, as a metric data query.
    Namespace string
    Namespace of the metric.
    Statistic string
    Statistic of the metric.
    Unit string
    Unit of the metric.
    metricDimensions List<PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimension>
    Dimensions of the metric.
    metricName String
    Name of the metric.
    metrics List<PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetric>
    Metrics to include, as a metric data query.
    namespace String
    Namespace of the metric.
    statistic String
    Statistic of the metric.
    unit String
    Unit of the metric.
    metricDimensions PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimension[]
    Dimensions of the metric.
    metricName string
    Name of the metric.
    metrics PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetric[]
    Metrics to include, as a metric data query.
    namespace string
    Namespace of the metric.
    statistic string
    Statistic of the metric.
    unit string
    Unit of the metric.
    metric_dimensions Sequence[PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimension]
    Dimensions of the metric.
    metric_name str
    Name of the metric.
    metrics Sequence[PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetric]
    Metrics to include, as a metric data query.
    namespace str
    Namespace of the metric.
    statistic str
    Statistic of the metric.
    unit str
    Unit of the metric.
    metricDimensions List<Property Map>
    Dimensions of the metric.
    metricName String
    Name of the metric.
    metrics List<Property Map>
    Metrics to include, as a metric data query.
    namespace String
    Namespace of the metric.
    statistic String
    Statistic of the metric.
    unit String
    Unit of the metric.

    PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetric, PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs

    Id string
    Short name for the metric used in target tracking scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStat
    Structure that defines CloudWatch metric to be used in target tracking scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    Id string
    Short name for the metric used in target tracking scaling policy.
    Expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    Label string
    Human-readable label for this metric or expression.
    MetricStat PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStat
    Structure that defines CloudWatch metric to be used in target tracking scaling policy. You must specify either expression or metric_stat, but not both.
    ReturnData bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in target tracking scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStat
    Structure that defines CloudWatch metric to be used in target tracking scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id string
    Short name for the metric used in target tracking scaling policy.
    expression string
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label string
    Human-readable label for this metric or expression.
    metricStat PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStat
    Structure that defines CloudWatch metric to be used in target tracking scaling policy. You must specify either expression or metric_stat, but not both.
    returnData boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id str
    Short name for the metric used in target tracking scaling policy.
    expression str
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label str
    Human-readable label for this metric or expression.
    metric_stat PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStat
    Structure that defines CloudWatch metric to be used in target tracking scaling policy. You must specify either expression or metric_stat, but not both.
    return_data bool
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true
    id String
    Short name for the metric used in target tracking scaling policy.
    expression String
    Math expression used on the returned metric. You must specify either expression or metric_stat, but not both.
    label String
    Human-readable label for this metric or expression.
    metricStat Property Map
    Structure that defines CloudWatch metric to be used in target tracking scaling policy. You must specify either expression or metric_stat, but not both.
    returnData Boolean
    Boolean that indicates whether to return the timestamps and raw data values of this metric, the default is true

    PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimension, PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricDimensionArgs

    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.
    name string
    Name of the dimension.
    value string
    Value of the dimension.
    name str
    Name of the dimension.
    value str
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.

    PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStat, PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs

    Metric PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    Metric PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    Stat string
    Statistic of the metrics to return.
    Unit string
    Unit of the metrics to return.
    metric PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.
    metric PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat string
    Statistic of the metrics to return.
    unit string
    Unit of the metrics to return.
    metric PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetric
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat str
    Statistic of the metrics to return.
    unit str
    Unit of the metrics to return.
    metric Property Map
    Structure that defines the CloudWatch metric to return, including the metric name, namespace, and dimensions.
    stat String
    Statistic of the metrics to return.
    unit String
    Unit of the metrics to return.

    PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetric, PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs

    MetricName string
    Name of the metric.
    Namespace string
    Namespace of the metric.
    Dimensions []PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimension
    Dimensions of the metric.
    metricName string
    Name of the metric.
    namespace string
    Namespace of the metric.
    dimensions PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimension[]
    Dimensions of the metric.
    metricName String
    Name of the metric.
    namespace String
    Namespace of the metric.
    dimensions List<Property Map>
    Dimensions of the metric.

    PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimension, PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs

    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    Name string
    Name of the dimension.
    Value string
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.
    name string
    Name of the dimension.
    value string
    Value of the dimension.
    name str
    Name of the dimension.
    value str
    Value of the dimension.
    name String
    Name of the dimension.
    value String
    Value of the dimension.

    PolicyTargetTrackingConfigurationPredefinedMetricSpecification, PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs

    PredefinedMetricType string
    Metric type.
    ResourceLabel string
    Identifies the resource associated with the metric type.
    PredefinedMetricType string
    Metric type.
    ResourceLabel string
    Identifies the resource associated with the metric type.
    predefinedMetricType String
    Metric type.
    resourceLabel String
    Identifies the resource associated with the metric type.
    predefinedMetricType string
    Metric type.
    resourceLabel string
    Identifies the resource associated with the metric type.
    predefined_metric_type str
    Metric type.
    resource_label str
    Identifies the resource associated with the metric type.
    predefinedMetricType String
    Metric type.
    resourceLabel String
    Identifies the resource associated with the metric type.

    Import

    Using pulumi import, import AutoScaling scaling policy using the role autoscaling_group_name and name separated by /. For example:

    $ pulumi import aws:autoscaling/policy:Policy test-policy asg-name/policy-name
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    AWS Classic pulumi/pulumi-aws
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the aws Terraform Provider.
    aws logo

    Try AWS Native preview for resources not in the classic version.

    AWS Classic v6.40.0 published on Wednesday, Jun 12, 2024 by Pulumi