{-# 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.Firehose.Types.S3DestinationDescription
-- 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.Firehose.Types.S3DestinationDescription where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Firehose.Types.BufferingHints
import Amazonka.Firehose.Types.CloudWatchLoggingOptions
import Amazonka.Firehose.Types.CompressionFormat
import Amazonka.Firehose.Types.EncryptionConfiguration
import qualified Amazonka.Prelude as Prelude

-- | Describes a destination in Amazon S3.
--
-- /See:/ 'newS3DestinationDescription' smart constructor.
data S3DestinationDescription = S3DestinationDescription'
  { -- | The Amazon CloudWatch logging options for your delivery stream.
    S3DestinationDescription -> Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions :: Prelude.Maybe CloudWatchLoggingOptions,
    -- | A prefix that Kinesis Data Firehose evaluates and adds to failed records
    -- before writing them to S3. This prefix appears immediately following the
    -- bucket name. For information about how to specify this prefix, see
    -- <https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html Custom Prefixes for Amazon S3 Objects>.
    S3DestinationDescription -> Maybe Text
errorOutputPrefix :: Prelude.Maybe Prelude.Text,
    -- | The \"YYYY\/MM\/DD\/HH\" time format prefix is automatically used for
    -- delivered Amazon S3 files. You can also specify a custom prefix, as
    -- described in
    -- <https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html Custom Prefixes for Amazon S3 Objects>.
    S3DestinationDescription -> Maybe Text
prefix :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the Amazon Web Services credentials.
    -- For more information, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
    S3DestinationDescription -> Text
roleARN :: Prelude.Text,
    -- | The ARN of the S3 bucket. For more information, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
    S3DestinationDescription -> Text
bucketARN :: Prelude.Text,
    -- | The buffering option. If no value is specified, @BufferingHints@ object
    -- default values are used.
    S3DestinationDescription -> BufferingHints
bufferingHints :: BufferingHints,
    -- | The compression format. If no value is specified, the default is
    -- @UNCOMPRESSED@.
    S3DestinationDescription -> CompressionFormat
compressionFormat :: CompressionFormat,
    -- | The encryption configuration. If no value is specified, the default is
    -- no encryption.
    S3DestinationDescription -> EncryptionConfiguration
encryptionConfiguration :: EncryptionConfiguration
  }
  deriving (S3DestinationDescription -> S3DestinationDescription -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: S3DestinationDescription -> S3DestinationDescription -> Bool
$c/= :: S3DestinationDescription -> S3DestinationDescription -> Bool
== :: S3DestinationDescription -> S3DestinationDescription -> Bool
$c== :: S3DestinationDescription -> S3DestinationDescription -> Bool
Prelude.Eq, ReadPrec [S3DestinationDescription]
ReadPrec S3DestinationDescription
Int -> ReadS S3DestinationDescription
ReadS [S3DestinationDescription]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [S3DestinationDescription]
$creadListPrec :: ReadPrec [S3DestinationDescription]
readPrec :: ReadPrec S3DestinationDescription
$creadPrec :: ReadPrec S3DestinationDescription
readList :: ReadS [S3DestinationDescription]
$creadList :: ReadS [S3DestinationDescription]
readsPrec :: Int -> ReadS S3DestinationDescription
$creadsPrec :: Int -> ReadS S3DestinationDescription
Prelude.Read, Int -> S3DestinationDescription -> ShowS
[S3DestinationDescription] -> ShowS
S3DestinationDescription -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [S3DestinationDescription] -> ShowS
$cshowList :: [S3DestinationDescription] -> ShowS
show :: S3DestinationDescription -> String
$cshow :: S3DestinationDescription -> String
showsPrec :: Int -> S3DestinationDescription -> ShowS
$cshowsPrec :: Int -> S3DestinationDescription -> ShowS
Prelude.Show, forall x.
Rep S3DestinationDescription x -> S3DestinationDescription
forall x.
S3DestinationDescription -> Rep S3DestinationDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep S3DestinationDescription x -> S3DestinationDescription
$cfrom :: forall x.
S3DestinationDescription -> Rep S3DestinationDescription x
Prelude.Generic)

-- |
-- Create a value of 'S3DestinationDescription' 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:
--
-- 'cloudWatchLoggingOptions', 's3DestinationDescription_cloudWatchLoggingOptions' - The Amazon CloudWatch logging options for your delivery stream.
--
-- 'errorOutputPrefix', 's3DestinationDescription_errorOutputPrefix' - A prefix that Kinesis Data Firehose evaluates and adds to failed records
-- before writing them to S3. This prefix appears immediately following the
-- bucket name. For information about how to specify this prefix, see
-- <https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html Custom Prefixes for Amazon S3 Objects>.
--
-- 'prefix', 's3DestinationDescription_prefix' - The \"YYYY\/MM\/DD\/HH\" time format prefix is automatically used for
-- delivered Amazon S3 files. You can also specify a custom prefix, as
-- described in
-- <https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html Custom Prefixes for Amazon S3 Objects>.
--
-- 'roleARN', 's3DestinationDescription_roleARN' - The Amazon Resource Name (ARN) of the Amazon Web Services credentials.
-- For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
--
-- 'bucketARN', 's3DestinationDescription_bucketARN' - The ARN of the S3 bucket. For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
--
-- 'bufferingHints', 's3DestinationDescription_bufferingHints' - The buffering option. If no value is specified, @BufferingHints@ object
-- default values are used.
--
-- 'compressionFormat', 's3DestinationDescription_compressionFormat' - The compression format. If no value is specified, the default is
-- @UNCOMPRESSED@.
--
-- 'encryptionConfiguration', 's3DestinationDescription_encryptionConfiguration' - The encryption configuration. If no value is specified, the default is
-- no encryption.
newS3DestinationDescription ::
  -- | 'roleARN'
  Prelude.Text ->
  -- | 'bucketARN'
  Prelude.Text ->
  -- | 'bufferingHints'
  BufferingHints ->
  -- | 'compressionFormat'
  CompressionFormat ->
  -- | 'encryptionConfiguration'
  EncryptionConfiguration ->
  S3DestinationDescription
newS3DestinationDescription :: Text
-> Text
-> BufferingHints
-> CompressionFormat
-> EncryptionConfiguration
-> S3DestinationDescription
newS3DestinationDescription
  Text
pRoleARN_
  Text
pBucketARN_
  BufferingHints
pBufferingHints_
  CompressionFormat
pCompressionFormat_
  EncryptionConfiguration
pEncryptionConfiguration_ =
    S3DestinationDescription'
      { $sel:cloudWatchLoggingOptions:S3DestinationDescription' :: Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions =
          forall a. Maybe a
Prelude.Nothing,
        $sel:errorOutputPrefix:S3DestinationDescription' :: Maybe Text
errorOutputPrefix = forall a. Maybe a
Prelude.Nothing,
        $sel:prefix:S3DestinationDescription' :: Maybe Text
prefix = forall a. Maybe a
Prelude.Nothing,
        $sel:roleARN:S3DestinationDescription' :: Text
roleARN = Text
pRoleARN_,
        $sel:bucketARN:S3DestinationDescription' :: Text
bucketARN = Text
pBucketARN_,
        $sel:bufferingHints:S3DestinationDescription' :: BufferingHints
bufferingHints = BufferingHints
pBufferingHints_,
        $sel:compressionFormat:S3DestinationDescription' :: CompressionFormat
compressionFormat = CompressionFormat
pCompressionFormat_,
        $sel:encryptionConfiguration:S3DestinationDescription' :: EncryptionConfiguration
encryptionConfiguration =
          EncryptionConfiguration
pEncryptionConfiguration_
      }

-- | The Amazon CloudWatch logging options for your delivery stream.
s3DestinationDescription_cloudWatchLoggingOptions :: Lens.Lens' S3DestinationDescription (Prelude.Maybe CloudWatchLoggingOptions)
s3DestinationDescription_cloudWatchLoggingOptions :: Lens' S3DestinationDescription (Maybe CloudWatchLoggingOptions)
s3DestinationDescription_cloudWatchLoggingOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions :: Maybe CloudWatchLoggingOptions
$sel:cloudWatchLoggingOptions:S3DestinationDescription' :: S3DestinationDescription -> Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions} -> Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} Maybe CloudWatchLoggingOptions
a -> S3DestinationDescription
s {$sel:cloudWatchLoggingOptions:S3DestinationDescription' :: Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions = Maybe CloudWatchLoggingOptions
a} :: S3DestinationDescription)

