{-# 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.AwsS3BucketBucketLifecycleConfigurationRulesDetails
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SecurityHub.Types.AwsS3BucketBucketLifecycleConfigurationRulesDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
import Amazonka.SecurityHub.Types.AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
import Amazonka.SecurityHub.Types.AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails
import Amazonka.SecurityHub.Types.AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails

-- | Configuration for a lifecycle rule.
--
-- /See:/ 'newAwsS3BucketBucketLifecycleConfigurationRulesDetails' smart constructor.
data AwsS3BucketBucketLifecycleConfigurationRulesDetails = AwsS3BucketBucketLifecycleConfigurationRulesDetails'
  { -- | The current status of the rule. Indicates whether the rule is currently
    -- being applied.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | Transition rules that indicate when objects transition to a specified
    -- storage class.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
transitions :: Prelude.Maybe [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails],
    -- | A prefix that identifies one or more objects that the rule applies to.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
prefix :: Prelude.Maybe Prelude.Text,
    -- | Transition rules that describe when noncurrent objects transition to a
    -- specified storage class.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
noncurrentVersionTransitions :: Prelude.Maybe [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails],
    -- | The number of days that an object is noncurrent before Amazon S3 can
    -- perform the associated action.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int
noncurrentVersionExpirationInDays :: Prelude.Maybe Prelude.Int,
    -- | The date when objects are moved or deleted.
    --
    -- 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@.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
expirationDate :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier of the rule.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | Identifies the objects that a rule applies to.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
filter' :: Prelude.Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails,
    -- | The length in days of the lifetime for objects that are subject to the
    -- rule.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int
expirationInDays :: Prelude.Maybe Prelude.Int,
    -- | How Amazon S3 responds when a multipart upload is incomplete.
    -- Specifically, provides a number of days before Amazon S3 cancels the
    -- entire upload.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
abortIncompleteMultipartUpload :: Prelude.Maybe AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails,
    -- | Whether Amazon S3 removes a delete marker that has no noncurrent
    -- versions. If set to @true@, the delete marker is expired. If set to
    -- @false@, the policy takes no action.
    --
    -- If you provide @ExpiredObjectDeleteMarker@, you cannot provide
    -- @ExpirationInDays@ or @ExpirationDate@.
    AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Bool
expiredObjectDeleteMarker :: Prelude.Maybe Prelude.Bool
  }
  deriving (AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Bool
(AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Bool)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Bool)
-> Eq AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Bool
$c/= :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Bool
== :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Bool
$c== :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Bool
Prelude.Eq, ReadPrec [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
ReadPrec AwsS3BucketBucketLifecycleConfigurationRulesDetails
Int -> ReadS AwsS3BucketBucketLifecycleConfigurationRulesDetails
ReadS [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
(Int -> ReadS AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> ReadS [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
-> ReadPrec AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> ReadPrec [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
-> Read AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
$creadListPrec :: ReadPrec [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
readPrec :: ReadPrec AwsS3BucketBucketLifecycleConfigurationRulesDetails
$creadPrec :: ReadPrec AwsS3BucketBucketLifecycleConfigurationRulesDetails
readList :: ReadS [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
$creadList :: ReadS [AwsS3BucketBucketLifecycleConfigurationRulesDetails]
readsPrec :: Int -> ReadS AwsS3BucketBucketLifecycleConfigurationRulesDetails
$creadsPrec :: Int -> ReadS AwsS3BucketBucketLifecycleConfigurationRulesDetails
Prelude.Read, Int -> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> ShowS
[AwsS3BucketBucketLifecycleConfigurationRulesDetails] -> ShowS
AwsS3BucketBucketLifecycleConfigurationRulesDetails -> String
(Int
 -> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> ShowS)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> String)
-> ([AwsS3BucketBucketLifecycleConfigurationRulesDetails] -> ShowS)
-> Show AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AwsS3BucketBucketLifecycleConfigurationRulesDetails] -> ShowS
$cshowList :: [AwsS3BucketBucketLifecycleConfigurationRulesDetails] -> ShowS
show :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> String
$cshow :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> String
showsPrec :: Int -> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> ShowS
$cshowsPrec :: Int -> AwsS3BucketBucketLifecycleConfigurationRulesDetails -> ShowS
Prelude.Show, (forall x.
 AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> Rep AwsS3BucketBucketLifecycleConfigurationRulesDetails x)
-> (forall x.
    Rep AwsS3BucketBucketLifecycleConfigurationRulesDetails x
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Generic AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall x.
Rep AwsS3BucketBucketLifecycleConfigurationRulesDetails x
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall x.
AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Rep AwsS3BucketBucketLifecycleConfigurationRulesDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AwsS3BucketBucketLifecycleConfigurationRulesDetails x
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
$cfrom :: forall x.
AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Rep AwsS3BucketBucketLifecycleConfigurationRulesDetails x
Prelude.Generic)

-- |
-- Create a value of 'AwsS3BucketBucketLifecycleConfigurationRulesDetails' 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:
--
-- 'status', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_status' - The current status of the rule. Indicates whether the rule is currently
-- being applied.
--
-- 'transitions', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_transitions' - Transition rules that indicate when objects transition to a specified
-- storage class.
--
-- 'prefix', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_prefix' - A prefix that identifies one or more objects that the rule applies to.
--
-- 'noncurrentVersionTransitions', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionTransitions' - Transition rules that describe when noncurrent objects transition to a
-- specified storage class.
--
-- 'noncurrentVersionExpirationInDays', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionExpirationInDays' - The number of days that an object is noncurrent before Amazon S3 can
-- perform the associated action.
--
-- 'expirationDate', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationDate' - The date when objects are moved or deleted.
--
-- 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@.
--
-- 'id', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_id' - The unique identifier of the rule.
--
-- 'filter'', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_filter' - Identifies the objects that a rule applies to.
--
-- 'expirationInDays', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationInDays' - The length in days of the lifetime for objects that are subject to the
-- rule.
--
-- 'abortIncompleteMultipartUpload', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_abortIncompleteMultipartUpload' - How Amazon S3 responds when a multipart upload is incomplete.
-- Specifically, provides a number of days before Amazon S3 cancels the
-- entire upload.
--
-- 'expiredObjectDeleteMarker', 'awsS3BucketBucketLifecycleConfigurationRulesDetails_expiredObjectDeleteMarker' - Whether Amazon S3 removes a delete marker that has no noncurrent
-- versions. If set to @true@, the delete marker is expired. If set to
-- @false@, the policy takes no action.
--
-- If you provide @ExpiredObjectDeleteMarker@, you cannot provide
-- @ExpirationInDays@ or @ExpirationDate@.
newAwsS3BucketBucketLifecycleConfigurationRulesDetails ::
  AwsS3BucketBucketLifecycleConfigurationRulesDetails
newAwsS3BucketBucketLifecycleConfigurationRulesDetails :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
newAwsS3BucketBucketLifecycleConfigurationRulesDetails =
  AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
-> Maybe Text
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
-> Maybe Int
-> Maybe
     AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
-> Maybe Bool
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
AwsS3BucketBucketLifecycleConfigurationRulesDetails'
    { $sel:status:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
status =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:transitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
transitions =
        Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
forall a. Maybe a
Prelude.Nothing,
      $sel:prefix:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
prefix =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:noncurrentVersionTransitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
noncurrentVersionTransitions =
        Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
forall a. Maybe a
Prelude.Nothing,
      $sel:noncurrentVersionExpirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Int
noncurrentVersionExpirationInDays =
        Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:expirationDate:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
expirationDate =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:id:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
id = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:filter':AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
filter' =
        Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
forall a. Maybe a
Prelude.Nothing,
      $sel:expirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Int
expirationInDays =
        Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:abortIncompleteMultipartUpload:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
abortIncompleteMultipartUpload =
        Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
forall a. Maybe a
Prelude.Nothing,
      $sel:expiredObjectDeleteMarker:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Bool
expiredObjectDeleteMarker =
        Maybe Bool
forall a. Maybe a
Prelude.Nothing
    }

-- | The current status of the rule. Indicates whether the rule is currently
-- being applied.
awsS3BucketBucketLifecycleConfigurationRulesDetails_status :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe Prelude.Text)
awsS3BucketBucketLifecycleConfigurationRulesDetails_status :: (Maybe Text -> f (Maybe Text))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_status = (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe Text
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Text
status :: Maybe Text
$sel:status:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
status} -> Maybe Text
status) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe Text
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:status:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
status = Maybe Text
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | Transition rules that indicate when objects transition to a specified
-- storage class.
awsS3BucketBucketLifecycleConfigurationRulesDetails_transitions :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
awsS3BucketBucketLifecycleConfigurationRulesDetails_transitions :: (Maybe
   [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
 -> f (Maybe
         [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_transitions = (AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> Maybe
      [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe
         [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
transitions :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
$sel:transitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
transitions} -> Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
transitions) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:transitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
transitions = Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails) ((Maybe
    [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
  -> f (Maybe
          [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]))
 -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> f AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> ((Maybe
       [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
     -> f (Maybe
             [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]))
    -> Maybe
         [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
    -> f (Maybe
            [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]))
-> (Maybe
      [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
    -> f (Maybe
            [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
-> Iso
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A prefix that identifies one or more objects that the rule applies to.
awsS3BucketBucketLifecycleConfigurationRulesDetails_prefix :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe Prelude.Text)
awsS3BucketBucketLifecycleConfigurationRulesDetails_prefix :: (Maybe Text -> f (Maybe Text))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_prefix = (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe Text
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Text
prefix :: Maybe Text
$sel:prefix:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
prefix} -> Maybe Text
prefix) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe Text
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:prefix:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
prefix = Maybe Text
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | Transition rules that describe when noncurrent objects transition to a
-- specified storage class.
awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionTransitions :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionTransitions :: (Maybe
   [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
 -> f (Maybe
         [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionTransitions = (AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> Maybe
      [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe
         [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
noncurrentVersionTransitions :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
$sel:noncurrentVersionTransitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
noncurrentVersionTransitions} -> Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
noncurrentVersionTransitions) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:noncurrentVersionTransitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
noncurrentVersionTransitions = Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails) ((Maybe
    [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
  -> f (Maybe
          [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]))
 -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> f AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> ((Maybe
       [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
     -> f (Maybe
             [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]))
    -> Maybe
         [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
    -> f (Maybe
            [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]))
-> (Maybe
      [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
    -> f (Maybe
            [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
-> Iso
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of days that an object is noncurrent before Amazon S3 can
-- perform the associated action.
awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionExpirationInDays :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe Prelude.Int)
awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionExpirationInDays :: (Maybe Int -> f (Maybe Int))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_noncurrentVersionExpirationInDays = (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe Int
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Int
noncurrentVersionExpirationInDays :: Maybe Int
$sel:noncurrentVersionExpirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int
noncurrentVersionExpirationInDays} -> Maybe Int
noncurrentVersionExpirationInDays) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe Int
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:noncurrentVersionExpirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Int
noncurrentVersionExpirationInDays = Maybe Int
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | The date when objects are moved or deleted.
--
-- 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@.
awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationDate :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe Prelude.Text)
awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationDate :: (Maybe Text -> f (Maybe Text))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationDate = (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe Text
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Text
expirationDate :: Maybe Text
$sel:expirationDate:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
expirationDate} -> Maybe Text
expirationDate) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe Text
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:expirationDate:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
expirationDate = Maybe Text
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | The unique identifier of the rule.
awsS3BucketBucketLifecycleConfigurationRulesDetails_id :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe Prelude.Text)
awsS3BucketBucketLifecycleConfigurationRulesDetails_id :: (Maybe Text -> f (Maybe Text))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_id = (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe Text
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Text
id :: Maybe Text
$sel:id:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
id} -> Maybe Text
id) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe Text
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:id:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Text
id = Maybe Text
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | Identifies the objects that a rule applies to.
awsS3BucketBucketLifecycleConfigurationRulesDetails_filter :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails)
awsS3BucketBucketLifecycleConfigurationRulesDetails_filter :: (Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
 -> f (Maybe
         AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_filter = (AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails)
     (Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
filter' :: Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
$sel:filter':AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
filter'} -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
filter') (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:filter':AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
filter' = Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | The length in days of the lifetime for objects that are subject to the
-- rule.
awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationInDays :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe Prelude.Int)
awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationInDays :: (Maybe Int -> f (Maybe Int))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_expirationInDays = (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe Int
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Int
expirationInDays :: Maybe Int
$sel:expirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int
expirationInDays} -> Maybe Int
expirationInDays) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe Int
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:expirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Int
expirationInDays = Maybe Int
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | How Amazon S3 responds when a multipart upload is incomplete.
-- Specifically, provides a number of days before Amazon S3 cancels the
-- entire upload.
awsS3BucketBucketLifecycleConfigurationRulesDetails_abortIncompleteMultipartUpload :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails)
awsS3BucketBucketLifecycleConfigurationRulesDetails_abortIncompleteMultipartUpload :: (Maybe
   AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
 -> f (Maybe
         AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_abortIncompleteMultipartUpload = (AwsS3BucketBucketLifecycleConfigurationRulesDetails
 -> Maybe
      AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe
         AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails)
     (Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
abortIncompleteMultipartUpload :: Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
$sel:abortIncompleteMultipartUpload:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
abortIncompleteMultipartUpload} -> Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
abortIncompleteMultipartUpload) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:abortIncompleteMultipartUpload:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
abortIncompleteMultipartUpload = Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

-- | Whether Amazon S3 removes a delete marker that has no noncurrent
-- versions. If set to @true@, the delete marker is expired. If set to
-- @false@, the policy takes no action.
--
-- If you provide @ExpiredObjectDeleteMarker@, you cannot provide
-- @ExpirationInDays@ or @ExpirationDate@.
awsS3BucketBucketLifecycleConfigurationRulesDetails_expiredObjectDeleteMarker :: Lens.Lens' AwsS3BucketBucketLifecycleConfigurationRulesDetails (Prelude.Maybe Prelude.Bool)
awsS3BucketBucketLifecycleConfigurationRulesDetails_expiredObjectDeleteMarker :: (Maybe Bool -> f (Maybe Bool))
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> f AwsS3BucketBucketLifecycleConfigurationRulesDetails
awsS3BucketBucketLifecycleConfigurationRulesDetails_expiredObjectDeleteMarker = (AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Bool)
-> (AwsS3BucketBucketLifecycleConfigurationRulesDetails
    -> Maybe Bool
    -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Lens
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     AwsS3BucketBucketLifecycleConfigurationRulesDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Bool
expiredObjectDeleteMarker :: Maybe Bool
$sel:expiredObjectDeleteMarker:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Bool
expiredObjectDeleteMarker} -> Maybe Bool
expiredObjectDeleteMarker) (\s :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
s@AwsS3BucketBucketLifecycleConfigurationRulesDetails' {} Maybe Bool
a -> AwsS3BucketBucketLifecycleConfigurationRulesDetails
s {$sel:expiredObjectDeleteMarker:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: Maybe Bool
expiredObjectDeleteMarker = Maybe Bool
a} :: AwsS3BucketBucketLifecycleConfigurationRulesDetails)

instance
  Core.FromJSON
    AwsS3BucketBucketLifecycleConfigurationRulesDetails
  where
  parseJSON :: Value -> Parser AwsS3BucketBucketLifecycleConfigurationRulesDetails
parseJSON =
    String
-> (Object
    -> Parser AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Value
-> Parser AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"AwsS3BucketBucketLifecycleConfigurationRulesDetails"
      ( \Object
x ->
          Maybe Text
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
-> Maybe Text
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
-> Maybe Int
-> Maybe
     AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
-> Maybe Bool
-> AwsS3BucketBucketLifecycleConfigurationRulesDetails
AwsS3BucketBucketLifecycleConfigurationRulesDetails'
            (Maybe Text
 -> Maybe
      [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
 -> Maybe Text
 -> Maybe
      [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
 -> Maybe Int
 -> Maybe
      AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
 -> Maybe Bool
 -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
      -> Maybe Text
      -> Maybe
           [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
      -> Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
              Parser
  (Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
   -> Maybe Text
   -> Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
   -> Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
-> Parser
     (Maybe Text
      -> Maybe
           [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
      -> Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser
     (Maybe
        (Maybe
           [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Transitions" Parser
  (Maybe
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]))
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
-> Parser
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
forall a. Monoid a => a
Prelude.mempty)
              Parser
  (Maybe Text
   -> Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
   -> Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
      -> Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Prefix")
              Parser
  (Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
   -> Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
      -> Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text
-> Parser
     (Maybe
        (Maybe
           [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NoncurrentVersionTransitions"
                              Parser
  (Maybe
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]))
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
-> Parser
     (Maybe
        [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
forall a. Monoid a => a
Prelude.mempty
                          )
              Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
   -> Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
      -> Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NoncurrentVersionExpirationInDays")
              Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
   -> Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
      -> Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExpirationDate")
              Parser
  (Maybe Text
   -> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
   -> Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
      -> Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ID")
              Parser
  (Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
   -> Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser
     (Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails)
-> Parser
     (Maybe Int
      -> Maybe
           AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser
     (Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Filter")
              Parser
  (Maybe Int
   -> Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
      -> Maybe Bool
      -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExpirationInDays")
              Parser
  (Maybe
     AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
   -> Maybe Bool
   -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser
     (Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails)
-> Parser
     (Maybe Bool -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser
     (Maybe
        AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AbortIncompleteMultipartUpload")
              Parser
  (Maybe Bool -> AwsS3BucketBucketLifecycleConfigurationRulesDetails)
-> Parser (Maybe Bool)
-> Parser AwsS3BucketBucketLifecycleConfigurationRulesDetails
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExpiredObjectDeleteMarker")
      )

instance
  Prelude.Hashable
    AwsS3BucketBucketLifecycleConfigurationRulesDetails

instance
  Prelude.NFData
    AwsS3BucketBucketLifecycleConfigurationRulesDetails

instance
  Core.ToJSON
    AwsS3BucketBucketLifecycleConfigurationRulesDetails
  where
  toJSON :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Value
toJSON
    AwsS3BucketBucketLifecycleConfigurationRulesDetails' {Maybe Bool
Maybe Int
Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
Maybe Text
Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
expiredObjectDeleteMarker :: Maybe Bool
abortIncompleteMultipartUpload :: Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
expirationInDays :: Maybe Int
filter' :: Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
id :: Maybe Text
expirationDate :: Maybe Text
noncurrentVersionExpirationInDays :: Maybe Int
noncurrentVersionTransitions :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
prefix :: Maybe Text
transitions :: Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
status :: Maybe Text
$sel:expiredObjectDeleteMarker:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Bool
$sel:abortIncompleteMultipartUpload:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
$sel:expirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int
$sel:filter':AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
$sel:id:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
$sel:expirationDate:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
$sel:noncurrentVersionExpirationInDays:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Int
$sel:noncurrentVersionTransitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
$sel:prefix:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
$sel:transitions:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
$sel:status:AwsS3BucketBucketLifecycleConfigurationRulesDetails' :: AwsS3BucketBucketLifecycleConfigurationRulesDetails -> Maybe Text
..} =
      [Pair] -> Value
Core.object
        ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
            [ (Text
"Status" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
status,
              (Text
"Transitions" Text
-> [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) ([AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
 -> Pair)
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesTransitionsDetails]
transitions,
              (Text
"Prefix" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
prefix,
              (Text
"NoncurrentVersionTransitions" Text
-> [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                ([AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
 -> Pair)
-> Maybe
     [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe
  [AwsS3BucketBucketLifecycleConfigurationRulesNoncurrentVersionTransitionsDetails]
noncurrentVersionTransitions,
              (Text
"NoncurrentVersionExpirationInDays" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
noncurrentVersionExpirationInDays,
              (Text
"ExpirationDate" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
expirationDate,
              (Text
"ID" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
id,
              (Text
"Filter" Text
-> AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails -> Pair)
-> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsS3BucketBucketLifecycleConfigurationRulesFilterDetails
filter',
              (Text
"ExpirationInDays" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
expirationInDays,
              (Text
"AbortIncompleteMultipartUpload" Text
-> AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                (AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
 -> Pair)
-> Maybe
     AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe
  AwsS3BucketBucketLifecycleConfigurationRulesAbortIncompleteMultipartUploadDetails
abortIncompleteMultipartUpload,
              (Text
"ExpiredObjectDeleteMarker" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
expiredObjectDeleteMarker
            ]
        )