packages feed

amazonka-maciev2-2.0: gen/Amazonka/MacieV2/Types/BucketCountPolicyAllowsUnencryptedObjectUploads.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.MacieV2.Types.BucketCountPolicyAllowsUnencryptedObjectUploads
-- 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.MacieV2.Types.BucketCountPolicyAllowsUnencryptedObjectUploads 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

-- | Provides information about the number of S3 buckets whose bucket
-- policies do or don\'t require server-side encryption of objects when
-- objects are uploaded to the buckets.
--
-- /See:/ 'newBucketCountPolicyAllowsUnencryptedObjectUploads' smart constructor.
data BucketCountPolicyAllowsUnencryptedObjectUploads = BucketCountPolicyAllowsUnencryptedObjectUploads'
  { -- | The total number of buckets that don\'t have a bucket policy or have a
    -- bucket policy that doesn\'t require server-side encryption of new
    -- objects. If a bucket policy exists, the policy doesn\'t require
    -- PutObject requests to include a valid server-side encryption header: the
    -- x-amz-server-side-encryption header with a value of AES256 or aws:kms,
    -- or the x-amz-server-side-encryption-customer-algorithm header with a
    -- value of AES256.
    allowsUnencryptedObjectUploads :: Prelude.Maybe Prelude.Integer,
    -- | The total number of buckets whose bucket policies require server-side
    -- encryption of new objects. PutObject requests for these buckets must
    -- include a valid server-side encryption header: the
    -- x-amz-server-side-encryption header with a value of AES256 or aws:kms,
    -- or the x-amz-server-side-encryption-customer-algorithm header with a
    -- value of AES256.
    deniesUnencryptedObjectUploads :: Prelude.Maybe Prelude.Integer,
    -- | The total number of buckets that Amazon Macie wasn\'t able to evaluate
    -- server-side encryption requirements for. Macie can\'t determine whether
    -- the bucket policies for these buckets require server-side encryption of
    -- new objects.
    unknown :: Prelude.Maybe Prelude.Integer
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'BucketCountPolicyAllowsUnencryptedObjectUploads' 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:
--
-- 'allowsUnencryptedObjectUploads', 'bucketCountPolicyAllowsUnencryptedObjectUploads_allowsUnencryptedObjectUploads' - The total number of buckets that don\'t have a bucket policy or have a
-- bucket policy that doesn\'t require server-side encryption of new
-- objects. If a bucket policy exists, the policy doesn\'t require
-- PutObject requests to include a valid server-side encryption header: the
-- x-amz-server-side-encryption header with a value of AES256 or aws:kms,
-- or the x-amz-server-side-encryption-customer-algorithm header with a
-- value of AES256.
--
-- 'deniesUnencryptedObjectUploads', 'bucketCountPolicyAllowsUnencryptedObjectUploads_deniesUnencryptedObjectUploads' - The total number of buckets whose bucket policies require server-side
-- encryption of new objects. PutObject requests for these buckets must
-- include a valid server-side encryption header: the
-- x-amz-server-side-encryption header with a value of AES256 or aws:kms,
-- or the x-amz-server-side-encryption-customer-algorithm header with a
-- value of AES256.
--
-- 'unknown', 'bucketCountPolicyAllowsUnencryptedObjectUploads_unknown' - The total number of buckets that Amazon Macie wasn\'t able to evaluate
-- server-side encryption requirements for. Macie can\'t determine whether
-- the bucket policies for these buckets require server-side encryption of
-- new objects.
newBucketCountPolicyAllowsUnencryptedObjectUploads ::
  BucketCountPolicyAllowsUnencryptedObjectUploads
newBucketCountPolicyAllowsUnencryptedObjectUploads =
  BucketCountPolicyAllowsUnencryptedObjectUploads'
    { allowsUnencryptedObjectUploads =
        Prelude.Nothing,
      deniesUnencryptedObjectUploads =
        Prelude.Nothing,
      unknown = Prelude.Nothing
    }

-- | The total number of buckets that don\'t have a bucket policy or have a
-- bucket policy that doesn\'t require server-side encryption of new
-- objects. If a bucket policy exists, the policy doesn\'t require
-- PutObject requests to include a valid server-side encryption header: the
-- x-amz-server-side-encryption header with a value of AES256 or aws:kms,
-- or the x-amz-server-side-encryption-customer-algorithm header with a
-- value of AES256.
bucketCountPolicyAllowsUnencryptedObjectUploads_allowsUnencryptedObjectUploads :: Lens.Lens' BucketCountPolicyAllowsUnencryptedObjectUploads (Prelude.Maybe Prelude.Integer)
bucketCountPolicyAllowsUnencryptedObjectUploads_allowsUnencryptedObjectUploads = Lens.lens (\BucketCountPolicyAllowsUnencryptedObjectUploads' {allowsUnencryptedObjectUploads} -> allowsUnencryptedObjectUploads) (\s@BucketCountPolicyAllowsUnencryptedObjectUploads' {} a -> s {allowsUnencryptedObjectUploads = a} :: BucketCountPolicyAllowsUnencryptedObjectUploads)

-- | The total number of buckets whose bucket policies require server-side
-- encryption of new objects. PutObject requests for these buckets must
-- include a valid server-side encryption header: the
-- x-amz-server-side-encryption header with a value of AES256 or aws:kms,
-- or the x-amz-server-side-encryption-customer-algorithm header with a
-- value of AES256.
bucketCountPolicyAllowsUnencryptedObjectUploads_deniesUnencryptedObjectUploads :: Lens.Lens' BucketCountPolicyAllowsUnencryptedObjectUploads (Prelude.Maybe Prelude.Integer)
bucketCountPolicyAllowsUnencryptedObjectUploads_deniesUnencryptedObjectUploads = Lens.lens (\BucketCountPolicyAllowsUnencryptedObjectUploads' {deniesUnencryptedObjectUploads} -> deniesUnencryptedObjectUploads) (\s@BucketCountPolicyAllowsUnencryptedObjectUploads' {} a -> s {deniesUnencryptedObjectUploads = a} :: BucketCountPolicyAllowsUnencryptedObjectUploads)

-- | The total number of buckets that Amazon Macie wasn\'t able to evaluate
-- server-side encryption requirements for. Macie can\'t determine whether
-- the bucket policies for these buckets require server-side encryption of
-- new objects.
bucketCountPolicyAllowsUnencryptedObjectUploads_unknown :: Lens.Lens' BucketCountPolicyAllowsUnencryptedObjectUploads (Prelude.Maybe Prelude.Integer)
bucketCountPolicyAllowsUnencryptedObjectUploads_unknown = Lens.lens (\BucketCountPolicyAllowsUnencryptedObjectUploads' {unknown} -> unknown) (\s@BucketCountPolicyAllowsUnencryptedObjectUploads' {} a -> s {unknown = a} :: BucketCountPolicyAllowsUnencryptedObjectUploads)

instance
  Data.FromJSON
    BucketCountPolicyAllowsUnencryptedObjectUploads
  where
  parseJSON =
    Data.withObject
      "BucketCountPolicyAllowsUnencryptedObjectUploads"
      ( \x ->
          BucketCountPolicyAllowsUnencryptedObjectUploads'
            Prelude.<$> (x Data..:? "allowsUnencryptedObjectUploads")
            Prelude.<*> (x Data..:? "deniesUnencryptedObjectUploads")
            Prelude.<*> (x Data..:? "unknown")
      )

instance
  Prelude.Hashable
    BucketCountPolicyAllowsUnencryptedObjectUploads
  where
  hashWithSalt
    _salt
    BucketCountPolicyAllowsUnencryptedObjectUploads' {..} =
      _salt
        `Prelude.hashWithSalt` allowsUnencryptedObjectUploads
        `Prelude.hashWithSalt` deniesUnencryptedObjectUploads
        `Prelude.hashWithSalt` unknown

instance
  Prelude.NFData
    BucketCountPolicyAllowsUnencryptedObjectUploads
  where
  rnf
    BucketCountPolicyAllowsUnencryptedObjectUploads' {..} =
      Prelude.rnf allowsUnencryptedObjectUploads
        `Prelude.seq` Prelude.rnf deniesUnencryptedObjectUploads
        `Prelude.seq` Prelude.rnf unknown