{-# 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.PutScheduledAction -- 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 or updates a scheduled action for an Application Auto Scaling scalable target. -- -- -- Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scheduled action applies to the scalable target identified by those three attributes. You cannot create a scheduled action until you register the scalable target using 'RegisterScalableTarget' . -- -- To update an action, specify its name and the parameters that you want to change. If you don't specify start and end times, the old values are deleted. Any other parameters that you don't specify are not changed by this update request. -- -- You can view the scheduled actions using 'DescribeScheduledActions' . If you are no longer using a scheduled action, you can delete it using 'DeleteScheduledAction' . -- module Network.AWS.ApplicationAutoScaling.PutScheduledAction ( -- * Creating a Request putScheduledAction , PutScheduledAction -- * Request Lenses , psaScalableDimension , psaStartTime , psaSchedule , psaEndTime , psaScalableTargetAction , psaServiceNamespace , psaScheduledActionName , psaResourceId -- * Destructuring the Response , putScheduledActionResponse , PutScheduledActionResponse -- * Response Lenses , psarsResponseStatus ) 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:/ 'putScheduledAction' smart constructor. data PutScheduledAction = PutScheduledAction' { _psaScalableDimension :: !(Maybe ScalableDimension) , _psaStartTime :: !(Maybe POSIX) , _psaSchedule :: !(Maybe Text) , _psaEndTime :: !(Maybe POSIX) , _psaScalableTargetAction :: !(Maybe ScalableTargetAction) , _psaServiceNamespace :: !ServiceNamespace , _psaScheduledActionName :: !Text , _psaResourceId :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'PutScheduledAction' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'psaScalableDimension' - The scalable dimension. This parameter is required if you are creating a scheduled action. This string consists of the service namespace, resource type, and scaling property. * @ecs:service:DesiredCount@ - The desired task count of an ECS service. * @ec2:spot-fleet-request:TargetCapacity@ - The target capacity of a Spot fleet request. * @elasticmapreduce:instancegroup:InstanceCount@ - The instance count of an EMR Instance Group. * @appstream:fleet:DesiredCapacity@ - The desired capacity of an AppStream 2.0 fleet. * @dynamodb:table:ReadCapacityUnits@ - The provisioned read capacity for a DynamoDB table. * @dynamodb:table:WriteCapacityUnits@ - The provisioned write capacity for a DynamoDB table. * @dynamodb:index:ReadCapacityUnits@ - The provisioned read capacity for a DynamoDB global secondary index. * @dynamodb:index:WriteCapacityUnits@ - The provisioned write capacity for a DynamoDB global secondary index. * @rds:cluster:ReadReplicaCount@ - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition. * @sagemaker:variant:DesiredInstanceCount@ - The number of EC2 instances for an Amazon SageMaker model endpoint variant. -- -- * 'psaStartTime' - The date and time for the scheduled action to start. -- -- * 'psaSchedule' - The schedule for this action. The following formats are supported: * At expressions - @at(/yyyy/ -/mm/ -/dd/ T/hh/ :/mm/ :/ss/ )@ * Rate expressions - @rate(/value/ /unit/ )@ * Cron expressions - @cron(/fields/ )@ At expressions are useful for one-time schedules. Specify the time, in UTC. For rate expressions, /value/ is a positive integer and /unit/ is @minute@ | @minutes@ | @hour@ | @hours@ | @day@ | @days@ . For more information about cron expressions, see . -- -- * 'psaEndTime' - The date and time for the scheduled action to end. -- -- * 'psaScalableTargetAction' - The new minimum and maximum capacity. You can set both values or just one. During the scheduled time, if the current capacity is below the minimum capacity, Application Auto Scaling scales out to the minimum capacity. If the current capacity is above the maximum capacity, Application Auto Scaling scales in to the maximum capacity. -- -- * 'psaServiceNamespace' - The namespace of the AWS service. For more information, see in the /Amazon Web Services General Reference/ . -- -- * 'psaScheduledActionName' - The name of the scheduled action. -- -- * 'psaResourceId' - The identifier of the resource associated with the scheduled action. This string consists of the resource type and unique identifier. * ECS service - The resource type is @service@ and the unique identifier is the cluster name and service name. Example: @service/default/sample-webapp@ . * Spot fleet request - The resource type is @spot-fleet-request@ and the unique identifier is the Spot fleet request ID. Example: @spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE@ . * EMR cluster - The resource type is @instancegroup@ and the unique identifier is the cluster ID and instance group ID. Example: @instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0@ . * AppStream 2.0 fleet - The resource type is @fleet@ and the unique identifier is the fleet name. Example: @fleet/sample-fleet@ . * DynamoDB table - The resource type is @table@ and the unique identifier is the resource ID. Example: @table/my-table@ . * DynamoDB global secondary index - The resource type is @index@ and the unique identifier is the resource ID. Example: @table/my-table/index/my-table-index@ . * Aurora DB cluster - The resource type is @cluster@ and the unique identifier is the cluster name. Example: @cluster:my-db-cluster@ . * Amazon SageMaker endpoint variants - The resource type is @variant@ and the unique identifier is the resource ID. Example: @endpoint/my-end-point/variant/KMeansClustering@ . putScheduledAction :: ServiceNamespace -- ^ 'psaServiceNamespace' -> Text -- ^ 'psaScheduledActionName' -> Text -- ^ 'psaResourceId' -> PutScheduledAction putScheduledAction pServiceNamespace_ pScheduledActionName_ pResourceId_ = PutScheduledAction' { _psaScalableDimension = Nothing , _psaStartTime = Nothing , _psaSchedule = Nothing , _psaEndTime = Nothing , _psaScalableTargetAction = Nothing , _psaServiceNamespace = pServiceNamespace_ , _psaScheduledActionName = pScheduledActionName_ , _psaResourceId = pResourceId_ } -- | The scalable dimension. This parameter is required if you are creating a scheduled action. This string consists of the service namespace, resource type, and scaling property. * @ecs:service:DesiredCount@ - The desired task count of an ECS service. * @ec2:spot-fleet-request:TargetCapacity@ - The target capacity of a Spot fleet request. * @elasticmapreduce:instancegroup:InstanceCount@ - The instance count of an EMR Instance Group. * @appstream:fleet:DesiredCapacity@ - The desired capacity of an AppStream 2.0 fleet. * @dynamodb:table:ReadCapacityUnits@ - The provisioned read capacity for a DynamoDB table. * @dynamodb:table:WriteCapacityUnits@ - The provisioned write capacity for a DynamoDB table. * @dynamodb:index:ReadCapacityUnits@ - The provisioned read capacity for a DynamoDB global secondary index. * @dynamodb:index:WriteCapacityUnits@ - The provisioned write capacity for a DynamoDB global secondary index. * @rds:cluster:ReadReplicaCount@ - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition. * @sagemaker:variant:DesiredInstanceCount@ - The number of EC2 instances for an Amazon SageMaker model endpoint variant. psaScalableDimension :: Lens' PutScheduledAction (Maybe ScalableDimension) psaScalableDimension = lens _psaScalableDimension (\ s a -> s{_psaScalableDimension = a}) -- | The date and time for the scheduled action to start. psaStartTime :: Lens' PutScheduledAction (Maybe UTCTime) psaStartTime = lens _psaStartTime (\ s a -> s{_psaStartTime = a}) . mapping _Time -- | The schedule for this action. The following formats are supported: * At expressions - @at(/yyyy/ -/mm/ -/dd/ T/hh/ :/mm/ :/ss/ )@ * Rate expressions - @rate(/value/ /unit/ )@ * Cron expressions - @cron(/fields/ )@ At expressions are useful for one-time schedules. Specify the time, in UTC. For rate expressions, /value/ is a positive integer and /unit/ is @minute@ | @minutes@ | @hour@ | @hours@ | @day@ | @days@ . For more information about cron expressions, see . psaSchedule :: Lens' PutScheduledAction (Maybe Text) psaSchedule = lens _psaSchedule (\ s a -> s{_psaSchedule = a}) -- | The date and time for the scheduled action to end. psaEndTime :: Lens' PutScheduledAction (Maybe UTCTime) psaEndTime = lens _psaEndTime (\ s a -> s{_psaEndTime = a}) . mapping _Time -- | The new minimum and maximum capacity. You can set both values or just one. During the scheduled time, if the current capacity is below the minimum capacity, Application Auto Scaling scales out to the minimum capacity. If the current capacity is above the maximum capacity, Application Auto Scaling scales in to the maximum capacity. psaScalableTargetAction :: Lens' PutScheduledAction (Maybe ScalableTargetAction) psaScalableTargetAction = lens _psaScalableTargetAction (\ s a -> s{_psaScalableTargetAction = a}) -- | The namespace of the AWS service. For more information, see in the /Amazon Web Services General Reference/ . psaServiceNamespace :: Lens' PutScheduledAction ServiceNamespace psaServiceNamespace = lens _psaServiceNamespace (\ s a -> s{_psaServiceNamespace = a}) -- | The name of the scheduled action. psaScheduledActionName :: Lens' PutScheduledAction Text psaScheduledActionName = lens _psaScheduledActionName (\ s a -> s{_psaScheduledActionName = a}) -- | The identifier of the resource associated with the scheduled action. This string consists of the resource type and unique identifier. * ECS service - The resource type is @service@ and the unique identifier is the cluster name and service name. Example: @service/default/sample-webapp@ . * Spot fleet request - The resource type is @spot-fleet-request@ and the unique identifier is the Spot fleet request ID. Example: @spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE@ . * EMR cluster - The resource type is @instancegroup@ and the unique identifier is the cluster ID and instance group ID. Example: @instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0@ . * AppStream 2.0 fleet - The resource type is @fleet@ and the unique identifier is the fleet name. Example: @fleet/sample-fleet@ . * DynamoDB table - The resource type is @table@ and the unique identifier is the resource ID. Example: @table/my-table@ . * DynamoDB global secondary index - The resource type is @index@ and the unique identifier is the resource ID. Example: @table/my-table/index/my-table-index@ . * Aurora DB cluster - The resource type is @cluster@ and the unique identifier is the cluster name. Example: @cluster:my-db-cluster@ . * Amazon SageMaker endpoint variants - The resource type is @variant@ and the unique identifier is the resource ID. Example: @endpoint/my-end-point/variant/KMeansClustering@ . psaResourceId :: Lens' PutScheduledAction Text psaResourceId = lens _psaResourceId (\ s a -> s{_psaResourceId = a}) instance AWSRequest PutScheduledAction where type Rs PutScheduledAction = PutScheduledActionResponse request = postJSON applicationAutoScaling response = receiveEmpty (\ s h x -> PutScheduledActionResponse' <$> (pure (fromEnum s))) instance Hashable PutScheduledAction where instance NFData PutScheduledAction where instance ToHeaders PutScheduledAction where toHeaders = const (mconcat ["X-Amz-Target" =# ("AnyScaleFrontendService.PutScheduledAction" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON PutScheduledAction where toJSON PutScheduledAction'{..} = object (catMaybes [("ScalableDimension" .=) <$> _psaScalableDimension, ("StartTime" .=) <$> _psaStartTime, ("Schedule" .=) <$> _psaSchedule, ("EndTime" .=) <$> _psaEndTime, ("ScalableTargetAction" .=) <$> _psaScalableTargetAction, Just ("ServiceNamespace" .= _psaServiceNamespace), Just ("ScheduledActionName" .= _psaScheduledActionName), Just ("ResourceId" .= _psaResourceId)]) instance ToPath PutScheduledAction where toPath = const "/" instance ToQuery PutScheduledAction where toQuery = const mempty -- | /See:/ 'putScheduledActionResponse' smart constructor. newtype PutScheduledActionResponse = PutScheduledActionResponse' { _psarsResponseStatus :: Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'PutScheduledActionResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'psarsResponseStatus' - -- | The response status code. putScheduledActionResponse :: Int -- ^ 'psarsResponseStatus' -> PutScheduledActionResponse putScheduledActionResponse pResponseStatus_ = PutScheduledActionResponse' {_psarsResponseStatus = pResponseStatus_} -- | -- | The response status code. psarsResponseStatus :: Lens' PutScheduledActionResponse Int psarsResponseStatus = lens _psarsResponseStatus (\ s a -> s{_psarsResponseStatus = a}) instance NFData PutScheduledActionResponse where