amazonka-kms-1.4.3: gen/Network/AWS/KMS/ScheduleKeyDeletion.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.KMS.ScheduleKeyDeletion
-- Copyright : (c) 2013-2016 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Schedules the deletion of a customer master key (CMK). You may provide a waiting period, specified in days, before deletion occurs. If you do not provide a waiting period, the default period of 30 days is used. When this operation is successful, the state of the CMK changes to 'PendingDeletion'. Before the waiting period ends, you can use < CancelKeyDeletion> to cancel the deletion of the CMK. After the waiting period ends, AWS KMS deletes the CMK and all AWS KMS data associated with it, including all aliases that point to it.
--
-- Deleting a CMK is a destructive and potentially dangerous operation. When a CMK is deleted, all data that was encrypted under the CMK is rendered unrecoverable. To restrict the use of a CMK without deleting it, use < DisableKey>.
--
-- For more information about scheduling a CMK for deletion, go to <http://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html Deleting Customer Master Keys> in the /AWS Key Management Service Developer Guide/.
module Network.AWS.KMS.ScheduleKeyDeletion
(
-- * Creating a Request
scheduleKeyDeletion
, ScheduleKeyDeletion
-- * Request Lenses
, skdPendingWindowInDays
, skdKeyId
-- * Destructuring the Response
, scheduleKeyDeletionResponse
, ScheduleKeyDeletionResponse
-- * Response Lenses
, skdrsKeyId
, skdrsDeletionDate
, skdrsResponseStatus
) where
import Network.AWS.KMS.Types
import Network.AWS.KMS.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'scheduleKeyDeletion' smart constructor.
data ScheduleKeyDeletion = ScheduleKeyDeletion'
{ _skdPendingWindowInDays :: !(Maybe Nat)
, _skdKeyId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'ScheduleKeyDeletion' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'skdPendingWindowInDays'
--
-- * 'skdKeyId'
scheduleKeyDeletion
:: Text -- ^ 'skdKeyId'
-> ScheduleKeyDeletion
scheduleKeyDeletion pKeyId_ =
ScheduleKeyDeletion'
{ _skdPendingWindowInDays = Nothing
, _skdKeyId = pKeyId_
}
-- | The waiting period, specified in number of days. After the waiting period ends, AWS KMS deletes the customer master key (CMK).
--
-- This value is optional. If you include a value, it must be between 7 and 30, inclusive. If you do not include a value, it defaults to 30.
skdPendingWindowInDays :: Lens' ScheduleKeyDeletion (Maybe Natural)
skdPendingWindowInDays = lens _skdPendingWindowInDays (\ s a -> s{_skdPendingWindowInDays = a}) . mapping _Nat;
-- | The unique identifier for the customer master key (CMK) to delete.
--
-- To specify this value, use the unique key ID or the Amazon Resource Name (ARN) of the CMK. Examples:
--
-- - Unique key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
-- - Key ARN: arn:aws:kms:us-west-2:111122223333:key\/1234abcd-12ab-34cd-56ef-1234567890ab
--
-- To obtain the unique key ID and key ARN for a given CMK, use < ListKeys> or < DescribeKey>.
skdKeyId :: Lens' ScheduleKeyDeletion Text
skdKeyId = lens _skdKeyId (\ s a -> s{_skdKeyId = a});
instance AWSRequest ScheduleKeyDeletion where
type Rs ScheduleKeyDeletion =
ScheduleKeyDeletionResponse
request = postJSON kms
response
= receiveJSON
(\ s h x ->
ScheduleKeyDeletionResponse' <$>
(x .?> "KeyId") <*> (x .?> "DeletionDate") <*>
(pure (fromEnum s)))
instance Hashable ScheduleKeyDeletion
instance NFData ScheduleKeyDeletion
instance ToHeaders ScheduleKeyDeletion where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("TrentService.ScheduleKeyDeletion" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON ScheduleKeyDeletion where
toJSON ScheduleKeyDeletion'{..}
= object
(catMaybes
[("PendingWindowInDays" .=) <$>
_skdPendingWindowInDays,
Just ("KeyId" .= _skdKeyId)])
instance ToPath ScheduleKeyDeletion where
toPath = const "/"
instance ToQuery ScheduleKeyDeletion where
toQuery = const mempty
-- | /See:/ 'scheduleKeyDeletionResponse' smart constructor.
data ScheduleKeyDeletionResponse = ScheduleKeyDeletionResponse'
{ _skdrsKeyId :: !(Maybe Text)
, _skdrsDeletionDate :: !(Maybe POSIX)
, _skdrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'ScheduleKeyDeletionResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'skdrsKeyId'
--
-- * 'skdrsDeletionDate'
--
-- * 'skdrsResponseStatus'
scheduleKeyDeletionResponse
:: Int -- ^ 'skdrsResponseStatus'
-> ScheduleKeyDeletionResponse
scheduleKeyDeletionResponse pResponseStatus_ =
ScheduleKeyDeletionResponse'
{ _skdrsKeyId = Nothing
, _skdrsDeletionDate = Nothing
, _skdrsResponseStatus = pResponseStatus_
}
-- | The unique identifier of the customer master key (CMK) for which deletion is scheduled.
skdrsKeyId :: Lens' ScheduleKeyDeletionResponse (Maybe Text)
skdrsKeyId = lens _skdrsKeyId (\ s a -> s{_skdrsKeyId = a});
-- | The date and time after which AWS KMS deletes the customer master key (CMK).
skdrsDeletionDate :: Lens' ScheduleKeyDeletionResponse (Maybe UTCTime)
skdrsDeletionDate = lens _skdrsDeletionDate (\ s a -> s{_skdrsDeletionDate = a}) . mapping _Time;
-- | The response status code.
skdrsResponseStatus :: Lens' ScheduleKeyDeletionResponse Int
skdrsResponseStatus = lens _skdrsResponseStatus (\ s a -> s{_skdrsResponseStatus = a});
instance NFData ScheduleKeyDeletionResponse