{-# 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.ELBV2.Types.TargetGroupAttribute -- Copyright : (c) 2013-2021 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.ELBV2.Types.TargetGroupAttribute where import qualified Amazonka.Core as Core import qualified Amazonka.Lens as Lens import qualified Amazonka.Prelude as Prelude -- | Information about a target group attribute. -- -- /See:/ 'newTargetGroupAttribute' smart constructor. data TargetGroupAttribute = TargetGroupAttribute' { -- | The value of the attribute. TargetGroupAttribute -> Maybe Text value :: Prelude.Maybe Prelude.Text, -- | The name of the attribute. -- -- The following attribute is supported by all load balancers: -- -- - @deregistration_delay.timeout_seconds@ - The amount of time, in -- seconds, for Elastic Load Balancing to wait before changing the -- state of a deregistering target from @draining@ to @unused@. The -- range is 0-3600 seconds. The default value is 300 seconds. If the -- target is a Lambda function, this attribute is not supported. -- -- The following attributes are supported by both Application Load -- Balancers and Network Load Balancers: -- -- - @stickiness.enabled@ - Indicates whether sticky sessions are -- enabled. The value is @true@ or @false@. The default is @false@. -- -- - @stickiness.type@ - The type of sticky sessions. The possible values -- are @lb_cookie@ and @app_cookie@ for Application Load Balancers or -- @source_ip@ for Network Load Balancers. -- -- The following attributes are supported only if the load balancer is an -- Application Load Balancer and the target is an instance or an IP -- address: -- -- - @load_balancing.algorithm.type@ - The load balancing algorithm -- determines how the load balancer selects targets when routing -- requests. The value is @round_robin@ or -- @least_outstanding_requests@. The default is @round_robin@. -- -- - @slow_start.duration_seconds@ - The time period, in seconds, during -- which a newly registered target receives an increasing share of the -- traffic to the target group. After this time period ends, the target -- receives its full share of traffic. The range is 30-900 seconds (15 -- minutes). The default is 0 seconds (disabled). -- -- - @stickiness.app_cookie.cookie_name@ - Indicates the name of the -- application-based cookie. Names that start with the following -- prefixes are not allowed: @AWSALB@, @AWSALBAPP@, and @AWSALBTG@; -- they\'re reserved for use by the load balancer. -- -- - @stickiness.app_cookie.duration_seconds@ - The time period, in -- seconds, during which requests from a client should be routed to the -- same target. After this time period expires, the application-based -- cookie is considered stale. The range is 1 second to 1 week (604800 -- seconds). The default value is 1 day (86400 seconds). -- -- - @stickiness.lb_cookie.duration_seconds@ - The time period, in -- seconds, during which requests from a client should be routed to the -- same target. After this time period expires, the load -- balancer-generated cookie is considered stale. The range is 1 second -- to 1 week (604800 seconds). The default value is 1 day (86400 -- seconds). -- -- The following attribute is supported only if the load balancer is an -- Application Load Balancer and the target is a Lambda function: -- -- - @lambda.multi_value_headers.enabled@ - Indicates whether the request -- and response headers that are exchanged between the load balancer -- and the Lambda function include arrays of values or strings. The -- value is @true@ or @false@. The default is @false@. If the value is -- @false@ and the request contains a duplicate header field name or -- query parameter key, the load balancer uses the last value sent by -- the client. -- -- The following attributes are supported only by Network Load Balancers: -- -- - @deregistration_delay.connection_termination.enabled@ - Indicates -- whether the load balancer terminates connections at the end of the -- deregistration timeout. The value is @true@ or @false@. The default -- is @false@. -- -- - @preserve_client_ip.enabled@ - Indicates whether client IP -- preservation is enabled. The value is @true@ or @false@. The default -- is disabled if the target group type is IP address and the target -- group protocol is TCP or TLS. Otherwise, the default is enabled. -- Client IP preservation cannot be disabled for UDP and TCP_UDP target -- groups. -- -- - @proxy_protocol_v2.enabled@ - Indicates whether Proxy Protocol -- version 2 is enabled. The value is @true@ or @false@. The default is -- @false@. TargetGroupAttribute -> Maybe Text key :: Prelude.Maybe Prelude.Text } deriving (TargetGroupAttribute -> TargetGroupAttribute -> Bool (TargetGroupAttribute -> TargetGroupAttribute -> Bool) -> (TargetGroupAttribute -> TargetGroupAttribute -> Bool) -> Eq TargetGroupAttribute forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: TargetGroupAttribute -> TargetGroupAttribute -> Bool $c/= :: TargetGroupAttribute -> TargetGroupAttribute -> Bool == :: TargetGroupAttribute -> TargetGroupAttribute -> Bool $c== :: TargetGroupAttribute -> TargetGroupAttribute -> Bool Prelude.Eq, ReadPrec [TargetGroupAttribute] ReadPrec TargetGroupAttribute Int -> ReadS TargetGroupAttribute ReadS [TargetGroupAttribute] (Int -> ReadS TargetGroupAttribute) -> ReadS [TargetGroupAttribute] -> ReadPrec TargetGroupAttribute -> ReadPrec [TargetGroupAttribute] -> Read TargetGroupAttribute forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [TargetGroupAttribute] $creadListPrec :: ReadPrec [TargetGroupAttribute] readPrec :: ReadPrec TargetGroupAttribute $creadPrec :: ReadPrec TargetGroupAttribute readList :: ReadS [TargetGroupAttribute] $creadList :: ReadS [TargetGroupAttribute] readsPrec :: Int -> ReadS TargetGroupAttribute $creadsPrec :: Int -> ReadS TargetGroupAttribute Prelude.Read, Int -> TargetGroupAttribute -> ShowS [TargetGroupAttribute] -> ShowS TargetGroupAttribute -> String (Int -> TargetGroupAttribute -> ShowS) -> (TargetGroupAttribute -> String) -> ([TargetGroupAttribute] -> ShowS) -> Show TargetGroupAttribute forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [TargetGroupAttribute] -> ShowS $cshowList :: [TargetGroupAttribute] -> ShowS show :: TargetGroupAttribute -> String $cshow :: TargetGroupAttribute -> String showsPrec :: Int -> TargetGroupAttribute -> ShowS $cshowsPrec :: Int -> TargetGroupAttribute -> ShowS Prelude.Show, (forall x. TargetGroupAttribute -> Rep TargetGroupAttribute x) -> (forall x. Rep TargetGroupAttribute x -> TargetGroupAttribute) -> Generic TargetGroupAttribute forall x. Rep TargetGroupAttribute x -> TargetGroupAttribute forall x. TargetGroupAttribute -> Rep TargetGroupAttribute x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep TargetGroupAttribute x -> TargetGroupAttribute $cfrom :: forall x. TargetGroupAttribute -> Rep TargetGroupAttribute x Prelude.Generic) -- | -- Create a value of 'TargetGroupAttribute' with all optional fields omitted. -- -- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'value', 'targetGroupAttribute_value' - The value of the attribute. -- -- 'key', 'targetGroupAttribute_key' - The name of the attribute. -- -- The following attribute is supported by all load balancers: -- -- - @deregistration_delay.timeout_seconds@ - The amount of time, in -- seconds, for Elastic Load Balancing to wait before changing the -- state of a deregistering target from @draining@ to @unused@. The -- range is 0-3600 seconds. The default value is 300 seconds. If the -- target is a Lambda function, this attribute is not supported. -- -- The following attributes are supported by both Application Load -- Balancers and Network Load Balancers: -- -- - @stickiness.enabled@ - Indicates whether sticky sessions are -- enabled. The value is @true@ or @false@. The default is @false@. -- -- - @stickiness.type@ - The type of sticky sessions. The possible values -- are @lb_cookie@ and @app_cookie@ for Application Load Balancers or -- @source_ip@ for Network Load Balancers. -- -- The following attributes are supported only if the load balancer is an -- Application Load Balancer and the target is an instance or an IP -- address: -- -- - @load_balancing.algorithm.type@ - The load balancing algorithm -- determines how the load balancer selects targets when routing -- requests. The value is @round_robin@ or -- @least_outstanding_requests@. The default is @round_robin@. -- -- - @slow_start.duration_seconds@ - The time period, in seconds, during -- which a newly registered target receives an increasing share of the -- traffic to the target group. After this time period ends, the target -- receives its full share of traffic. The range is 30-900 seconds (15 -- minutes). The default is 0 seconds (disabled). -- -- - @stickiness.app_cookie.cookie_name@ - Indicates the name of the -- application-based cookie. Names that start with the following -- prefixes are not allowed: @AWSALB@, @AWSALBAPP@, and @AWSALBTG@; -- they\'re reserved for use by the load balancer. -- -- - @stickiness.app_cookie.duration_seconds@ - The time period, in -- seconds, during which requests from a client should be routed to the -- same target. After this time period expires, the application-based -- cookie is considered stale. The range is 1 second to 1 week (604800 -- seconds). The default value is 1 day (86400 seconds). -- -- - @stickiness.lb_cookie.duration_seconds@ - The time period, in -- seconds, during which requests from a client should be routed to the -- same target. After this time period expires, the load -- balancer-generated cookie is considered stale. The range is 1 second -- to 1 week (604800 seconds). The default value is 1 day (86400 -- seconds). -- -- The following attribute is supported only if the load balancer is an -- Application Load Balancer and the target is a Lambda function: -- -- - @lambda.multi_value_headers.enabled@ - Indicates whether the request -- and response headers that are exchanged between the load balancer -- and the Lambda function include arrays of values or strings. The -- value is @true@ or @false@. The default is @false@. If the value is -- @false@ and the request contains a duplicate header field name or -- query parameter key, the load balancer uses the last value sent by -- the client. -- -- The following attributes are supported only by Network Load Balancers: -- -- - @deregistration_delay.connection_termination.enabled@ - Indicates -- whether the load balancer terminates connections at the end of the -- deregistration timeout. The value is @true@ or @false@. The default -- is @false@. -- -- - @preserve_client_ip.enabled@ - Indicates whether client IP -- preservation is enabled. The value is @true@ or @false@. The default -- is disabled if the target group type is IP address and the target -- group protocol is TCP or TLS. Otherwise, the default is enabled. -- Client IP preservation cannot be disabled for UDP and TCP_UDP target -- groups. -- -- - @proxy_protocol_v2.enabled@ - Indicates whether Proxy Protocol -- version 2 is enabled. The value is @true@ or @false@. The default is -- @false@. newTargetGroupAttribute :: TargetGroupAttribute newTargetGroupAttribute :: TargetGroupAttribute newTargetGroupAttribute = TargetGroupAttribute' :: Maybe Text -> Maybe Text -> TargetGroupAttribute TargetGroupAttribute' { $sel:value:TargetGroupAttribute' :: Maybe Text value = Maybe Text forall a. Maybe a Prelude.Nothing, $sel:key:TargetGroupAttribute' :: Maybe Text key = Maybe Text forall a. Maybe a Prelude.Nothing } -- | The value of the attribute. targetGroupAttribute_value :: Lens.Lens' TargetGroupAttribute (Prelude.Maybe Prelude.Text) targetGroupAttribute_value :: (Maybe Text -> f (Maybe Text)) -> TargetGroupAttribute -> f TargetGroupAttribute targetGroupAttribute_value = (TargetGroupAttribute -> Maybe Text) -> (TargetGroupAttribute -> Maybe Text -> TargetGroupAttribute) -> Lens TargetGroupAttribute TargetGroupAttribute (Maybe Text) (Maybe Text) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\TargetGroupAttribute' {Maybe Text value :: Maybe Text $sel:value:TargetGroupAttribute' :: TargetGroupAttribute -> Maybe Text value} -> Maybe Text value) (\s :: TargetGroupAttribute s@TargetGroupAttribute' {} Maybe Text a -> TargetGroupAttribute s {$sel:value:TargetGroupAttribute' :: Maybe Text value = Maybe Text a} :: TargetGroupAttribute) -- | The name of the attribute. -- -- The following attribute is supported by all load balancers: -- -- - @deregistration_delay.timeout_seconds@ - The amount of time, in -- seconds, for Elastic Load Balancing to wait before changing the -- state of a deregistering target from @draining@ to @unused@. The -- range is 0-3600 seconds. The default value is 300 seconds. If the -- target is a Lambda function, this attribute is not supported. -- -- The following attributes are supported by both Application Load -- Balancers and Network Load Balancers: -- -- - @stickiness.enabled@ - Indicates whether sticky sessions are -- enabled. The value is @true@ or @false@. The default is @false@. -- -- - @stickiness.type@ - The type of sticky sessions. The possible values -- are @lb_cookie@ and @app_cookie@ for Application Load Balancers or -- @source_ip@ for Network Load Balancers. -- -- The following attributes are supported only if the load balancer is an -- Application Load Balancer and the target is an instance or an IP -- address: -- -- - @load_balancing.algorithm.type@ - The load balancing algorithm -- determines how the load balancer selects targets when routing -- requests. The value is @round_robin@ or -- @least_outstanding_requests@. The default is @round_robin@. -- -- - @slow_start.duration_seconds@ - The time period, in seconds, during -- which a newly registered target receives an increasing share of the -- traffic to the target group. After this time period ends, the target -- receives its full share of traffic. The range is 30-900 seconds (15 -- minutes). The default is 0 seconds (disabled). -- -- - @stickiness.app_cookie.cookie_name@ - Indicates the name of the -- application-based cookie. Names that start with the following -- prefixes are not allowed: @AWSALB@, @AWSALBAPP@, and @AWSALBTG@; -- they\'re reserved for use by the load balancer. -- -- - @stickiness.app_cookie.duration_seconds@ - The time period, in -- seconds, during which requests from a client should be routed to the -- same target. After this time period expires, the application-based -- cookie is considered stale. The range is 1 second to 1 week (604800 -- seconds). The default value is 1 day (86400 seconds). -- -- - @stickiness.lb_cookie.duration_seconds@ - The time period, in -- seconds, during which requests from a client should be routed to the -- same target. After this time period expires, the load -- balancer-generated cookie is considered stale. The range is 1 second -- to 1 week (604800 seconds). The default value is 1 day (86400 -- seconds). -- -- The following attribute is supported only if the load balancer is an -- Application Load Balancer and the target is a Lambda function: -- -- - @lambda.multi_value_headers.enabled@ - Indicates whether the request -- and response headers that are exchanged between the load balancer -- and the Lambda function include arrays of values or strings. The -- value is @true@ or @false@. The default is @false@. If the value is -- @false@ and the request contains a duplicate header field name or -- query parameter key, the load balancer uses the last value sent by -- the client. -- -- The following attributes are supported only by Network Load Balancers: -- -- - @deregistration_delay.connection_termination.enabled@ - Indicates -- whether the load balancer terminates connections at the end of the -- deregistration timeout. The value is @true@ or @false@. The default -- is @false@. -- -- - @preserve_client_ip.enabled@ - Indicates whether client IP -- preservation is enabled. The value is @true@ or @false@. The default -- is disabled if the target group type is IP address and the target -- group protocol is TCP or TLS. Otherwise, the default is enabled. -- Client IP preservation cannot be disabled for UDP and TCP_UDP target -- groups. -- -- - @proxy_protocol_v2.enabled@ - Indicates whether Proxy Protocol -- version 2 is enabled. The value is @true@ or @false@. The default is -- @false@. targetGroupAttribute_key :: Lens.Lens' TargetGroupAttribute (Prelude.Maybe Prelude.Text) targetGroupAttribute_key :: (Maybe Text -> f (Maybe Text)) -> TargetGroupAttribute -> f TargetGroupAttribute targetGroupAttribute_key = (TargetGroupAttribute -> Maybe Text) -> (TargetGroupAttribute -> Maybe Text -> TargetGroupAttribute) -> Lens TargetGroupAttribute TargetGroupAttribute (Maybe Text) (Maybe Text) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\TargetGroupAttribute' {Maybe Text key :: Maybe Text $sel:key:TargetGroupAttribute' :: TargetGroupAttribute -> Maybe Text key} -> Maybe Text key) (\s :: TargetGroupAttribute s@TargetGroupAttribute' {} Maybe Text a -> TargetGroupAttribute s {$sel:key:TargetGroupAttribute' :: Maybe Text key = Maybe Text a} :: TargetGroupAttribute) instance Core.FromXML TargetGroupAttribute where parseXML :: [Node] -> Either String TargetGroupAttribute parseXML [Node] x = Maybe Text -> Maybe Text -> TargetGroupAttribute TargetGroupAttribute' (Maybe Text -> Maybe Text -> TargetGroupAttribute) -> Either String (Maybe Text) -> Either String (Maybe Text -> TargetGroupAttribute) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> ([Node] x [Node] -> Text -> Either String (Maybe Text) forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Core..@? Text "Value") Either String (Maybe Text -> TargetGroupAttribute) -> Either String (Maybe Text) -> Either String TargetGroupAttribute forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b Prelude.<*> ([Node] x [Node] -> Text -> Either String (Maybe Text) forall a. FromXML a => [Node] -> Text -> Either String (Maybe a) Core..@? Text "Key") instance Prelude.Hashable TargetGroupAttribute instance Prelude.NFData TargetGroupAttribute instance Core.ToQuery TargetGroupAttribute where toQuery :: TargetGroupAttribute -> QueryString toQuery TargetGroupAttribute' {Maybe Text key :: Maybe Text value :: Maybe Text $sel:key:TargetGroupAttribute' :: TargetGroupAttribute -> Maybe Text $sel:value:TargetGroupAttribute' :: TargetGroupAttribute -> Maybe Text ..} = [QueryString] -> QueryString forall a. Monoid a => [a] -> a Prelude.mconcat [ByteString "Value" ByteString -> Maybe Text -> QueryString forall a. ToQuery a => ByteString -> a -> QueryString Core.=: Maybe Text value, ByteString "Key" ByteString -> Maybe Text -> QueryString forall a. ToQuery a => ByteString -> a -> QueryString Core.=: Maybe Text key]