{-# 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. accessKeyDetails :: Prelude.Maybe AccessKeyDetails, containerDetails :: Prelude.Maybe Container, -- | Contains list of scanned and skipped EBS volumes with details. ebsVolumeDetails :: Prelude.Maybe EbsVolumeDetails, -- | Contains information about the details of the ECS Cluster. ecsClusterDetails :: Prelude.Maybe EcsClusterDetails, -- | Details about the EKS cluster involved in a Kubernetes finding. eksClusterDetails :: Prelude.Maybe EksClusterDetails, -- | The information about the EC2 instance associated with the activity that -- prompted GuardDuty to generate a finding. instanceDetails :: Prelude.Maybe InstanceDetails, -- | Details about the Kubernetes user and workload involved in a Kubernetes -- finding. kubernetesDetails :: Prelude.Maybe KubernetesDetails, -- | The type of Amazon Web Services resource. resourceType :: Prelude.Maybe Prelude.Text, -- | Contains information on the S3 bucket. s3BucketDetails :: Prelude.Maybe [S3BucketDetail] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'Resource' with all optional fields omitted. -- -- Use or 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' { accessKeyDetails = Prelude.Nothing, containerDetails = Prelude.Nothing, ebsVolumeDetails = Prelude.Nothing, ecsClusterDetails = Prelude.Nothing, eksClusterDetails = Prelude.Nothing, instanceDetails = Prelude.Nothing, kubernetesDetails = Prelude.Nothing, resourceType = Prelude.Nothing, s3BucketDetails = 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.lens (\Resource' {accessKeyDetails} -> accessKeyDetails) (\s@Resource' {} a -> s {accessKeyDetails = a} :: Resource) -- | Undocumented member. resource_containerDetails :: Lens.Lens' Resource (Prelude.Maybe Container) resource_containerDetails = Lens.lens (\Resource' {containerDetails} -> containerDetails) (\s@Resource' {} a -> s {containerDetails = a} :: Resource) -- | Contains list of scanned and skipped EBS volumes with details. resource_ebsVolumeDetails :: Lens.Lens' Resource (Prelude.Maybe EbsVolumeDetails) resource_ebsVolumeDetails = Lens.lens (\Resource' {ebsVolumeDetails} -> ebsVolumeDetails) (\s@Resource' {} a -> s {ebsVolumeDetails = a} :: Resource) -- | Contains information about the details of the ECS Cluster. resource_ecsClusterDetails :: Lens.Lens' Resource (Prelude.Maybe EcsClusterDetails) resource_ecsClusterDetails = Lens.lens (\Resource' {ecsClusterDetails} -> ecsClusterDetails) (\s@Resource' {} a -> s {ecsClusterDetails = a} :: Resource) -- | Details about the EKS cluster involved in a Kubernetes finding. resource_eksClusterDetails :: Lens.Lens' Resource (Prelude.Maybe EksClusterDetails) resource_eksClusterDetails = Lens.lens (\Resource' {eksClusterDetails} -> eksClusterDetails) (\s@Resource' {} a -> s {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.lens (\Resource' {instanceDetails} -> instanceDetails) (\s@Resource' {} a -> s {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.lens (\Resource' {kubernetesDetails} -> kubernetesDetails) (\s@Resource' {} a -> s {kubernetesDetails = a} :: Resource) -- | The type of Amazon Web Services resource. resource_resourceType :: Lens.Lens' Resource (Prelude.Maybe Prelude.Text) resource_resourceType = Lens.lens (\Resource' {resourceType} -> resourceType) (\s@Resource' {} a -> s {resourceType = a} :: Resource) -- | Contains information on the S3 bucket. resource_s3BucketDetails :: Lens.Lens' Resource (Prelude.Maybe [S3BucketDetail]) resource_s3BucketDetails = Lens.lens (\Resource' {s3BucketDetails} -> s3BucketDetails) (\s@Resource' {} a -> s {s3BucketDetails = a} :: Resource) Prelude.. Lens.mapping Lens.coerced instance Data.FromJSON Resource where parseJSON = Data.withObject "Resource" ( \x -> Resource' Prelude.<$> (x Data..:? "accessKeyDetails") Prelude.<*> (x Data..:? "containerDetails") Prelude.<*> (x Data..:? "ebsVolumeDetails") Prelude.<*> (x Data..:? "ecsClusterDetails") Prelude.<*> (x Data..:? "eksClusterDetails") Prelude.<*> (x Data..:? "instanceDetails") Prelude.<*> (x Data..:? "kubernetesDetails") Prelude.<*> (x Data..:? "resourceType") Prelude.<*> ( x Data..:? "s3BucketDetails" Data..!= Prelude.mempty ) ) instance Prelude.Hashable Resource where hashWithSalt _salt Resource' {..} = _salt `Prelude.hashWithSalt` accessKeyDetails `Prelude.hashWithSalt` containerDetails `Prelude.hashWithSalt` ebsVolumeDetails `Prelude.hashWithSalt` ecsClusterDetails `Prelude.hashWithSalt` eksClusterDetails `Prelude.hashWithSalt` instanceDetails `Prelude.hashWithSalt` kubernetesDetails `Prelude.hashWithSalt` resourceType `Prelude.hashWithSalt` s3BucketDetails instance Prelude.NFData Resource where rnf Resource' {..} = Prelude.rnf accessKeyDetails `Prelude.seq` Prelude.rnf containerDetails `Prelude.seq` Prelude.rnf ebsVolumeDetails `Prelude.seq` Prelude.rnf ecsClusterDetails `Prelude.seq` Prelude.rnf eksClusterDetails `Prelude.seq` Prelude.rnf instanceDetails `Prelude.seq` Prelude.rnf kubernetesDetails `Prelude.seq` Prelude.rnf resourceType `Prelude.seq` Prelude.rnf s3BucketDetails