{-# 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.GuardDuty.Types.Resource
-- 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.GuardDuty.Types.Resource where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.GuardDuty.Types.AccessKeyDetails
import Amazonka.GuardDuty.Types.Container
import Amazonka.GuardDuty.Types.EbsVolumeDetails
import Amazonka.GuardDuty.Types.EcsClusterDetails
import Amazonka.GuardDuty.Types.EksClusterDetails
import Amazonka.GuardDuty.Types.InstanceDetails
import Amazonka.GuardDuty.Types.KubernetesDetails
import Amazonka.GuardDuty.Types.S3BucketDetail
import qualified Amazonka.Prelude as Prelude

-- | Contains information about the Amazon Web Services resource associated
-- with the activity that prompted GuardDuty to generate a finding.
--
-- /See:/ 'newResource' smart constructor.
data Resource = Resource'
  { -- | The IAM access key details (IAM user information) of a user that engaged
    -- in the activity that prompted GuardDuty to generate a finding.
    Resource -> Maybe AccessKeyDetails
accessKeyDetails :: Prelude.Maybe AccessKeyDetails,
    Resource -> Maybe Container
containerDetails :: Prelude.Maybe Container,
    -- | Contains list of scanned and skipped EBS volumes with details.
    Resource -> Maybe EbsVolumeDetails
ebsVolumeDetails :: Prelude.Maybe EbsVolumeDetails,
    -- | Contains information about the details of the ECS Cluster.
    Resource -> Maybe EcsClusterDetails
ecsClusterDetails :: Prelude.Maybe EcsClusterDetails,
    -- | Details about the EKS cluster involved in a Kubernetes finding.
    Resource -> Maybe EksClusterDetails
eksClusterDetails :: Prelude.Maybe EksClusterDetails,
    -- | The information about the EC2 instance associated with the activity that
    -- prompted GuardDuty to generate a finding.
    Resource -> Maybe InstanceDetails
instanceDetails :: Prelude.Maybe InstanceDetails,
    -- | Details about the Kubernetes user and workload involved in a Kubernetes
    -- finding.
    Resource -> Maybe KubernetesDetails
kubernetesDetails :: Prelude.Maybe KubernetesDetails,
    -- | The type of Amazon Web Services resource.
    Resource -> Maybe Text
resourceType :: Prelude.Maybe Prelude.Text,
    -- | Contains information on the S3 bucket.
    Resource -> Maybe [S3BucketDetail]
s3BucketDetails :: Prelude.Maybe [S3BucketDetail]
  }
  deriving (Resource -> Resource -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Resource -> Resource -> Bool
$c/= :: Resource -> Resource -> Bool
== :: Resource -> Resource -> Bool
$c== :: Resource -> Resource -> Bool
Prelude.Eq, ReadPrec [Resource]
ReadPrec Resource
Int -> ReadS Resource
ReadS [Resource]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Resource]
$creadListPrec :: ReadPrec [Resource]
readPrec :: ReadPrec Resource
$creadPrec :: ReadPrec Resource
readList :: ReadS [Resource]
$creadList :: ReadS [Resource]
readsPrec :: Int -> ReadS Resource
$creadsPrec :: Int -> ReadS Resource
Prelude.Read, Int -> Resource -> ShowS
[Resource] -> ShowS
Resource -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Resource] -> ShowS
$cshowList :: [Resource] -> ShowS
show :: Resource -> String
$cshow :: Resource -> String
showsPrec :: Int -> Resource -> ShowS
$cshowsPrec :: Int -> Resource -> ShowS
Prelude.Show, forall x. Rep Resource x -> Resource
forall x. Resource -> Rep Resource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Resource x -> Resource
$cfrom :: forall x. Resource -> Rep Resource x
Prelude.Generic)

-- |
-- Create a value of 'Resource' 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:
--
-- 'accessKeyDetails', 'resource_accessKeyDetails' - The IAM access key details (IAM user information) of a user that engaged
-- in the activity that prompted GuardDuty to generate a finding.
--
-- 'containerDetails', 'resource_containerDetails' - Undocumented member.
--
-- 'ebsVolumeDetails', 'resource_ebsVolumeDetails' - Contains list of scanned and skipped EBS volumes with details.
--
-- 'ecsClusterDetails', 'resource_ecsClusterDetails' - Contains information about the details of the ECS Cluster.
--
-- 'eksClusterDetails', 'resource_eksClusterDetails' - Details about the EKS cluster involved in a Kubernetes finding.
--
-- 'instanceDetails', 'resource_instanceDetails' - The information about the EC2 instance associated with the activity that
-- prompted GuardDuty to generate a finding.
--
-- 'kubernetesDetails', 'resource_kubernetesDetails' - Details about the Kubernetes user and workload involved in a Kubernetes
-- finding.
--
-- 'resourceType', 'resource_resourceType' - The type of Amazon Web Services resource.
--
-- 's3BucketDetails', 'resource_s3BucketDetails' - Contains information on the S3 bucket.
newResource ::
  Resource
