amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsElbLoadBalancerDetails.hs
{-# 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.SecurityHub.Types.AwsElbLoadBalancerDetails
-- 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.SecurityHub.Types.AwsElbLoadBalancerDetails where
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
import Amazonka.SecurityHub.Types.AwsElbLoadBalancerAttributes
import Amazonka.SecurityHub.Types.AwsElbLoadBalancerBackendServerDescription
import Amazonka.SecurityHub.Types.AwsElbLoadBalancerHealthCheck
import Amazonka.SecurityHub.Types.AwsElbLoadBalancerInstance
import Amazonka.SecurityHub.Types.AwsElbLoadBalancerListenerDescription
import Amazonka.SecurityHub.Types.AwsElbLoadBalancerPolicies
import Amazonka.SecurityHub.Types.AwsElbLoadBalancerSourceSecurityGroup
-- | Contains details about a Classic Load Balancer.
--
-- /See:/ 'newAwsElbLoadBalancerDetails' smart constructor.
data AwsElbLoadBalancerDetails = AwsElbLoadBalancerDetails'
{ -- | The list of Availability Zones for the load balancer.
availabilityZones :: Prelude.Maybe [Prelude.Text],
-- | Information about the configuration of the EC2 instances.
backendServerDescriptions :: Prelude.Maybe [AwsElbLoadBalancerBackendServerDescription],
-- | The name of the Amazon Route 53 hosted zone for the load balancer.
canonicalHostedZoneName :: Prelude.Maybe Prelude.Text,
-- | The ID of the Amazon Route 53 hosted zone for the load balancer.
canonicalHostedZoneNameID :: Prelude.Maybe Prelude.Text,
-- | Indicates when the load balancer was created.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
createdTime :: Prelude.Maybe Prelude.Text,
-- | The DNS name of the load balancer.
dnsName :: Prelude.Maybe Prelude.Text,
-- | Information about the health checks that are conducted on the load
-- balancer.
healthCheck :: Prelude.Maybe AwsElbLoadBalancerHealthCheck,
-- | List of EC2 instances for the load balancer.
instances :: Prelude.Maybe [AwsElbLoadBalancerInstance],
-- | The policies that are enabled for the load balancer listeners.
listenerDescriptions :: Prelude.Maybe [AwsElbLoadBalancerListenerDescription],
-- | The attributes for a load balancer.
loadBalancerAttributes :: Prelude.Maybe AwsElbLoadBalancerAttributes,
-- | The name of the load balancer.
loadBalancerName :: Prelude.Maybe Prelude.Text,
-- | The policies for a load balancer.
policies :: Prelude.Maybe AwsElbLoadBalancerPolicies,
-- | The type of load balancer. Only provided if the load balancer is in a
-- VPC.
--
-- If @Scheme@ is @internet-facing@, the load balancer has a public DNS
-- name that resolves to a public IP address.
--
-- If @Scheme@ is @internal@, the load balancer has a public DNS name that
-- resolves to a private IP address.
scheme :: Prelude.Maybe Prelude.Text,
-- | The security groups for the load balancer. Only provided if the load
-- balancer is in a VPC.
securityGroups :: Prelude.Maybe [Prelude.Text],
-- | Information about the security group for the load balancer. This is the
-- security group that is used for inbound rules.
sourceSecurityGroup :: Prelude.Maybe AwsElbLoadBalancerSourceSecurityGroup,
-- | The list of subnet identifiers for the load balancer.
subnets :: Prelude.Maybe [Prelude.Text],
-- | The identifier of the VPC for the load balancer.
vpcId :: Prelude.Maybe Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'AwsElbLoadBalancerDetails' 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:
--
-- 'availabilityZones', 'awsElbLoadBalancerDetails_availabilityZones' - The list of Availability Zones for the load balancer.
--
-- 'backendServerDescriptions', 'awsElbLoadBalancerDetails_backendServerDescriptions' - Information about the configuration of the EC2 instances.
--
-- 'canonicalHostedZoneName', 'awsElbLoadBalancerDetails_canonicalHostedZoneName' - The name of the Amazon Route 53 hosted zone for the load balancer.
--
-- 'canonicalHostedZoneNameID', 'awsElbLoadBalancerDetails_canonicalHostedZoneNameID' - The ID of the Amazon Route 53 hosted zone for the load balancer.
--
-- 'createdTime', 'awsElbLoadBalancerDetails_createdTime' - Indicates when the load balancer was created.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
--
-- 'dnsName', 'awsElbLoadBalancerDetails_dnsName' - The DNS name of the load balancer.
--
-- 'healthCheck', 'awsElbLoadBalancerDetails_healthCheck' - Information about the health checks that are conducted on the load
-- balancer.
--
-- 'instances', 'awsElbLoadBalancerDetails_instances' - List of EC2 instances for the load balancer.
--
-- 'listenerDescriptions', 'awsElbLoadBalancerDetails_listenerDescriptions' - The policies that are enabled for the load balancer listeners.
--
-- 'loadBalancerAttributes', 'awsElbLoadBalancerDetails_loadBalancerAttributes' - The attributes for a load balancer.
--
-- 'loadBalancerName', 'awsElbLoadBalancerDetails_loadBalancerName' - The name of the load balancer.
--
-- 'policies', 'awsElbLoadBalancerDetails_policies' - The policies for a load balancer.
--
-- 'scheme', 'awsElbLoadBalancerDetails_scheme' - The type of load balancer. Only provided if the load balancer is in a
-- VPC.
--
-- If @Scheme@ is @internet-facing@, the load balancer has a public DNS
-- name that resolves to a public IP address.
--
-- If @Scheme@ is @internal@, the load balancer has a public DNS name that
-- resolves to a private IP address.
--
-- 'securityGroups', 'awsElbLoadBalancerDetails_securityGroups' - The security groups for the load balancer. Only provided if the load
-- balancer is in a VPC.
--
-- 'sourceSecurityGroup', 'awsElbLoadBalancerDetails_sourceSecurityGroup' - Information about the security group for the load balancer. This is the
-- security group that is used for inbound rules.
--
-- 'subnets', 'awsElbLoadBalancerDetails_subnets' - The list of subnet identifiers for the load balancer.
--
-- 'vpcId', 'awsElbLoadBalancerDetails_vpcId' - The identifier of the VPC for the load balancer.
newAwsElbLoadBalancerDetails ::
AwsElbLoadBalancerDetails
newAwsElbLoadBalancerDetails =
AwsElbLoadBalancerDetails'
{ availabilityZones =
Prelude.Nothing,
backendServerDescriptions = Prelude.Nothing,
canonicalHostedZoneName = Prelude.Nothing,
canonicalHostedZoneNameID = Prelude.Nothing,
createdTime = Prelude.Nothing,
dnsName = Prelude.Nothing,
healthCheck = Prelude.Nothing,
instances = Prelude.Nothing,
listenerDescriptions = Prelude.Nothing,
loadBalancerAttributes = Prelude.Nothing,
loadBalancerName = Prelude.Nothing,
policies = Prelude.Nothing,
scheme = Prelude.Nothing,
securityGroups = Prelude.Nothing,
sourceSecurityGroup = Prelude.Nothing,
subnets = Prelude.Nothing,
vpcId = Prelude.Nothing
}
-- | The list of Availability Zones for the load balancer.
awsElbLoadBalancerDetails_availabilityZones :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe [Prelude.Text])
awsElbLoadBalancerDetails_availabilityZones = Lens.lens (\AwsElbLoadBalancerDetails' {availabilityZones} -> availabilityZones) (\s@AwsElbLoadBalancerDetails' {} a -> s {availabilityZones = a} :: AwsElbLoadBalancerDetails) Prelude.. Lens.mapping Lens.coerced
-- | Information about the configuration of the EC2 instances.
awsElbLoadBalancerDetails_backendServerDescriptions :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe [AwsElbLoadBalancerBackendServerDescription])
awsElbLoadBalancerDetails_backendServerDescriptions = Lens.lens (\AwsElbLoadBalancerDetails' {backendServerDescriptions} -> backendServerDescriptions) (\s@AwsElbLoadBalancerDetails' {} a -> s {backendServerDescriptions = a} :: AwsElbLoadBalancerDetails) Prelude.. Lens.mapping Lens.coerced
-- | The name of the Amazon Route 53 hosted zone for the load balancer.
awsElbLoadBalancerDetails_canonicalHostedZoneName :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe Prelude.Text)
awsElbLoadBalancerDetails_canonicalHostedZoneName = Lens.lens (\AwsElbLoadBalancerDetails' {canonicalHostedZoneName} -> canonicalHostedZoneName) (\s@AwsElbLoadBalancerDetails' {} a -> s {canonicalHostedZoneName = a} :: AwsElbLoadBalancerDetails)
-- | The ID of the Amazon Route 53 hosted zone for the load balancer.
awsElbLoadBalancerDetails_canonicalHostedZoneNameID :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe Prelude.Text)
awsElbLoadBalancerDetails_canonicalHostedZoneNameID = Lens.lens (\AwsElbLoadBalancerDetails' {canonicalHostedZoneNameID} -> canonicalHostedZoneNameID) (\s@AwsElbLoadBalancerDetails' {} a -> s {canonicalHostedZoneNameID = a} :: AwsElbLoadBalancerDetails)
-- | Indicates when the load balancer was created.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
awsElbLoadBalancerDetails_createdTime :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe Prelude.Text)
awsElbLoadBalancerDetails_createdTime = Lens.lens (\AwsElbLoadBalancerDetails' {createdTime} -> createdTime) (\s@AwsElbLoadBalancerDetails' {} a -> s {createdTime = a} :: AwsElbLoadBalancerDetails)
-- | The DNS name of the load balancer.
awsElbLoadBalancerDetails_dnsName :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe Prelude.Text)
awsElbLoadBalancerDetails_dnsName = Lens.lens (\AwsElbLoadBalancerDetails' {dnsName} -> dnsName) (\s@AwsElbLoadBalancerDetails' {} a -> s {dnsName = a} :: AwsElbLoadBalancerDetails)
-- | Information about the health checks that are conducted on the load
-- balancer.
awsElbLoadBalancerDetails_healthCheck :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe AwsElbLoadBalancerHealthCheck)
awsElbLoadBalancerDetails_healthCheck = Lens.lens (\AwsElbLoadBalancerDetails' {healthCheck} -> healthCheck) (\s@AwsElbLoadBalancerDetails' {} a -> s {healthCheck = a} :: AwsElbLoadBalancerDetails)
-- | List of EC2 instances for the load balancer.
awsElbLoadBalancerDetails_instances :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe [AwsElbLoadBalancerInstance])
awsElbLoadBalancerDetails_instances = Lens.lens (\AwsElbLoadBalancerDetails' {instances} -> instances) (\s@AwsElbLoadBalancerDetails' {} a -> s {instances = a} :: AwsElbLoadBalancerDetails) Prelude.. Lens.mapping Lens.coerced
-- | The policies that are enabled for the load balancer listeners.
awsElbLoadBalancerDetails_listenerDescriptions :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe [AwsElbLoadBalancerListenerDescription])
awsElbLoadBalancerDetails_listenerDescriptions = Lens.lens (\AwsElbLoadBalancerDetails' {listenerDescriptions} -> listenerDescriptions) (\s@AwsElbLoadBalancerDetails' {} a -> s {listenerDescriptions = a} :: AwsElbLoadBalancerDetails) Prelude.. Lens.mapping Lens.coerced
-- | The attributes for a load balancer.
awsElbLoadBalancerDetails_loadBalancerAttributes :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe AwsElbLoadBalancerAttributes)
awsElbLoadBalancerDetails_loadBalancerAttributes = Lens.lens (\AwsElbLoadBalancerDetails' {loadBalancerAttributes} -> loadBalancerAttributes) (\s@AwsElbLoadBalancerDetails' {} a -> s {loadBalancerAttributes = a} :: AwsElbLoadBalancerDetails)
-- | The name of the load balancer.
awsElbLoadBalancerDetails_loadBalancerName :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe Prelude.Text)
awsElbLoadBalancerDetails_loadBalancerName = Lens.lens (\AwsElbLoadBalancerDetails' {loadBalancerName} -> loadBalancerName) (\s@AwsElbLoadBalancerDetails' {} a -> s {loadBalancerName = a} :: AwsElbLoadBalancerDetails)
-- | The policies for a load balancer.
awsElbLoadBalancerDetails_policies :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe AwsElbLoadBalancerPolicies)
awsElbLoadBalancerDetails_policies = Lens.lens (\AwsElbLoadBalancerDetails' {policies} -> policies) (\s@AwsElbLoadBalancerDetails' {} a -> s {policies = a} :: AwsElbLoadBalancerDetails)
-- | The type of load balancer. Only provided if the load balancer is in a
-- VPC.
--
-- If @Scheme@ is @internet-facing@, the load balancer has a public DNS
-- name that resolves to a public IP address.
--
-- If @Scheme@ is @internal@, the load balancer has a public DNS name that
-- resolves to a private IP address.
awsElbLoadBalancerDetails_scheme :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe Prelude.Text)
awsElbLoadBalancerDetails_scheme = Lens.lens (\AwsElbLoadBalancerDetails' {scheme} -> scheme) (\s@AwsElbLoadBalancerDetails' {} a -> s {scheme = a} :: AwsElbLoadBalancerDetails)
-- | The security groups for the load balancer. Only provided if the load
-- balancer is in a VPC.
awsElbLoadBalancerDetails_securityGroups :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe [Prelude.Text])
awsElbLoadBalancerDetails_securityGroups = Lens.lens (\AwsElbLoadBalancerDetails' {securityGroups} -> securityGroups) (\s@AwsElbLoadBalancerDetails' {} a -> s {securityGroups = a} :: AwsElbLoadBalancerDetails) Prelude.. Lens.mapping Lens.coerced
-- | Information about the security group for the load balancer. This is the
-- security group that is used for inbound rules.
awsElbLoadBalancerDetails_sourceSecurityGroup :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe AwsElbLoadBalancerSourceSecurityGroup)
awsElbLoadBalancerDetails_sourceSecurityGroup = Lens.lens (\AwsElbLoadBalancerDetails' {sourceSecurityGroup} -> sourceSecurityGroup) (\s@AwsElbLoadBalancerDetails' {} a -> s {sourceSecurityGroup = a} :: AwsElbLoadBalancerDetails)
-- | The list of subnet identifiers for the load balancer.
awsElbLoadBalancerDetails_subnets :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe [Prelude.Text])
awsElbLoadBalancerDetails_subnets = Lens.lens (\AwsElbLoadBalancerDetails' {subnets} -> subnets) (\s@AwsElbLoadBalancerDetails' {} a -> s {subnets = a} :: AwsElbLoadBalancerDetails) Prelude.. Lens.mapping Lens.coerced
-- | The identifier of the VPC for the load balancer.
awsElbLoadBalancerDetails_vpcId :: Lens.Lens' AwsElbLoadBalancerDetails (Prelude.Maybe Prelude.Text)
awsElbLoadBalancerDetails_vpcId = Lens.lens (\AwsElbLoadBalancerDetails' {vpcId} -> vpcId) (\s@AwsElbLoadBalancerDetails' {} a -> s {vpcId = a} :: AwsElbLoadBalancerDetails)
instance Data.FromJSON AwsElbLoadBalancerDetails where
parseJSON =
Data.withObject
"AwsElbLoadBalancerDetails"
( \x ->
AwsElbLoadBalancerDetails'
Prelude.<$> ( x
Data..:? "AvailabilityZones"
Data..!= Prelude.mempty
)
Prelude.<*> ( x
Data..:? "BackendServerDescriptions"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "CanonicalHostedZoneName")
Prelude.<*> (x Data..:? "CanonicalHostedZoneNameID")
Prelude.<*> (x Data..:? "CreatedTime")
Prelude.<*> (x Data..:? "DnsName")
Prelude.<*> (x Data..:? "HealthCheck")
Prelude.<*> (x Data..:? "Instances" Data..!= Prelude.mempty)
Prelude.<*> ( x
Data..:? "ListenerDescriptions"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "LoadBalancerAttributes")
Prelude.<*> (x Data..:? "LoadBalancerName")
Prelude.<*> (x Data..:? "Policies")
Prelude.<*> (x Data..:? "Scheme")
Prelude.<*> (x Data..:? "SecurityGroups" Data..!= Prelude.mempty)
Prelude.<*> (x Data..:? "SourceSecurityGroup")
Prelude.<*> (x Data..:? "Subnets" Data..!= Prelude.mempty)
Prelude.<*> (x Data..:? "VpcId")
)
instance Prelude.Hashable AwsElbLoadBalancerDetails where
hashWithSalt _salt AwsElbLoadBalancerDetails' {..} =
_salt
`Prelude.hashWithSalt` availabilityZones
`Prelude.hashWithSalt` backendServerDescriptions
`Prelude.hashWithSalt` canonicalHostedZoneName
`Prelude.hashWithSalt` canonicalHostedZoneNameID
`Prelude.hashWithSalt` createdTime
`Prelude.hashWithSalt` dnsName
`Prelude.hashWithSalt` healthCheck
`Prelude.hashWithSalt` instances
`Prelude.hashWithSalt` listenerDescriptions
`Prelude.hashWithSalt` loadBalancerAttributes
`Prelude.hashWithSalt` loadBalancerName
`Prelude.hashWithSalt` policies
`Prelude.hashWithSalt` scheme
`Prelude.hashWithSalt` securityGroups
`Prelude.hashWithSalt` sourceSecurityGroup
`Prelude.hashWithSalt` subnets
`Prelude.hashWithSalt` vpcId
instance Prelude.NFData AwsElbLoadBalancerDetails where
rnf AwsElbLoadBalancerDetails' {..} =
Prelude.rnf availabilityZones
`Prelude.seq` Prelude.rnf backendServerDescriptions
`Prelude.seq` Prelude.rnf canonicalHostedZoneName
`Prelude.seq` Prelude.rnf canonicalHostedZoneNameID
`Prelude.seq` Prelude.rnf createdTime
`Prelude.seq` Prelude.rnf dnsName
`Prelude.seq` Prelude.rnf healthCheck
`Prelude.seq` Prelude.rnf instances
`Prelude.seq` Prelude.rnf listenerDescriptions
`Prelude.seq` Prelude.rnf loadBalancerAttributes
`Prelude.seq` Prelude.rnf loadBalancerName
`Prelude.seq` Prelude.rnf policies
`Prelude.seq` Prelude.rnf scheme
`Prelude.seq` Prelude.rnf securityGroups
`Prelude.seq` Prelude.rnf sourceSecurityGroup
`Prelude.seq` Prelude.rnf subnets
`Prelude.seq` Prelude.rnf vpcId
instance Data.ToJSON AwsElbLoadBalancerDetails where
toJSON AwsElbLoadBalancerDetails' {..} =
Data.object
( Prelude.catMaybes
[ ("AvailabilityZones" Data..=)
Prelude.<$> availabilityZones,
("BackendServerDescriptions" Data..=)
Prelude.<$> backendServerDescriptions,
("CanonicalHostedZoneName" Data..=)
Prelude.<$> canonicalHostedZoneName,
("CanonicalHostedZoneNameID" Data..=)
Prelude.<$> canonicalHostedZoneNameID,
("CreatedTime" Data..=) Prelude.<$> createdTime,
("DnsName" Data..=) Prelude.<$> dnsName,
("HealthCheck" Data..=) Prelude.<$> healthCheck,
("Instances" Data..=) Prelude.<$> instances,
("ListenerDescriptions" Data..=)
Prelude.<$> listenerDescriptions,
("LoadBalancerAttributes" Data..=)
Prelude.<$> loadBalancerAttributes,
("LoadBalancerName" Data..=)
Prelude.<$> loadBalancerName,
("Policies" Data..=) Prelude.<$> policies,
("Scheme" Data..=) Prelude.<$> scheme,
("SecurityGroups" Data..=)
Prelude.<$> securityGroups,
("SourceSecurityGroup" Data..=)
Prelude.<$> sourceSecurityGroup,
("Subnets" Data..=) Prelude.<$> subnets,
("VpcId" Data..=) Prelude.<$> vpcId
]
)