amazonka-accessanalyzer-2.0: gen/Amazonka/AccessAnalyzer/Types/Configuration.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.AccessAnalyzer.Types.Configuration
-- 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.AccessAnalyzer.Types.Configuration where
import Amazonka.AccessAnalyzer.Types.EbsSnapshotConfiguration
import Amazonka.AccessAnalyzer.Types.EcrRepositoryConfiguration
import Amazonka.AccessAnalyzer.Types.EfsFileSystemConfiguration
import Amazonka.AccessAnalyzer.Types.IamRoleConfiguration
import Amazonka.AccessAnalyzer.Types.KmsKeyConfiguration
import Amazonka.AccessAnalyzer.Types.RdsDbClusterSnapshotConfiguration
import Amazonka.AccessAnalyzer.Types.RdsDbSnapshotConfiguration
import Amazonka.AccessAnalyzer.Types.S3BucketConfiguration
import Amazonka.AccessAnalyzer.Types.SecretsManagerSecretConfiguration
import Amazonka.AccessAnalyzer.Types.SnsTopicConfiguration
import Amazonka.AccessAnalyzer.Types.SqsQueueConfiguration
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
-- | Access control configuration structures for your resource. You specify
-- the configuration as a type-value pair. You can specify only one type of
-- access control configuration.
--
-- /See:/ 'newConfiguration' smart constructor.
data Configuration = Configuration'
{ -- | The access control configuration is for an Amazon EBS volume snapshot.
ebsSnapshot :: Prelude.Maybe EbsSnapshotConfiguration,
-- | The access control configuration is for an Amazon ECR repository.
ecrRepository :: Prelude.Maybe EcrRepositoryConfiguration,
-- | The access control configuration is for an Amazon EFS file system.
efsFileSystem :: Prelude.Maybe EfsFileSystemConfiguration,
-- | The access control configuration is for an IAM role.
iamRole :: Prelude.Maybe IamRoleConfiguration,
-- | The access control configuration is for a KMS key.
kmsKey :: Prelude.Maybe KmsKeyConfiguration,
-- | The access control configuration is for an Amazon RDS DB cluster
-- snapshot.
rdsDbClusterSnapshot :: Prelude.Maybe RdsDbClusterSnapshotConfiguration,
-- | The access control configuration is for an Amazon RDS DB snapshot.
rdsDbSnapshot :: Prelude.Maybe RdsDbSnapshotConfiguration,
-- | The access control configuration is for an Amazon S3 Bucket.
s3Bucket :: Prelude.Maybe S3BucketConfiguration,
-- | The access control configuration is for a Secrets Manager secret.
secretsManagerSecret :: Prelude.Maybe SecretsManagerSecretConfiguration,
-- | The access control configuration is for an Amazon SNS topic
snsTopic :: Prelude.Maybe SnsTopicConfiguration,
-- | The access control configuration is for an Amazon SQS queue.
sqsQueue :: Prelude.Maybe SqsQueueConfiguration
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'Configuration' 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:
--
-- 'ebsSnapshot', 'configuration_ebsSnapshot' - The access control configuration is for an Amazon EBS volume snapshot.
--
-- 'ecrRepository', 'configuration_ecrRepository' - The access control configuration is for an Amazon ECR repository.
--
-- 'efsFileSystem', 'configuration_efsFileSystem' - The access control configuration is for an Amazon EFS file system.
--
-- 'iamRole', 'configuration_iamRole' - The access control configuration is for an IAM role.
--
-- 'kmsKey', 'configuration_kmsKey' - The access control configuration is for a KMS key.
--
-- 'rdsDbClusterSnapshot', 'configuration_rdsDbClusterSnapshot' - The access control configuration is for an Amazon RDS DB cluster
-- snapshot.
--
-- 'rdsDbSnapshot', 'configuration_rdsDbSnapshot' - The access control configuration is for an Amazon RDS DB snapshot.
--
-- 's3Bucket', 'configuration_s3Bucket' - The access control configuration is for an Amazon S3 Bucket.
--
-- 'secretsManagerSecret', 'configuration_secretsManagerSecret' - The access control configuration is for a Secrets Manager secret.
--
-- 'snsTopic', 'configuration_snsTopic' - The access control configuration is for an Amazon SNS topic
--
-- 'sqsQueue', 'configuration_sqsQueue' - The access control configuration is for an Amazon SQS queue.
newConfiguration ::
Configuration
newConfiguration =
Configuration'
{ ebsSnapshot = Prelude.Nothing,
ecrRepository = Prelude.Nothing,
efsFileSystem = Prelude.Nothing,
iamRole = Prelude.Nothing,
kmsKey = Prelude.Nothing,
rdsDbClusterSnapshot = Prelude.Nothing,
rdsDbSnapshot = Prelude.Nothing,
s3Bucket = Prelude.Nothing,
secretsManagerSecret = Prelude.Nothing,
snsTopic = Prelude.Nothing,
sqsQueue = Prelude.Nothing
}
-- | The access control configuration is for an Amazon EBS volume snapshot.
configuration_ebsSnapshot :: Lens.Lens' Configuration (Prelude.Maybe EbsSnapshotConfiguration)
configuration_ebsSnapshot = Lens.lens (\Configuration' {ebsSnapshot} -> ebsSnapshot) (\s@Configuration' {} a -> s {ebsSnapshot = a} :: Configuration)
-- | The access control configuration is for an Amazon ECR repository.
configuration_ecrRepository :: Lens.Lens' Configuration (Prelude.Maybe EcrRepositoryConfiguration)
configuration_ecrRepository = Lens.lens (\Configuration' {ecrRepository} -> ecrRepository) (\s@Configuration' {} a -> s {ecrRepository = a} :: Configuration)
-- | The access control configuration is for an Amazon EFS file system.
configuration_efsFileSystem :: Lens.Lens' Configuration (Prelude.Maybe EfsFileSystemConfiguration)
configuration_efsFileSystem = Lens.lens (\Configuration' {efsFileSystem} -> efsFileSystem) (\s@Configuration' {} a -> s {efsFileSystem = a} :: Configuration)
-- | The access control configuration is for an IAM role.
configuration_iamRole :: Lens.Lens' Configuration (Prelude.Maybe IamRoleConfiguration)
configuration_iamRole = Lens.lens (\Configuration' {iamRole} -> iamRole) (\s@Configuration' {} a -> s {iamRole = a} :: Configuration)
-- | The access control configuration is for a KMS key.
configuration_kmsKey :: Lens.Lens' Configuration (Prelude.Maybe KmsKeyConfiguration)
configuration_kmsKey = Lens.lens (\Configuration' {kmsKey} -> kmsKey) (\s@Configuration' {} a -> s {kmsKey = a} :: Configuration)
-- | The access control configuration is for an Amazon RDS DB cluster
-- snapshot.
configuration_rdsDbClusterSnapshot :: Lens.Lens' Configuration (Prelude.Maybe RdsDbClusterSnapshotConfiguration)
configuration_rdsDbClusterSnapshot = Lens.lens (\Configuration' {rdsDbClusterSnapshot} -> rdsDbClusterSnapshot) (\s@Configuration' {} a -> s {rdsDbClusterSnapshot = a} :: Configuration)
-- | The access control configuration is for an Amazon RDS DB snapshot.
configuration_rdsDbSnapshot :: Lens.Lens' Configuration (Prelude.Maybe RdsDbSnapshotConfiguration)
configuration_rdsDbSnapshot = Lens.lens (\Configuration' {rdsDbSnapshot} -> rdsDbSnapshot) (\s@Configuration' {} a -> s {rdsDbSnapshot = a} :: Configuration)
-- | The access control configuration is for an Amazon S3 Bucket.
configuration_s3Bucket :: Lens.Lens' Configuration (Prelude.Maybe S3BucketConfiguration)
configuration_s3Bucket = Lens.lens (\Configuration' {s3Bucket} -> s3Bucket) (\s@Configuration' {} a -> s {s3Bucket = a} :: Configuration)
-- | The access control configuration is for a Secrets Manager secret.
configuration_secretsManagerSecret :: Lens.Lens' Configuration (Prelude.Maybe SecretsManagerSecretConfiguration)
configuration_secretsManagerSecret = Lens.lens (\Configuration' {secretsManagerSecret} -> secretsManagerSecret) (\s@Configuration' {} a -> s {secretsManagerSecret = a} :: Configuration)
-- | The access control configuration is for an Amazon SNS topic
configuration_snsTopic :: Lens.Lens' Configuration (Prelude.Maybe SnsTopicConfiguration)
configuration_snsTopic = Lens.lens (\Configuration' {snsTopic} -> snsTopic) (\s@Configuration' {} a -> s {snsTopic = a} :: Configuration)
-- | The access control configuration is for an Amazon SQS queue.
configuration_sqsQueue :: Lens.Lens' Configuration (Prelude.Maybe SqsQueueConfiguration)
configuration_sqsQueue = Lens.lens (\Configuration' {sqsQueue} -> sqsQueue) (\s@Configuration' {} a -> s {sqsQueue = a} :: Configuration)
instance Data.FromJSON Configuration where
parseJSON =
Data.withObject
"Configuration"
( \x ->
Configuration'
Prelude.<$> (x Data..:? "ebsSnapshot")
Prelude.<*> (x Data..:? "ecrRepository")
Prelude.<*> (x Data..:? "efsFileSystem")
Prelude.<*> (x Data..:? "iamRole")
Prelude.<*> (x Data..:? "kmsKey")
Prelude.<*> (x Data..:? "rdsDbClusterSnapshot")
Prelude.<*> (x Data..:? "rdsDbSnapshot")
Prelude.<*> (x Data..:? "s3Bucket")
Prelude.<*> (x Data..:? "secretsManagerSecret")
Prelude.<*> (x Data..:? "snsTopic")
Prelude.<*> (x Data..:? "sqsQueue")
)
instance Prelude.Hashable Configuration where
hashWithSalt _salt Configuration' {..} =
_salt
`Prelude.hashWithSalt` ebsSnapshot
`Prelude.hashWithSalt` ecrRepository
`Prelude.hashWithSalt` efsFileSystem
`Prelude.hashWithSalt` iamRole
`Prelude.hashWithSalt` kmsKey
`Prelude.hashWithSalt` rdsDbClusterSnapshot
`Prelude.hashWithSalt` rdsDbSnapshot
`Prelude.hashWithSalt` s3Bucket
`Prelude.hashWithSalt` secretsManagerSecret
`Prelude.hashWithSalt` snsTopic
`Prelude.hashWithSalt` sqsQueue
instance Prelude.NFData Configuration where
rnf Configuration' {..} =
Prelude.rnf ebsSnapshot
`Prelude.seq` Prelude.rnf ecrRepository
`Prelude.seq` Prelude.rnf efsFileSystem
`Prelude.seq` Prelude.rnf iamRole
`Prelude.seq` Prelude.rnf kmsKey
`Prelude.seq` Prelude.rnf rdsDbClusterSnapshot
`Prelude.seq` Prelude.rnf rdsDbSnapshot
`Prelude.seq` Prelude.rnf s3Bucket
`Prelude.seq` Prelude.rnf secretsManagerSecret
`Prelude.seq` Prelude.rnf snsTopic
`Prelude.seq` Prelude.rnf sqsQueue
instance Data.ToJSON Configuration where
toJSON Configuration' {..} =
Data.object
( Prelude.catMaybes
[ ("ebsSnapshot" Data..=) Prelude.<$> ebsSnapshot,
("ecrRepository" Data..=) Prelude.<$> ecrRepository,
("efsFileSystem" Data..=) Prelude.<$> efsFileSystem,
("iamRole" Data..=) Prelude.<$> iamRole,
("kmsKey" Data..=) Prelude.<$> kmsKey,
("rdsDbClusterSnapshot" Data..=)
Prelude.<$> rdsDbClusterSnapshot,
("rdsDbSnapshot" Data..=) Prelude.<$> rdsDbSnapshot,
("s3Bucket" Data..=) Prelude.<$> s3Bucket,
("secretsManagerSecret" Data..=)
Prelude.<$> secretsManagerSecret,
("snsTopic" Data..=) Prelude.<$> snsTopic,
("sqsQueue" Data..=) Prelude.<$> sqsQueue
]
)