stratosphere-0.1.5: library-gen/Stratosphere/Resources/SecurityGroupEgress.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | The AWS::EC2::SecurityGroupEgress resource adds an egress rule to an
-- Amazon VPC security group.
module Stratosphere.Resources.SecurityGroupEgress where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
-- | Full data type definition for SecurityGroupEgress. See
-- 'securityGroupEgress' for a more convenient constructor.
data SecurityGroupEgress =
SecurityGroupEgress
{ _securityGroupEgressCidrIp :: Maybe (Val Text)
, _securityGroupEgressDestinationSecurityGroupId :: Maybe (Val Text)
, _securityGroupEgressFromPort :: Val Integer'
, _securityGroupEgressGroupId :: Val Text
, _securityGroupEgressIpProtocol :: Val Text
, _securityGroupEgressToPort :: Val Integer'
} deriving (Show, Generic)
instance ToJSON SecurityGroupEgress where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 20, omitNothingFields = True }
instance FromJSON SecurityGroupEgress where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 20, omitNothingFields = True }
-- | Constructor for 'SecurityGroupEgress' containing required fields as
-- arguments.
securityGroupEgress
:: Val Integer' -- ^ 'sgeFromPort'
-> Val Text -- ^ 'sgeGroupId'
-> Val Text -- ^ 'sgeIpProtocol'
-> Val Integer' -- ^ 'sgeToPort'
-> SecurityGroupEgress
securityGroupEgress fromPortarg groupIdarg ipProtocolarg toPortarg =
SecurityGroupEgress
{ _securityGroupEgressCidrIp = Nothing
, _securityGroupEgressDestinationSecurityGroupId = Nothing
, _securityGroupEgressFromPort = fromPortarg
, _securityGroupEgressGroupId = groupIdarg
, _securityGroupEgressIpProtocol = ipProtocolarg
, _securityGroupEgressToPort = toPortarg
}
-- | CIDR range. Type: String
sgeCidrIp :: Lens' SecurityGroupEgress (Maybe (Val Text))
sgeCidrIp = lens _securityGroupEgressCidrIp (\s a -> s { _securityGroupEgressCidrIp = a })
-- | Specifies the group ID of the destination Amazon VPC security group.
-- Type: String
sgeDestinationSecurityGroupId :: Lens' SecurityGroupEgress (Maybe (Val Text))
sgeDestinationSecurityGroupId = lens _securityGroupEgressDestinationSecurityGroupId (\s a -> s { _securityGroupEgressDestinationSecurityGroupId = a })
-- | Start of port range for the TCP and UDP protocols, or an ICMP type
-- number. If you specify icmp for the IpProtocol property, you can specify -1
-- as a wildcard (i.e., any ICMP type number). Type: Integer
sgeFromPort :: Lens' SecurityGroupEgress (Val Integer')
sgeFromPort = lens _securityGroupEgressFromPort (\s a -> s { _securityGroupEgressFromPort = a })
-- | ID of the Amazon VPC security group to modify. This value can be a
-- reference to an AWS::EC2::SecurityGroup resource that has a valid VpcId
-- property or the ID of an existing Amazon VPC security group. Type: String
sgeGroupId :: Lens' SecurityGroupEgress (Val Text)
sgeGroupId = lens _securityGroupEgressGroupId (\s a -> s { _securityGroupEgressGroupId = a })
-- | IP protocol name or number. For valid values, see the IpProtocol
-- parameter in AuthorizeSecurityGroupIngress Type: String
sgeIpProtocol :: Lens' SecurityGroupEgress (Val Text)
sgeIpProtocol = lens _securityGroupEgressIpProtocol (\s a -> s { _securityGroupEgressIpProtocol = a })
-- | End of port range for the TCP and UDP protocols, or an ICMP code. If you
-- specify icmp for the IpProtocol property, you can specify -1 as a wildcard
-- (i.e., any ICMP code). Type: Integer
sgeToPort :: Lens' SecurityGroupEgress (Val Integer')
sgeToPort = lens _securityGroupEgressToPort (\s a -> s { _securityGroupEgressToPort = a })