newResource :: Resource
newResource =
  Resource'
    { $sel:accessKeyDetails:Resource' :: Maybe AccessKeyDetails
accessKeyDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:containerDetails:Resource' :: Maybe Container
containerDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:ebsVolumeDetails:Resource' :: Maybe EbsVolumeDetails
ebsVolumeDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:ecsClusterDetails:Resource' :: Maybe EcsClusterDetails
ecsClusterDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:eksClusterDetails:Resource' :: Maybe EksClusterDetails
eksClusterDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceDetails:Resource' :: Maybe InstanceDetails
instanceDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:kubernetesDetails:Resource' :: Maybe KubernetesDetails
kubernetesDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:Resource' :: Maybe Text
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:s3BucketDetails:Resource' :: Maybe [S3BucketDetail]
s3BucketDetails = forall a. Maybe a
Prelude.Nothing
    }

-- | The IAM access key details (IAM user information) of a user that engaged
-- in the activity that prompted GuardDuty to generate a finding.
resource_accessKeyDetails :: Lens.Lens' Resource (Prelude.Maybe AccessKeyDetails)
resource_accessKeyDetails :: Lens' Resource (Maybe AccessKeyDetails)
resource_accessKeyDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe AccessKeyDetails
accessKeyDetails :: Maybe AccessKeyDetails
$sel:accessKeyDetails:Resource' :: Resource -> Maybe AccessKeyDetails
accessKeyDetails} -> Maybe AccessKeyDetails
accessKeyDetails) (\s :: Resource
s@Resource' {} Maybe AccessKeyDetails
a -> Resource
s {$sel:accessKeyDetails:Resource' :: Maybe AccessKeyDetails
accessKeyDetails = Maybe AccessKeyDetails
a} :: Resource)

-- | Undocumented member.
resource_containerDetails :: Lens.Lens' Resource (Prelude.Maybe Container)
resource_containerDetails :: Lens' Resource (Maybe Container)
resource_containerDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe Container
containerDetails :: Maybe Container
$sel:containerDetails:Resource' :: Resource -> Maybe Container
containerDetails} -> Maybe Container
containerDetails) (\s :: Resource
s@Resource' {} Maybe Container
a -> Resource
s {$sel:containerDetails:Resource' :: Maybe Container
containerDetails = Maybe Container
a} :: Resource)

-- | Contains list of scanned and skipped EBS volumes with details.
resource_ebsVolumeDetails :: Lens.Lens' Resource (Prelude.Maybe EbsVolumeDetails)
resource_ebsVolumeDetails :: Lens' Resource (Maybe EbsVolumeDetails)
resource_ebsVolumeDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe EbsVolumeDetails
ebsVolumeDetails :: Maybe EbsVolumeDetails
$sel:ebsVolumeDetails:Resource' :: Resource -> Maybe EbsVolumeDetails
ebsVolumeDetails} -> Maybe EbsVolumeDetails
ebsVolumeDetails) (\s :: Resource
s@Resource' {} Maybe EbsVolumeDetails
a -> Resource
s {$sel:ebsVolumeDetails:Resource' :: Maybe EbsVolumeDetails
ebsVolumeDetails = Maybe EbsVolumeDetails
a} :: Resource)

-- | Contains information about the details of the ECS Cluster.
resource_ecsClusterDetails :: Lens.Lens' Resource (Prelude.Maybe EcsClusterDetails)
resource_ecsClusterDetails :: Lens' Resource (Maybe EcsClusterDetails)
resource_ecsClusterDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe EcsClusterDetails
ecsClusterDetails :: Maybe EcsClusterDetails
$sel:ecsClusterDetails:Resource' :: Resource -> Maybe EcsClusterDetails
ecsClusterDetails} -> Maybe EcsClusterDetails
ecsClusterDetails) (\s :: Resource
s@Resource' {} Maybe EcsClusterDetails
a -> Resource
s {$sel:ecsClusterDetails:Resource' :: Maybe EcsClusterDetails
ecsClusterDetails = Maybe EcsClusterDetails
a} :: Resource)

