AWS SDK Version 3 for .NET
API Reference

AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Creates or updates a scaling policy for an Application Auto Scaling scalable target.

Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scaling policy applies to the scalable target identified by those three attributes. You cannot create a scaling policy until you have registered the resource as a scalable target.

Multiple scaling policies can be in force at the same time for the same scalable target. You can have one or more target tracking scaling policies, one or more step scaling policies, or both. However, there is a chance that multiple policies could conflict, instructing the scalable target to scale out or in at the same time. Application Auto Scaling gives precedence to the policy that provides the largest capacity for both scale out and scale in. For example, if one policy increases capacity by 3, another policy increases capacity by 200 percent, and the current capacity is 10, Application Auto Scaling uses the policy with the highest calculated capacity (200% of 10 = 20) and scales out to 30.

We recommend caution, however, when using target tracking scaling policies with step scaling policies because conflicts between these policies can cause undesirable behavior. For example, if the step scaling policy initiates a scale-in activity before the target tracking policy is ready to scale in, the scale-in activity will not be blocked. After the scale-in activity completes, the target tracking policy could instruct the scalable target to scale out again.

For more information, see Target tracking scaling policies and Step scaling policies in the Application Auto Scaling User Guide.

If a scalable target is deregistered, the scalable target is no longer available to use scaling policies. Any scaling policies that were specified for the scalable target are deleted.

Note:

For .NET Core this operation is only available in asynchronous form. Please refer to PutScalingPolicyAsync.

Namespace: Amazon.ApplicationAutoScaling
Assembly: AWSSDK.ApplicationAutoScaling.dll
Version: 3.x.y.z

Syntax

C#
public abstract PutScalingPolicyResponse PutScalingPolicy(
         PutScalingPolicyRequest request
)

Parameters

request
Type: Amazon.ApplicationAutoScaling.Model.PutScalingPolicyRequest

Container for the necessary parameters to execute the PutScalingPolicy service method.

Return Value


The response from the PutScalingPolicy service method, as returned by ApplicationAutoScaling.

Exceptions

ExceptionCondition
ConcurrentUpdateException Concurrent updates caused an exception, for example, if you request an update to an Application Auto Scaling resource that already has a pending update.
FailedResourceAccessException Failed access to resources caused an exception. This exception is thrown when Application Auto Scaling is unable to retrieve the alarms associated with a scaling policy due to a client error, for example, if the role ARN specified for a scalable target does not have permission to call the CloudWatch DescribeAlarms on your behalf.
InternalServiceException The service encountered an internal error.
LimitExceededException A per-account resource limit is exceeded. For more information, see Application Auto Scaling service quotas.
ObjectNotFoundException The specified object could not be found. For any operation that depends on the existence of a scalable target, this exception is thrown if the scalable target with the specified service namespace, resource ID, and scalable dimension does not exist. For any operation that deletes or deregisters a resource, this exception is thrown if the resource cannot be found.
ValidationException An exception was thrown for a validation issue. Review the available parameters for the API request.

Examples

The following example applies a target tracking scaling policy with a predefined metric specification to an Amazon ECS service called web-app in the default cluster. The policy keeps the average CPU utilization of the service at 75 percent, with scale-out and scale-in cooldown periods of 60 seconds.

To apply a target tracking scaling policy with a predefined metric specification


var client = new AmazonApplicationAutoScalingClient();
var response = client.PutScalingPolicy(new PutScalingPolicyRequest 
{
    PolicyName = "cpu75-target-tracking-scaling-policy",
    PolicyType = "TargetTrackingScaling",
    ResourceId = "service/default/web-app",
    ScalableDimension = "ecs:service:DesiredCount",
    ServiceNamespace = "ecs",
    TargetTrackingScalingPolicyConfiguration = new TargetTrackingScalingPolicyConfiguration {
        PredefinedMetricSpecification = new PredefinedMetricSpecification { PredefinedMetricType = "ECSServiceAverageCPUUtilization" },
        ScaleInCooldown = 60,
        ScaleOutCooldown = 60,
        TargetValue = 75
    }
});

List<Alarm> alarms = response.Alarms;
string policyARN = response.PolicyARN;

            

Version Information

.NET Framework:
Supported in: 4.5, 4.0, 3.5

See Also