amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsCloudFrontDistributionDetails.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.AwsCloudFrontDistributionDetails
-- 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.AwsCloudFrontDistributionDetails 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.AwsCloudFrontDistributionCacheBehaviors
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionDefaultCacheBehavior
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionLogging
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionOriginGroups
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionOrigins
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionViewerCertificate
-- | A CloudFront distribution configuration.
--
-- /See:/ 'newAwsCloudFrontDistributionDetails' smart constructor.
data AwsCloudFrontDistributionDetails = AwsCloudFrontDistributionDetails'
{ -- | Provides information about the cache configuration for the distribution.
cacheBehaviors :: Prelude.Maybe AwsCloudFrontDistributionCacheBehaviors,
-- | The default cache behavior for the configuration.
defaultCacheBehavior :: Prelude.Maybe AwsCloudFrontDistributionDefaultCacheBehavior,
-- | The object that CloudFront sends in response to requests from the origin
-- (for example, index.html) when a viewer requests the root URL for the
-- distribution (http:\/\/www.example.com) instead of an object in your
-- distribution (http:\/\/www.example.com\/product-description.html).
defaultRootObject :: Prelude.Maybe Prelude.Text,
-- | The domain name corresponding to the distribution.
domainName :: Prelude.Maybe Prelude.Text,
-- | The entity tag is a hash of the object.
eTag :: Prelude.Maybe Prelude.Text,
-- | Indicates when that the distribution was last modified.
--
-- 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@.
lastModifiedTime :: Prelude.Maybe Prelude.Text,
-- | A complex type that controls whether access logs are written for the
-- distribution.
logging :: Prelude.Maybe AwsCloudFrontDistributionLogging,
-- | Provides information about the origin groups in the distribution.
originGroups :: Prelude.Maybe AwsCloudFrontDistributionOriginGroups,
-- | A complex type that contains information about origins for this
-- distribution.
origins :: Prelude.Maybe AwsCloudFrontDistributionOrigins,
-- | Indicates the current status of the distribution.
status :: Prelude.Maybe Prelude.Text,
-- | Provides information about the TLS\/SSL configuration that the
-- distribution uses to communicate with viewers.
viewerCertificate :: Prelude.Maybe AwsCloudFrontDistributionViewerCertificate,
-- | A unique identifier that specifies the WAF web ACL, if any, to associate
-- with this distribution.
webAclId :: Prelude.Maybe Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'AwsCloudFrontDistributionDetails' 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:
--
-- 'cacheBehaviors', 'awsCloudFrontDistributionDetails_cacheBehaviors' - Provides information about the cache configuration for the distribution.
--
-- 'defaultCacheBehavior', 'awsCloudFrontDistributionDetails_defaultCacheBehavior' - The default cache behavior for the configuration.
--
-- 'defaultRootObject', 'awsCloudFrontDistributionDetails_defaultRootObject' - The object that CloudFront sends in response to requests from the origin
-- (for example, index.html) when a viewer requests the root URL for the
-- distribution (http:\/\/www.example.com) instead of an object in your
-- distribution (http:\/\/www.example.com\/product-description.html).
--
-- 'domainName', 'awsCloudFrontDistributionDetails_domainName' - The domain name corresponding to the distribution.
--
-- 'eTag', 'awsCloudFrontDistributionDetails_eTag' - The entity tag is a hash of the object.
--
-- 'lastModifiedTime', 'awsCloudFrontDistributionDetails_lastModifiedTime' - Indicates when that the distribution was last modified.
--
-- 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@.
--
-- 'logging', 'awsCloudFrontDistributionDetails_logging' - A complex type that controls whether access logs are written for the
-- distribution.
--
-- 'originGroups', 'awsCloudFrontDistributionDetails_originGroups' - Provides information about the origin groups in the distribution.
--
-- 'origins', 'awsCloudFrontDistributionDetails_origins' - A complex type that contains information about origins for this
-- distribution.
--
-- 'status', 'awsCloudFrontDistributionDetails_status' - Indicates the current status of the distribution.
--
-- 'viewerCertificate', 'awsCloudFrontDistributionDetails_viewerCertificate' - Provides information about the TLS\/SSL configuration that the
-- distribution uses to communicate with viewers.
--
-- 'webAclId', 'awsCloudFrontDistributionDetails_webAclId' - A unique identifier that specifies the WAF web ACL, if any, to associate
-- with this distribution.
newAwsCloudFrontDistributionDetails ::
AwsCloudFrontDistributionDetails
newAwsCloudFrontDistributionDetails =
AwsCloudFrontDistributionDetails'
{ cacheBehaviors =
Prelude.Nothing,
defaultCacheBehavior = Prelude.Nothing,
defaultRootObject = Prelude.Nothing,
domainName = Prelude.Nothing,
eTag = Prelude.Nothing,
lastModifiedTime = Prelude.Nothing,
logging = Prelude.Nothing,
originGroups = Prelude.Nothing,
origins = Prelude.Nothing,
status = Prelude.Nothing,
viewerCertificate = Prelude.Nothing,
webAclId = Prelude.Nothing
}
-- | Provides information about the cache configuration for the distribution.
awsCloudFrontDistributionDetails_cacheBehaviors :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionCacheBehaviors)
awsCloudFrontDistributionDetails_cacheBehaviors = Lens.lens (\AwsCloudFrontDistributionDetails' {cacheBehaviors} -> cacheBehaviors) (\s@AwsCloudFrontDistributionDetails' {} a -> s {cacheBehaviors = a} :: AwsCloudFrontDistributionDetails)
-- | The default cache behavior for the configuration.
awsCloudFrontDistributionDetails_defaultCacheBehavior :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionDefaultCacheBehavior)
awsCloudFrontDistributionDetails_defaultCacheBehavior = Lens.lens (\AwsCloudFrontDistributionDetails' {defaultCacheBehavior} -> defaultCacheBehavior) (\s@AwsCloudFrontDistributionDetails' {} a -> s {defaultCacheBehavior = a} :: AwsCloudFrontDistributionDetails)
-- | The object that CloudFront sends in response to requests from the origin
-- (for example, index.html) when a viewer requests the root URL for the
-- distribution (http:\/\/www.example.com) instead of an object in your
-- distribution (http:\/\/www.example.com\/product-description.html).
awsCloudFrontDistributionDetails_defaultRootObject :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_defaultRootObject = Lens.lens (\AwsCloudFrontDistributionDetails' {defaultRootObject} -> defaultRootObject) (\s@AwsCloudFrontDistributionDetails' {} a -> s {defaultRootObject = a} :: AwsCloudFrontDistributionDetails)
-- | The domain name corresponding to the distribution.
awsCloudFrontDistributionDetails_domainName :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_domainName = Lens.lens (\AwsCloudFrontDistributionDetails' {domainName} -> domainName) (\s@AwsCloudFrontDistributionDetails' {} a -> s {domainName = a} :: AwsCloudFrontDistributionDetails)
-- | The entity tag is a hash of the object.
awsCloudFrontDistributionDetails_eTag :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_eTag = Lens.lens (\AwsCloudFrontDistributionDetails' {eTag} -> eTag) (\s@AwsCloudFrontDistributionDetails' {} a -> s {eTag = a} :: AwsCloudFrontDistributionDetails)
-- | Indicates when that the distribution was last modified.
--
-- 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@.
awsCloudFrontDistributionDetails_lastModifiedTime :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_lastModifiedTime = Lens.lens (\AwsCloudFrontDistributionDetails' {lastModifiedTime} -> lastModifiedTime) (\s@AwsCloudFrontDistributionDetails' {} a -> s {lastModifiedTime = a} :: AwsCloudFrontDistributionDetails)
-- | A complex type that controls whether access logs are written for the
-- distribution.
awsCloudFrontDistributionDetails_logging :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionLogging)
awsCloudFrontDistributionDetails_logging = Lens.lens (\AwsCloudFrontDistributionDetails' {logging} -> logging) (\s@AwsCloudFrontDistributionDetails' {} a -> s {logging = a} :: AwsCloudFrontDistributionDetails)
-- | Provides information about the origin groups in the distribution.
awsCloudFrontDistributionDetails_originGroups :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionOriginGroups)
awsCloudFrontDistributionDetails_originGroups = Lens.lens (\AwsCloudFrontDistributionDetails' {originGroups} -> originGroups) (\s@AwsCloudFrontDistributionDetails' {} a -> s {originGroups = a} :: AwsCloudFrontDistributionDetails)
-- | A complex type that contains information about origins for this
-- distribution.
awsCloudFrontDistributionDetails_origins :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionOrigins)
awsCloudFrontDistributionDetails_origins = Lens.lens (\AwsCloudFrontDistributionDetails' {origins} -> origins) (\s@AwsCloudFrontDistributionDetails' {} a -> s {origins = a} :: AwsCloudFrontDistributionDetails)
-- | Indicates the current status of the distribution.
awsCloudFrontDistributionDetails_status :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_status = Lens.lens (\AwsCloudFrontDistributionDetails' {status} -> status) (\s@AwsCloudFrontDistributionDetails' {} a -> s {status = a} :: AwsCloudFrontDistributionDetails)
-- | Provides information about the TLS\/SSL configuration that the
-- distribution uses to communicate with viewers.
awsCloudFrontDistributionDetails_viewerCertificate :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionViewerCertificate)
awsCloudFrontDistributionDetails_viewerCertificate = Lens.lens (\AwsCloudFrontDistributionDetails' {viewerCertificate} -> viewerCertificate) (\s@AwsCloudFrontDistributionDetails' {} a -> s {viewerCertificate = a} :: AwsCloudFrontDistributionDetails)
-- | A unique identifier that specifies the WAF web ACL, if any, to associate
-- with this distribution.
awsCloudFrontDistributionDetails_webAclId :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_webAclId = Lens.lens (\AwsCloudFrontDistributionDetails' {webAclId} -> webAclId) (\s@AwsCloudFrontDistributionDetails' {} a -> s {webAclId = a} :: AwsCloudFrontDistributionDetails)
instance
Data.FromJSON
AwsCloudFrontDistributionDetails
where
parseJSON =
Data.withObject
"AwsCloudFrontDistributionDetails"
( \x ->
AwsCloudFrontDistributionDetails'
Prelude.<$> (x Data..:? "CacheBehaviors")
Prelude.<*> (x Data..:? "DefaultCacheBehavior")
Prelude.<*> (x Data..:? "DefaultRootObject")
Prelude.<*> (x Data..:? "DomainName")
Prelude.<*> (x Data..:? "ETag")
Prelude.<*> (x Data..:? "LastModifiedTime")
Prelude.<*> (x Data..:? "Logging")
Prelude.<*> (x Data..:? "OriginGroups")
Prelude.<*> (x Data..:? "Origins")
Prelude.<*> (x Data..:? "Status")
Prelude.<*> (x Data..:? "ViewerCertificate")
Prelude.<*> (x Data..:? "WebAclId")
)
instance
Prelude.Hashable
AwsCloudFrontDistributionDetails
where
hashWithSalt
_salt
AwsCloudFrontDistributionDetails' {..} =
_salt
`Prelude.hashWithSalt` cacheBehaviors
`Prelude.hashWithSalt` defaultCacheBehavior
`Prelude.hashWithSalt` defaultRootObject
`Prelude.hashWithSalt` domainName
`Prelude.hashWithSalt` eTag
`Prelude.hashWithSalt` lastModifiedTime
`Prelude.hashWithSalt` logging
`Prelude.hashWithSalt` originGroups
`Prelude.hashWithSalt` origins
`Prelude.hashWithSalt` status
`Prelude.hashWithSalt` viewerCertificate
`Prelude.hashWithSalt` webAclId
instance
Prelude.NFData
AwsCloudFrontDistributionDetails
where
rnf AwsCloudFrontDistributionDetails' {..} =
Prelude.rnf cacheBehaviors
`Prelude.seq` Prelude.rnf defaultCacheBehavior
`Prelude.seq` Prelude.rnf defaultRootObject
`Prelude.seq` Prelude.rnf domainName
`Prelude.seq` Prelude.rnf eTag
`Prelude.seq` Prelude.rnf lastModifiedTime
`Prelude.seq` Prelude.rnf logging
`Prelude.seq` Prelude.rnf originGroups
`Prelude.seq` Prelude.rnf origins
`Prelude.seq` Prelude.rnf status
`Prelude.seq` Prelude.rnf viewerCertificate
`Prelude.seq` Prelude.rnf webAclId
instance Data.ToJSON AwsCloudFrontDistributionDetails where
toJSON AwsCloudFrontDistributionDetails' {..} =
Data.object
( Prelude.catMaybes
[ ("CacheBehaviors" Data..=)
Prelude.<$> cacheBehaviors,
("DefaultCacheBehavior" Data..=)
Prelude.<$> defaultCacheBehavior,
("DefaultRootObject" Data..=)
Prelude.<$> defaultRootObject,
("DomainName" Data..=) Prelude.<$> domainName,
("ETag" Data..=) Prelude.<$> eTag,
("LastModifiedTime" Data..=)
Prelude.<$> lastModifiedTime,
("Logging" Data..=) Prelude.<$> logging,
("OriginGroups" Data..=) Prelude.<$> originGroups,
("Origins" Data..=) Prelude.<$> origins,
("Status" Data..=) Prelude.<$> status,
("ViewerCertificate" Data..=)
Prelude.<$> viewerCertificate,
("WebAclId" Data..=) Prelude.<$> webAclId
]
)