{-# 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.ApplicationAutoScaling.RegisterScalableTarget -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Registers or updates a scalable target. A scalable target is a resource that can be scaled up or down with Application Auto Scaling. After you have registered a scalable target, you can use this command to update the minimum and maximum values for your scalable dimension. -- -- At this time, Application Auto Scaling only supports scaling Amazon ECS services. -- -- After you register a scalable target with Application Auto Scaling, you can create and apply scaling policies to it with < PutScalingPolicy>. You can view the existing scaling policies for a service namespace with < DescribeScalableTargets>. If you are no longer using a scalable target, you can deregister it with < DeregisterScalableTarget>. module Network.AWS.ApplicationAutoScaling.RegisterScalableTarget ( -- * Creating a Request registerScalableTarget , RegisterScalableTarget -- * Request Lenses , rstMaxCapacity , rstMinCapacity , rstRoleARN , rstServiceNamespace , rstResourceId , rstScalableDimension -- * Destructuring the Response , registerScalableTargetResponse , RegisterScalableTargetResponse -- * Response Lenses , rstrsResponseStatus ) where import Network.AWS.ApplicationAutoScaling.Types import Network.AWS.ApplicationAutoScaling.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'registerScalableTarget' smart constructor. data RegisterScalableTarget = RegisterScalableTarget' { _rstMaxCapacity :: !(Maybe Int) , _rstMinCapacity :: !(Maybe Int) , _rstRoleARN :: !(Maybe Text) , _rstServiceNamespace :: !ServiceNamespace , _rstResourceId :: !Text , _rstScalableDimension :: !ScalableDimension } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterScalableTarget' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rstMaxCapacity' -- -- * 'rstMinCapacity' -- -- * 'rstRoleARN' -- -- * 'rstServiceNamespace' -- -- * 'rstResourceId' -- -- * 'rstScalableDimension' registerScalableTarget :: ServiceNamespace -- ^ 'rstServiceNamespace' -> Text -- ^ 'rstResourceId' -> ScalableDimension -- ^ 'rstScalableDimension' -> RegisterScalableTarget registerScalableTarget pServiceNamespace_ pResourceId_ pScalableDimension_ = RegisterScalableTarget' { _rstMaxCapacity = Nothing , _rstMinCapacity = Nothing , _rstRoleARN = Nothing , _rstServiceNamespace = pServiceNamespace_ , _rstResourceId = pResourceId_ , _rstScalableDimension = pScalableDimension_ } -- | The maximum value for this scalable target to scale out to in response to scaling activities. This parameter is required if you are registering a new scalable target, and it is optional if you are updating an existing one. rstMaxCapacity :: Lens' RegisterScalableTarget (Maybe Int) rstMaxCapacity = lens _rstMaxCapacity (\ s a -> s{_rstMaxCapacity = a}); -- | The minimum value for this scalable target to scale in to in response to scaling activities. This parameter is required if you are registering a new scalable target, and it is optional if you are updating an existing one. rstMinCapacity :: Lens' RegisterScalableTarget (Maybe Int) rstMinCapacity = lens _rstMinCapacity (\ s a -> s{_rstMinCapacity = a}); -- | The ARN of the IAM role that allows Application Auto Scaling to modify your scalable target on your behalf. This parameter is required if you are registering a new scalable target, and it is optional if you are updating an existing one. rstRoleARN :: Lens' RegisterScalableTarget (Maybe Text) rstRoleARN = lens _rstRoleARN (\ s a -> s{_rstRoleARN = a}); -- | The namespace for the AWS service that the scalable target is associated with. For Amazon ECS services, the namespace value is 'ecs'. For more information, see in the Amazon Web Services General Reference. rstServiceNamespace :: Lens' RegisterScalableTarget ServiceNamespace rstServiceNamespace = lens _rstServiceNamespace (\ s a -> s{_rstServiceNamespace = a}); -- | The unique identifier string for the resource to associate with the scalable target. For Amazon ECS services, this value is the resource type, followed by the cluster name and service name, such as 'service\/default\/sample-webapp'. rstResourceId :: Lens' RegisterScalableTarget Text rstResourceId = lens _rstResourceId (\ s a -> s{_rstResourceId = a}); -- | The scalable dimension associated with the scalable target. The scalable dimension contains the service namespace, resource type, and scaling property, such as 'ecs:service:DesiredCount' for the desired task count of an Amazon ECS service. rstScalableDimension :: Lens' RegisterScalableTarget ScalableDimension rstScalableDimension = lens _rstScalableDimension (\ s a -> s{_rstScalableDimension = a}); instance AWSRequest RegisterScalableTarget where type Rs RegisterScalableTarget = RegisterScalableTargetResponse request = postJSON applicationAutoScaling response = receiveEmpty (\ s h x -> RegisterScalableTargetResponse' <$> (pure (fromEnum s))) instance Hashable RegisterScalableTarget instance NFData RegisterScalableTarget instance ToHeaders RegisterScalableTarget where toHeaders = const (mconcat ["X-Amz-Target" =# ("AnyScaleFrontendService.RegisterScalableTarget" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON RegisterScalableTarget where toJSON RegisterScalableTarget'{..} = object (catMaybes [("MaxCapacity" .=) <$> _rstMaxCapacity, ("MinCapacity" .=) <$> _rstMinCapacity, ("RoleARN" .=) <$> _rstRoleARN, Just ("ServiceNamespace" .= _rstServiceNamespace), Just ("ResourceId" .= _rstResourceId), Just ("ScalableDimension" .= _rstScalableDimension)]) instance ToPath RegisterScalableTarget where toPath = const "/" instance ToQuery RegisterScalableTarget where toQuery = const mempty -- | /See:/ 'registerScalableTargetResponse' smart constructor. newtype RegisterScalableTargetResponse = RegisterScalableTargetResponse' { _rstrsResponseStatus :: Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterScalableTargetResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rstrsResponseStatus' registerScalableTargetResponse :: Int -- ^ 'rstrsResponseStatus' -> RegisterScalableTargetResponse registerScalableTargetResponse pResponseStatus_ = RegisterScalableTargetResponse' { _rstrsResponseStatus = pResponseStatus_ } -- | The response status code. rstrsResponseStatus :: Lens' RegisterScalableTargetResponse Int rstrsResponseStatus = lens _rstrsResponseStatus (\ s a -> s{_rstrsResponseStatus = a}); instance NFData RegisterScalableTargetResponse