scaling_policies
Creates, updates, deletes or gets a scaling_policy resource or lists scaling_policies in a region
Overview
| Name | scaling_policies |
| Type | Resource |
| Description | The ``AWS::ApplicationAutoScaling::ScalingPolicy`` resource defines a scaling policy that Application Auto Scaling uses to adjust the capacity of a scalable target. For more information, see [Target tracking scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) and [Step scaling policies](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) in the *Application Auto Scaling User Guide*. |
| Id | awscc.applicationautoscaling.scaling_policies |
Fields
- get (all properties)
- list (identifiers only)
| Name | Datatype | Description |
|---|---|---|
policy_type | string | The scaling policy type.<br />The following policy types are supported: <br />``TargetTrackingScaling``—Not supported for Amazon EMR<br />``StepScaling``—Not supported for DynamoDB, Amazon Comprehend, Lambda, Amazon Keyspaces, Amazon MSK, Amazon ElastiCache, or Neptune.<br />``PredictiveScaling``—Only supported for Amazon ECS |
resource_id | string | The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier.<br />+ ECS service - The resource type is ``service`` and the unique identifier is the cluster name and service name. Example: ``service/my-cluster/my-service``.<br />+ 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``.<br />+ 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``.<br />+ AppStream 2.0 fleet - The resource type is ``fleet`` and the unique identifier is the fleet name. Example: ``fleet/sample-fleet``.<br />+ DynamoDB table - The resource type is ``table`` and the unique identifier is the table name. Example: ``table/my-table``.<br />+ 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``.<br />+ Aurora DB cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:my-db-cluster``.<br />+ SageMaker endpoint variant - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.<br />+ 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](https://docs.aws.amazon.com/https://github.com/aws/aws-auto-scaling-custom-resource).<br />+ 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``.<br />+ 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``.<br />+ 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``.<br />+ Amazon Keyspaces table - The resource type is ``table`` and the unique identifier is the table name. Example: ``keyspace/mykeyspace/table/mytable``.<br />+ 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``.<br />+ Amazon ElastiCache replication group - The resource type is ``replication-group`` and the unique identifier is the replication group name. Example: ``replication-group/mycluster``.<br />+ Amazon ElastiCache cache cluster - The resource type is ``cache-cluster`` and the unique identifier is the cache cluster name. Example: ``cache-cluster/mycluster``.<br />+ Neptune cluster - The resource type is ``cluster`` and the unique identifier is the cluster name. Example: ``cluster:mycluster``.<br />+ SageMaker serverless endpoint - The resource type is ``variant`` and the unique identifier is the resource ID. Example: ``endpoint/my-end-point/variant/KMeansClustering``.<br />+ SageMaker inference component - The resource type is ``inference-component`` and the unique identifier is the resource ID. Example: ``inference-component/my-inference-component``.<br />+ Pool of WorkSpaces - The resource type is ``workspacespool`` and the unique identifier is the pool ID. Example: ``workspacespool/wspool-123456``. |
scaling_target_id | string | The CloudFormation-generated ID of an Application Auto Scaling scalable target. For more information about the ID, see the Return Value section of the ``AWS::ApplicationAutoScaling::ScalableTarget`` resource.<br />You must specify either the ``ScalingTargetId`` property, or the ``ResourceId``, ``ScalableDimension``, and ``ServiceNamespace`` properties, but not both. |
policy_name | string | The name of the scaling policy.<br />Updates to the name of a target tracking scaling policy are not supported, unless you also update the metric used for scaling. To change only a target tracking scaling policy's name, first delete the policy by removing the existing ``AWS::ApplicationAutoScaling::ScalingPolicy`` resource from the template and updating the stack. Then, recreate the resource with the same settings and a different name. |
service_namespace | string | The namespace of the AWS service that provides the resource, or a ``custom-resource``. |
scalable_dimension | string | The scalable dimension. This string consists of the service namespace, resource type, and scaling property.<br />+ ``ecs:service:DesiredCount`` - The task count of an ECS service.<br />+ ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.<br />+ ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.<br />+ ``appstream:fleet:DesiredCapacity`` - The capacity of an AppStream 2.0 fleet.<br />+ ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.<br />+ ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.<br />+ ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.<br />+ ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.<br />+ ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.<br />+ ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.<br />+ ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.<br />+ ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.<br />+ ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.<br />+ ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.<br />+ ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.<br />+ ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.<br />+ ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.<br />+ ``elasticache:cache-cluster:Nodes`` - The number of nodes for an Amazon ElastiCache cache cluster.<br />+ ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.<br />+ ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.<br />+ ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.<br />+ ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.<br />+ ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.<br />+ ``workspaces:workspacespool:DesiredUserSessions`` - The number of user sessions for the WorkSpaces in the pool. |
target_tracking_scaling_policy_configuration | object | A target tracking scaling policy. |
arn | string | |
step_scaling_policy_configuration | object | A step scaling policy. |
predictive_scaling_policy_configuration | object | The predictive scaling policy configuration. |
region | string | AWS region. |
| Name | Datatype | Description |
|---|---|---|
scalable_dimension | string | The scalable dimension. This string consists of the service namespace, resource type, and scaling property.<br />+ ``ecs:service:DesiredCount`` - The task count of an ECS service.<br />+ ``elasticmapreduce:instancegroup:InstanceCount`` - The instance count of an EMR Instance Group.<br />+ ``ec2:spot-fleet-request:TargetCapacity`` - The target capacity of a Spot Fleet.<br />+ ``appstream:fleet:DesiredCapacity`` - The capacity of an AppStream 2.0 fleet.<br />+ ``dynamodb:table:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB table.<br />+ ``dynamodb:table:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB table.<br />+ ``dynamodb:index:ReadCapacityUnits`` - The provisioned read capacity for a DynamoDB global secondary index.<br />+ ``dynamodb:index:WriteCapacityUnits`` - The provisioned write capacity for a DynamoDB global secondary index.<br />+ ``rds:cluster:ReadReplicaCount`` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition and Aurora PostgreSQL-compatible edition.<br />+ ``sagemaker:variant:DesiredInstanceCount`` - The number of EC2 instances for a SageMaker model endpoint variant.<br />+ ``custom-resource:ResourceType:Property`` - The scalable dimension for a custom resource provided by your own application or service.<br />+ ``comprehend:document-classifier-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend document classification endpoint.<br />+ ``comprehend:entity-recognizer-endpoint:DesiredInferenceUnits`` - The number of inference units for an Amazon Comprehend entity recognizer endpoint.<br />+ ``lambda:function:ProvisionedConcurrency`` - The provisioned concurrency for a Lambda function.<br />+ ``cassandra:table:ReadCapacityUnits`` - The provisioned read capacity for an Amazon Keyspaces table.<br />+ ``cassandra:table:WriteCapacityUnits`` - The provisioned write capacity for an Amazon Keyspaces table.<br />+ ``kafka:broker-storage:VolumeSize`` - The provisioned volume size (in GiB) for brokers in an Amazon MSK cluster.<br />+ ``elasticache:cache-cluster:Nodes`` - The number of nodes for an Amazon ElastiCache cache cluster.<br />+ ``elasticache:replication-group:NodeGroups`` - The number of node groups for an Amazon ElastiCache replication group.<br />+ ``elasticache:replication-group:Replicas`` - The number of replicas per node group for an Amazon ElastiCache replication group.<br />+ ``neptune:cluster:ReadReplicaCount`` - The count of read replicas in an Amazon Neptune DB cluster.<br />+ ``sagemaker:variant:DesiredProvisionedConcurrency`` - The provisioned concurrency for a SageMaker serverless endpoint.<br />+ ``sagemaker:inference-component:DesiredCopyCount`` - The number of copies across an endpoint for a SageMaker inference component.<br />+ ``workspaces:workspacespool:DesiredUserSessions`` - The number of user sessions for the WorkSpaces in the pool. |
arn | string | |
region | string | AWS region. |
For more information, see AWS::ApplicationAutoScaling::ScalingPolicy.
Methods
| Name | Resource | Accessible by | Required Params |
|---|---|---|---|
create_resource | scaling_policies | INSERT | PolicyName, PolicyType, region |
delete_resource | scaling_policies | DELETE | Identifier, region |
update_resource | scaling_policies | UPDATE | Identifier, PatchDocument, region |
list_resources | scaling_policies_list_only | SELECT | region |
get_resource | scaling_policies | SELECT | Identifier, region |
SELECT examples
- get (all properties)
- list (identifiers only)
Gets all properties from an individual scaling_policy.
SELECT
region,
policy_type,
resource_id,
scaling_target_id,
policy_name,
service_namespace,
scalable_dimension,
target_tracking_scaling_policy_configuration,
arn,
step_scaling_policy_configuration,
predictive_scaling_policy_configuration
FROM awscc.applicationautoscaling.scaling_policies
WHERE
region = 'us-east-1' AND
Identifier = '{{ arn }}|{{ scalable_dimension }}';
Lists all scaling_policies in a region.
SELECT
region,
arn,
scalable_dimension
FROM awscc.applicationautoscaling.scaling_policies_list_only
WHERE
region = 'us-east-1';
INSERT example
Use the following StackQL query and manifest file to create a new scaling_policy resource, using stack-deploy.
- Required Properties
- All Properties
- Manifest
/*+ create */
INSERT INTO awscc.applicationautoscaling.scaling_policies (
PolicyType,
PolicyName,
region
)
SELECT
'{{ policy_type }}',
'{{ policy_name }}',
'{{ region }}';
/*+ create */
INSERT INTO awscc.applicationautoscaling.scaling_policies (
PolicyType,
ResourceId,
ScalingTargetId,
PolicyName,
ServiceNamespace,
ScalableDimension,
TargetTrackingScalingPolicyConfiguration,
StepScalingPolicyConfiguration,
PredictiveScalingPolicyConfiguration,
region
)
SELECT
'{{ policy_type }}',
'{{ resource_id }}',
'{{ scaling_target_id }}',
'{{ policy_name }}',
'{{ service_namespace }}',
'{{ scalable_dimension }}',
'{{ target_tracking_scaling_policy_configuration }}',
'{{ step_scaling_policy_configuration }}',
'{{ predictive_scaling_policy_configuration }}',
'{{ region }}';
version: 1
name: stack name
description: stack description
providers:
- aws
globals:
- name: region
value: '{{ vars.AWS_REGION }}'
resources:
- name: scaling_policy
props:
- name: policy_type
value: '{{ policy_type }}'
- name: resource_id
value: '{{ resource_id }}'
- name: scaling_target_id
value: '{{ scaling_target_id }}'
- name: policy_name
value: '{{ policy_name }}'
- name: service_namespace
value: '{{ service_namespace }}'
- name: scalable_dimension
value: '{{ scalable_dimension }}'
- name: target_tracking_scaling_policy_configuration
value:
scale_out_cooldown: '{{ scale_out_cooldown }}'
target_value: null
customized_metric_specification:
metric_name: '{{ metric_name }}'
metrics:
- return_data: '{{ return_data }}'
expression: '{{ expression }}'
label: '{{ label }}'
metric_stat:
stat: '{{ stat }}'
metric:
metric_name: '{{ metric_name }}'
dimensions:
- value: '{{ value }}'
name: '{{ name }}'
namespace: '{{ namespace }}'
unit: '{{ unit }}'
id: '{{ id }}'
statistic: '{{ statistic }}'
dimensions:
- value: '{{ value }}'
name: '{{ name }}'
unit: '{{ unit }}'
namespace: '{{ namespace }}'
disable_scale_in: '{{ disable_scale_in }}'
scale_in_cooldown: '{{ scale_in_cooldown }}'
predefined_metric_specification:
predefined_metric_type: '{{ predefined_metric_type }}'
resource_label: '{{ resource_label }}'
- name: step_scaling_policy_configuration
value:
metric_aggregation_type: '{{ metric_aggregation_type }}'
cooldown: '{{ cooldown }}'
step_adjustments:
- metric_interval_upper_bound: null
metric_interval_lower_bound: null
scaling_adjustment: '{{ scaling_adjustment }}'
min_adjustment_magnitude: '{{ min_adjustment_magnitude }}'
adjustment_type: '{{ adjustment_type }}'
- name: predictive_scaling_policy_configuration
value:
max_capacity_breach_behavior: '{{ max_capacity_breach_behavior }}'
max_capacity_buffer: '{{ max_capacity_buffer }}'
mode: '{{ mode }}'
metric_specifications:
- customized_load_metric_specification:
metric_data_queries:
- return_data: '{{ return_data }}'
expression: '{{ expression }}'
label: '{{ label }}'
metric_stat:
stat: '{{ stat }}'
metric:
metric_name: '{{ metric_name }}'
dimensions:
- value: '{{ value }}'
name: '{{ name }}'
namespace: '{{ namespace }}'
unit: '{{ unit }}'
id: '{{ id }}'
predefined_load_metric_specification:
predefined_metric_type: '{{ predefined_metric_type }}'
resource_label: '{{ resource_label }}'
target_value: null
predefined_scaling_metric_specification:
predefined_metric_type: '{{ predefined_metric_type }}'
resource_label: '{{ resource_label }}'
customized_capacity_metric_specification:
metric_data_queries:
- null
customized_scaling_metric_specification:
metric_data_queries:
- null
predefined_metric_pair_specification:
predefined_metric_type: '{{ predefined_metric_type }}'
resource_label: '{{ resource_label }}'
scheduling_buffer_time: '{{ scheduling_buffer_time }}'
UPDATE example
Use the following StackQL query and manifest file to update a scaling_policy resource, using stack-deploy.
/*+ update */
UPDATE awscc.applicationautoscaling.scaling_policies
SET PatchDocument = string('{{ {
"PolicyType": policy_type,
"TargetTrackingScalingPolicyConfiguration": target_tracking_scaling_policy_configuration,
"StepScalingPolicyConfiguration": step_scaling_policy_configuration,
"PredictiveScalingPolicyConfiguration": predictive_scaling_policy_configuration
} | generate_patch_document }}')
WHERE
region = '{{ region }}' AND
Identifier = '{{ arn }}|{{ scalable_dimension }}';
DELETE example
/*+ delete */
DELETE FROM awscc.applicationautoscaling.scaling_policies
WHERE
Identifier = '{{ arn }}|{{ scalable_dimension }}' AND
region = 'us-east-1';
Permissions
To operate on the scaling_policies resource, the following permissions are required:
- Read
- Create
- Update
- List
- Delete
application-autoscaling:DescribeScalingPolicies
application-autoscaling:DescribeScalingPolicies,
application-autoscaling:PutScalingPolicy,
cloudwatch:GetMetricData
application-autoscaling:DescribeScalingPolicies,
application-autoscaling:PutScalingPolicy,
cloudwatch:GetMetricData
application-autoscaling:DescribeScalingPolicies
application-autoscaling:DescribeScalingPolicies,
application-autoscaling:DeleteScalingPolicy