{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.AutoScalingPlans.Types.PredefinedLoadMetricSpecification -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.AutoScalingPlans.Types.PredefinedLoadMetricSpecification where import Amazonka.AutoScalingPlans.Types.LoadMetricType import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude -- | Represents a predefined metric that can be used for predictive scaling. -- -- After creating your scaling plan, you can use the AWS Auto Scaling -- console to visualize forecasts for the specified metric. For more -- information, see -- -- in the /AWS Auto Scaling User Guide/. -- -- /See:/ 'newPredefinedLoadMetricSpecification' smart constructor. data PredefinedLoadMetricSpecification = PredefinedLoadMetricSpecification' { -- | Identifies the resource associated with the metric type. You can\'t -- specify a resource label unless the metric type is -- @ALBTargetGroupRequestCount@ and there is a target group for an -- Application Load Balancer attached to the Auto Scaling group. -- -- 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\/\\/\\/targetgroup\/\\/\, -- where: -- -- - app\/\\/\ is the final portion -- of the load balancer ARN -- -- - targetgroup\/\\/\ 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 -- -- API operation. To find the ARN for the target group, use the -- -- API operation. resourceLabel :: Prelude.Maybe Prelude.Text, -- | The metric type. predefinedLoadMetricType :: LoadMetricType } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'PredefinedLoadMetricSpecification' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'resourceLabel', 'predefinedLoadMetricSpecification_resourceLabel' - Identifies the resource associated with the metric type. You can\'t -- specify a resource label unless the metric type is -- @ALBTargetGroupRequestCount@ and there is a target group for an -- Application Load Balancer attached to the Auto Scaling group. -- -- 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\/\\/\\/targetgroup\/\\/\, -- where: -- -- - app\/\\/\ is the final portion -- of the load balancer ARN -- -- - targetgroup\/\\/\ 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 -- -- API operation. To find the ARN for the target group, use the -- -- API operation. -- -- 'predefinedLoadMetricType', 'predefinedLoadMetricSpecification_predefinedLoadMetricType' - The metric type. newPredefinedLoadMetricSpecification :: -- | 'predefinedLoadMetricType' LoadMetricType -> PredefinedLoadMetricSpecification newPredefinedLoadMetricSpecification pPredefinedLoadMetricType_ = PredefinedLoadMetricSpecification' { resourceLabel = Prelude.Nothing, predefinedLoadMetricType = pPredefinedLoadMetricType_ } -- | Identifies the resource associated with the metric type. You can\'t -- specify a resource label unless the metric type is -- @ALBTargetGroupRequestCount@ and there is a target group for an -- Application Load Balancer attached to the Auto Scaling group. -- -- 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\/\\/\\/targetgroup\/\\/\, -- where: -- -- - app\/\\/\ is the final portion -- of the load balancer ARN -- -- - targetgroup\/\\/\ 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 -- -- API operation. To find the ARN for the target group, use the -- -- API operation. predefinedLoadMetricSpecification_resourceLabel :: Lens.Lens' PredefinedLoadMetricSpecification (Prelude.Maybe Prelude.Text) predefinedLoadMetricSpecification_resourceLabel = Lens.lens (\PredefinedLoadMetricSpecification' {resourceLabel} -> resourceLabel) (\s@PredefinedLoadMetricSpecification' {} a -> s {resourceLabel = a} :: PredefinedLoadMetricSpecification) -- | The metric type. predefinedLoadMetricSpecification_predefinedLoadMetricType :: Lens.Lens' PredefinedLoadMetricSpecification LoadMetricType predefinedLoadMetricSpecification_predefinedLoadMetricType = Lens.lens (\PredefinedLoadMetricSpecification' {predefinedLoadMetricType} -> predefinedLoadMetricType) (\s@PredefinedLoadMetricSpecification' {} a -> s {predefinedLoadMetricType = a} :: PredefinedLoadMetricSpecification) instance Data.FromJSON PredefinedLoadMetricSpecification where parseJSON = Data.withObject "PredefinedLoadMetricSpecification" ( \x -> PredefinedLoadMetricSpecification' Prelude.<$> (x Data..:? "ResourceLabel") Prelude.<*> (x Data..: "PredefinedLoadMetricType") ) instance Prelude.Hashable PredefinedLoadMetricSpecification where hashWithSalt _salt PredefinedLoadMetricSpecification' {..} = _salt `Prelude.hashWithSalt` resourceLabel `Prelude.hashWithSalt` predefinedLoadMetricType instance Prelude.NFData PredefinedLoadMetricSpecification where rnf PredefinedLoadMetricSpecification' {..} = Prelude.rnf resourceLabel `Prelude.seq` Prelude.rnf predefinedLoadMetricType instance Data.ToJSON PredefinedLoadMetricSpecification where toJSON PredefinedLoadMetricSpecification' {..} = Data.object ( Prelude.catMaybes [ ("ResourceLabel" Data..=) Prelude.<$> resourceLabel, Prelude.Just ( "PredefinedLoadMetricType" Data..= predefinedLoadMetricType ) ] )