amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsBackupBackupVaultDetails.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.SecurityHub.Types.AwsBackupBackupVaultDetails
-- 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.SecurityHub.Types.AwsBackupBackupVaultDetails where
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
import Amazonka.SecurityHub.Types.AwsBackupBackupVaultNotificationsDetails
-- | Provides details about an Backup backup vault. In Backup, a backup vault
-- is a container that stores and organizes your backups.
--
-- /See:/ 'newAwsBackupBackupVaultDetails' smart constructor.
data AwsBackupBackupVaultDetails = AwsBackupBackupVaultDetails'
{ -- | A resource-based policy that is used to manage access permissions on the
-- target backup vault.
accessPolicy :: Prelude.Maybe Prelude.Text,
-- | An Amazon Resource Name (ARN) that uniquely identifies a backup vault.
backupVaultArn :: Prelude.Maybe Prelude.Text,
-- | The name of a logical container where backups are stored. Backup vaults
-- are identified by names that are unique to the Amazon Web Services
-- account used to create them and the Amazon Web Services Region where
-- they are created. They consist of lowercase letters, numbers, and
-- hyphens.
backupVaultName :: Prelude.Maybe Prelude.Text,
-- | The unique ARN associated with the server-side encryption key. You can
-- specify a key to encrypt your backups from services that support full
-- Backup management. If you do not specify a key, Backup creates an KMS
-- key for you by default.
encryptionKeyArn :: Prelude.Maybe Prelude.Text,
-- | The Amazon SNS event notifications for the specified backup vault.
notifications :: Prelude.Maybe AwsBackupBackupVaultNotificationsDetails
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'AwsBackupBackupVaultDetails' 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:
--
-- 'accessPolicy', 'awsBackupBackupVaultDetails_accessPolicy' - A resource-based policy that is used to manage access permissions on the
-- target backup vault.
--
-- 'backupVaultArn', 'awsBackupBackupVaultDetails_backupVaultArn' - An Amazon Resource Name (ARN) that uniquely identifies a backup vault.
--
-- 'backupVaultName', 'awsBackupBackupVaultDetails_backupVaultName' - The name of a logical container where backups are stored. Backup vaults
-- are identified by names that are unique to the Amazon Web Services
-- account used to create them and the Amazon Web Services Region where
-- they are created. They consist of lowercase letters, numbers, and
-- hyphens.
--
-- 'encryptionKeyArn', 'awsBackupBackupVaultDetails_encryptionKeyArn' - The unique ARN associated with the server-side encryption key. You can
-- specify a key to encrypt your backups from services that support full
-- Backup management. If you do not specify a key, Backup creates an KMS
-- key for you by default.
--
-- 'notifications', 'awsBackupBackupVaultDetails_notifications' - The Amazon SNS event notifications for the specified backup vault.
newAwsBackupBackupVaultDetails ::
AwsBackupBackupVaultDetails
newAwsBackupBackupVaultDetails =
AwsBackupBackupVaultDetails'
{ accessPolicy =
Prelude.Nothing,
backupVaultArn = Prelude.Nothing,
backupVaultName = Prelude.Nothing,
encryptionKeyArn = Prelude.Nothing,
notifications = Prelude.Nothing
}
-- | A resource-based policy that is used to manage access permissions on the
-- target backup vault.
awsBackupBackupVaultDetails_accessPolicy :: Lens.Lens' AwsBackupBackupVaultDetails (Prelude.Maybe Prelude.Text)
awsBackupBackupVaultDetails_accessPolicy = Lens.lens (\AwsBackupBackupVaultDetails' {accessPolicy} -> accessPolicy) (\s@AwsBackupBackupVaultDetails' {} a -> s {accessPolicy = a} :: AwsBackupBackupVaultDetails)
-- | An Amazon Resource Name (ARN) that uniquely identifies a backup vault.
awsBackupBackupVaultDetails_backupVaultArn :: Lens.Lens' AwsBackupBackupVaultDetails (Prelude.Maybe Prelude.Text)
awsBackupBackupVaultDetails_backupVaultArn = Lens.lens (\AwsBackupBackupVaultDetails' {backupVaultArn} -> backupVaultArn) (\s@AwsBackupBackupVaultDetails' {} a -> s {backupVaultArn = a} :: AwsBackupBackupVaultDetails)
-- | The name of a logical container where backups are stored. Backup vaults
-- are identified by names that are unique to the Amazon Web Services
-- account used to create them and the Amazon Web Services Region where
-- they are created. They consist of lowercase letters, numbers, and
-- hyphens.
awsBackupBackupVaultDetails_backupVaultName :: Lens.Lens' AwsBackupBackupVaultDetails (Prelude.Maybe Prelude.Text)
awsBackupBackupVaultDetails_backupVaultName = Lens.lens (\AwsBackupBackupVaultDetails' {backupVaultName} -> backupVaultName) (\s@AwsBackupBackupVaultDetails' {} a -> s {backupVaultName = a} :: AwsBackupBackupVaultDetails)
-- | The unique ARN associated with the server-side encryption key. You can
-- specify a key to encrypt your backups from services that support full
-- Backup management. If you do not specify a key, Backup creates an KMS
-- key for you by default.
awsBackupBackupVaultDetails_encryptionKeyArn :: Lens.Lens' AwsBackupBackupVaultDetails (Prelude.Maybe Prelude.Text)
awsBackupBackupVaultDetails_encryptionKeyArn = Lens.lens (\AwsBackupBackupVaultDetails' {encryptionKeyArn} -> encryptionKeyArn) (\s@AwsBackupBackupVaultDetails' {} a -> s {encryptionKeyArn = a} :: AwsBackupBackupVaultDetails)
-- | The Amazon SNS event notifications for the specified backup vault.
awsBackupBackupVaultDetails_notifications :: Lens.Lens' AwsBackupBackupVaultDetails (Prelude.Maybe AwsBackupBackupVaultNotificationsDetails)
awsBackupBackupVaultDetails_notifications = Lens.lens (\AwsBackupBackupVaultDetails' {notifications} -> notifications) (\s@AwsBackupBackupVaultDetails' {} a -> s {notifications = a} :: AwsBackupBackupVaultDetails)
instance Data.FromJSON AwsBackupBackupVaultDetails where
parseJSON =
Data.withObject
"AwsBackupBackupVaultDetails"
( \x ->
AwsBackupBackupVaultDetails'
Prelude.<$> (x Data..:? "AccessPolicy")
Prelude.<*> (x Data..:? "BackupVaultArn")
Prelude.<*> (x Data..:? "BackupVaultName")
Prelude.<*> (x Data..:? "EncryptionKeyArn")
Prelude.<*> (x Data..:? "Notifications")
)
instance Prelude.Hashable AwsBackupBackupVaultDetails where
hashWithSalt _salt AwsBackupBackupVaultDetails' {..} =
_salt
`Prelude.hashWithSalt` accessPolicy
`Prelude.hashWithSalt` backupVaultArn
`Prelude.hashWithSalt` backupVaultName
`Prelude.hashWithSalt` encryptionKeyArn
`Prelude.hashWithSalt` notifications
instance Prelude.NFData AwsBackupBackupVaultDetails where
rnf AwsBackupBackupVaultDetails' {..} =
Prelude.rnf accessPolicy
`Prelude.seq` Prelude.rnf backupVaultArn
`Prelude.seq` Prelude.rnf backupVaultName
`Prelude.seq` Prelude.rnf encryptionKeyArn
`Prelude.seq` Prelude.rnf notifications
instance Data.ToJSON AwsBackupBackupVaultDetails where
toJSON AwsBackupBackupVaultDetails' {..} =
Data.object
( Prelude.catMaybes
[ ("AccessPolicy" Data..=) Prelude.<$> accessPolicy,
("BackupVaultArn" Data..=)
Prelude.<$> backupVaultArn,
("BackupVaultName" Data..=)
Prelude.<$> backupVaultName,
("EncryptionKeyArn" Data..=)
Prelude.<$> encryptionKeyArn,
("Notifications" Data..=) Prelude.<$> notifications
]
)