{-# 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.CreateVPCEndpointConnectionNotification -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a connection notification for a specified VPC endpoint or VPC endpoint service. A connection notification notifies you of specific endpoint events. You must create an SNS topic to receive notifications. For more information, see in the /Amazon Simple Notification Service Developer Guide/ . -- -- -- You can create a connection notification for interface endpoints only. -- module Network.AWS.EC2.CreateVPCEndpointConnectionNotification ( -- * Creating a Request createVPCEndpointConnectionNotification , CreateVPCEndpointConnectionNotification -- * Request Lenses , cvecnClientToken , cvecnServiceId , cvecnVPCEndpointId , cvecnDryRun , cvecnConnectionNotificationARN , cvecnConnectionEvents -- * Destructuring the Response , createVPCEndpointConnectionNotificationResponse , CreateVPCEndpointConnectionNotificationResponse -- * Response Lenses , cvecnrsClientToken , cvecnrsConnectionNotification , cvecnrsResponseStatus ) where import Network.AWS.EC2.Types import Network.AWS.EC2.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'createVPCEndpointConnectionNotification' smart constructor. data CreateVPCEndpointConnectionNotification = CreateVPCEndpointConnectionNotification' { _cvecnClientToken :: !(Maybe Text) , _cvecnServiceId :: !(Maybe Text) , _cvecnVPCEndpointId :: !(Maybe Text) , _cvecnDryRun :: !(Maybe Bool) , _cvecnConnectionNotificationARN :: !Text , _cvecnConnectionEvents :: ![Text] } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateVPCEndpointConnectionNotification' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cvecnClientToken' - Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see . -- -- * 'cvecnServiceId' - The ID of the endpoint service. -- -- * 'cvecnVPCEndpointId' - The ID of the endpoint. -- -- * 'cvecnDryRun' - 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@ . -- -- * 'cvecnConnectionNotificationARN' - The ARN of the SNS topic for the notifications. -- -- * 'cvecnConnectionEvents' - One or more endpoint events for which to receive notifications. Valid values are @Accept@ , @Connect@ , @Delete@ , and @Reject@ . createVPCEndpointConnectionNotification :: Text -- ^ 'cvecnConnectionNotificationARN' -> CreateVPCEndpointConnectionNotification createVPCEndpointConnectionNotification pConnectionNotificationARN_ = CreateVPCEndpointConnectionNotification' { _cvecnClientToken = Nothing , _cvecnServiceId = Nothing , _cvecnVPCEndpointId = Nothing , _cvecnDryRun = Nothing , _cvecnConnectionNotificationARN = pConnectionNotificationARN_ , _cvecnConnectionEvents = mempty } -- | Unique, case-sensitive identifier you provide to ensure the idempotency of the request. For more information, see . cvecnClientToken :: Lens' CreateVPCEndpointConnectionNotification (Maybe Text) cvecnClientToken = lens _cvecnClientToken (\ s a -> s{_cvecnClientToken = a}) -- | The ID of the endpoint service. cvecnServiceId :: Lens' CreateVPCEndpointConnectionNotification (Maybe Text) cvecnServiceId = lens _cvecnServiceId (\ s a -> s{_cvecnServiceId = a}) -- | The ID of the endpoint. cvecnVPCEndpointId :: Lens' CreateVPCEndpointConnectionNotification (Maybe Text) cvecnVPCEndpointId = lens _cvecnVPCEndpointId (\ s a -> s{_cvecnVPCEndpointId = 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@ . cvecnDryRun :: Lens' CreateVPCEndpointConnectionNotification (Maybe Bool) cvecnDryRun = lens _cvecnDryRun (\ s a -> s{_cvecnDryRun = a}) -- | The ARN of the SNS topic for the notifications. cvecnConnectionNotificationARN :: Lens' CreateVPCEndpointConnectionNotification Text cvecnConnectionNotificationARN = lens _cvecnConnectionNotificationARN (\ s a -> s{_cvecnConnectionNotificationARN = a}) -- | One or more endpoint events for which to receive notifications. Valid values are @Accept@ , @Connect@ , @Delete@ , and @Reject@ . cvecnConnectionEvents :: Lens' CreateVPCEndpointConnectionNotification [Text] cvecnConnectionEvents = lens _cvecnConnectionEvents (\ s a -> s{_cvecnConnectionEvents = a}) . _Coerce instance AWSRequest CreateVPCEndpointConnectionNotification where type Rs CreateVPCEndpointConnectionNotification = CreateVPCEndpointConnectionNotificationResponse request = postQuery ec2 response = receiveXML (\ s h x -> CreateVPCEndpointConnectionNotificationResponse' <$> (x .@? "clientToken") <*> (x .@? "connectionNotification") <*> (pure (fromEnum s))) instance Hashable CreateVPCEndpointConnectionNotification where instance NFData CreateVPCEndpointConnectionNotification where instance ToHeaders CreateVPCEndpointConnectionNotification where toHeaders = const mempty instance ToPath CreateVPCEndpointConnectionNotification where toPath = const "/" instance ToQuery CreateVPCEndpointConnectionNotification where toQuery CreateVPCEndpointConnectionNotification'{..} = mconcat ["Action" =: ("CreateVpcEndpointConnectionNotification" :: ByteString), "Version" =: ("2016-11-15" :: ByteString), "ClientToken" =: _cvecnClientToken, "ServiceId" =: _cvecnServiceId, "VpcEndpointId" =: _cvecnVPCEndpointId, "DryRun" =: _cvecnDryRun, "ConnectionNotificationArn" =: _cvecnConnectionNotificationARN, toQueryList "ConnectionEvents" _cvecnConnectionEvents] -- | /See:/ 'createVPCEndpointConnectionNotificationResponse' smart constructor. data CreateVPCEndpointConnectionNotificationResponse = CreateVPCEndpointConnectionNotificationResponse' { _cvecnrsClientToken :: !(Maybe Text) , _cvecnrsConnectionNotification :: !(Maybe ConnectionNotification) , _cvecnrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateVPCEndpointConnectionNotificationResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cvecnrsClientToken' - Unique, case-sensitive identifier you provide to ensure the idempotency of the request. -- -- * 'cvecnrsConnectionNotification' - Information about the notification. -- -- * 'cvecnrsResponseStatus' - -- | The response status code. createVPCEndpointConnectionNotificationResponse :: Int -- ^ 'cvecnrsResponseStatus' -> CreateVPCEndpointConnectionNotificationResponse createVPCEndpointConnectionNotificationResponse pResponseStatus_ = CreateVPCEndpointConnectionNotificationResponse' { _cvecnrsClientToken = Nothing , _cvecnrsConnectionNotification = Nothing , _cvecnrsResponseStatus = pResponseStatus_ } -- | Unique, case-sensitive identifier you provide to ensure the idempotency of the request. cvecnrsClientToken :: Lens' CreateVPCEndpointConnectionNotificationResponse (Maybe Text) cvecnrsClientToken = lens _cvecnrsClientToken (\ s a -> s{_cvecnrsClientToken = a}) -- | Information about the notification. cvecnrsConnectionNotification :: Lens' CreateVPCEndpointConnectionNotificationResponse (Maybe ConnectionNotification) cvecnrsConnectionNotification = lens _cvecnrsConnectionNotification (\ s a -> s{_cvecnrsConnectionNotification = a}) -- | -- | The response status code. cvecnrsResponseStatus :: Lens' CreateVPCEndpointConnectionNotificationResponse Int cvecnrsResponseStatus = lens _cvecnrsResponseStatus (\ s a -> s{_cvecnrsResponseStatus = a}) instance NFData CreateVPCEndpointConnectionNotificationResponse where