amazonka-inspector-1.4.3: gen/Network/AWS/Inspector/CreateResourceGroup.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.Inspector.CreateResourceGroup
-- 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)
--
-- Creates a resource group using the specified set of tags (key and value pairs) that are used to select the EC2 instances to be included in an Amazon Inspector assessment target. The created resource group is then used to create an Amazon Inspector assessment target. For more information, see < CreateAssessmentTarget>.
module Network.AWS.Inspector.CreateResourceGroup
(
-- * Creating a Request
createResourceGroup
, CreateResourceGroup
-- * Request Lenses
, crgResourceGroupTags
-- * Destructuring the Response
, createResourceGroupResponse
, CreateResourceGroupResponse
-- * Response Lenses
, crgrsResponseStatus
, crgrsResourceGroupARN
) where
import Network.AWS.Inspector.Types
import Network.AWS.Inspector.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'createResourceGroup' smart constructor.
newtype CreateResourceGroup = CreateResourceGroup'
{ _crgResourceGroupTags :: List1 ResourceGroupTag
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateResourceGroup' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'crgResourceGroupTags'
createResourceGroup
:: NonEmpty ResourceGroupTag -- ^ 'crgResourceGroupTags'
-> CreateResourceGroup
createResourceGroup pResourceGroupTags_ =
CreateResourceGroup'
{ _crgResourceGroupTags = _List1 # pResourceGroupTags_
}
-- | A collection of keys and an array of possible values, \'[{\"key\":\"key1\",\"values\":[\"Value1\",\"Value2\"]},{\"key\":\"Key2\",\"values\":[\"Value3\"]}]\'.
--
-- For example,\'[{\"key\":\"Name\",\"values\":[\"TestEC2Instance\"]}]\'.
crgResourceGroupTags :: Lens' CreateResourceGroup (NonEmpty ResourceGroupTag)
crgResourceGroupTags = lens _crgResourceGroupTags (\ s a -> s{_crgResourceGroupTags = a}) . _List1;
instance AWSRequest CreateResourceGroup where
type Rs CreateResourceGroup =
CreateResourceGroupResponse
request = postJSON inspector
response
= receiveJSON
(\ s h x ->
CreateResourceGroupResponse' <$>
(pure (fromEnum s)) <*> (x .:> "resourceGroupArn"))
instance Hashable CreateResourceGroup
instance NFData CreateResourceGroup
instance ToHeaders CreateResourceGroup where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("InspectorService.CreateResourceGroup" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateResourceGroup where
toJSON CreateResourceGroup'{..}
= object
(catMaybes
[Just
("resourceGroupTags" .= _crgResourceGroupTags)])
instance ToPath CreateResourceGroup where
toPath = const "/"
instance ToQuery CreateResourceGroup where
toQuery = const mempty
-- | /See:/ 'createResourceGroupResponse' smart constructor.
data CreateResourceGroupResponse = CreateResourceGroupResponse'
{ _crgrsResponseStatus :: !Int
, _crgrsResourceGroupARN :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateResourceGroupResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'crgrsResponseStatus'
--
-- * 'crgrsResourceGroupARN'
createResourceGroupResponse
:: Int -- ^ 'crgrsResponseStatus'
-> Text -- ^ 'crgrsResourceGroupARN'
-> CreateResourceGroupResponse
createResourceGroupResponse pResponseStatus_ pResourceGroupARN_ =
CreateResourceGroupResponse'
{ _crgrsResponseStatus = pResponseStatus_
, _crgrsResourceGroupARN = pResourceGroupARN_
}
-- | The response status code.
crgrsResponseStatus :: Lens' CreateResourceGroupResponse Int
crgrsResponseStatus = lens _crgrsResponseStatus (\ s a -> s{_crgrsResponseStatus = a});
-- | The ARN that specifies the resource group that is created.
crgrsResourceGroupARN :: Lens' CreateResourceGroupResponse Text
crgrsResourceGroupARN = lens _crgrsResourceGroupARN (\ s a -> s{_crgrsResourceGroupARN = a});
instance NFData CreateResourceGroupResponse