{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.EC2.DescribeSecurityGroups -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- | Describes one or more of your security groups. A security group is for use -- with instances either in the EC2-Classic platform or in a specific VPC. For -- more information, see Amazon EC2 Security Groups in the Amazon Elastic -- Compute Cloud User Guide and Security Groups for Your VPC in the Amazon -- Virtual Private Cloud User Guide. -- -- module Network.AWS.EC2.DescribeSecurityGroups ( -- * Request DescribeSecurityGroups -- ** Request constructor , describeSecurityGroups -- ** Request lenses , dsg1DryRun , dsg1Filters , dsg1GroupIds , dsg1GroupNames -- * Response , DescribeSecurityGroupsResponse -- ** Response constructor , describeSecurityGroupsResponse -- ** Response lenses , dsgrSecurityGroups ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.EC2.Types import qualified GHC.Exts data DescribeSecurityGroups = DescribeSecurityGroups { _dsg1DryRun :: Maybe Bool , _dsg1Filters :: List "Filter" Filter , _dsg1GroupIds :: List "groupId" Text , _dsg1GroupNames :: List "GroupName" Text } deriving (Eq, Show) -- | 'DescribeSecurityGroups' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dsg1DryRun' @::@ 'Maybe' 'Bool' -- -- * 'dsg1Filters' @::@ ['Filter'] -- -- * 'dsg1GroupIds' @::@ ['Text'] -- -- * 'dsg1GroupNames' @::@ ['Text'] -- describeSecurityGroups :: DescribeSecurityGroups describeSecurityGroups = DescribeSecurityGroups { _dsg1DryRun = Nothing , _dsg1GroupNames = mempty , _dsg1GroupIds = mempty , _dsg1Filters = mempty } dsg1DryRun :: Lens' DescribeSecurityGroups (Maybe Bool) dsg1DryRun = lens _dsg1DryRun (\s a -> s { _dsg1DryRun = a }) -- | One or more filters. description - The description of the security group. -- group-id - The ID of the security group. group-name - The name of the -- security group. ip-permission.cidr - A CIDR range that has been granted -- permission. ip-permission.from-port - The start of port range for the TCP -- and UDP protocols, or an ICMP type number. ip-permission.group-id - The -- ID of a security group that has been granted permission. -- ip-permission.group-name - The name of a security group that has been -- granted permission. ip-permission.protocol - The IP protocol for the -- permission (tcp | udp | icmp or a protocol number). ip-permission.to-port -- - The end of port range for the TCP and UDP protocols, or an ICMP code. -- ip-permission.user-id - The ID of an AWS account that has been granted -- permission. owner-id - The AWS account ID of the owner of the security -- group. tag-key - The key of a tag assigned to the security group. -- tag-value - The value of a tag assigned to the security group. vpc-id - -- The ID of the VPC specified when the security group was created. dsg1Filters :: Lens' DescribeSecurityGroups [Filter] dsg1Filters = lens _dsg1Filters (\s a -> s { _dsg1Filters = a }) . _List -- | One or more security group IDs. Required for nondefault VPCs. Default: -- Describes all your security groups. dsg1GroupIds :: Lens' DescribeSecurityGroups [Text] dsg1GroupIds = lens _dsg1GroupIds (\s a -> s { _dsg1GroupIds = a }) . _List -- | [EC2-Classic, default VPC] One or more security group names. You can -- specify either the security group name or the security group ID. Default: -- Describes all your security groups. dsg1GroupNames :: Lens' DescribeSecurityGroups [Text] dsg1GroupNames = lens _dsg1GroupNames (\s a -> s { _dsg1GroupNames = a }) . _List newtype DescribeSecurityGroupsResponse = DescribeSecurityGroupsResponse { _dsgrSecurityGroups :: List "item" SecurityGroup } deriving (Eq, Show, Monoid, Semigroup) instance GHC.Exts.IsList DescribeSecurityGroupsResponse where type Item DescribeSecurityGroupsResponse = SecurityGroup fromList = DescribeSecurityGroupsResponse . GHC.Exts.fromList toList = GHC.Exts.toList . _dsgrSecurityGroups -- | 'DescribeSecurityGroupsResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dsgrSecurityGroups' @::@ ['SecurityGroup'] -- describeSecurityGroupsResponse :: DescribeSecurityGroupsResponse describeSecurityGroupsResponse = DescribeSecurityGroupsResponse { _dsgrSecurityGroups = mempty } -- | Information about one or more security groups. dsgrSecurityGroups :: Lens' DescribeSecurityGroupsResponse [SecurityGroup] dsgrSecurityGroups = lens _dsgrSecurityGroups (\s a -> s { _dsgrSecurityGroups = a }) . _List instance ToPath DescribeSecurityGroups where toPath = const "/" instance ToQuery DescribeSecurityGroups where toQuery DescribeSecurityGroups{..} = mconcat [ "dryRun" =? _dsg1DryRun , "Filter" =? _dsg1Filters , "GroupId" =? _dsg1GroupIds , "GroupName" =? _dsg1GroupNames ] instance ToHeaders DescribeSecurityGroups instance AWSRequest DescribeSecurityGroups where type Sv DescribeSecurityGroups = EC2 type Rs DescribeSecurityGroups = DescribeSecurityGroupsResponse request = post "DescribeSecurityGroups" response = xmlResponse instance FromXML DescribeSecurityGroupsResponse where parseXML x = DescribeSecurityGroupsResponse <$> x .@ "securityGroupInfo"