amazonka-ec2-1.2.0: gen/Network/AWS/EC2/ReplaceNetworkACLEntry.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.EC2.ReplaceNetworkACLEntry
-- Copyright : (c) 2013-2015 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)
--
-- Replaces an entry (rule) in a network ACL. For more information about
-- network ACLs, see
-- <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html Network ACLs>
-- in the /Amazon Virtual Private Cloud User Guide/.
--
-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ReplaceNetworkACLEntry.html AWS API Reference> for ReplaceNetworkACLEntry.
module Network.AWS.EC2.ReplaceNetworkACLEntry
(
-- * Creating a Request
replaceNetworkACLEntry
, ReplaceNetworkACLEntry
-- * Request Lenses
, rnaeICMPTypeCode
, rnaePortRange
, rnaeDryRun
, rnaeNetworkACLId
, rnaeRuleNumber
, rnaeProtocol
, rnaeRuleAction
, rnaeEgress
, rnaeCIdRBlock
-- * Destructuring the Response
, replaceNetworkACLEntryResponse
, ReplaceNetworkACLEntryResponse
) where
import Network.AWS.EC2.Types
import Network.AWS.EC2.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'replaceNetworkACLEntry' smart constructor.
data ReplaceNetworkACLEntry = ReplaceNetworkACLEntry'
{ _rnaeICMPTypeCode :: !(Maybe ICMPTypeCode)
, _rnaePortRange :: !(Maybe PortRange)
, _rnaeDryRun :: !(Maybe Bool)
, _rnaeNetworkACLId :: !Text
, _rnaeRuleNumber :: !Int
, _rnaeProtocol :: !Text
, _rnaeRuleAction :: !RuleAction
, _rnaeEgress :: !Bool
, _rnaeCIdRBlock :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'ReplaceNetworkACLEntry' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'rnaeICMPTypeCode'
--
-- * 'rnaePortRange'
--
-- * 'rnaeDryRun'
--
-- * 'rnaeNetworkACLId'
--
-- * 'rnaeRuleNumber'
--
-- * 'rnaeProtocol'
--
-- * 'rnaeRuleAction'
--
-- * 'rnaeEgress'
--
-- * 'rnaeCIdRBlock'
replaceNetworkACLEntry
:: Text -- ^ 'rnaeNetworkACLId'
-> Int -- ^ 'rnaeRuleNumber'
-> Text -- ^ 'rnaeProtocol'
-> RuleAction -- ^ 'rnaeRuleAction'
-> Bool -- ^ 'rnaeEgress'
-> Text -- ^ 'rnaeCIdRBlock'
-> ReplaceNetworkACLEntry
replaceNetworkACLEntry pNetworkACLId_ pRuleNumber_ pProtocol_ pRuleAction_ pEgress_ pCIdRBlock_ =
ReplaceNetworkACLEntry'
{ _rnaeICMPTypeCode = Nothing
, _rnaePortRange = Nothing
, _rnaeDryRun = Nothing
, _rnaeNetworkACLId = pNetworkACLId_
, _rnaeRuleNumber = pRuleNumber_
, _rnaeProtocol = pProtocol_
, _rnaeRuleAction = pRuleAction_
, _rnaeEgress = pEgress_
, _rnaeCIdRBlock = pCIdRBlock_
}
-- | ICMP protocol: The ICMP type and code. Required if specifying 1 (ICMP)
-- for the protocol.
rnaeICMPTypeCode :: Lens' ReplaceNetworkACLEntry (Maybe ICMPTypeCode)
rnaeICMPTypeCode = lens _rnaeICMPTypeCode (\ s a -> s{_rnaeICMPTypeCode = a});
-- | TCP or UDP protocols: The range of ports the rule applies to. Required
-- if specifying 6 (TCP) or 17 (UDP) for the protocol.
rnaePortRange :: Lens' ReplaceNetworkACLEntry (Maybe PortRange)
rnaePortRange = lens _rnaePortRange (\ s a -> s{_rnaePortRange = a});
-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is 'DryRunOperation'.
-- Otherwise, it is 'UnauthorizedOperation'.
rnaeDryRun :: Lens' ReplaceNetworkACLEntry (Maybe Bool)
rnaeDryRun = lens _rnaeDryRun (\ s a -> s{_rnaeDryRun = a});
-- | The ID of the ACL.
rnaeNetworkACLId :: Lens' ReplaceNetworkACLEntry Text
rnaeNetworkACLId = lens _rnaeNetworkACLId (\ s a -> s{_rnaeNetworkACLId = a});
-- | The rule number of the entry to replace.
rnaeRuleNumber :: Lens' ReplaceNetworkACLEntry Int
rnaeRuleNumber = lens _rnaeRuleNumber (\ s a -> s{_rnaeRuleNumber = a});
-- | The IP protocol. You can specify 'all' or '-1' to mean all protocols.
rnaeProtocol :: Lens' ReplaceNetworkACLEntry Text
rnaeProtocol = lens _rnaeProtocol (\ s a -> s{_rnaeProtocol = a});
-- | Indicates whether to allow or deny the traffic that matches the rule.
rnaeRuleAction :: Lens' ReplaceNetworkACLEntry RuleAction
rnaeRuleAction = lens _rnaeRuleAction (\ s a -> s{_rnaeRuleAction = a});
-- | Indicates whether to replace the egress rule.
--
-- Default: If no value is specified, we replace the ingress rule.
rnaeEgress :: Lens' ReplaceNetworkACLEntry Bool
rnaeEgress = lens _rnaeEgress (\ s a -> s{_rnaeEgress = a});
-- | The network range to allow or deny, in CIDR notation.
rnaeCIdRBlock :: Lens' ReplaceNetworkACLEntry Text
rnaeCIdRBlock = lens _rnaeCIdRBlock (\ s a -> s{_rnaeCIdRBlock = a});
instance AWSRequest ReplaceNetworkACLEntry where
type Rs ReplaceNetworkACLEntry =
ReplaceNetworkACLEntryResponse
request = postQuery eC2
response
= receiveNull ReplaceNetworkACLEntryResponse'
instance ToHeaders ReplaceNetworkACLEntry where
toHeaders = const mempty
instance ToPath ReplaceNetworkACLEntry where
toPath = const "/"
instance ToQuery ReplaceNetworkACLEntry where
toQuery ReplaceNetworkACLEntry'{..}
= mconcat
["Action" =:
("ReplaceNetworkAclEntry" :: ByteString),
"Version" =: ("2015-04-15" :: ByteString),
"Icmp" =: _rnaeICMPTypeCode,
"PortRange" =: _rnaePortRange,
"DryRun" =: _rnaeDryRun,
"NetworkAclId" =: _rnaeNetworkACLId,
"RuleNumber" =: _rnaeRuleNumber,
"Protocol" =: _rnaeProtocol,
"RuleAction" =: _rnaeRuleAction,
"Egress" =: _rnaeEgress,
"CidrBlock" =: _rnaeCIdRBlock]
-- | /See:/ 'replaceNetworkACLEntryResponse' smart constructor.
data ReplaceNetworkACLEntryResponse =
ReplaceNetworkACLEntryResponse'
deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'ReplaceNetworkACLEntryResponse' with the minimum fields required to make a request.
--
replaceNetworkACLEntryResponse
:: ReplaceNetworkACLEntryResponse
replaceNetworkACLEntryResponse = ReplaceNetworkACLEntryResponse'