amazonka-glacier-1.4.3: gen/Network/AWS/Glacier/SetVaultAccessPolicy.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.Glacier.SetVaultAccessPolicy
-- 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)
--
-- This operation configures an access policy for a vault and will overwrite an existing policy. To configure a vault access policy, send a PUT request to the 'access-policy' subresource of the vault. An access policy is specific to a vault and is also called a vault subresource. You can set one access policy per vault and the policy can be up to 20 KB in size. For more information about vault access policies, see <http://docs.aws.amazon.com/amazonglacier/latest/dev/vault-access-policy.html Amazon Glacier Access Control with Vault Access Policies>.
module Network.AWS.Glacier.SetVaultAccessPolicy
(
-- * Creating a Request
setVaultAccessPolicy
, SetVaultAccessPolicy
-- * Request Lenses
, svapPolicy
, svapAccountId
, svapVaultName
-- * Destructuring the Response
, setVaultAccessPolicyResponse
, SetVaultAccessPolicyResponse
) where
import Network.AWS.Glacier.Types
import Network.AWS.Glacier.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | SetVaultAccessPolicy input.
--
-- /See:/ 'setVaultAccessPolicy' smart constructor.
data SetVaultAccessPolicy = SetVaultAccessPolicy'
{ _svapPolicy :: !(Maybe VaultAccessPolicy)
, _svapAccountId :: !Text
, _svapVaultName :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'SetVaultAccessPolicy' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'svapPolicy'
--
-- * 'svapAccountId'
--
-- * 'svapVaultName'
setVaultAccessPolicy
:: Text -- ^ 'svapAccountId'
-> Text -- ^ 'svapVaultName'
-> SetVaultAccessPolicy
setVaultAccessPolicy pAccountId_ pVaultName_ =
SetVaultAccessPolicy'
{ _svapPolicy = Nothing
, _svapAccountId = pAccountId_
, _svapVaultName = pVaultName_
}
-- | The vault access policy as a JSON string.
svapPolicy :: Lens' SetVaultAccessPolicy (Maybe VaultAccessPolicy)
svapPolicy = lens _svapPolicy (\ s a -> s{_svapPolicy = a});
-- | The 'AccountId' value is the AWS account ID of the account that owns the vault. You can either specify an AWS account ID or optionally a single apos'-'apos (hyphen), in which case Amazon Glacier uses the AWS account ID associated with the credentials used to sign the request. If you use an account ID, do not include any hyphens (apos-apos) in the ID.
svapAccountId :: Lens' SetVaultAccessPolicy Text
svapAccountId = lens _svapAccountId (\ s a -> s{_svapAccountId = a});
-- | The name of the vault.
svapVaultName :: Lens' SetVaultAccessPolicy Text
svapVaultName = lens _svapVaultName (\ s a -> s{_svapVaultName = a});
instance AWSRequest SetVaultAccessPolicy where
type Rs SetVaultAccessPolicy =
SetVaultAccessPolicyResponse
request = putJSON glacier
response = receiveNull SetVaultAccessPolicyResponse'
instance Hashable SetVaultAccessPolicy
instance NFData SetVaultAccessPolicy
instance ToHeaders SetVaultAccessPolicy where
toHeaders = const mempty
instance ToJSON SetVaultAccessPolicy where
toJSON SetVaultAccessPolicy'{..}
= object (catMaybes [("policy" .=) <$> _svapPolicy])
instance ToPath SetVaultAccessPolicy where
toPath SetVaultAccessPolicy'{..}
= mconcat
["/", toBS _svapAccountId, "/vaults/",
toBS _svapVaultName, "/access-policy"]
instance ToQuery SetVaultAccessPolicy where
toQuery = const mempty
-- | /See:/ 'setVaultAccessPolicyResponse' smart constructor.
data SetVaultAccessPolicyResponse =
SetVaultAccessPolicyResponse'
deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'SetVaultAccessPolicyResponse' with the minimum fields required to make a request.
--
setVaultAccessPolicyResponse
:: SetVaultAccessPolicyResponse
setVaultAccessPolicyResponse = SetVaultAccessPolicyResponse'
instance NFData SetVaultAccessPolicyResponse