{-# 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.Route53.UpdateTrafficPolicyInstance -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Updates the resource record sets in a specified hosted zone that were -- created based on the settings in a specified traffic policy version. -- -- The DNS type of the resource record sets that you\'re updating must -- match the DNS type in the JSON document that is associated with the -- traffic policy version that you\'re using to update the traffic policy -- instance. -- -- When you update a traffic policy instance, Amazon Route 53 continues to -- respond to DNS queries for the root resource record set name (such as -- example.com) while it replaces one group of resource record sets with -- another. Amazon Route 53 performs the following operations: -- -- 1. Amazon Route 53 creates a new group of resource record sets based on -- the specified traffic policy. This is true regardless of how -- substantial the differences are between the existing resource record -- sets and the new resource record sets. -- 2. When all of the new resource record sets have been created, Amazon -- Route 53 starts to respond to DNS queries for the root resource -- record set name (such as example.com) by using the new resource -- record sets. -- 3. Amazon Route 53 deletes the old group of resource record sets that -- are associated with the root resource record set name. -- -- To update a traffic policy instance, send a 'POST' request to the -- '\/Route 53 API version\/trafficpolicyinstance\/traffic policy ID' -- resource. The request body must include a document with an -- 'UpdateTrafficPolicyInstanceRequest' element. module Network.AWS.Route53.UpdateTrafficPolicyInstance ( -- * Creating a Request updateTrafficPolicyInstance , UpdateTrafficPolicyInstance -- * Request Lenses , utpiId , utpiTTL , utpiTrafficPolicyId , utpiTrafficPolicyVersion -- * Destructuring the Response , updateTrafficPolicyInstanceResponse , UpdateTrafficPolicyInstanceResponse -- * Response Lenses , utpirsResponseStatus , utpirsTrafficPolicyInstance ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.Route53.Types import Network.AWS.Route53.Types.Product -- | A complex type that contains information about the resource record sets -- that you want to update based on a specified traffic policy instance. -- -- /See:/ 'updateTrafficPolicyInstance' smart constructor. data UpdateTrafficPolicyInstance = UpdateTrafficPolicyInstance' { _utpiId :: !Text , _utpiTTL :: !Nat , _utpiTrafficPolicyId :: !Text , _utpiTrafficPolicyVersion :: !Nat } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'UpdateTrafficPolicyInstance' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'utpiId' -- -- * 'utpiTTL' -- -- * 'utpiTrafficPolicyId' -- -- * 'utpiTrafficPolicyVersion' updateTrafficPolicyInstance :: Text -- ^ 'utpiId' -> Natural -- ^ 'utpiTTL' -> Text -- ^ 'utpiTrafficPolicyId' -> Natural -- ^ 'utpiTrafficPolicyVersion' -> UpdateTrafficPolicyInstance updateTrafficPolicyInstance pId_ pTTL_ pTrafficPolicyId_ pTrafficPolicyVersion_ = UpdateTrafficPolicyInstance' { _utpiId = pId_ , _utpiTTL = _Nat # pTTL_ , _utpiTrafficPolicyId = pTrafficPolicyId_ , _utpiTrafficPolicyVersion = _Nat # pTrafficPolicyVersion_ } -- | The ID of the traffic policy instance that you want to update. utpiId :: Lens' UpdateTrafficPolicyInstance Text utpiId = lens _utpiId (\ s a -> s{_utpiId = a}); -- | The TTL that you want Amazon Route 53 to assign to all of the updated -- resource record sets. utpiTTL :: Lens' UpdateTrafficPolicyInstance Natural utpiTTL = lens _utpiTTL (\ s a -> s{_utpiTTL = a}) . _Nat; -- | The ID of the traffic policy that you want Amazon Route 53 to use to -- update resource record sets for the specified traffic policy instance. utpiTrafficPolicyId :: Lens' UpdateTrafficPolicyInstance Text utpiTrafficPolicyId = lens _utpiTrafficPolicyId (\ s a -> s{_utpiTrafficPolicyId = a}); -- | The version of the traffic policy that you want Amazon Route 53 to use -- to update resource record sets for the specified traffic policy -- instance. utpiTrafficPolicyVersion :: Lens' UpdateTrafficPolicyInstance Natural utpiTrafficPolicyVersion = lens _utpiTrafficPolicyVersion (\ s a -> s{_utpiTrafficPolicyVersion = a}) . _Nat; instance AWSRequest UpdateTrafficPolicyInstance where type Rs UpdateTrafficPolicyInstance = UpdateTrafficPolicyInstanceResponse request = postXML route53 response = receiveXML (\ s h x -> UpdateTrafficPolicyInstanceResponse' <$> (pure (fromEnum s)) <*> (x .@ "TrafficPolicyInstance")) instance Hashable UpdateTrafficPolicyInstance instance ToElement UpdateTrafficPolicyInstance where toElement = mkElement "{https://route53.amazonaws.com/doc/2013-04-01/}UpdateTrafficPolicyInstanceRequest" instance ToHeaders UpdateTrafficPolicyInstance where toHeaders = const mempty instance ToPath UpdateTrafficPolicyInstance where toPath UpdateTrafficPolicyInstance'{..} = mconcat ["/2013-04-01/trafficpolicyinstance/", toBS _utpiId] instance ToQuery UpdateTrafficPolicyInstance where toQuery = const mempty instance ToXML UpdateTrafficPolicyInstance where toXML UpdateTrafficPolicyInstance'{..} = mconcat ["TTL" @= _utpiTTL, "TrafficPolicyId" @= _utpiTrafficPolicyId, "TrafficPolicyVersion" @= _utpiTrafficPolicyVersion] -- | A complex type that contains information about the resource record sets -- that Amazon Route 53 created based on a specified traffic policy. -- -- /See:/ 'updateTrafficPolicyInstanceResponse' smart constructor. data UpdateTrafficPolicyInstanceResponse = UpdateTrafficPolicyInstanceResponse' { _utpirsResponseStatus :: !Int , _utpirsTrafficPolicyInstance :: !TrafficPolicyInstance } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'UpdateTrafficPolicyInstanceResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'utpirsResponseStatus' -- -- * 'utpirsTrafficPolicyInstance' updateTrafficPolicyInstanceResponse :: Int -- ^ 'utpirsResponseStatus' -> TrafficPolicyInstance -- ^ 'utpirsTrafficPolicyInstance' -> UpdateTrafficPolicyInstanceResponse updateTrafficPolicyInstanceResponse pResponseStatus_ pTrafficPolicyInstance_ = UpdateTrafficPolicyInstanceResponse' { _utpirsResponseStatus = pResponseStatus_ , _utpirsTrafficPolicyInstance = pTrafficPolicyInstance_ } -- | The response status code. utpirsResponseStatus :: Lens' UpdateTrafficPolicyInstanceResponse Int utpirsResponseStatus = lens _utpirsResponseStatus (\ s a -> s{_utpirsResponseStatus = a}); -- | A complex type that contains settings for the updated traffic policy -- instance. utpirsTrafficPolicyInstance :: Lens' UpdateTrafficPolicyInstanceResponse TrafficPolicyInstance utpirsTrafficPolicyInstance = lens _utpirsTrafficPolicyInstance (\ s a -> s{_utpirsTrafficPolicyInstance = a});