github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/appautoscaling/policy.go (about) 1 // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. 2 // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** 3 4 package appautoscaling 5 6 import ( 7 "context" 8 "reflect" 9 10 "errors" 11 "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" 12 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 13 ) 14 15 // Provides an Application AutoScaling Policy resource. 16 // 17 // ## Example Usage 18 // 19 // ### DynamoDB Table Autoscaling 20 // 21 // <!--Start PulumiCodeChooser --> 22 // ```go 23 // package main 24 // 25 // import ( 26 // 27 // "fmt" 28 // 29 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/appautoscaling" 30 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 31 // 32 // ) 33 // 34 // func main() { 35 // pulumi.Run(func(ctx *pulumi.Context) error { 36 // dynamodbTableReadTarget, err := appautoscaling.NewTarget(ctx, "dynamodb_table_read_target", &appautoscaling.TargetArgs{ 37 // MaxCapacity: pulumi.Int(100), 38 // MinCapacity: pulumi.Int(5), 39 // ResourceId: pulumi.String("table/tableName"), 40 // ScalableDimension: pulumi.String("dynamodb:table:ReadCapacityUnits"), 41 // ServiceNamespace: pulumi.String("dynamodb"), 42 // }) 43 // if err != nil { 44 // return err 45 // } 46 // _, err = appautoscaling.NewPolicy(ctx, "dynamodb_table_read_policy", &appautoscaling.PolicyArgs{ 47 // Name: dynamodbTableReadTarget.ResourceId.ApplyT(func(resourceId string) (string, error) { 48 // return fmt.Sprintf("DynamoDBReadCapacityUtilization:%v", resourceId), nil 49 // }).(pulumi.StringOutput), 50 // PolicyType: pulumi.String("TargetTrackingScaling"), 51 // ResourceId: dynamodbTableReadTarget.ResourceId, 52 // ScalableDimension: dynamodbTableReadTarget.ScalableDimension, 53 // ServiceNamespace: dynamodbTableReadTarget.ServiceNamespace, 54 // TargetTrackingScalingPolicyConfiguration: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationArgs{ 55 // PredefinedMetricSpecification: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs{ 56 // PredefinedMetricType: pulumi.String("DynamoDBReadCapacityUtilization"), 57 // }, 58 // TargetValue: pulumi.Float64(70), 59 // }, 60 // }) 61 // if err != nil { 62 // return err 63 // } 64 // return nil 65 // }) 66 // } 67 // 68 // ``` 69 // <!--End PulumiCodeChooser --> 70 // 71 // ### ECS Service Autoscaling 72 // 73 // <!--Start PulumiCodeChooser --> 74 // ```go 75 // package main 76 // 77 // import ( 78 // 79 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/appautoscaling" 80 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 81 // 82 // ) 83 // 84 // func main() { 85 // pulumi.Run(func(ctx *pulumi.Context) error { 86 // ecsTarget, err := appautoscaling.NewTarget(ctx, "ecs_target", &appautoscaling.TargetArgs{ 87 // MaxCapacity: pulumi.Int(4), 88 // MinCapacity: pulumi.Int(1), 89 // ResourceId: pulumi.String("service/clusterName/serviceName"), 90 // ScalableDimension: pulumi.String("ecs:service:DesiredCount"), 91 // ServiceNamespace: pulumi.String("ecs"), 92 // }) 93 // if err != nil { 94 // return err 95 // } 96 // _, err = appautoscaling.NewPolicy(ctx, "ecs_policy", &appautoscaling.PolicyArgs{ 97 // Name: pulumi.String("scale-down"), 98 // PolicyType: pulumi.String("StepScaling"), 99 // ResourceId: ecsTarget.ResourceId, 100 // ScalableDimension: ecsTarget.ScalableDimension, 101 // ServiceNamespace: ecsTarget.ServiceNamespace, 102 // StepScalingPolicyConfiguration: &appautoscaling.PolicyStepScalingPolicyConfigurationArgs{ 103 // AdjustmentType: pulumi.String("ChangeInCapacity"), 104 // Cooldown: pulumi.Int(60), 105 // MetricAggregationType: pulumi.String("Maximum"), 106 // StepAdjustments: appautoscaling.PolicyStepScalingPolicyConfigurationStepAdjustmentArray{ 107 // &appautoscaling.PolicyStepScalingPolicyConfigurationStepAdjustmentArgs{ 108 // MetricIntervalUpperBound: pulumi.String("0"), 109 // ScalingAdjustment: -1, 110 // }, 111 // }, 112 // }, 113 // }) 114 // if err != nil { 115 // return err 116 // } 117 // return nil 118 // }) 119 // } 120 // 121 // ``` 122 // <!--End PulumiCodeChooser --> 123 // 124 // ### Preserve desired count when updating an autoscaled ECS Service 125 // 126 // <!--Start PulumiCodeChooser --> 127 // ```go 128 // package main 129 // 130 // import ( 131 // 132 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" 133 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 134 // 135 // ) 136 // 137 // func main() { 138 // pulumi.Run(func(ctx *pulumi.Context) error { 139 // _, err := ecs.NewService(ctx, "ecs_service", &ecs.ServiceArgs{ 140 // Name: pulumi.String("serviceName"), 141 // Cluster: pulumi.String("clusterName"), 142 // TaskDefinition: pulumi.String("taskDefinitionFamily:1"), 143 // DesiredCount: pulumi.Int(2), 144 // }) 145 // if err != nil { 146 // return err 147 // } 148 // return nil 149 // }) 150 // } 151 // 152 // ``` 153 // <!--End PulumiCodeChooser --> 154 // 155 // ### Aurora Read Replica Autoscaling 156 // 157 // <!--Start PulumiCodeChooser --> 158 // ```go 159 // package main 160 // 161 // import ( 162 // 163 // "fmt" 164 // 165 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/appautoscaling" 166 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 167 // 168 // ) 169 // 170 // func main() { 171 // pulumi.Run(func(ctx *pulumi.Context) error { 172 // replicas, err := appautoscaling.NewTarget(ctx, "replicas", &appautoscaling.TargetArgs{ 173 // ServiceNamespace: pulumi.String("rds"), 174 // ScalableDimension: pulumi.String("rds:cluster:ReadReplicaCount"), 175 // ResourceId: pulumi.String(fmt.Sprintf("cluster:%v", example.Id)), 176 // MinCapacity: pulumi.Int(1), 177 // MaxCapacity: pulumi.Int(15), 178 // }) 179 // if err != nil { 180 // return err 181 // } 182 // _, err = appautoscaling.NewPolicy(ctx, "replicas", &appautoscaling.PolicyArgs{ 183 // Name: pulumi.String("cpu-auto-scaling"), 184 // ServiceNamespace: replicas.ServiceNamespace, 185 // ScalableDimension: replicas.ScalableDimension, 186 // ResourceId: replicas.ResourceId, 187 // PolicyType: pulumi.String("TargetTrackingScaling"), 188 // TargetTrackingScalingPolicyConfiguration: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationArgs{ 189 // PredefinedMetricSpecification: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs{ 190 // PredefinedMetricType: pulumi.String("RDSReaderAverageCPUUtilization"), 191 // }, 192 // TargetValue: pulumi.Float64(75), 193 // ScaleInCooldown: pulumi.Int(300), 194 // ScaleOutCooldown: pulumi.Int(300), 195 // }, 196 // }) 197 // if err != nil { 198 // return err 199 // } 200 // return nil 201 // }) 202 // } 203 // 204 // ``` 205 // <!--End PulumiCodeChooser --> 206 // 207 // ### Create target tracking scaling policy using metric math 208 // 209 // <!--Start PulumiCodeChooser --> 210 // ```go 211 // package main 212 // 213 // import ( 214 // 215 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/appautoscaling" 216 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 217 // 218 // ) 219 // 220 // func main() { 221 // pulumi.Run(func(ctx *pulumi.Context) error { 222 // ecsTarget, err := appautoscaling.NewTarget(ctx, "ecs_target", &appautoscaling.TargetArgs{ 223 // MaxCapacity: pulumi.Int(4), 224 // MinCapacity: pulumi.Int(1), 225 // ResourceId: pulumi.String("service/clusterName/serviceName"), 226 // ScalableDimension: pulumi.String("ecs:service:DesiredCount"), 227 // ServiceNamespace: pulumi.String("ecs"), 228 // }) 229 // if err != nil { 230 // return err 231 // } 232 // _, err = appautoscaling.NewPolicy(ctx, "example", &appautoscaling.PolicyArgs{ 233 // Name: pulumi.String("foo"), 234 // PolicyType: pulumi.String("TargetTrackingScaling"), 235 // ResourceId: ecsTarget.ResourceId, 236 // ScalableDimension: ecsTarget.ScalableDimension, 237 // ServiceNamespace: ecsTarget.ServiceNamespace, 238 // TargetTrackingScalingPolicyConfiguration: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationArgs{ 239 // TargetValue: pulumi.Float64(100), 240 // CustomizedMetricSpecification: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationArgs{ 241 // Metrics: appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricArray{ 242 // &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricArgs{ 243 // Label: pulumi.String("Get the queue size (the number of messages waiting to be processed)"), 244 // Id: pulumi.String("m1"), 245 // MetricStat: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatArgs{ 246 // Metric: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs{ 247 // MetricName: pulumi.String("ApproximateNumberOfMessagesVisible"), 248 // Namespace: pulumi.String("AWS/SQS"), 249 // Dimensions: appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArray{ 250 // &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs{ 251 // Name: pulumi.String("QueueName"), 252 // Value: pulumi.String("my-queue"), 253 // }, 254 // }, 255 // }, 256 // Stat: pulumi.String("Sum"), 257 // }, 258 // ReturnData: pulumi.Bool(false), 259 // }, 260 // &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricArgs{ 261 // Label: pulumi.String("Get the ECS running task count (the number of currently running tasks)"), 262 // Id: pulumi.String("m2"), 263 // MetricStat: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatArgs{ 264 // Metric: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricArgs{ 265 // MetricName: pulumi.String("RunningTaskCount"), 266 // Namespace: pulumi.String("ECS/ContainerInsights"), 267 // Dimensions: appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArray{ 268 // &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs{ 269 // Name: pulumi.String("ClusterName"), 270 // Value: pulumi.String("default"), 271 // }, 272 // &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricMetricStatMetricDimensionArgs{ 273 // Name: pulumi.String("ServiceName"), 274 // Value: pulumi.String("web-app"), 275 // }, 276 // }, 277 // }, 278 // Stat: pulumi.String("Average"), 279 // }, 280 // ReturnData: pulumi.Bool(false), 281 // }, 282 // &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationCustomizedMetricSpecificationMetricArgs{ 283 // Label: pulumi.String("Calculate the backlog per instance"), 284 // Id: pulumi.String("e1"), 285 // Expression: pulumi.String("m1 / m2"), 286 // ReturnData: pulumi.Bool(true), 287 // }, 288 // }, 289 // }, 290 // }, 291 // }) 292 // if err != nil { 293 // return err 294 // } 295 // return nil 296 // }) 297 // } 298 // 299 // ``` 300 // <!--End PulumiCodeChooser --> 301 // 302 // ### MSK / Kafka Autoscaling 303 // 304 // <!--Start PulumiCodeChooser --> 305 // ```go 306 // package main 307 // 308 // import ( 309 // 310 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/appautoscaling" 311 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 312 // 313 // ) 314 // 315 // func main() { 316 // pulumi.Run(func(ctx *pulumi.Context) error { 317 // mskTarget, err := appautoscaling.NewTarget(ctx, "msk_target", &appautoscaling.TargetArgs{ 318 // ServiceNamespace: pulumi.String("kafka"), 319 // ScalableDimension: pulumi.String("kafka:broker-storage:VolumeSize"), 320 // ResourceId: pulumi.Any(example.Arn), 321 // MinCapacity: pulumi.Int(1), 322 // MaxCapacity: pulumi.Int(8), 323 // }) 324 // if err != nil { 325 // return err 326 // } 327 // _, err = appautoscaling.NewPolicy(ctx, "targets", &appautoscaling.PolicyArgs{ 328 // Name: pulumi.String("storage-size-auto-scaling"), 329 // ServiceNamespace: mskTarget.ServiceNamespace, 330 // ScalableDimension: mskTarget.ScalableDimension, 331 // ResourceId: mskTarget.ResourceId, 332 // PolicyType: pulumi.String("TargetTrackingScaling"), 333 // TargetTrackingScalingPolicyConfiguration: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationArgs{ 334 // PredefinedMetricSpecification: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs{ 335 // PredefinedMetricType: pulumi.String("KafkaBrokerStorageUtilization"), 336 // }, 337 // TargetValue: pulumi.Float64(55), 338 // }, 339 // }) 340 // if err != nil { 341 // return err 342 // } 343 // return nil 344 // }) 345 // } 346 // 347 // ``` 348 // <!--End PulumiCodeChooser --> 349 // 350 // ## Import 351 // 352 // Using `pulumi import`, import Application AutoScaling Policy using the `service-namespace` , `resource-id`, `scalable-dimension` and `policy-name` separated by `/`. For example: 353 // 354 // ```sh 355 // $ pulumi import aws:appautoscaling/policy:Policy test-policy service-namespace/resource-id/scalable-dimension/policy-name 356 // ``` 357 type Policy struct { 358 pulumi.CustomResourceState 359 360 // List of CloudWatch alarm ARNs associated with the scaling policy. 361 AlarmArns pulumi.StringArrayOutput `pulumi:"alarmArns"` 362 // ARN assigned by AWS to the scaling policy. 363 Arn pulumi.StringOutput `pulumi:"arn"` 364 // Name of the policy. Must be between 1 and 255 characters in length. 365 Name pulumi.StringOutput `pulumi:"name"` 366 // 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. 367 PolicyType pulumi.StringPtrOutput `pulumi:"policyType"` 368 // 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) 369 ResourceId pulumi.StringOutput `pulumi:"resourceId"` 370 // 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) 371 ScalableDimension pulumi.StringOutput `pulumi:"scalableDimension"` 372 // 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) 373 ServiceNamespace pulumi.StringOutput `pulumi:"serviceNamespace"` 374 // Step scaling policy configuration, requires `policyType = "StepScaling"` (default). See supported fields below. 375 StepScalingPolicyConfiguration PolicyStepScalingPolicyConfigurationPtrOutput `pulumi:"stepScalingPolicyConfiguration"` 376 // Target tracking policy, requires `policyType = "TargetTrackingScaling"`. See supported fields below. 377 TargetTrackingScalingPolicyConfiguration PolicyTargetTrackingScalingPolicyConfigurationPtrOutput `pulumi:"targetTrackingScalingPolicyConfiguration"` 378 } 379 380 // NewPolicy registers a new resource with the given unique name, arguments, and options. 381 func NewPolicy(ctx *pulumi.Context, 382 name string, args *PolicyArgs, opts ...pulumi.ResourceOption) (*Policy, error) { 383 if args == nil { 384 return nil, errors.New("missing one or more required arguments") 385 } 386 387 if args.ResourceId == nil { 388 return nil, errors.New("invalid value for required argument 'ResourceId'") 389 } 390 if args.ScalableDimension == nil { 391 return nil, errors.New("invalid value for required argument 'ScalableDimension'") 392 } 393 if args.ServiceNamespace == nil { 394 return nil, errors.New("invalid value for required argument 'ServiceNamespace'") 395 } 396 opts = internal.PkgResourceDefaultOpts(opts) 397 var resource Policy 398 err := ctx.RegisterResource("aws:appautoscaling/policy:Policy", name, args, &resource, opts...) 399 if err != nil { 400 return nil, err 401 } 402 return &resource, nil 403 } 404 405 // GetPolicy gets an existing Policy resource's state with the given name, ID, and optional 406 // state properties that are used to uniquely qualify the lookup (nil if not required). 407 func GetPolicy(ctx *pulumi.Context, 408 name string, id pulumi.IDInput, state *PolicyState, opts ...pulumi.ResourceOption) (*Policy, error) { 409 var resource Policy 410 err := ctx.ReadResource("aws:appautoscaling/policy:Policy", name, id, state, &resource, opts...) 411 if err != nil { 412 return nil, err 413 } 414 return &resource, nil 415 } 416 417 // Input properties used for looking up and filtering Policy resources. 418 type policyState struct { 419 // List of CloudWatch alarm ARNs associated with the scaling policy. 420 AlarmArns []string `pulumi:"alarmArns"` 421 // ARN assigned by AWS to the scaling policy. 422 Arn *string `pulumi:"arn"` 423 // Name of the policy. Must be between 1 and 255 characters in length. 424 Name *string `pulumi:"name"` 425 // 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. 426 PolicyType *string `pulumi:"policyType"` 427 // 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) 428 ResourceId *string `pulumi:"resourceId"` 429 // 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) 430 ScalableDimension *string `pulumi:"scalableDimension"` 431 // 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) 432 ServiceNamespace *string `pulumi:"serviceNamespace"` 433 // Step scaling policy configuration, requires `policyType = "StepScaling"` (default). See supported fields below. 434 StepScalingPolicyConfiguration *PolicyStepScalingPolicyConfiguration `pulumi:"stepScalingPolicyConfiguration"` 435 // Target tracking policy, requires `policyType = "TargetTrackingScaling"`. See supported fields below. 436 TargetTrackingScalingPolicyConfiguration *PolicyTargetTrackingScalingPolicyConfiguration `pulumi:"targetTrackingScalingPolicyConfiguration"` 437 } 438 439 type PolicyState struct { 440 // List of CloudWatch alarm ARNs associated with the scaling policy. 441 AlarmArns pulumi.StringArrayInput 442 // ARN assigned by AWS to the scaling policy. 443 Arn pulumi.StringPtrInput 444 // Name of the policy. Must be between 1 and 255 characters in length. 445 Name pulumi.StringPtrInput 446 // 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. 447 PolicyType pulumi.StringPtrInput 448 // 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) 449 ResourceId pulumi.StringPtrInput 450 // 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) 451 ScalableDimension pulumi.StringPtrInput 452 // 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) 453 ServiceNamespace pulumi.StringPtrInput 454 // Step scaling policy configuration, requires `policyType = "StepScaling"` (default). See supported fields below. 455 StepScalingPolicyConfiguration PolicyStepScalingPolicyConfigurationPtrInput 456 // Target tracking policy, requires `policyType = "TargetTrackingScaling"`. See supported fields below. 457 TargetTrackingScalingPolicyConfiguration PolicyTargetTrackingScalingPolicyConfigurationPtrInput 458 } 459 460 func (PolicyState) ElementType() reflect.Type { 461 return reflect.TypeOf((*policyState)(nil)).Elem() 462 } 463 464 type policyArgs struct { 465 // Name of the policy. Must be between 1 and 255 characters in length. 466 Name *string `pulumi:"name"` 467 // 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. 468 PolicyType *string `pulumi:"policyType"` 469 // 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) 470 ResourceId string `pulumi:"resourceId"` 471 // 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) 472 ScalableDimension string `pulumi:"scalableDimension"` 473 // 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) 474 ServiceNamespace string `pulumi:"serviceNamespace"` 475 // Step scaling policy configuration, requires `policyType = "StepScaling"` (default). See supported fields below. 476 StepScalingPolicyConfiguration *PolicyStepScalingPolicyConfiguration `pulumi:"stepScalingPolicyConfiguration"` 477 // Target tracking policy, requires `policyType = "TargetTrackingScaling"`. See supported fields below. 478 TargetTrackingScalingPolicyConfiguration *PolicyTargetTrackingScalingPolicyConfiguration `pulumi:"targetTrackingScalingPolicyConfiguration"` 479 } 480 481 // The set of arguments for constructing a Policy resource. 482 type PolicyArgs struct { 483 // Name of the policy. Must be between 1 and 255 characters in length. 484 Name pulumi.StringPtrInput 485 // 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. 486 PolicyType pulumi.StringPtrInput 487 // 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) 488 ResourceId pulumi.StringInput 489 // 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) 490 ScalableDimension pulumi.StringInput 491 // 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) 492 ServiceNamespace pulumi.StringInput 493 // Step scaling policy configuration, requires `policyType = "StepScaling"` (default). See supported fields below. 494 StepScalingPolicyConfiguration PolicyStepScalingPolicyConfigurationPtrInput 495 // Target tracking policy, requires `policyType = "TargetTrackingScaling"`. See supported fields below. 496 TargetTrackingScalingPolicyConfiguration PolicyTargetTrackingScalingPolicyConfigurationPtrInput 497 } 498 499 func (PolicyArgs) ElementType() reflect.Type { 500 return reflect.TypeOf((*policyArgs)(nil)).Elem() 501 } 502 503 type PolicyInput interface { 504 pulumi.Input 505 506 ToPolicyOutput() PolicyOutput 507 ToPolicyOutputWithContext(ctx context.Context) PolicyOutput 508 } 509 510 func (*Policy) ElementType() reflect.Type { 511 return reflect.TypeOf((**Policy)(nil)).Elem() 512 } 513 514 func (i *Policy) ToPolicyOutput() PolicyOutput { 515 return i.ToPolicyOutputWithContext(context.Background()) 516 } 517 518 func (i *Policy) ToPolicyOutputWithContext(ctx context.Context) PolicyOutput { 519 return pulumi.ToOutputWithContext(ctx, i).(PolicyOutput) 520 } 521 522 // PolicyArrayInput is an input type that accepts PolicyArray and PolicyArrayOutput values. 523 // You can construct a concrete instance of `PolicyArrayInput` via: 524 // 525 // PolicyArray{ PolicyArgs{...} } 526 type PolicyArrayInput interface { 527 pulumi.Input 528 529 ToPolicyArrayOutput() PolicyArrayOutput 530 ToPolicyArrayOutputWithContext(context.Context) PolicyArrayOutput 531 } 532 533 type PolicyArray []PolicyInput 534 535 func (PolicyArray) ElementType() reflect.Type { 536 return reflect.TypeOf((*[]*Policy)(nil)).Elem() 537 } 538 539 func (i PolicyArray) ToPolicyArrayOutput() PolicyArrayOutput { 540 return i.ToPolicyArrayOutputWithContext(context.Background()) 541 } 542 543 func (i PolicyArray) ToPolicyArrayOutputWithContext(ctx context.Context) PolicyArrayOutput { 544 return pulumi.ToOutputWithContext(ctx, i).(PolicyArrayOutput) 545 } 546 547 // PolicyMapInput is an input type that accepts PolicyMap and PolicyMapOutput values. 548 // You can construct a concrete instance of `PolicyMapInput` via: 549 // 550 // PolicyMap{ "key": PolicyArgs{...} } 551 type PolicyMapInput interface { 552 pulumi.Input 553 554 ToPolicyMapOutput() PolicyMapOutput 555 ToPolicyMapOutputWithContext(context.Context) PolicyMapOutput 556 } 557 558 type PolicyMap map[string]PolicyInput 559 560 func (PolicyMap) ElementType() reflect.Type { 561 return reflect.TypeOf((*map[string]*Policy)(nil)).Elem() 562 } 563 564 func (i PolicyMap) ToPolicyMapOutput() PolicyMapOutput { 565 return i.ToPolicyMapOutputWithContext(context.Background()) 566 } 567 568 func (i PolicyMap) ToPolicyMapOutputWithContext(ctx context.Context) PolicyMapOutput { 569 return pulumi.ToOutputWithContext(ctx, i).(PolicyMapOutput) 570 } 571 572 type PolicyOutput struct{ *pulumi.OutputState } 573 574 func (PolicyOutput) ElementType() reflect.Type { 575 return reflect.TypeOf((**Policy)(nil)).Elem() 576 } 577 578 func (o PolicyOutput) ToPolicyOutput() PolicyOutput { 579 return o 580 } 581 582 func (o PolicyOutput) ToPolicyOutputWithContext(ctx context.Context) PolicyOutput { 583 return o 584 } 585 586 // List of CloudWatch alarm ARNs associated with the scaling policy. 587 func (o PolicyOutput) AlarmArns() pulumi.StringArrayOutput { 588 return o.ApplyT(func(v *Policy) pulumi.StringArrayOutput { return v.AlarmArns }).(pulumi.StringArrayOutput) 589 } 590 591 // ARN assigned by AWS to the scaling policy. 592 func (o PolicyOutput) Arn() pulumi.StringOutput { 593 return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) 594 } 595 596 // Name of the policy. Must be between 1 and 255 characters in length. 597 func (o PolicyOutput) Name() pulumi.StringOutput { 598 return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) 599 } 600 601 // 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. 602 func (o PolicyOutput) PolicyType() pulumi.StringPtrOutput { 603 return o.ApplyT(func(v *Policy) pulumi.StringPtrOutput { return v.PolicyType }).(pulumi.StringPtrOutput) 604 } 605 606 // 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) 607 func (o PolicyOutput) ResourceId() pulumi.StringOutput { 608 return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.ResourceId }).(pulumi.StringOutput) 609 } 610 611 // 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) 612 func (o PolicyOutput) ScalableDimension() pulumi.StringOutput { 613 return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.ScalableDimension }).(pulumi.StringOutput) 614 } 615 616 // 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) 617 func (o PolicyOutput) ServiceNamespace() pulumi.StringOutput { 618 return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.ServiceNamespace }).(pulumi.StringOutput) 619 } 620 621 // Step scaling policy configuration, requires `policyType = "StepScaling"` (default). See supported fields below. 622 func (o PolicyOutput) StepScalingPolicyConfiguration() PolicyStepScalingPolicyConfigurationPtrOutput { 623 return o.ApplyT(func(v *Policy) PolicyStepScalingPolicyConfigurationPtrOutput { return v.StepScalingPolicyConfiguration }).(PolicyStepScalingPolicyConfigurationPtrOutput) 624 } 625 626 // Target tracking policy, requires `policyType = "TargetTrackingScaling"`. See supported fields below. 627 func (o PolicyOutput) TargetTrackingScalingPolicyConfiguration() PolicyTargetTrackingScalingPolicyConfigurationPtrOutput { 628 return o.ApplyT(func(v *Policy) PolicyTargetTrackingScalingPolicyConfigurationPtrOutput { 629 return v.TargetTrackingScalingPolicyConfiguration 630 }).(PolicyTargetTrackingScalingPolicyConfigurationPtrOutput) 631 } 632 633 type PolicyArrayOutput struct{ *pulumi.OutputState } 634 635 func (PolicyArrayOutput) ElementType() reflect.Type { 636 return reflect.TypeOf((*[]*Policy)(nil)).Elem() 637 } 638 639 func (o PolicyArrayOutput) ToPolicyArrayOutput() PolicyArrayOutput { 640 return o 641 } 642 643 func (o PolicyArrayOutput) ToPolicyArrayOutputWithContext(ctx context.Context) PolicyArrayOutput { 644 return o 645 } 646 647 func (o PolicyArrayOutput) Index(i pulumi.IntInput) PolicyOutput { 648 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Policy { 649 return vs[0].([]*Policy)[vs[1].(int)] 650 }).(PolicyOutput) 651 } 652 653 type PolicyMapOutput struct{ *pulumi.OutputState } 654 655 func (PolicyMapOutput) ElementType() reflect.Type { 656 return reflect.TypeOf((*map[string]*Policy)(nil)).Elem() 657 } 658 659 func (o PolicyMapOutput) ToPolicyMapOutput() PolicyMapOutput { 660 return o 661 } 662 663 func (o PolicyMapOutput) ToPolicyMapOutputWithContext(ctx context.Context) PolicyMapOutput { 664 return o 665 } 666 667 func (o PolicyMapOutput) MapIndex(k pulumi.StringInput) PolicyOutput { 668 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Policy { 669 return vs[0].(map[string]*Policy)[vs[1].(string)] 670 }).(PolicyOutput) 671 } 672 673 func init() { 674 pulumi.RegisterInputType(reflect.TypeOf((*PolicyInput)(nil)).Elem(), &Policy{}) 675 pulumi.RegisterInputType(reflect.TypeOf((*PolicyArrayInput)(nil)).Elem(), PolicyArray{}) 676 pulumi.RegisterInputType(reflect.TypeOf((*PolicyMapInput)(nil)).Elem(), PolicyMap{}) 677 pulumi.RegisterOutputType(PolicyOutput{}) 678 pulumi.RegisterOutputType(PolicyArrayOutput{}) 679 pulumi.RegisterOutputType(PolicyMapOutput{}) 680 }