Package com.pulumi.aws.appautoscaling
Class Policy
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.appautoscaling.Policy
-
public class Policy extends com.pulumi.resources.CustomResource
Provides an Application AutoScaling Policy resource. ## Example Usage ### DynamoDB Table Autoscaling <!--Start PulumiCodeChooser -->package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.appautoscaling.Target; import com.pulumi.aws.appautoscaling.TargetArgs; import com.pulumi.aws.appautoscaling.Policy; import com.pulumi.aws.appautoscaling.PolicyArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs; 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 dynamodbTableReadTarget = new Target("dynamodbTableReadTarget", TargetArgs.builder() .maxCapacity(100) .minCapacity(5) .resourceId("table/tableName") .scalableDimension("dynamodb:table:ReadCapacityUnits") .serviceNamespace("dynamodb") .build()); var dynamodbTableReadPolicy = new Policy("dynamodbTableReadPolicy", PolicyArgs.builder() .name(dynamodbTableReadTarget.resourceId().applyValue(resourceId -> String.format("DynamoDBReadCapacityUtilization:%s", resourceId))) .policyType("TargetTrackingScaling") .resourceId(dynamodbTableReadTarget.resourceId()) .scalableDimension(dynamodbTableReadTarget.scalableDimension()) .serviceNamespace(dynamodbTableReadTarget.serviceNamespace()) .targetTrackingScalingPolicyConfiguration(PolicyTargetTrackingScalingPolicyConfigurationArgs.builder() .predefinedMetricSpecification(PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs.builder() .predefinedMetricType("DynamoDBReadCapacityUtilization") .build()) .targetValue(70) .build()) .build()); } }
package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ecs.Service; import com.pulumi.aws.ecs.ServiceArgs; 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 ecsService = new Service("ecsService", ServiceArgs.builder() .name("serviceName") .cluster("clusterName") .taskDefinition("taskDefinitionFamily:1") .desiredCount(2) .build()); } }
package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.appautoscaling.Target; import com.pulumi.aws.appautoscaling.TargetArgs; import com.pulumi.aws.appautoscaling.Policy; import com.pulumi.aws.appautoscaling.PolicyArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs; 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 replicas = new Target("replicas", TargetArgs.builder() .serviceNamespace("rds") .scalableDimension("rds:cluster:ReadReplicaCount") .resourceId(String.format("cluster:%s", example.id())) .minCapacity(1) .maxCapacity(15) .build()); var replicasPolicy = new Policy("replicasPolicy", PolicyArgs.builder() .name("cpu-auto-scaling") .serviceNamespace(replicas.serviceNamespace()) .scalableDimension(replicas.scalableDimension()) .resourceId(replicas.resourceId()) .policyType("TargetTrackingScaling") .targetTrackingScalingPolicyConfiguration(PolicyTargetTrackingScalingPolicyConfigurationArgs.builder() .predefinedMetricSpecification(PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs.builder() .predefinedMetricType("RDSReaderAverageCPUUtilization") .build()) .targetValue(75) .scaleInCooldown(300) .scaleOutCooldown(300) .build()) .build()); } }
package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.appautoscaling.Target; import com.pulumi.aws.appautoscaling.TargetArgs; import com.pulumi.aws.appautoscaling.Policy; import com.pulumi.aws.appautoscaling.PolicyArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationArgs; 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 ecsTarget = new Target("ecsTarget", TargetArgs.builder() .maxCapacity(4) .minCapacity(1) .resourceId("service/clusterName/serviceName") .scalableDimension("ecs:service:DesiredCount") .serviceNamespace("ecs") .build()); var example = new Policy("example", PolicyArgs.builder() .name("foo") .policyType("TargetTrackingScaling") .resourceId(ecsTarget.resourceId()) .scalableDimension(ecsTarget.scalableDimension()) .serviceNamespace(ecsTarget.serviceNamespace()) .targetTrackingScalingPolicyConfiguration(PolicyTargetTrackingScalingPolicyConfigurationArgs.builder() .targetValue(100) .customizedMetricSpecification(PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationArgs.builder() .metrics( PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricArgs.builder() .label("Get the queue size (the number of messages waiting to be processed)") .id("m1") .metricStat(PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatArgs.builder() .metric(PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs.builder() .metricName("ApproximateNumberOfMessagesVisible") .namespace("AWS/SQS") .dimensions(PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder() .name("QueueName") .value("my-queue") .build()) .build()) .stat("Sum") .build()) .returnData(false) .build(), PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricArgs.builder() .label("Get the ECS running task count (the number of currently running tasks)") .id("m2") .metricStat(PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatArgs.builder() .metric(PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs.builder() .metricName("RunningTaskCount") .namespace("ECS/ContainerInsights") .dimensions( PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder() .name("ClusterName") .value("default") .build(), PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs.builder() .name("ServiceName") .value("web-app") .build()) .build()) .stat("Average") .build()) .returnData(false) .build(), PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricArgs.builder() .label("Calculate the backlog per instance") .id("e1") .expression("m1 / m2") .returnData(true) .build()) .build()) .build()) .build()); } }
package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.appautoscaling.Target; import com.pulumi.aws.appautoscaling.TargetArgs; import com.pulumi.aws.appautoscaling.Policy; import com.pulumi.aws.appautoscaling.PolicyArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationArgs; import com.pulumi.aws.appautoscaling.inputs.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs; 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 mskTarget = new Target("mskTarget", TargetArgs.builder() .serviceNamespace("kafka") .scalableDimension("kafka:broker-storage:VolumeSize") .resourceId(example.arn()) .minCapacity(1) .maxCapacity(8) .build()); var targets = new Policy("targets", PolicyArgs.builder() .name("storage-size-auto-scaling") .serviceNamespace(mskTarget.serviceNamespace()) .scalableDimension(mskTarget.scalableDimension()) .resourceId(mskTarget.resourceId()) .policyType("TargetTrackingScaling") .targetTrackingScalingPolicyConfiguration(PolicyTargetTrackingScalingPolicyConfigurationArgs.builder() .predefinedMetricSpecification(PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs.builder() .predefinedMetricType("KafkaBrokerStorageUtilization") .build()) .targetValue(55) .build()) .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.List<java.lang.String>>
alarmArns()
com.pulumi.core.Output<java.lang.String>
arn()
static Policy
get(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>
name()
com.pulumi.core.Output<java.util.Optional<java.lang.String>>
policyType()
com.pulumi.core.Output<java.lang.String>
resourceId()
com.pulumi.core.Output<java.lang.String>
scalableDimension()
com.pulumi.core.Output<java.lang.String>
serviceNamespace()
com.pulumi.core.Output<java.util.Optional<PolicyStepScalingPolicyConfiguration>>
stepScalingPolicyConfiguration()
com.pulumi.core.Output<java.util.Optional<PolicyTargetTrackingScalingPolicyConfiguration>>
targetTrackingScalingPolicyConfiguration()
-
-
-
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
-
alarmArns
public com.pulumi.core.Output<java.util.List<java.lang.String>> alarmArns()
- Returns:
- List of CloudWatch alarm ARNs associated with the scaling policy.
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN assigned by AWS to the scaling policy.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name of the policy. Must be between 1 and 255 characters in length.
-
policyType
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> policyType()
- Returns:
- Policy type. Valid values are `StepScaling` and `TargetTrackingScaling`. Defaults to `StepScaling`. Certain services only support only one policy type. For more information see the [Target Tracking Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) and [Step Scaling Policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) documentation.
-
resourceId
public com.pulumi.core.Output<java.lang.String> resourceId()
- Returns:
- Resource type and unique identifier string for the resource associated with the scaling policy. Documentation can be found in the `ResourceId` parameter at: [AWS Application Auto Scaling API Reference](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)
-
scalableDimension
public com.pulumi.core.Output<java.lang.String> scalableDimension()
- Returns:
- Scalable dimension of the scalable target. Documentation can be found in the `ScalableDimension` parameter at: [AWS Application Auto Scaling API Reference](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)
-
serviceNamespace
public com.pulumi.core.Output<java.lang.String> serviceNamespace()
- Returns:
- AWS service namespace of the scalable target. Documentation can be found in the `ServiceNamespace` parameter at: [AWS Application Auto Scaling API Reference](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html)
-
stepScalingPolicyConfiguration
public com.pulumi.core.Output<java.util.Optional<PolicyStepScalingPolicyConfiguration>> stepScalingPolicyConfiguration()
- Returns:
- Step scaling policy configuration, requires `policy_type = "StepScaling"` (default). See supported fields below.
-
targetTrackingScalingPolicyConfiguration
public com.pulumi.core.Output<java.util.Optional<PolicyTargetTrackingScalingPolicyConfiguration>> targetTrackingScalingPolicyConfiguration()
- Returns:
- Target tracking policy, requires `policy_type = "TargetTrackingScaling"`. See supported fields below.
-
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.
-
-