stratosphere-0.1.0: library-gen/Stratosphere/Resources/DBSecurityGroup.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | The AWS::RDS::DBSecurityGroup type is used to create or update an Amazon
-- RDS DB Security Group. For more information about DB Security Groups, see
-- Working with DB Security Groups in the Amazon Relational Database Service
-- Developer Guide. For details on the settings for DB security groups, see
-- CreateDBSecurityGroup. When you specify an AWS::RDS::DBSecurityGroup as an
-- argument to the Ref function, AWS CloudFormation returns the value of the
-- DBSecurityGroupName.
module Stratosphere.Resources.DBSecurityGroup where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.ResourceTag
import Stratosphere.ResourceProperties.RDSSecurityGroupRule
-- | Full data type definition for DBSecurityGroup. See 'dbSecurityGroup' for
-- a more convenient constructor.
data DBSecurityGroup =
DBSecurityGroup
{ _dBSecurityGroupEC2VpcId :: Maybe (Val Text)
, _dBSecurityGroupDBSecurityGroupIngress :: [RDSSecurityGroupRule]
, _dBSecurityGroupGroupDescription :: Val Text
, _dBSecurityGroupResourceTags :: Maybe [ResourceTag]
} deriving (Show, Generic)
instance ToJSON DBSecurityGroup where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }
instance FromJSON DBSecurityGroup where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }
-- | Constructor for 'DBSecurityGroup' containing required fields as
-- arguments.
dbSecurityGroup
:: [RDSSecurityGroupRule] -- ^ 'dbsgDBSecurityGroupIngress'
-> Val Text -- ^ 'dbsgGroupDescription'
-> DBSecurityGroup
dbSecurityGroup dBSecurityGroupIngressarg groupDescriptionarg =
DBSecurityGroup
{ _dBSecurityGroupEC2VpcId = Nothing
, _dBSecurityGroupDBSecurityGroupIngress = dBSecurityGroupIngressarg
, _dBSecurityGroupGroupDescription = groupDescriptionarg
, _dBSecurityGroupResourceTags = Nothing
}
-- | The Id of VPC. Indicates which VPC this DB Security Group should belong
-- to. Type: String
dbsgEC2VpcId :: Lens' DBSecurityGroup (Maybe (Val Text))
dbsgEC2VpcId = lens _dBSecurityGroupEC2VpcId (\s a -> s { _dBSecurityGroupEC2VpcId = a })
-- | Network ingress authorization for an Amazon EC2 security group or an IP
-- address range. Type: List of RDS Security Group Rules.
dbsgDBSecurityGroupIngress :: Lens' DBSecurityGroup [RDSSecurityGroupRule]
dbsgDBSecurityGroupIngress = lens _dBSecurityGroupDBSecurityGroupIngress (\s a -> s { _dBSecurityGroupDBSecurityGroupIngress = a })
-- | Description of the security group. Type: String
dbsgGroupDescription :: Lens' DBSecurityGroup (Val Text)
dbsgGroupDescription = lens _dBSecurityGroupGroupDescription (\s a -> s { _dBSecurityGroupGroupDescription = a })
-- | The tags that you want to attach to the Amazon RDS DB security group.
dbsgResourceTags :: Lens' DBSecurityGroup (Maybe [ResourceTag])
dbsgResourceTags = lens _dBSecurityGroupResourceTags (\s a -> s { _dBSecurityGroupResourceTags = a })