Application Scaling Rule Args
data class ApplicationScalingRuleArgs(val appId: Output<String>? = null, val minReadyInstanceRatio: Output<Int>? = null, val minReadyInstances: Output<Int>? = null, val scalingRuleEnable: Output<Boolean>? = null, val scalingRuleMetric: Output<ApplicationScalingRuleScalingRuleMetricArgs>? = null, val scalingRuleName: Output<String>? = null, val scalingRuleTimer: Output<ApplicationScalingRuleScalingRuleTimerArgs>? = null, val scalingRuleType: Output<String>? = null) : ConvertibleToJava<ApplicationScalingRuleArgs>
Provides a Serverless App Engine (SAE) Application Scaling Rule resource. For information about Serverless App Engine (SAE) Application Scaling Rule and how to use it, see What is Application Scaling Rule.
NOTE: Available since v1.159.0.
Example Usage
Basic 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.GetRegionsArgs;
import com.pulumi.random.RandomInteger;
import com.pulumi.random.RandomIntegerArgs;
import com.pulumi.alicloud.inputs.GetZonesArgs;
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.sae.Namespace;
import com.pulumi.alicloud.sae.NamespaceArgs;
import com.pulumi.alicloud.sae.Application;
import com.pulumi.alicloud.sae.ApplicationArgs;
import com.pulumi.alicloud.sae.ApplicationScalingRule;
import com.pulumi.alicloud.sae.ApplicationScalingRuleArgs;
import com.pulumi.alicloud.sae.inputs.ApplicationScalingRuleScalingRuleTimerArgs;
import com.pulumi.alicloud.sae.inputs.ApplicationScalingRuleScalingRuleMetricArgs;
import com.pulumi.alicloud.sae.inputs.ApplicationScalingRuleScalingRuleMetricScaleUpRulesArgs;
import com.pulumi.alicloud.sae.inputs.ApplicationScalingRuleScalingRuleMetricScaleDownRulesArgs;
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("tf-example");
final var defaultRegions = AlicloudFunctions.getRegions(GetRegionsArgs.builder()
.current(true)
.build());
var defaultRandomInteger = new RandomInteger("defaultRandomInteger", RandomIntegerArgs.builder()
.max(99999)
.min(10000)
.build());
final var defaultZones = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableResourceCreation("VSwitch")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("10.4.0.0/16")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vswitchName(name)
.cidrBlock("10.4.0.0/24")
.vpcId(defaultNetwork.id())
.zoneId(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.build());
var defaultSecurityGroup = new SecurityGroup("defaultSecurityGroup", SecurityGroupArgs.builder()
.vpcId(defaultNetwork.id())
.build());
var defaultNamespace = new Namespace("defaultNamespace", NamespaceArgs.builder()
.namespaceId(defaultRandomInteger.result().applyValue(result -> String.format("%s:example%s", defaultRegions.applyValue(getRegionsResult -> getRegionsResult.regions()[0].id()),result)))
.namespaceName(name)
.namespaceDescription(name)
.enableMicroRegistration(false)
.build());
var defaultApplication = new Application("defaultApplication", ApplicationArgs.builder()
.appDescription(name)
.appName(name)
.namespaceId(defaultNamespace.id())
.imageUrl(String.format("registry-vpc.%s.aliyuncs.com/sae-demo-image/consumer:1.0", defaultRegions.applyValue(getRegionsResult -> getRegionsResult.regions()[0].id())))
.packageType("Image")
.securityGroupId(defaultSecurityGroup.id())
.vpcId(defaultNetwork.id())
.vswitchId(defaultSwitch.id())
.timezone("Asia/Beijing")
.replicas("5")
.cpu("500")
.memory("2048")
.build());
var defaultApplicationScalingRule = new ApplicationScalingRule("defaultApplicationScalingRule", ApplicationScalingRuleArgs.builder()
.appId(defaultApplication.id())
.scalingRuleName(name)
.scalingRuleEnable(true)
.scalingRuleType("mix")
.minReadyInstances("3")
.minReadyInstanceRatio("-1")
.scalingRuleTimer(ApplicationScalingRuleScalingRuleTimerArgs.builder()
.period("* * *")
.schedules(
ApplicationScalingRuleScalingRuleTimerScheduleArgs.builder()
.atTime("08:00")
.maxReplicas(10)
.minReplicas(3)
.build(),
ApplicationScalingRuleScalingRuleTimerScheduleArgs.builder()
.atTime("20:00")
.maxReplicas(50)
.minReplicas(3)
.build())
.build())
.scalingRuleMetric(ApplicationScalingRuleScalingRuleMetricArgs.builder()
.maxReplicas(50)
.minReplicas(3)
.metrics(
ApplicationScalingRuleScalingRuleMetricMetricArgs.builder()
.metricType("CPU")
.metricTargetAverageUtilization(20)
.build(),
ApplicationScalingRuleScalingRuleMetricMetricArgs.builder()
.metricType("MEMORY")
.metricTargetAverageUtilization(30)
.build(),
ApplicationScalingRuleScalingRuleMetricMetricArgs.builder()
.metricType("tcpActiveConn")
.metricTargetAverageUtilization(20)
.build())
.scaleUpRules(ApplicationScalingRuleScalingRuleMetricScaleUpRulesArgs.builder()
.step(10)
.disabled(false)
.stabilizationWindowSeconds(0)
.build())
.scaleDownRules(ApplicationScalingRuleScalingRuleMetricScaleDownRulesArgs.builder()
.step(10)
.disabled(false)
.stabilizationWindowSeconds(10)
.build())
.build())
.build());
}
}
Content copied to clipboard
Import
Serverless App Engine (SAE) Application Scaling Rule can be imported using the id, e.g.
$ pulumi import alicloud:sae/applicationScalingRule:ApplicationScalingRule example <app_id>:<scaling_rule_name>
Content copied to clipboard
Constructors
Link copied to clipboard
fun ApplicationScalingRuleArgs(appId: Output<String>? = null, minReadyInstanceRatio: Output<Int>? = null, minReadyInstances: Output<Int>? = null, scalingRuleEnable: Output<Boolean>? = null, scalingRuleMetric: Output<ApplicationScalingRuleScalingRuleMetricArgs>? = null, scalingRuleName: Output<String>? = null, scalingRuleTimer: Output<ApplicationScalingRuleScalingRuleTimerArgs>? = null, scalingRuleType: Output<String>? = null)
Functions
Properties
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
The name of a custom elastic scaling policy. In the application, the policy name cannot be repeated. It must start with a lowercase letter, and can only contain lowercase letters, numbers, and dashes (-), and no more than 32 characters. After the scaling policy is successfully created, the policy name cannot be modified.