/*
* 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 RegisterScalableTarget operation.
/// Registers or updates a scalable target, which is the resource that you want to scale.
///
///
///
/// Scalable targets are uniquely identified by the combination of resource ID, scalable
/// dimension, and namespace, which represents some capacity dimension of the underlying
/// service.
///
///
///
/// When you register a new scalable target, you must specify values for the minimum and
/// maximum capacity. If the specified resource is not active in the target service, this
/// operation does not change the resource's current capacity. Otherwise, it changes the
/// resource's current capacity to a value that is inside of this range.
///
///
///
/// If you add a scaling policy, current capacity is adjustable within the specified range
/// when scaling starts. Application Auto Scaling scaling policies will not scale capacity
/// to values that are outside of the minimum and maximum range.
///
///
///
/// After you register a scalable target, you do not need to register it again to use
/// other Application Auto Scaling operations. To see which resources have been registered,
/// use DescribeScalableTargets.
/// You can also view the scaling policies for a service namespace by using DescribeScalableTargets.
/// If you no longer need a scalable target, you can deregister it by using DeregisterScalableTarget.
///
///
///
/// To update a scalable target, specify the parameters that you want to change. Include
/// the parameters that identify the scalable target: resource ID, scalable dimension,
/// and namespace. Any parameters that you don't specify are not changed by this update
/// request.
///
///
///
/// If you call the RegisterScalableTarget API operation to create a scalable
/// target, there might be a brief delay until the operation achieves eventual
/// consistency. You might become aware of this brief delay if you get unexpected
/// errors when performing sequential operations. The typical strategy is to retry the
/// request, and some Amazon Web Services SDKs include automatic backoff and retry logic.
///
///
///
/// If you call the RegisterScalableTarget API operation to update an existing
/// scalable target, Application Auto Scaling retrieves the current capacity of the resource.
/// If it's below the minimum capacity or above the maximum capacity, Application Auto
/// Scaling adjusts the capacity of the scalable target to place it within these bounds,
/// even if you don't include the MinCapacity or MaxCapacity
/// request parameters.
///
///
///
public partial class RegisterScalableTargetRequest : AmazonApplicationAutoScalingRequest
{
private int? _maxCapacity;
private int? _minCapacity;
private string _resourceId;
private string _roleARN;
private ScalableDimension _scalableDimension;
private ServiceNamespace _serviceNamespace;
private SuspendedState _suspendedState;
private Dictionary _tags = new Dictionary();
///
/// Gets and sets the property MaxCapacity.
///
/// The maximum value that you plan to scale out to. When a scaling policy is in effect,
/// Application Auto Scaling can scale out (expand) as needed to the maximum capacity
/// limit in response to changing demand. This property is required when registering a
/// new scalable target.
///
///
///
/// Although you can specify a large maximum capacity, note that service quotas might
/// impose lower limits. Each service has its own default quotas for the maximum capacity
/// of the resource. If you want to specify a higher limit, you can request an increase.
/// For more information, consult the documentation for that service. For information
/// about the default quotas for each service, see Service
/// endpoints and quotas in the Amazon Web Services General Reference.
///
///
public int MaxCapacity
{
get { return this._maxCapacity.GetValueOrDefault(); }
set { this._maxCapacity = value; }
}
// Check to see if MaxCapacity property is set
internal bool IsSetMaxCapacity()
{
return this._maxCapacity.HasValue;
}
///
/// Gets and sets the property MinCapacity.
///
/// The minimum value that you plan to scale in to. When a scaling policy is in effect,
/// Application Auto Scaling can scale in (contract) as needed to the minimum capacity
/// limit in response to changing demand. This property is required when registering a
/// new scalable target.
///
///
///
/// For the following resources, the minimum value allowed is 0.
///
/// -
///
/// AppStream 2.0 fleets
///
///
-
///
/// Aurora DB clusters
///
///
-
///
/// ECS services
///
///
-
///
/// EMR clusters
///
///
-
///
/// Lambda provisioned concurrency
///
///
-
///
/// SageMaker endpoint variants
///
///
-
///
/// SageMaker Serverless endpoint provisioned concurrency
///
///
-
///
/// Spot Fleets
///
///
-
///
/// custom resources
///
///
///
/// It's strongly recommended that you specify a value greater than 0. A value greater
/// than 0 means that data points are continuously reported to CloudWatch that scaling
/// policies can use to scale on a metric like average CPU utilization.
///
///
///
/// For all other resources, the minimum allowed value depends on the type of resource
/// that you are using. If you provide a value that is lower than what a resource can
/// accept, an error occurs. In which case, the error message will provide the minimum
/// value that the resource can accept.
///
///
public int MinCapacity
{
get { return this._minCapacity.GetValueOrDefault(); }
set { this._minCapacity = value; }
}
// Check to see if MinCapacity property is set
internal bool IsSetMinCapacity()
{
return this._minCapacity.HasValue;
}
///
/// Gets and sets the property ResourceId.
///
/// The identifier of the resource that is associated with the scalable target. 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 - 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 table name. Example: table/my-table.
///
/// -
///
/// DynamoDB global secondary index - The resource type is
index and the
/// unique identifier is the index name. 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.
///
/// -
///
/// SageMaker endpoint variant - The resource type is
variant and the unique
/// identifier is the resource ID. Example: endpoint/my-end-point/variant/KMeansClustering.
///
/// -
///
/// Custom resources are not supported with a resource type. This parameter must specify
/// the
OutputValue from the CloudFormation template stack used to access
/// the resources. The unique identifier is defined by the service provider. More information
/// is available in our GitHub
/// repository.
///
/// -
///
/// Amazon Comprehend document classification endpoint - The resource type and unique
/// identifier are specified using the endpoint ARN. Example:
arn:aws:comprehend:us-west-2:123456789012:document-classifier-endpoint/EXAMPLE.
///
/// -
///
/// Amazon Comprehend entity recognizer endpoint - The resource type and unique identifier
/// are specified using the endpoint ARN. Example:
arn:aws:comprehend:us-west-2:123456789012:entity-recognizer-endpoint/EXAMPLE.
///
/// -
///
/// Lambda provisioned concurrency - The resource type is
function and the
/// unique identifier is the function name with a function version or alias name suffix
/// that is not $LATEST. Example: function:my-function:prod
/// or function:my-function:1.
///
/// -
///
/// Amazon Keyspaces table - The resource type is
table and the unique identifier
/// is the table name. Example: keyspace/mykeyspace/table/mytable.
///
/// -
///
/// Amazon MSK cluster - The resource type and unique identifier are specified using the
/// cluster ARN. Example:
arn:aws:kafka:us-east-1:123456789012:cluster/demo-cluster-1/6357e0b2-0e6a-4b86-a0b4-70df934c2e31-5.
///
/// -
///
/// Amazon ElastiCache replication group - The resource type is
replication-group
/// and the unique identifier is the replication group name. Example: replication-group/mycluster.
///
/// -
///
/// Neptune cluster - The resource type is
cluster and the unique identifier
/// is the cluster name. Example: cluster:mycluster.
///
/// -
///
/// SageMaker Serverless endpoint - The resource type is
variant and the
/// unique identifier is the resource ID. Example: endpoint/my-end-point/variant/KMeansClustering.
///
///
///
[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 RoleARN.
///
/// This parameter is required for services that do not support service-linked roles (such
/// as Amazon EMR), and it must specify the ARN of an IAM role that allows Application
/// Auto Scaling to modify the scalable target on your behalf.
///
///
///
/// If the service supports service-linked roles, Application Auto Scaling uses a service-linked
/// role, which it creates if it does not yet exist. For more information, see Application
/// Auto Scaling IAM roles.
///
///
[AWSProperty(Min=1, Max=1600)]
public string RoleARN
{
get { return this._roleARN; }
set { this._roleARN = value; }
}
// Check to see if RoleARN property is set
internal bool IsSetRoleARN()
{
return this._roleARN != null;
}
///
/// Gets and sets the property ScalableDimension.
///
/// The scalable dimension associated with the scalable target. This string consists of
/// the service namespace, resource type, and scaling property.
///
/// -
///
///
ecs:service:DesiredCount - The desired task count of an ECS service.
///
/// -
///
///
elasticmapreduce:instancegroup:InstanceCount - The instance count of
/// an EMR Instance Group.
///
/// -
///
///
ec2:spot-fleet-request:TargetCapacity - The target capacity of a Spot
/// Fleet.
///
/// -
///
///
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 and Aurora PostgreSQL-compatible
/// edition.
///
/// -
///
///
sagemaker:variant:DesiredInstanceCount - The number of EC2 instances
/// for a SageMaker model endpoint variant.
///
/// -
///
///
custom-resource:ResourceType:Property - The scalable dimension for a
/// custom resource provided by your own application or service.
///
/// -
///
///
comprehend:document-classifier-endpoint:DesiredInferenceUnits - The
/// number of inference units for an Amazon Comprehend document classification endpoint.
///
/// -
///
///
comprehend:entity-recognizer-endpoint:DesiredInferenceUnits - The number
/// of inference units for an Amazon Comprehend entity recognizer endpoint.
///
/// -
///
///
lambda:function:ProvisionedConcurrency - The provisioned concurrency
/// for a Lambda function.
///
/// -
///
///
cassandra:table:ReadCapacityUnits - The provisioned read capacity for
/// an Amazon Keyspaces table.
///
/// -
///
///
cassandra:table:WriteCapacityUnits - The provisioned write capacity
/// for an Amazon Keyspaces table.
///
/// -
///
///
kafka:broker-storage:VolumeSize - The provisioned volume size (in GiB)
/// for brokers in an Amazon MSK cluster.
///
/// -
///
///
elasticache:replication-group:NodeGroups - The number of node groups
/// for an Amazon ElastiCache replication group.
///
/// -
///
///
elasticache:replication-group:Replicas - The number of replicas per
/// node group for an Amazon ElastiCache replication group.
///
/// -
///
///
neptune:cluster:ReadReplicaCount - The count of read replicas in an
/// Amazon Neptune DB cluster.
///
/// -
///
///
sagemaker:variant:DesiredProvisionedConcurrency - The provisioned concurrency
/// for a SageMaker Serverless endpoint.
///
///
///
[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 SuspendedState.
///
/// An embedded object that contains attributes and attribute values that are used to
/// suspend and resume automatic scaling. Setting the value of an attribute to true
/// suspends the specified scaling activities. Setting it to false (default)
/// resumes the specified scaling activities.
///
///
///
/// Suspension Outcomes
///
/// -
///
/// For
DynamicScalingInSuspended, while a suspension is in effect, all scale-in
/// activities that are triggered by a scaling policy are suspended.
///
/// -
///
/// For
DynamicScalingOutSuspended, while a suspension is in effect, all
/// scale-out activities that are triggered by a scaling policy are suspended.
///
/// -
///
/// For
ScheduledScalingSuspended, while a suspension is in effect, all scaling
/// activities that involve scheduled actions are suspended.
///
///
///
/// For more information, see Suspending
/// and resuming scaling in the Application Auto Scaling User Guide.
///
///
public SuspendedState SuspendedState
{
get { return this._suspendedState; }
set { this._suspendedState = value; }
}
// Check to see if SuspendedState property is set
internal bool IsSetSuspendedState()
{
return this._suspendedState != null;
}
///
/// Gets and sets the property Tags.
///
/// Assigns one or more tags to the scalable target. Use this parameter to tag the scalable
/// target when it is created. To tag an existing scalable target, use the TagResource
/// operation.
///
///
///
/// Each tag consists of a tag key and a tag value. Both the tag key and the tag value
/// are required. You cannot have more than one tag on a scalable target with the same
/// tag key.
///
///
///
/// Use tags to control access to a scalable target. For more information, see Tagging
/// support for Application Auto Scaling in the Application Auto Scaling User Guide.
///
///
public Dictionary Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
}
}