package awsapplicationautoscaling import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/aws-cdk-go/awscdk/v2/awscloudwatch" ) // Properties for a Target Tracking policy that include the metric but exclude the target. // // Example: // import "github.com/aws/aws-cdk-go/awscdk" // // var code code // // // handler := lambda.NewFunction(this, jsii.String("MyFunction"), &FunctionProps{ // Runtime: lambda.Runtime_PYTHON_3_7(), // Handler: jsii.String("index.handler"), // Code: Code, // // ReservedConcurrentExecutions: jsii.Number(2), // }) // // fnVer := handler.currentVersion // // target := appscaling.NewScalableTarget(this, jsii.String("ScalableTarget"), &ScalableTargetProps{ // ServiceNamespace: appscaling.ServiceNamespace_LAMBDA, // MaxCapacity: jsii.Number(100), // MinCapacity: jsii.Number(10), // ResourceId: fmt.Sprintf("function:%v:%v", handler.FunctionName, fnVer.Version), // ScalableDimension: jsii.String("lambda:function:ProvisionedConcurrency"), // }) // // target.ScaleToTrackMetric(jsii.String("PceTracking"), &BasicTargetTrackingScalingPolicyProps{ // TargetValue: jsii.Number(0.9), // PredefinedMetric: appscaling.PredefinedMetric_LAMBDA_PROVISIONED_CONCURRENCY_UTILIZATION, // }) // type BasicTargetTrackingScalingPolicyProps struct { // Indicates whether scale in by the target tracking policy is disabled. // // If the value is true, scale in is disabled and the target tracking policy // won't remove capacity from the scalable resource. Otherwise, scale in is // enabled and the target tracking policy can remove capacity from the // scalable resource. DisableScaleIn *bool `field:"optional" json:"disableScaleIn" yaml:"disableScaleIn"` // A name for the scaling policy. PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"` // Period after a scale in activity completes before another scale in activity can start. ScaleInCooldown awscdk.Duration `field:"optional" json:"scaleInCooldown" yaml:"scaleInCooldown"` // Period after a scale out activity completes before another scale out activity can start. ScaleOutCooldown awscdk.Duration `field:"optional" json:"scaleOutCooldown" yaml:"scaleOutCooldown"` // The target value for the metric. TargetValue *float64 `field:"required" json:"targetValue" yaml:"targetValue"` // A custom metric for application autoscaling. // // The metric must track utilization. Scaling out will happen if the metric is higher than // the target value, scaling in will happen in the metric is lower than the target value. // // Exactly one of customMetric or predefinedMetric must be specified. CustomMetric awscloudwatch.IMetric `field:"optional" json:"customMetric" yaml:"customMetric"` // A predefined metric for application autoscaling. // // The metric must track utilization. Scaling out will happen if the metric is higher than // the target value, scaling in will happen in the metric is lower than the target value. // // Exactly one of customMetric or predefinedMetric must be specified. PredefinedMetric PredefinedMetric `field:"optional" json:"predefinedMetric" yaml:"predefinedMetric"` // Identify the resource associated with the metric type. // // Only used for predefined metric ALBRequestCountPerTarget. // // Example value: `app///targetgroup//`. ResourceLabel *string `field:"optional" json:"resourceLabel" yaml:"resourceLabel"` }