Class ScalingPlan


  • public class ScalingPlan
    extends com.pulumi.resources.CustomResource
    Manages an AWS Auto Scaling scaling plan. More information can be found in the [AWS Auto Scaling User Guide](https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-aws-auto-scaling.html). > **NOTE:** The AWS Auto Scaling service uses an AWS IAM service-linked role to manage predictive scaling of Amazon EC2 Auto Scaling groups. The service attempts to automatically create this role the first time a scaling plan with predictive scaling enabled is created. An `aws.iam.ServiceLinkedRole` resource can be used to manually manage this role. See the [AWS documentation](https://docs.aws.amazon.com/autoscaling/plans/userguide/aws-auto-scaling-service-linked-roles.html#create-service-linked-role-manual) for more details. ## Example Usage ### Basic Dynamic Scaling
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.AwsFunctions;
     import com.pulumi.aws.inputs.GetAvailabilityZonesArgs;
     import com.pulumi.aws.autoscaling.Group;
     import com.pulumi.aws.autoscaling.GroupArgs;
     import com.pulumi.aws.autoscaling.inputs.GroupTagArgs;
     import com.pulumi.aws.autoscalingplans.ScalingPlan;
     import com.pulumi.aws.autoscalingplans.ScalingPlanArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceTagFilterArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.FormatArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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) {
             final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
                 .build());
     
             var example = new Group("example", GroupArgs.builder()
                 .namePrefix("example")
                 .launchConfiguration(exampleAwsLaunchConfiguration.name())
                 .availabilityZones(available.names()[0])
                 .minSize(0)
                 .maxSize(3)
                 .tags(GroupTagArgs.builder()
                     .key("application")
                     .value("example")
                     .propagateAtLaunch(true)
                     .build())
                 .build());
     
             var exampleScalingPlan = new ScalingPlan("exampleScalingPlan", ScalingPlanArgs.builder()
                 .applicationSource(ScalingPlanApplicationSourceArgs.builder()
                     .tagFilters(ScalingPlanApplicationSourceTagFilterArgs.builder()
                         .key("application")
                         .values("example")
                         .build())
                     .build())
                 .scalingInstructions(ScalingPlanScalingInstructionArgs.builder()
                     .targetTrackingConfigurations(ScalingPlanScalingInstructionTargetTrackingConfigurationArgs.builder()
                         .predefinedScalingMetricSpecification(ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs.builder()
                             .predefinedScalingMetricType("ASGAverageCPUUtilization")
                             .build())
                         .targetValue(70.0)
                         .build())
                     .maxCapacity(3)
                     .minCapacity(0)
                     .resourceId(StdFunctions.format(FormatArgs.builder()
                         .input("autoScalingGroup/%s")
                         .args(example.name())
                         .build()).result())
                     .scalableDimension("autoscaling:autoScalingGroup:DesiredCapacity")
                     .serviceNamespace("autoscaling")
                     .build())
                 .name("example-dynamic-cost-optimization")
                 .build());
     
         }
     }
     
     
    ### Basic Predictive Scaling
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.AwsFunctions;
     import com.pulumi.aws.inputs.GetAvailabilityZonesArgs;
     import com.pulumi.aws.autoscaling.Group;
     import com.pulumi.aws.autoscaling.GroupArgs;
     import com.pulumi.aws.autoscaling.inputs.GroupTagArgs;
     import com.pulumi.aws.autoscalingplans.ScalingPlan;
     import com.pulumi.aws.autoscalingplans.ScalingPlanArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanApplicationSourceTagFilterArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationArgs;
     import com.pulumi.aws.autoscalingplans.inputs.ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.FormatArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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) {
             final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
                 .build());
     
             var example = new Group("example", GroupArgs.builder()
                 .namePrefix("example")
                 .launchConfiguration(exampleAwsLaunchConfiguration.name())
                 .availabilityZones(available.names()[0])
                 .minSize(0)
                 .maxSize(3)
                 .tags(GroupTagArgs.builder()
                     .key("application")
                     .value("example")
                     .propagateAtLaunch(true)
                     .build())
                 .build());
     
             var exampleScalingPlan = new ScalingPlan("exampleScalingPlan", ScalingPlanArgs.builder()
                 .applicationSource(ScalingPlanApplicationSourceArgs.builder()
                     .tagFilters(ScalingPlanApplicationSourceTagFilterArgs.builder()
                         .key("application")
                         .values("example")
                         .build())
                     .build())
                 .scalingInstructions(ScalingPlanScalingInstructionArgs.builder()
                     .predefinedLoadMetricSpecification(ScalingPlanScalingInstructionPredefinedLoadMetricSpecificationArgs.builder()
                         .predefinedLoadMetricType("ASGTotalCPUUtilization")
                         .build())
                     .targetTrackingConfigurations(ScalingPlanScalingInstructionTargetTrackingConfigurationArgs.builder()
                         .predefinedScalingMetricSpecification(ScalingPlanScalingInstructionTargetTrackingConfigurationPredefinedScalingMetricSpecificationArgs.builder()
                             .predefinedScalingMetricType("ASGAverageCPUUtilization")
                             .build())
                         .targetValue(70.0)
                         .build())
                     .disableDynamicScaling(true)
                     .maxCapacity(3)
                     .minCapacity(0)
                     .resourceId(StdFunctions.format(FormatArgs.builder()
                         .input("autoScalingGroup/%s")
                         .args(example.name())
                         .build()).result())
                     .scalableDimension("autoscaling:autoScalingGroup:DesiredCapacity")
                     .serviceNamespace("autoscaling")
                     .predictiveScalingMaxCapacityBehavior("SetForecastCapacityToMaxCapacity")
                     .predictiveScalingMode("ForecastAndScale")
                     .build())
                 .name("example-predictive-cost-optimization")
                 .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: ```sh $ pulumi import aws:autoscalingplans/scalingPlan:ScalingPlan example MyScale1 ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<ScalingPlanApplicationSource> applicationSource()  
      static ScalingPlan get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, ScalingPlanState state, com.pulumi.resources.CustomResourceOptions options)
      Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
      com.pulumi.core.Output<java.lang.String> name()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.util.List<ScalingPlanScalingInstruction>> scalingInstructions()  
      com.pulumi.core.Output<java.lang.Integer> scalingPlanVersion()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ScalingPlan

        public ScalingPlan​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • ScalingPlan

        public ScalingPlan​(java.lang.String name,
                           ScalingPlanArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • ScalingPlan

        public ScalingPlan​(java.lang.String name,
                           ScalingPlanArgs args,
                           @Nullable
                           com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • applicationSource

        public com.pulumi.core.Output<ScalingPlanApplicationSource> applicationSource()
        Returns:
        CloudFormation stack or set of tags. You can create one scaling plan per application source.
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        Name of the scaling plan. Names cannot contain vertical bars, colons, or forward slashes.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • scalingInstructions

        public com.pulumi.core.Output<java.util.List<ScalingPlanScalingInstruction>> scalingInstructions()
        Returns:
        Scaling instructions. More details can be found in the [AWS Auto Scaling API Reference](https://docs.aws.amazon.com/autoscaling/plans/APIReference/API_ScalingInstruction.html).
      • scalingPlanVersion

        public com.pulumi.core.Output<java.lang.Integer> scalingPlanVersion()
        Returns:
        The version number of the scaling plan. This value is always 1.
      • get

        public static ScalingPlan get​(java.lang.String name,
                                      com.pulumi.core.Output<java.lang.String> id,
                                      @Nullable
                                      ScalingPlanState state,
                                      @Nullable
                                      com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.