-- | A prefix that Kinesis Data Firehose evaluates and adds to failed records
-- before writing them to S3. This prefix appears immediately following the
-- bucket name. For information about how to specify this prefix, see
-- <https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html Custom Prefixes for Amazon S3 Objects>.
s3DestinationDescription_errorOutputPrefix :: Lens.Lens' S3DestinationDescription (Prelude.Maybe Prelude.Text)
s3DestinationDescription_errorOutputPrefix :: Lens' S3DestinationDescription (Maybe Text)
s3DestinationDescription_errorOutputPrefix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {Maybe Text
errorOutputPrefix :: Maybe Text
$sel:errorOutputPrefix:S3DestinationDescription' :: S3DestinationDescription -> Maybe Text
errorOutputPrefix} -> Maybe Text
errorOutputPrefix) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} Maybe Text
a -> S3DestinationDescription
s {$sel:errorOutputPrefix:S3DestinationDescription' :: Maybe Text
errorOutputPrefix = Maybe Text
a} :: S3DestinationDescription)

-- | The \"YYYY\/MM\/DD\/HH\" time format prefix is automatically used for
-- delivered Amazon S3 files. You can also specify a custom prefix, as
-- described in
-- <https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html Custom Prefixes for Amazon S3 Objects>.
s3DestinationDescription_prefix :: Lens.Lens' S3DestinationDescription (Prelude.Maybe Prelude.Text)
s3DestinationDescription_prefix :: Lens' S3DestinationDescription (Maybe Text)
s3DestinationDescription_prefix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {Maybe Text
prefix :: Maybe Text
$sel:prefix:S3DestinationDescription' :: S3DestinationDescription -> Maybe Text
prefix} -> Maybe Text
prefix) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} Maybe Text
a -> S3DestinationDescription
s {$sel:prefix:S3DestinationDescription' :: Maybe Text
prefix = Maybe Text
a} :: S3DestinationDescription)

