class aws_cdk.aws_applicationautoscaling.BaseScalableAttribute(scope, id, *, dimension, resource_id, role, service_namespace, max_capacity, min_capacity=None)

Bases: Construct

Represent an attribute for which autoscaling can be configured.

This class is basically a light wrapper around ScalableTarget, but with all methods protected instead of public so they can be selectively exposed and/or more specific versions of them can be exposed by derived classes for individual services support autoscaling.

Typical use cases:

  • Hide away the PredefinedMetric enum for target tracking policies.

  • Don’t expose all scaling methods (for example Dynamo tables don’t support Step Scaling, so the Dynamo subclass won’t expose this method).

  • scope (Construct) –

  • id (str) –

  • dimension (str) – Scalable dimension of the attribute.

  • resource_id (str) – Resource ID of the attribute.

  • role (IRole) – Role to use for scaling.

  • service_namespace (ServiceNamespace) – Service namespace of the scalable attribute.

  • max_capacity (Union[int, float]) – Maximum capacity to scale to.

  • min_capacity (Union[int, float, None]) – Minimum capacity to scale to. Default: 1



Returns a string representation of this construct.

Return type:




The tree node.

Static Methods

classmethod is_construct(x)

Checks if x is a construct.

Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.


x (Any) – Any object.

Return type:



true if x is an object created from a class which extends Construct.