ScalingRuleArgs

data class ScalingRuleArgs(val adjustmentType: Output<String>? = null, val adjustmentValue: Output<Int>? = null, val cooldown: Output<Int>? = null, val disableScaleIn: Output<Boolean>? = null, val estimatedInstanceWarmup: Output<Int>? = null, val metricName: Output<String>? = null, val scalingGroupId: Output<String>? = null, val scalingRuleName: Output<String>? = null, val scalingRuleType: Output<String>? = null, val stepAdjustments: Output<List<ScalingRuleStepAdjustmentArgs>>? = null, val targetValue: Output<Double>? = null) : ConvertibleToJava<ScalingRuleArgs>

Provides a ESS scaling rule resource. For information about ess scaling rule, see CreateScalingRule.

NOTE: Available since v1.39.0.

Example Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.ecs.inputs.GetImagesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.ecs.SecurityGroup;
import com.pulumi.alicloud.ecs.SecurityGroupArgs;
import com.pulumi.alicloud.ecs.SecurityGroupRule;
import com.pulumi.alicloud.ecs.SecurityGroupRuleArgs;
import com.pulumi.alicloud.ess.ScalingGroup;
import com.pulumi.alicloud.ess.ScalingGroupArgs;
import com.pulumi.alicloud.ess.ScalingConfiguration;
import com.pulumi.alicloud.ess.ScalingConfigurationArgs;
import com.pulumi.alicloud.ess.ScalingRule;
import com.pulumi.alicloud.ess.ScalingRuleArgs;
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) {
final var config = ctx.config();
final var name = config.get("name").orElse("terraform-example");
final var defaultZones = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableDiskCategory("cloud_efficiency")
.availableResourceCreation("VSwitch")
.build());
final var defaultInstanceTypes = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.availabilityZone(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.cpuCoreCount(2)
.memorySize(4)
.build());
final var defaultImages = EcsFunctions.getImages(GetImagesArgs.builder()
.nameRegex("^ubuntu_18.*64")
.mostRecent(true)
.owners("system")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.cidrBlock("172.16.0.0/16")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vpcId(defaultNetwork.id())
.cidrBlock("172.16.0.0/24")
.zoneId(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.vswitchName(name)
.build());
var defaultSecurityGroup = new SecurityGroup("defaultSecurityGroup", SecurityGroupArgs.builder()
.vpcId(defaultNetwork.id())
.build());
var defaultSecurityGroupRule = new SecurityGroupRule("defaultSecurityGroupRule", SecurityGroupRuleArgs.builder()
.type("ingress")
.ipProtocol("tcp")
.nicType("intranet")
.policy("accept")
.portRange("22/22")
.priority(1)
.securityGroupId(defaultSecurityGroup.id())
.cidrIp("172.16.0.0/24")
.build());
var defaultScalingGroup = new ScalingGroup("defaultScalingGroup", ScalingGroupArgs.builder()
.minSize(1)
.maxSize(1)
.scalingGroupName(name)
.vswitchIds(defaultSwitch.id())
.removalPolicies(
"OldestInstance",
"NewestInstance")
.build());
var defaultScalingConfiguration = new ScalingConfiguration("defaultScalingConfiguration", ScalingConfigurationArgs.builder()
.scalingGroupId(defaultScalingGroup.id())
.imageId(defaultImages.applyValue(getImagesResult -> getImagesResult.images()[0].id()))
.instanceType(defaultInstanceTypes.applyValue(getInstanceTypesResult -> getInstanceTypesResult.instanceTypes()[0].id()))
.securityGroupId(defaultSecurityGroup.id())
.forceDelete("true")
.build());
var defaultScalingRule = new ScalingRule("defaultScalingRule", ScalingRuleArgs.builder()
.scalingGroupId(defaultScalingGroup.id())
.adjustmentType("TotalCapacity")
.adjustmentValue(1)
.build());
}
}

Module Support

You can use to the existing autoscaling-rule module to create different type rules, alarm task and scheduled task one-click.

Import

ESS scaling rule can be imported using the id, e.g.

$ pulumi import alicloud:ess/scalingRule:ScalingRule example abc123456

Constructors

Link copied to clipboard
fun ScalingRuleArgs(adjustmentType: Output<String>? = null, adjustmentValue: Output<Int>? = null, cooldown: Output<Int>? = null, disableScaleIn: Output<Boolean>? = null, estimatedInstanceWarmup: Output<Int>? = null, metricName: Output<String>? = null, scalingGroupId: Output<String>? = null, scalingRuleName: Output<String>? = null, scalingRuleType: Output<String>? = null, stepAdjustments: Output<List<ScalingRuleStepAdjustmentArgs>>? = null, targetValue: Output<Double>? = null)

Functions

Link copied to clipboard
open override fun toJava(): ScalingRuleArgs

Properties

Link copied to clipboard
val adjustmentType: Output<String>? = null

Adjustment mode of a scaling rule. Optional values:

Link copied to clipboard
val adjustmentValue: Output<Int>? = null

The number of ECS instances to be adjusted in the scaling rule. This parameter is required and applicable only to simple scaling rules. The number of ECS instances to be adjusted in a single scaling activity cannot exceed 500. Value range:

Link copied to clipboard
val cooldown: Output<Int>? = null

The cooldown time of the scaling rule. This parameter is applicable only to simple scaling rules. Value range: 0, 86,400, in seconds. The default value is empty,if not set, the return value will be 0, which is the default value of integer.

Link copied to clipboard
val disableScaleIn: Output<Boolean>? = null

Indicates whether scale in by the target tracking policy is disabled. Default to false.

Link copied to clipboard
val estimatedInstanceWarmup: Output<Int>? = null

The estimated time, in seconds, until a newly launched instance will contribute CloudMonitor metrics. Default to 300.

Link copied to clipboard
val metricName: Output<String>? = null

A CloudMonitor metric name.

Link copied to clipboard
val scalingGroupId: Output<String>? = null

ID of the scaling group of a scaling rule.

Link copied to clipboard
val scalingRuleName: Output<String>? = null

Name shown for the scaling rule, which must contain 2-64 characters (English or Chinese), starting with numbers, English letters or Chinese characters, and can contain number, underscores _, hypens -, and decimal point .. If this parameter value is not specified, the default value is scaling rule id.

Link copied to clipboard
val scalingRuleType: Output<String>? = null

The scaling rule type, either "SimpleScalingRule", "TargetTrackingScalingRule", "StepScalingRule". Default to "SimpleScalingRule".

Link copied to clipboard

Steps for StepScalingRule. See step_adjustment below.

Link copied to clipboard
val targetValue: Output<Double>? = null

The target value for the metric.