-- | The Amazon Resource Name (ARN) of the Amazon Web Services credentials.
-- For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
s3DestinationDescription_roleARN :: Lens.Lens' S3DestinationDescription Prelude.Text
s3DestinationDescription_roleARN :: Lens' S3DestinationDescription Text
s3DestinationDescription_roleARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {Text
roleARN :: Text
$sel:roleARN:S3DestinationDescription' :: S3DestinationDescription -> Text
roleARN} -> Text
roleARN) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} Text
a -> S3DestinationDescription
s {$sel:roleARN:S3DestinationDescription' :: Text
roleARN = Text
a} :: S3DestinationDescription)

-- | The ARN of the S3 bucket. For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
s3DestinationDescription_bucketARN :: Lens.Lens' S3DestinationDescription Prelude.Text
s3DestinationDescription_bucketARN :: Lens' S3DestinationDescription Text
s3DestinationDescription_bucketARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {Text
bucketARN :: Text
$sel:bucketARN:S3DestinationDescription' :: S3DestinationDescription -> Text
bucketARN} -> Text
bucketARN) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} Text
a -> S3DestinationDescription
s {$sel:bucketARN:S3DestinationDescription' :: Text
bucketARN = Text
a} :: S3DestinationDescription)

-- | The buffering option. If no value is specified, @BufferingHints@ object
-- default values are used.
s3DestinationDescription_bufferingHints :: Lens.Lens' S3DestinationDescription BufferingHints
s3DestinationDescription_bufferingHints :: Lens' S3DestinationDescription BufferingHints
s3DestinationDescription_bufferingHints = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {BufferingHints
bufferingHints :: BufferingHints
$sel:bufferingHints:S3DestinationDescription' :: S3DestinationDescription -> BufferingHints
bufferingHints} -> BufferingHints
bufferingHints) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} BufferingHints
a -> S3DestinationDescription
s {$sel:bufferingHints:S3DestinationDescription' :: BufferingHints
bufferingHints = BufferingHints
a} :: S3DestinationDescription)

-- | The compression format. If no value is specified, the default is
-- @UNCOMPRESSED@.
s3DestinationDescription_compressionFormat :: Lens.Lens' S3DestinationDescription CompressionFormat
s3DestinationDescription_compressionFormat :: Lens' S3DestinationDescription CompressionFormat
s3DestinationDescription_compressionFormat = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {CompressionFormat
compressionFormat :: CompressionFormat
$sel:compressionFormat:S3DestinationDescription' :: S3DestinationDescription -> CompressionFormat
compressionFormat} -> CompressionFormat
compressionFormat) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} CompressionFormat
a -> S3DestinationDescription
s {$sel:compressionFormat:S3DestinationDescription' :: CompressionFormat
compressionFormat = CompressionFormat
a} :: S3DestinationDescription)