-- | Details about the EKS cluster involved in a Kubernetes finding.
resource_eksClusterDetails :: Lens.Lens' Resource (Prelude.Maybe EksClusterDetails)
resource_eksClusterDetails :: Lens' Resource (Maybe EksClusterDetails)
resource_eksClusterDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe EksClusterDetails
eksClusterDetails :: Maybe EksClusterDetails
$sel:eksClusterDetails:Resource' :: Resource -> Maybe EksClusterDetails
eksClusterDetails} -> Maybe EksClusterDetails
eksClusterDetails) (\s :: Resource
s@Resource' {} Maybe EksClusterDetails
a -> Resource
s {$sel:eksClusterDetails:Resource' :: Maybe EksClusterDetails
eksClusterDetails = Maybe EksClusterDetails
a} :: Resource)

-- | The information about the EC2 instance associated with the activity that
-- prompted GuardDuty to generate a finding.
resource_instanceDetails :: Lens.Lens' Resource (Prelude.Maybe InstanceDetails)
resource_instanceDetails :: Lens' Resource (Maybe InstanceDetails)
resource_instanceDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe InstanceDetails
instanceDetails :: Maybe InstanceDetails
$sel:instanceDetails:Resource' :: Resource -> Maybe InstanceDetails
instanceDetails} -> Maybe InstanceDetails
instanceDetails) (\s :: Resource
s@Resource' {} Maybe InstanceDetails
a -> Resource
s {$sel:instanceDetails:Resource' :: Maybe InstanceDetails
instanceDetails = Maybe InstanceDetails
a} :: Resource)

-- | Details about the Kubernetes user and workload involved in a Kubernetes
-- finding.
resource_kubernetesDetails :: Lens.Lens' Resource (Prelude.Maybe KubernetesDetails)
resource_kubernetesDetails :: Lens' Resource (Maybe KubernetesDetails)
resource_kubernetesDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe KubernetesDetails
kubernetesDetails :: Maybe KubernetesDetails
$sel:kubernetesDetails:Resource' :: Resource -> Maybe KubernetesDetails
kubernetesDetails} -> Maybe KubernetesDetails
kubernetesDetails) (\s :: Resource
s@Resource' {} Maybe KubernetesDetails
a -> Resource
s {$sel:kubernetesDetails:Resource' :: Maybe KubernetesDetails
kubernetesDetails = Maybe KubernetesDetails
a} :: Resource)

-- | The type of Amazon Web Services resource.
resource_resourceType :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text)
resource_resourceType :: Lens' Resource (Maybe Text)
resource_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe Text
resourceType :: Maybe Text
$sel:resourceType:Resource' :: Resource -> Maybe Text
resourceType} -> Maybe Text
resourceType) (\s :: Resource
s@Resource' {} Maybe Text
a -> Resource
s {$sel:resourceType:Resource' :: Maybe Text
resourceType = Maybe Text
a} :: Resource)

-- | Contains information on the S3 bucket.
resource_s3BucketDetails :: Lens.Lens' Resource (Prelude.Maybe [S3BucketDetail])
resource_s3BucketDetails :: Lens' Resource (Maybe [S3BucketDetail])
resource_s3BucketDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Resource' {Maybe [S3BucketDetail]
s3BucketDetails :: Maybe [S3BucketDetail]
$sel:s3BucketDetails:Resource' :: Resource -> Maybe [S3BucketDetail]
s3BucketDetails} -> Maybe [S3BucketDetail]
s3BucketDetails) (\s :: Resource
s@Resource' {} Maybe [S3BucketDetail]
a -> Resource
s {$sel:s3BucketDetails:Resource' :: Maybe [S3BucketDetail]
s3BucketDetails = Maybe [S3BucketDetail]
a} :: Resource) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON Resource where
  parseJSON :: Value -> Parser Resource
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Resource"
      ( \Object
x ->
          Maybe AccessKeyDetails
-> Maybe Container
-> Maybe EbsVolumeDetails
-> Maybe EcsClusterDetails
-> Maybe EksClusterDetails
-> Maybe InstanceDetails
-> Maybe KubernetesDetails
-> Maybe Text
-> Maybe [S3BucketDetail]
-> Resource
Resource'
            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
"accessKeyDetails")
            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
