Package com.pulumi.aws.autoscalingplans
Class ScalingPlan
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.autoscalingplans.ScalingPlan
-
public class ScalingPlan extends com.pulumi.resources.CustomResourceManages 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
### Basic Predictive Scalingpackage 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()); } }
## Import Using `pulumi import`, import Auto Scaling scaling plans using the `name`. For example: ```sh $ pulumi import aws:autoscalingplans/scalingPlan:ScalingPlan example MyScale1 ```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()); } }
-
-
Constructor Summary
Constructors Constructor Description ScalingPlan(java.lang.String name)ScalingPlan(java.lang.String name, ScalingPlanArgs args)ScalingPlan(java.lang.String name, ScalingPlanArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<ScalingPlanApplicationSource>applicationSource()static ScalingPlanget(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()
-
-
-
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.
-
-