amazonka-elb-2.0: gen/Amazonka/ELB/CreateAppCookieStickinessPolicy.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.ELB.CreateAppCookieStickinessPolicy
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Generates a stickiness policy with sticky session lifetimes that follow
-- that of an application-generated cookie. This policy can be associated
-- only with HTTP\/HTTPS listeners.
--
-- This policy is similar to the policy created by
-- CreateLBCookieStickinessPolicy, except that the lifetime of the special
-- Elastic Load Balancing cookie, @AWSELB@, follows the lifetime of the
-- application-generated cookie specified in the policy configuration. The
-- load balancer only inserts a new stickiness cookie when the application
-- response includes a new application cookie.
--
-- If the application cookie is explicitly removed or expires, the session
-- stops being sticky until a new application cookie is issued.
--
-- For more information, see
-- <https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html#enable-sticky-sessions-application Application-Controlled Session Stickiness>
-- in the /Classic Load Balancers Guide/.
module Amazonka.ELB.CreateAppCookieStickinessPolicy
( -- * Creating a Request
CreateAppCookieStickinessPolicy (..),
newCreateAppCookieStickinessPolicy,
-- * Request Lenses
createAppCookieStickinessPolicy_loadBalancerName,
createAppCookieStickinessPolicy_policyName,
createAppCookieStickinessPolicy_cookieName,
-- * Destructuring the Response
CreateAppCookieStickinessPolicyResponse (..),
newCreateAppCookieStickinessPolicyResponse,
-- * Response Lenses
createAppCookieStickinessPolicyResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ELB.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
-- | Contains the parameters for CreateAppCookieStickinessPolicy.
--
-- /See:/ 'newCreateAppCookieStickinessPolicy' smart constructor.
data CreateAppCookieStickinessPolicy = CreateAppCookieStickinessPolicy'
{ -- | The name of the load balancer.
loadBalancerName :: Prelude.Text,
-- | The name of the policy being created. Policy names must consist of
-- alphanumeric characters and dashes (-). This name must be unique within
-- the set of policies for this load balancer.
policyName :: Prelude.Text,
-- | The name of the application cookie used for stickiness.
cookieName :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CreateAppCookieStickinessPolicy' 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:
--
-- 'loadBalancerName', 'createAppCookieStickinessPolicy_loadBalancerName' - The name of the load balancer.
--
-- 'policyName', 'createAppCookieStickinessPolicy_policyName' - The name of the policy being created. Policy names must consist of
-- alphanumeric characters and dashes (-). This name must be unique within
-- the set of policies for this load balancer.
--
-- 'cookieName', 'createAppCookieStickinessPolicy_cookieName' - The name of the application cookie used for stickiness.
newCreateAppCookieStickinessPolicy ::
-- | 'loadBalancerName'
Prelude.Text ->
-- | 'policyName'
Prelude.Text ->
-- | 'cookieName'
Prelude.Text ->
CreateAppCookieStickinessPolicy
newCreateAppCookieStickinessPolicy
pLoadBalancerName_
pPolicyName_
pCookieName_ =
CreateAppCookieStickinessPolicy'
{ loadBalancerName =
pLoadBalancerName_,
policyName = pPolicyName_,
cookieName = pCookieName_
}
-- | The name of the load balancer.
createAppCookieStickinessPolicy_loadBalancerName :: Lens.Lens' CreateAppCookieStickinessPolicy Prelude.Text
createAppCookieStickinessPolicy_loadBalancerName = Lens.lens (\CreateAppCookieStickinessPolicy' {loadBalancerName} -> loadBalancerName) (\s@CreateAppCookieStickinessPolicy' {} a -> s {loadBalancerName = a} :: CreateAppCookieStickinessPolicy)
-- | The name of the policy being created. Policy names must consist of
-- alphanumeric characters and dashes (-). This name must be unique within
-- the set of policies for this load balancer.
createAppCookieStickinessPolicy_policyName :: Lens.Lens' CreateAppCookieStickinessPolicy Prelude.Text
createAppCookieStickinessPolicy_policyName = Lens.lens (\CreateAppCookieStickinessPolicy' {policyName} -> policyName) (\s@CreateAppCookieStickinessPolicy' {} a -> s {policyName = a} :: CreateAppCookieStickinessPolicy)
-- | The name of the application cookie used for stickiness.
createAppCookieStickinessPolicy_cookieName :: Lens.Lens' CreateAppCookieStickinessPolicy Prelude.Text
createAppCookieStickinessPolicy_cookieName = Lens.lens (\CreateAppCookieStickinessPolicy' {cookieName} -> cookieName) (\s@CreateAppCookieStickinessPolicy' {} a -> s {cookieName = a} :: CreateAppCookieStickinessPolicy)
instance
Core.AWSRequest
CreateAppCookieStickinessPolicy
where
type
AWSResponse CreateAppCookieStickinessPolicy =
CreateAppCookieStickinessPolicyResponse
request overrides =
Request.postQuery (overrides defaultService)
response =
Response.receiveXMLWrapper
"CreateAppCookieStickinessPolicyResult"
( \s h x ->
CreateAppCookieStickinessPolicyResponse'
Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
)
instance
Prelude.Hashable
CreateAppCookieStickinessPolicy
where
hashWithSalt
_salt
CreateAppCookieStickinessPolicy' {..} =
_salt
`Prelude.hashWithSalt` loadBalancerName
`Prelude.hashWithSalt` policyName
`Prelude.hashWithSalt` cookieName
instance
Prelude.NFData
CreateAppCookieStickinessPolicy
where
rnf CreateAppCookieStickinessPolicy' {..} =
Prelude.rnf loadBalancerName
`Prelude.seq` Prelude.rnf policyName
`Prelude.seq` Prelude.rnf cookieName
instance
Data.ToHeaders
CreateAppCookieStickinessPolicy
where
toHeaders = Prelude.const Prelude.mempty
instance Data.ToPath CreateAppCookieStickinessPolicy where
toPath = Prelude.const "/"
instance Data.ToQuery CreateAppCookieStickinessPolicy where
toQuery CreateAppCookieStickinessPolicy' {..} =
Prelude.mconcat
[ "Action"
Data.=: ( "CreateAppCookieStickinessPolicy" ::
Prelude.ByteString
),
"Version"
Data.=: ("2012-06-01" :: Prelude.ByteString),
"LoadBalancerName" Data.=: loadBalancerName,
"PolicyName" Data.=: policyName,
"CookieName" Data.=: cookieName
]
-- | Contains the output for CreateAppCookieStickinessPolicy.
--
-- /See:/ 'newCreateAppCookieStickinessPolicyResponse' smart constructor.
data CreateAppCookieStickinessPolicyResponse = CreateAppCookieStickinessPolicyResponse'
{ -- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CreateAppCookieStickinessPolicyResponse' 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:
--
-- 'httpStatus', 'createAppCookieStickinessPolicyResponse_httpStatus' - The response's http status code.
newCreateAppCookieStickinessPolicyResponse ::
-- | 'httpStatus'
Prelude.Int ->
CreateAppCookieStickinessPolicyResponse
newCreateAppCookieStickinessPolicyResponse
pHttpStatus_ =
CreateAppCookieStickinessPolicyResponse'
{ httpStatus =
pHttpStatus_
}
-- | The response's http status code.
createAppCookieStickinessPolicyResponse_httpStatus :: Lens.Lens' CreateAppCookieStickinessPolicyResponse Prelude.Int
createAppCookieStickinessPolicyResponse_httpStatus = Lens.lens (\CreateAppCookieStickinessPolicyResponse' {httpStatus} -> httpStatus) (\s@CreateAppCookieStickinessPolicyResponse' {} a -> s {httpStatus = a} :: CreateAppCookieStickinessPolicyResponse)
instance
Prelude.NFData
CreateAppCookieStickinessPolicyResponse
where
rnf CreateAppCookieStickinessPolicyResponse' {..} =
Prelude.rnf httpStatus