"containerDetails")
            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
"ebsVolumeDetails")
            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
"ecsClusterDetails")
            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
"eksClusterDetails")
            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
"instanceDetails")
            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
"kubernetesDetails")
            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
"resourceType")
            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
"s3BucketDetails"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance Prelude.Hashable Resource where
  hashWithSalt :: Int -> Resource -> Int
hashWithSalt Int
_salt Resource' {Maybe [S3BucketDetail]
Maybe Text
Maybe AccessKeyDetails
Maybe InstanceDetails
Maybe EksClusterDetails
Maybe EbsVolumeDetails
Maybe Container
Maybe KubernetesDetails
Maybe EcsClusterDetails
s3BucketDetails :: Maybe [S3BucketDetail]
resourceType :: Maybe Text
kubernetesDetails :: Maybe KubernetesDetails
instanceDetails :: Maybe InstanceDetails
eksClusterDetails :: Maybe EksClusterDetails
ecsClusterDetails :: Maybe EcsClusterDetails
ebsVolumeDetails :: Maybe EbsVolumeDetails
containerDetails :: Maybe Container
accessKeyDetails :: Maybe AccessKeyDetails
$sel:s3BucketDetails:Resource' :: Resource -> Maybe [S3BucketDetail]
$sel:resourceType:Resource' :: Resource -> Maybe Text
$sel:kubernetesDetails:Resource' :: Resource -> Maybe KubernetesDetails
$sel:instanceDetails:Resource' :: Resource -> Maybe InstanceDetails
$sel:eksClusterDetails:Resource' :: Resource -> Maybe EksClusterDetails
$sel:ecsClusterDetails:Resource' :: Resource -> Maybe EcsClusterDetails
$sel:ebsVolumeDetails:Resource' :: Resource -> Maybe EbsVolumeDetails
$sel:containerDetails:Resource' :: Resource -> Maybe Container
$sel:accessKeyDetails:Resource' :: Resource -> Maybe AccessKeyDetails
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccessKeyDetails
accessKeyDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Container
containerDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EbsVolumeDetails
ebsVolumeDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EcsClusterDetails
ecsClusterDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EksClusterDetails
eksClusterDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceDetails
instanceDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe KubernetesDetails
kubernetesDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [S3BucketDetail]
s3BucketDetails

instance Prelude.NFData Resource where
  rnf :: Resource -> ()
rnf Resource' {Maybe [S3BucketDetail]
Maybe Text
Maybe AccessKeyDetails
Maybe InstanceDetails
Maybe EksClusterDetails
Maybe EbsVolumeDetails
Maybe Container
Maybe KubernetesDetails
Maybe EcsClusterDetails
s3BucketDetails :: Maybe [S3BucketDetail]
resourceType :: Maybe Text
kubernetesDetails :: Maybe KubernetesDetails
instanceDetails :: Maybe InstanceDetails
eksClusterDetails :: Maybe EksClusterDetails
ecsClusterDetails :: Maybe EcsClusterDetails
ebsVolumeDetails :: Maybe EbsVolumeDetails
containerDetails :: Maybe Container
accessKeyDetails :: Maybe AccessKeyDetails
$sel:s3BucketDetails:Resource' :: Resource -> Maybe [S3BucketDetail]
$sel:resourceType:Resource' :: Resource -> Maybe Text
$sel:kubernetesDetails:Resource' :: Resource -> Maybe KubernetesDetails
$sel:instanceDetails:Resource' :: Resource -> Maybe InstanceDetails
$sel:eksClusterDetails:Resource' :: Resource -> Maybe EksClusterDetails
$sel:ecsClusterDetails:Resource' :: Resource -> Maybe EcsClusterDetails
$sel:ebsVolumeDetails:Resource' :: Resource -> Maybe EbsVolumeDetails
$sel:containerDetails:Resource' :: Resource -> Maybe Container
$sel:accessKeyDetails:Resource' :: Resource -> Maybe AccessKeyDetails
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccessKeyDetails
accessKeyDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Container
containerDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EbsVolumeDetails
ebsVolumeDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EcsClusterDetails
ecsClusterDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EksClusterDetails
eksClusterDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceDetails
instanceDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe KubernetesDetails
kubernetesDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [S3BucketDetail]
s3BucketDetails