* The scalable dimension associated with the scalable target. This string consists of the service namespace,
* resource type, and scaling property.
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #scalableDimension}
* will return {@link ScalableDimension#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #scalableDimensionAsString}.
*
*
* @return 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.
*
*
*
*
* sagemaker:inference-component:DesiredCopyCount
- The number of copies across an endpoint for
* a SageMaker inference component.
*
*
* @see ScalableDimension
*/
public final String scalableDimensionAsString() {
return scalableDimension;
}
/**
*
* 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.
*
*
* @return 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 final Integer minCapacity() {
return minCapacity;
}
/**
*
* 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 .
*
*
* @return 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 final Integer maxCapacity() {
return maxCapacity;
}
/**
*
* 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 .
*
*
* @return 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 .
*/
public final String roleARN() {
return roleARN;
}
/**
*
* 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 .
*
*
* @return 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 final SuspendedState suspendedState() {
return suspendedState;
}
/**
* For responses, this returns true if the service returned a value for the Tags property. This DOES NOT check that
* the value is non-empty (for which, you should check the {@code isEmpty()} method on the property). This is useful
* because the SDK will never return a null collection or map, but you may need to differentiate between the service
* returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true
* if a value for the property was specified in the request builder, and false if a value was not specified.
*/
public final boolean hasTags() {
return tags != null && !(tags instanceof SdkAutoConstructMap);
}
/**
*
* 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 .
*
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasTags} method.
*
*
* @return 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 final Map tags() {
return tags;
}
@Override
public Builder toBuilder() {
return new BuilderImpl(this);
}
public static Builder builder() {
return new BuilderImpl();
}
public static Class extends Builder> serializableBuilderClass() {
return BuilderImpl.class;
}
@Override
public final int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + super.hashCode();
hashCode = 31 * hashCode + Objects.hashCode(serviceNamespaceAsString());
hashCode = 31 * hashCode + Objects.hashCode(resourceId());
hashCode = 31 * hashCode + Objects.hashCode(scalableDimensionAsString());
hashCode = 31 * hashCode + Objects.hashCode(minCapacity());
hashCode = 31 * hashCode + Objects.hashCode(maxCapacity());
hashCode = 31 * hashCode + Objects.hashCode(roleARN());
hashCode = 31 * hashCode + Objects.hashCode(suspendedState());
hashCode = 31 * hashCode + Objects.hashCode(hasTags() ? tags() : null);
return hashCode;
}
@Override
public final boolean equals(Object obj) {
return super.equals(obj) && equalsBySdkFields(obj);
}
@Override
public final boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof RegisterScalableTargetRequest)) {
return false;
}
RegisterScalableTargetRequest other = (RegisterScalableTargetRequest) obj;
return Objects.equals(serviceNamespaceAsString(), other.serviceNamespaceAsString())
&& Objects.equals(resourceId(), other.resourceId())
&& Objects.equals(scalableDimensionAsString(), other.scalableDimensionAsString())
&& Objects.equals(minCapacity(), other.minCapacity()) && Objects.equals(maxCapacity(), other.maxCapacity())
&& Objects.equals(roleARN(), other.roleARN()) && Objects.equals(suspendedState(), other.suspendedState())
&& hasTags() == other.hasTags() && Objects.equals(tags(), other.tags());
}
/**
* Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
* redacted from this string using a placeholder value.
*/
@Override
public final String toString() {
return ToString.builder("RegisterScalableTargetRequest").add("ServiceNamespace", serviceNamespaceAsString())
.add("ResourceId", resourceId()).add("ScalableDimension", scalableDimensionAsString())
.add("MinCapacity", minCapacity()).add("MaxCapacity", maxCapacity()).add("RoleARN", roleARN())
.add("SuspendedState", suspendedState()).add("Tags", hasTags() ? tags() : null).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "ServiceNamespace":
return Optional.ofNullable(clazz.cast(serviceNamespaceAsString()));
case "ResourceId":
return Optional.ofNullable(clazz.cast(resourceId()));
case "ScalableDimension":
return Optional.ofNullable(clazz.cast(scalableDimensionAsString()));
case "MinCapacity":
return Optional.ofNullable(clazz.cast(minCapacity()));
case "MaxCapacity":
return Optional.ofNullable(clazz.cast(maxCapacity()));
case "RoleARN":
return Optional.ofNullable(clazz.cast(roleARN()));
case "SuspendedState":
return Optional.ofNullable(clazz.cast(suspendedState()));
case "Tags":
return Optional.ofNullable(clazz.cast(tags()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function getter(Function g) {
return obj -> g.apply((RegisterScalableTargetRequest) obj);
}
private static BiConsumer setter(BiConsumer s) {
return (obj, val) -> s.accept((Builder) obj, val);
}
public interface Builder extends ApplicationAutoScalingRequest.Builder, SdkPojo,
CopyableBuilder {
/**
*
* 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.
*
*
* @param 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.
* @see ServiceNamespace
* @return Returns a reference to this object so that method calls can be chained together.
* @see ServiceNamespace
*/
Builder serviceNamespace(String 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.
*
*
* @param 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.
* @see ServiceNamespace
* @return Returns a reference to this object so that method calls can be chained together.
* @see ServiceNamespace
*/
Builder serviceNamespace(ServiceNamespace serviceNamespace);
/**
*
* 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
.
*
*
*
*
* SageMaker inference component - The resource type is inference-component
and the unique
* identifier is the resource ID. Example: inference-component/my-inference-component
.
*
*
*
*
* @param 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
.
*
*
*
*
* SageMaker inference component - The resource type is inference-component
and the unique
* identifier is the resource ID. Example: inference-component/my-inference-component
.
*
*
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder resourceId(String resourceId);
/**
*
* 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.
*
*
*
*
* sagemaker:inference-component:DesiredCopyCount
- The number of copies across an endpoint for a
* SageMaker inference component.
*
*
*
*
* @param 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.
*
*
*
*
* sagemaker:inference-component:DesiredCopyCount
- The number of copies across an endpoint
* for a SageMaker inference component.
*
*
* @see ScalableDimension
* @return Returns a reference to this object so that method calls can be chained together.
* @see ScalableDimension
*/
Builder scalableDimension(String 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.
*
*
*
*
* sagemaker:inference-component:DesiredCopyCount
- The number of copies across an endpoint for a
* SageMaker inference component.
*
*
*
*
* @param 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.
*
*
*
*
* sagemaker:inference-component:DesiredCopyCount
- The number of copies across an endpoint
* for a SageMaker inference component.
*
*
* @see ScalableDimension
* @return Returns a reference to this object so that method calls can be chained together.
* @see ScalableDimension
*/
Builder scalableDimension(ScalableDimension scalableDimension);
/**
*
* 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.
*
*
* @param 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.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder minCapacity(Integer minCapacity);
/**
*
* 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 .
*
*
* @param 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 .
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder maxCapacity(Integer maxCapacity);
/**
*
* 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 .
*
*
* @param 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 .
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder roleARN(String roleARN);
/**
*
* 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 .
*
*
* @param 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 .
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder suspendedState(SuspendedState 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 .
*
* This is a convenience method that creates an instance of the {@link SuspendedState.Builder} avoiding the need
* to create one manually via {@link SuspendedState#builder()}.
*
*
* When the {@link Consumer} completes, {@link SuspendedState.Builder#build()} is called immediately and its
* result is passed to {@link #suspendedState(SuspendedState)}.
*
* @param suspendedState
* a consumer that will call methods on {@link SuspendedState.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #suspendedState(SuspendedState)
*/
default Builder suspendedState(Consumer suspendedState) {
return suspendedState(SuspendedState.builder().applyMutation(suspendedState).build());
}
/**
*
* 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 .
*
*
* @param 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 .
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder tags(Map tags);
@Override
Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration);
@Override
Builder overrideConfiguration(Consumer builderConsumer);
}
static final class BuilderImpl extends ApplicationAutoScalingRequest.BuilderImpl implements Builder {
private String serviceNamespace;
private String resourceId;
private String scalableDimension;
private Integer minCapacity;
private Integer maxCapacity;
private String roleARN;
private SuspendedState suspendedState;
private Map tags = DefaultSdkAutoConstructMap.getInstance();
private BuilderImpl() {
}
private BuilderImpl(RegisterScalableTargetRequest model) {
super(model);
serviceNamespace(model.serviceNamespace);
resourceId(model.resourceId);
scalableDimension(model.scalableDimension);
minCapacity(model.minCapacity);
maxCapacity(model.maxCapacity);
roleARN(model.roleARN);
suspendedState(model.suspendedState);
tags(model.tags);
}
public final String getServiceNamespace() {
return serviceNamespace;
}
public final void setServiceNamespace(String serviceNamespace) {
this.serviceNamespace = serviceNamespace;
}
@Override
public final Builder serviceNamespace(String serviceNamespace) {
this.serviceNamespace = serviceNamespace;
return this;
}
@Override
public final Builder serviceNamespace(ServiceNamespace serviceNamespace) {
this.serviceNamespace(serviceNamespace == null ? null : serviceNamespace.toString());
return this;
}
public final String getResourceId() {
return resourceId;
}
public final void setResourceId(String resourceId) {
this.resourceId = resourceId;
}
@Override
public final Builder resourceId(String resourceId) {
this.resourceId = resourceId;
return this;
}
public final String getScalableDimension() {
return scalableDimension;
}
public final void setScalableDimension(String scalableDimension) {
this.scalableDimension = scalableDimension;
}
@Override
public final Builder scalableDimension(String scalableDimension) {
this.scalableDimension = scalableDimension;
return this;
}
@Override
public final Builder scalableDimension(ScalableDimension scalableDimension) {
this.scalableDimension(scalableDimension == null ? null : scalableDimension.toString());
return this;
}
public final Integer getMinCapacity() {
return minCapacity;
}
public final void setMinCapacity(Integer minCapacity) {
this.minCapacity = minCapacity;
}
@Override
public final Builder minCapacity(Integer minCapacity) {
this.minCapacity = minCapacity;
return this;
}
public final Integer getMaxCapacity() {
return maxCapacity;
}
public final void setMaxCapacity(Integer maxCapacity) {
this.maxCapacity = maxCapacity;
}
@Override
public final Builder maxCapacity(Integer maxCapacity) {
this.maxCapacity = maxCapacity;
return this;
}
public final String getRoleARN() {
return roleARN;
}
public final void setRoleARN(String roleARN) {
this.roleARN = roleARN;
}
@Override
public final Builder roleARN(String roleARN) {
this.roleARN = roleARN;
return this;
}
public final SuspendedState.Builder getSuspendedState() {
return suspendedState != null ? suspendedState.toBuilder() : null;
}
public final void setSuspendedState(SuspendedState.BuilderImpl suspendedState) {
this.suspendedState = suspendedState != null ? suspendedState.build() : null;
}
@Override
public final Builder suspendedState(SuspendedState suspendedState) {
this.suspendedState = suspendedState;
return this;
}
public final Map getTags() {
if (tags instanceof SdkAutoConstructMap) {
return null;
}
return tags;
}
public final void setTags(Map tags) {
this.tags = TagMapCopier.copy(tags);
}
@Override
public final Builder tags(Map tags) {
this.tags = TagMapCopier.copy(tags);
return this;
}
@Override
public Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration) {
super.overrideConfiguration(overrideConfiguration);
return this;
}
@Override
public Builder overrideConfiguration(Consumer builderConsumer) {
super.overrideConfiguration(builderConsumer);
return this;
}
@Override
public RegisterScalableTargetRequest build() {
return new RegisterScalableTargetRequest(this);
}
@Override
public List> sdkFields() {
return SDK_FIELDS;
}
}
}