/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the application-autoscaling-2016-02-06.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.ApplicationAutoScaling.Model { /// /// Container for the parameters to the PutScalingPolicy operation. /// 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. /// /// /// public partial class PutScalingPolicyRequest : AmazonApplicationAutoScalingRequest { private string _policyName; private PolicyType _policyType; private string _resourceId; private ScalableDimension _scalableDimension; private ServiceNamespace _serviceNamespace; private StepScalingPolicyConfiguration _stepScalingPolicyConfiguration; private TargetTrackingScalingPolicyConfiguration _targetTrackingScalingPolicyConfiguration; /// /// Gets and sets the property PolicyName. /// /// The name of the scaling policy. /// /// /// /// You cannot change the name of a scaling policy, but you can delete the original scaling /// policy and create a new scaling policy with the same settings and a different name. /// /// [AWSProperty(Required=true, Min=1, Max=256)] public string PolicyName { get { return this._policyName; } set { this._policyName = value; } } // Check to see if PolicyName property is set internal bool IsSetPolicyName() { return this._policyName != null; } /// /// Gets and sets the property PolicyType. /// /// The scaling policy type. This parameter is required if you are creating a scaling /// policy. /// /// /// /// The following policy types are supported: /// /// /// /// TargetTrackingScaling—Not supported for Amazon EMR /// /// /// /// StepScaling—Not supported for DynamoDB, Amazon Comprehend, Lambda, Amazon /// Keyspaces, Amazon MSK, Amazon ElastiCache, or Neptune. /// /// /// /// For more information, see Target /// tracking scaling policies and Step /// scaling policies in the Application Auto Scaling User Guide. /// /// public PolicyType PolicyType { get { return this._policyType; } set { this._policyType = value; } } // Check to see if PolicyType property is set internal bool IsSetPolicyType() { return this._policyType != null; } /// /// Gets and sets the property ResourceId. /// /// The identifier of the resource associated with the scaling policy. This string consists /// of the resource type and unique identifier. /// /// /// [AWSProperty(Required=true, Min=1, Max=1600)] public string ResourceId { get { return this._resourceId; } set { this._resourceId = value; } } // Check to see if ResourceId property is set internal bool IsSetResourceId() { return this._resourceId != null; } /// /// Gets and sets the property ScalableDimension. /// /// The scalable dimension. This string consists of the service namespace, resource type, /// and scaling property. /// /// /// [AWSProperty(Required=true)] public ScalableDimension ScalableDimension { get { return this._scalableDimension; } set { this._scalableDimension = value; } } // Check to see if ScalableDimension property is set internal bool IsSetScalableDimension() { return this._scalableDimension != null; } /// /// Gets and sets the property ServiceNamespace. /// /// The namespace of the Amazon Web Services service that provides the resource. For a /// resource provided by your own application or service, use custom-resource /// instead. /// /// [AWSProperty(Required=true)] public ServiceNamespace ServiceNamespace { get { return this._serviceNamespace; } set { this._serviceNamespace = value; } } // Check to see if ServiceNamespace property is set internal bool IsSetServiceNamespace() { return this._serviceNamespace != null; } /// /// Gets and sets the property StepScalingPolicyConfiguration. /// /// A step scaling policy. /// /// /// /// This parameter is required if you are creating a policy and the policy type is StepScaling. /// /// public StepScalingPolicyConfiguration StepScalingPolicyConfiguration { get { return this._stepScalingPolicyConfiguration; } set { this._stepScalingPolicyConfiguration = value; } } // Check to see if StepScalingPolicyConfiguration property is set internal bool IsSetStepScalingPolicyConfiguration() { return this._stepScalingPolicyConfiguration != null; } /// /// Gets and sets the property TargetTrackingScalingPolicyConfiguration. /// /// A target tracking scaling policy. Includes support for predefined or customized metrics. /// /// /// /// This parameter is required if you are creating a policy and the policy type is TargetTrackingScaling. /// /// public TargetTrackingScalingPolicyConfiguration TargetTrackingScalingPolicyConfiguration { get { return this._targetTrackingScalingPolicyConfiguration; } set { this._targetTrackingScalingPolicyConfiguration = value; } } // Check to see if TargetTrackingScalingPolicyConfiguration property is set internal bool IsSetTargetTrackingScalingPolicyConfiguration() { return this._targetTrackingScalingPolicyConfiguration != null; } } }