-- | The encryption configuration. If no value is specified, the default is
-- no encryption.
s3DestinationDescription_encryptionConfiguration :: Lens.Lens' S3DestinationDescription EncryptionConfiguration
s3DestinationDescription_encryptionConfiguration :: Lens' S3DestinationDescription EncryptionConfiguration
s3DestinationDescription_encryptionConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\S3DestinationDescription' {EncryptionConfiguration
encryptionConfiguration :: EncryptionConfiguration
$sel:encryptionConfiguration:S3DestinationDescription' :: S3DestinationDescription -> EncryptionConfiguration
encryptionConfiguration} -> EncryptionConfiguration
encryptionConfiguration) (\s :: S3DestinationDescription
s@S3DestinationDescription' {} EncryptionConfiguration
a -> S3DestinationDescription
s {$sel:encryptionConfiguration:S3DestinationDescription' :: EncryptionConfiguration
encryptionConfiguration = EncryptionConfiguration
a} :: S3DestinationDescription)

instance Data.FromJSON S3DestinationDescription where
  parseJSON :: Value -> Parser S3DestinationDescription
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"S3DestinationDescription"
      ( \Object
x ->
          Maybe CloudWatchLoggingOptions
-> Maybe Text
-> Maybe Text
-> Text
-> Text
-> BufferingHints
-> CompressionFormat
-> EncryptionConfiguration
-> S3DestinationDescription
S3DestinationDescription'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CloudWatchLoggingOptions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ErrorOutputPrefix")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Prefix")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"RoleARN")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"BucketARN")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"BufferingHints")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"CompressionFormat")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"EncryptionConfiguration")
      )

instance Prelude.Hashable S3DestinationDescription where
  hashWithSalt :: Int -> S3DestinationDescription -> Int
hashWithSalt Int
_salt S3DestinationDescription' {Maybe Text
Maybe CloudWatchLoggingOptions
Text
BufferingHints
CompressionFormat
EncryptionConfiguration
encryptionConfiguration :: EncryptionConfiguration
compressionFormat :: CompressionFormat
bufferingHints :: BufferingHints
bucketARN :: Text
roleARN :: Text
prefix :: Maybe Text
errorOutputPrefix :: Maybe Text
cloudWatchLoggingOptions :: Maybe CloudWatchLoggingOptions
$sel:encryptionConfiguration:S3DestinationDescription' :: S3DestinationDescription -> EncryptionConfiguration
$sel:compressionFormat:S3DestinationDescription' :: S3DestinationDescription -> CompressionFormat
$sel:bufferingHints:S3DestinationDescription' :: S3DestinationDescription -> BufferingHints
$sel:bucketARN:S3DestinationDescription' :: S3DestinationDescription -> Text
$sel:roleARN:S3DestinationDescription' :: S3DestinationDescription -> Text
$sel:prefix:S3DestinationDescription' :: S3DestinationDescription -> Maybe Text
$sel:errorOutputPrefix:S3DestinationDescription' :: S3DestinationDescription -> Maybe Text
$sel:cloudWatchLoggingOptions:S3DestinationDescription' :: S3DestinationDescription -> Maybe CloudWatchLoggingOptions
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
errorOutputPrefix
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
prefix
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
roleARN
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
bucketARN
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` BufferingHints
bufferingHints
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` CompressionFormat
compressionFormat
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` EncryptionConfiguration
encryptionConfiguration

instance Prelude.NFData S3DestinationDescription where
  rnf :: S3DestinationDescription -> ()
rnf S3DestinationDescription' {Maybe Text
Maybe CloudWatchLoggingOptions
Text
BufferingHints
CompressionFormat
EncryptionConfiguration
encryptionConfiguration :: EncryptionConfiguration
compressionFormat :: CompressionFormat
bufferingHints :: BufferingHints
bucketARN :: Text
roleARN :: Text
prefix :: Maybe Text
errorOutputPrefix :: Maybe Text
cloudWatchLoggingOptions :: Maybe CloudWatchLoggingOptions
$sel:encryptionConfiguration:S3DestinationDescription' :: S3DestinationDescription -> EncryptionConfiguration
$sel:compressionFormat:S3DestinationDescription' :: S3DestinationDescription -> CompressionFormat
$sel:bufferingHints:S3DestinationDescription' :: S3DestinationDescription -> BufferingHints
$sel:bucketARN:S3DestinationDescription' :: S3DestinationDescription -> Text
$sel:roleARN:S3DestinationDescription' :: S3DestinationDescription -> Text
$sel:prefix:S3DestinationDescription' :: S3DestinationDescription -> Maybe Text
$sel:errorOutputPrefix:S3DestinationDescription' :: S3DestinationDescription -> Maybe Text
$sel:cloudWatchLoggingOptions:S3DestinationDescription' :: S3DestinationDescription -> Maybe CloudWatchLoggingOptions
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
errorOutputPrefix
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
prefix
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
bucketARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf BufferingHints
bufferingHints
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf CompressionFormat
compressionFormat
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf EncryptionConfiguration
encryptionConfiguration