-
Notifications
You must be signed in to change notification settings - Fork 17
/
ScalableTargetProps.go
76 lines (73 loc) · 3.08 KB
/
ScalableTargetProps.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package awsapplicationautoscaling
import (
"github.com/aws/aws-cdk-go/awscdk/awsiam"
)
// Properties for a scalable 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,
// })
//
// Experimental.
type ScalableTargetProps struct {
// The maximum value that Application Auto Scaling can use to scale a target during a scaling activity.
// Experimental.
MaxCapacity *float64 `field:"required" json:"maxCapacity" yaml:"maxCapacity"`
// The minimum value that Application Auto Scaling can use to scale a target during a scaling activity.
// Experimental.
MinCapacity *float64 `field:"required" json:"minCapacity" yaml:"minCapacity"`
// The resource identifier to associate with this scalable target.
//
// This string consists of the resource type and unique identifier.
//
// Example value: `service/ecsStack-MyECSCluster-AB12CDE3F4GH/ecsStack-MyECSService-AB12CDE3F4GH`.
// See: https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html
//
// Experimental.
ResourceId *string `field:"required" json:"resourceId" yaml:"resourceId"`
// The scalable dimension that's associated with the scalable target.
//
// Specify the service namespace, resource type, and scaling property.
//
// Example value: `ecs:service:DesiredCount`.
// See: https://docs.aws.amazon.com/autoscaling/application/APIReference/API_ScalingPolicy.html
//
// Experimental.
ScalableDimension *string `field:"required" json:"scalableDimension" yaml:"scalableDimension"`
// The namespace of the AWS service that provides the resource or custom-resource for a resource provided by your own application or service.
//
// For valid AWS service namespace values, see the RegisterScalableTarget
// action in the Application Auto Scaling API Reference.
// See: https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html
//
// Experimental.
ServiceNamespace ServiceNamespace `field:"required" json:"serviceNamespace" yaml:"serviceNamespace"`
// Role that allows Application Auto Scaling to modify your scalable target.
// Experimental.
Role awsiam.IRole `field:"optional" json:"role" yaml:"role"`
}