Package com.pulumi.aws.autoscaling
Class Policy
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.autoscaling.Policy
-
public class Policy extends com.pulumi.resources.CustomResourceProvides an AutoScaling Scaling Policy resource. > **NOTE:** You may want to omit `desiredCapacity` attribute from attached `aws.autoscaling.Group` when using Auto Scaling policies. It's good practice to pick either [manual](https://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-manual-scaling.html) or [dynamic](https://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-scale-based-on-demand.html) (policy-based) scaling. ## Example Usage
### Create target tracking scaling policy using metric mathpackage 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.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) { 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()); } }
### Create predictive scaling policy using customized metricspackage 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 com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs; import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs; import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs; import com.pulumi.aws.autoscaling.inputs.PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs; 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) { var example = new Policy("example", PolicyArgs.builder() .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder() .customizedMetricSpecification(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationArgs.builder() .metrics( PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs.builder() .metricStat(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs.builder() .metric(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs.builder() .dimensions(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder() .name("QueueName") .value("my-queue") .build()) .namespace("AWS/SQS") .metricName("ApproximateNumberOfMessagesVisible") .build()) .stat("Sum") .period(10) .build()) .label("Get the queue size (the number of messages waiting to be processed)") .id("m1") .returnData(false) .build(), PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs.builder() .metricStat(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatArgs.builder() .metric(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs.builder() .dimensions(PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder() .name("AutoScalingGroupName") .value("my-asg") .build()) .namespace("AWS/AutoScaling") .metricName("GroupInServiceInstances") .build()) .stat("Average") .period(10) .build()) .label("Get the group size (the number of InService instances)") .id("m2") .returnData(false) .build(), PolicyTargetTrackingConfigurationCustomizedMetricSpecificationMetricArgs.builder() .label("Calculate the backlog per instance") .id("e1") .expression("m1 / m2") .returnData(true) .build()) .build()) .targetValue(100.0) .build()) .autoscalingGroupName("my-test-asg") .name("foo") .policyType("TargetTrackingScaling") .build()); } }
### Create predictive scaling policy using customized scaling and predefined load metricpackage 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.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedLoadMetricSpecificationMetricDataQueryArgs; import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationArgs; import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedCapacityMetricSpecificationMetricDataQueryArgs; import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs; import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs; 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) { var example = new Policy("example", PolicyArgs.builder() .predictiveScalingConfiguration(PolicyPredictiveScalingConfigurationArgs.builder() .metricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationArgs.builder() .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()) .targetValue(10.0) .build()) .build()) .autoscalingGroupName("my-test-asg") .name("foo") .policyType("PredictiveScaling") .build()); } }
## Import ### Identity Schema #### Required * `autoscalingGroupName` (String) Name of the Auto Scaling group. * `name` (String) Name of the policy. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import AutoScaling Scaling Policies using `autoscalingGroupName` and `name` separated by a forward slash (`/`). For example: ```sh $ pulumi import aws:autoscaling/policy:Policy example example-asg/example-policy ```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 com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs; import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs; import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs; import com.pulumi.aws.autoscaling.inputs.PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs; 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) { var example = new Policy("example", PolicyArgs.builder() .predictiveScalingConfiguration(PolicyPredictiveScalingConfigurationArgs.builder() .metricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationArgs.builder() .predefinedLoadMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationPredefinedLoadMetricSpecificationArgs.builder() .predefinedMetricType("ASGTotalCPUUtilization") .resourceLabel("app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff") .build()) .customizedScalingMetricSpecification(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationArgs.builder() .metricDataQueries(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryArgs.builder() .metricStat(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatArgs.builder() .metric(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricArgs.builder() .dimensions(PolicyPredictiveScalingConfigurationMetricSpecificationCustomizedScalingMetricSpecificationMetricDataQueryMetricStatMetricDimensionArgs.builder() .name("AutoScalingGroupName") .value("my-test-asg") .build()) .metricName("CPUUtilization") .namespace("AWS/EC2") .build()) .stat("Average") .build()) .id("scaling") .build()) .build()) .targetValue(10.0) .build()) .build()) .autoscalingGroupName("my-test-asg") .name("foo") .policyType("PredictiveScaling") .build()); } }
-
-
Constructor Summary
Constructors Constructor Description Policy(java.lang.String name)Policy(java.lang.String name, PolicyArgs args)Policy(java.lang.String name, PolicyArgs 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<java.util.Optional<java.lang.String>>adjustmentType()com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.lang.String>autoscalingGroupName()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>cooldown()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>enabled()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>estimatedInstanceWarmup()static Policyget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, PolicyState 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>metricAggregationType()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>minAdjustmentMagnitude()com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.util.Optional<java.lang.String>>policyType()com.pulumi.core.Output<java.util.Optional<PolicyPredictiveScalingConfiguration>>predictiveScalingConfiguration()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>scalingAdjustment()com.pulumi.core.Output<java.util.Optional<java.util.List<PolicyStepAdjustment>>>stepAdjustments()com.pulumi.core.Output<java.util.Optional<PolicyTargetTrackingConfiguration>>targetTrackingConfiguration()
-
-
-
Constructor Detail
-
Policy
public Policy(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
Policy
public Policy(java.lang.String name, PolicyArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
Policy
public Policy(java.lang.String name, PolicyArgs 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
-
adjustmentType
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> adjustmentType()
- Returns:
- Whether the adjustment is an absolute number or a percentage of the current capacity. Valid values are `ChangeInCapacity`, `ExactCapacity`, and `PercentChangeInCapacity`.
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN assigned by AWS to the scaling policy.
-
autoscalingGroupName
public com.pulumi.core.Output<java.lang.String> autoscalingGroupName()
- Returns:
- Name of the Auto Scaling group.
-
cooldown
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> cooldown()
- Returns:
- Amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.
-
enabled
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> enabled()
- Returns:
- Whether the scaling policy is enabled or disabled. Default: `true`. The following argument is only available to "SimpleScaling" and "StepScaling" type policies:
-
estimatedInstanceWarmup
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> estimatedInstanceWarmup()
- Returns:
- 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
public com.pulumi.core.Output<java.lang.String> metricAggregationType()
- Returns:
- 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
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> minAdjustmentMagnitude()
- Returns:
- Minimum value to scale by when `adjustmentType` is set to `PercentChangeInCapacity`. The following arguments are only available to "SimpleScaling" type policies:
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name of the policy.
-
policyType
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> policyType()
- Returns:
- Policy type, either "SimpleScaling", "StepScaling", "TargetTrackingScaling", or "PredictiveScaling". If this value isn't provided, AWS will default to "SimpleScaling."
-
predictiveScalingConfiguration
public com.pulumi.core.Output<java.util.Optional<PolicyPredictiveScalingConfiguration>> predictiveScalingConfiguration()
- Returns:
- Predictive scaling policy configuration to use with Amazon EC2 Auto Scaling.
-
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.
-
scalingAdjustment
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> scalingAdjustment()
- Returns:
- Number of members by which to scale, when the adjustment bounds are breached. A positive value scales up. A negative value scales down.
-
stepAdjustments
public com.pulumi.core.Output<java.util.Optional<java.util.List<PolicyStepAdjustment>>> stepAdjustments()
- Returns:
- Set of adjustments that manage
group scaling. These have the following structure:
The following fields are available in step adjustments: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.PolicyStepAdjustmentArgs; 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) { var example = new Policy("example", PolicyArgs.builder() .stepAdjustments( PolicyStepAdjustmentArgs.builder() .scalingAdjustment(-1) .metricIntervalLowerBound("1") .metricIntervalUpperBound("2") .build(), PolicyStepAdjustmentArgs.builder() .scalingAdjustment(1) .metricIntervalLowerBound("2") .metricIntervalUpperBound("3") .build()) .build()); } }
-
targetTrackingConfiguration
public com.pulumi.core.Output<java.util.Optional<PolicyTargetTrackingConfiguration>> targetTrackingConfiguration()
- Returns:
- Target tracking policy. These have the following structure:
The following fields are available in target tracking configuration: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.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) { var example = new Policy("example", PolicyArgs.builder() .targetTrackingConfiguration(PolicyTargetTrackingConfigurationArgs.builder() .predefinedMetricSpecification(PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs.builder() .predefinedMetricType("ASGAverageCPUUtilization") .build()) .targetValue(40.0) .build()) .build()); } }
-
get
public static Policy get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable PolicyState 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.
-
-