/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace AutoScalingPlans { namespace Model { /** *

Represents a predefined metric that can be used for dynamic scaling as part * of a target tracking scaling policy.

See Also:

AWS * API Reference

*/ class PredefinedScalingMetricSpecification { public: AWS_AUTOSCALINGPLANS_API PredefinedScalingMetricSpecification(); AWS_AUTOSCALINGPLANS_API PredefinedScalingMetricSpecification(Aws::Utils::Json::JsonView jsonValue); AWS_AUTOSCALINGPLANS_API PredefinedScalingMetricSpecification& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_AUTOSCALINGPLANS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The metric type. The ALBRequestCountPerTarget metric type * applies only to Auto Scaling groups, Spot Fleet requests, and ECS services.

*/ inline const ScalingMetricType& GetPredefinedScalingMetricType() const{ return m_predefinedScalingMetricType; } /** *

The metric type. The ALBRequestCountPerTarget metric type * applies only to Auto Scaling groups, Spot Fleet requests, and ECS services.

*/ inline bool PredefinedScalingMetricTypeHasBeenSet() const { return m_predefinedScalingMetricTypeHasBeenSet; } /** *

The metric type. The ALBRequestCountPerTarget metric type * applies only to Auto Scaling groups, Spot Fleet requests, and ECS services.

*/ inline void SetPredefinedScalingMetricType(const ScalingMetricType& value) { m_predefinedScalingMetricTypeHasBeenSet = true; m_predefinedScalingMetricType = value; } /** *

The metric type. The ALBRequestCountPerTarget metric type * applies only to Auto Scaling groups, Spot Fleet requests, and ECS services.

*/ inline void SetPredefinedScalingMetricType(ScalingMetricType&& value) { m_predefinedScalingMetricTypeHasBeenSet = true; m_predefinedScalingMetricType = std::move(value); } /** *

The metric type. The ALBRequestCountPerTarget metric type * applies only to Auto Scaling groups, Spot Fleet requests, and ECS services.

*/ inline PredefinedScalingMetricSpecification& WithPredefinedScalingMetricType(const ScalingMetricType& value) { SetPredefinedScalingMetricType(value); return *this;} /** *

The metric type. The ALBRequestCountPerTarget metric type * applies only to Auto Scaling groups, Spot Fleet requests, and ECS services.

*/ inline PredefinedScalingMetricSpecification& WithPredefinedScalingMetricType(ScalingMetricType&& value) { SetPredefinedScalingMetricType(std::move(value)); return *this;} /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline const Aws::String& GetResourceLabel() const{ return m_resourceLabel; } /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline bool ResourceLabelHasBeenSet() const { return m_resourceLabelHasBeenSet; } /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline void SetResourceLabel(const Aws::String& value) { m_resourceLabelHasBeenSet = true; m_resourceLabel = value; } /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline void SetResourceLabel(Aws::String&& value) { m_resourceLabelHasBeenSet = true; m_resourceLabel = std::move(value); } /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline void SetResourceLabel(const char* value) { m_resourceLabelHasBeenSet = true; m_resourceLabel.assign(value); } /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline PredefinedScalingMetricSpecification& WithResourceLabel(const Aws::String& value) { SetResourceLabel(value); return *this;} /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline PredefinedScalingMetricSpecification& WithResourceLabel(Aws::String&& value) { SetResourceLabel(std::move(value)); return *this;} /** *

Identifies the resource associated with the metric type. You can't specify a * resource label unless the metric type is ALBRequestCountPerTarget * and there is a target group for an Application Load Balancer attached to the * Auto Scaling group, Spot Fleet request, or ECS service.

You create the * resource label by appending the final portion of the load balancer ARN and the * final portion of the target group ARN into a single value, separated by a * forward slash (/). The format is * app/<load-balancer-name>/<load-balancer-id>/targetgroup/<target-group-name>/<target-group-id>, * where:

  • app/<load-balancer-name>/<load-balancer-id> * is the final portion of the load balancer ARN

  • *

    targetgroup/<target-group-name>/<target-group-id> is the final * portion of the target group ARN.

This is an example: * app/EC2Co-EcsEl-1TKLTMITMM0EO/f37c06a68c1748aa/targetgroup/EC2Co-Defau-LDNM7Q3ZH1ZN/6d4ea56ca2d6a18d.

*

To find the ARN for an Application Load Balancer, use the DescribeLoadBalancers * API operation. To find the ARN for the target group, use the DescribeTargetGroups * API operation.

*/ inline PredefinedScalingMetricSpecification& WithResourceLabel(const char* value) { SetResourceLabel(value); return *this;} private: ScalingMetricType m_predefinedScalingMetricType; bool m_predefinedScalingMetricTypeHasBeenSet = false; Aws::String m_resourceLabel; bool m_resourceLabelHasBeenSet = false; }; } // namespace Model } // namespace AutoScalingPlans } // namespace Aws