Namespace Pulumi.Aws.AppAutoScaling
Classes
Policy
Provides an Application AutoScaling Policy resource.
Example Usage
DynamoDB Table Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var dynamodbTableReadTarget = new Aws.AppAutoScaling.Target("dynamodbTableReadTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 100,
MinCapacity = 5,
ResourceId = "table/tableName",
ScalableDimension = "dynamodb:table:ReadCapacityUnits",
ServiceNamespace = "dynamodb",
});
var dynamodbTableReadPolicy = new Aws.AppAutoScaling.Policy("dynamodbTableReadPolicy", new Aws.AppAutoScaling.PolicyArgs
{
PolicyType = "TargetTrackingScaling",
ResourceId = dynamodbTableReadTarget.ResourceId,
ScalableDimension = dynamodbTableReadTarget.ScalableDimension,
ServiceNamespace = dynamodbTableReadTarget.ServiceNamespace,
TargetTrackingScalingPolicyConfiguration = new Aws.AppAutoScaling.Inputs.PolicyTargetTrackingScalingPolicyConfigurationArgs
{
PredefinedMetricSpecification = new Aws.AppAutoScaling.Inputs.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs
{
PredefinedMetricType = "DynamoDBReadCapacityUtilization",
},
TargetValue = 70,
},
});
}
}
ECS Service Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var ecsTarget = new Aws.AppAutoScaling.Target("ecsTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 4,
MinCapacity = 1,
ResourceId = "service/clusterName/serviceName",
ScalableDimension = "ecs:service:DesiredCount",
ServiceNamespace = "ecs",
});
var ecsPolicy = new Aws.AppAutoScaling.Policy("ecsPolicy", new Aws.AppAutoScaling.PolicyArgs
{
PolicyType = "StepScaling",
ResourceId = ecsTarget.ResourceId,
ScalableDimension = ecsTarget.ScalableDimension,
ServiceNamespace = ecsTarget.ServiceNamespace,
StepScalingPolicyConfiguration = new Aws.AppAutoScaling.Inputs.PolicyStepScalingPolicyConfigurationArgs
{
AdjustmentType = "ChangeInCapacity",
Cooldown = 60,
MetricAggregationType = "Maximum",
StepAdjustment =
{
{
{ "metricIntervalUpperBound", 0 },
{ "scalingAdjustment", -1 },
},
},
},
});
}
}
Aurora Read Replica Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var replicasTarget = new Aws.AppAutoScaling.Target("replicasTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 15,
MinCapacity = 1,
ResourceId = $"cluster:{aws_rds_cluster.Example.Id}",
ScalableDimension = "rds:cluster:ReadReplicaCount",
ServiceNamespace = "rds",
});
var replicasPolicy = new Aws.AppAutoScaling.Policy("replicasPolicy", new Aws.AppAutoScaling.PolicyArgs
{
PolicyType = "TargetTrackingScaling",
ResourceId = replicasTarget.ResourceId,
ScalableDimension = replicasTarget.ScalableDimension,
ServiceNamespace = replicasTarget.ServiceNamespace,
TargetTrackingScalingPolicyConfiguration = new Aws.AppAutoScaling.Inputs.PolicyTargetTrackingScalingPolicyConfigurationArgs
{
PredefinedMetricSpecification = new Aws.AppAutoScaling.Inputs.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs
{
PredefinedMetricType = "RDSReaderAverageCPUUtilization",
},
ScaleInCooldown = 300,
ScaleOutCooldown = 300,
TargetValue = 75,
},
});
}
}
PolicyArgs
PolicyState
ScheduledAction
Provides an Application AutoScaling ScheduledAction resource.
Example Usage
DynamoDB Table Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var dynamodbTarget = new Aws.AppAutoScaling.Target("dynamodbTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 100,
MinCapacity = 5,
ResourceId = "table/tableName",
ScalableDimension = "dynamodb:table:ReadCapacityUnits",
ServiceNamespace = "dynamodb",
});
var dynamodbScheduledAction = new Aws.AppAutoScaling.ScheduledAction("dynamodbScheduledAction", new Aws.AppAutoScaling.ScheduledActionArgs
{
ResourceId = dynamodbTarget.ResourceId,
ScalableDimension = dynamodbTarget.ScalableDimension,
ScalableTargetAction = new Aws.AppAutoScaling.Inputs.ScheduledActionScalableTargetActionArgs
{
MaxCapacity = 200,
MinCapacity = 1,
},
Schedule = "at(2006-01-02T15:04:05)",
ServiceNamespace = dynamodbTarget.ServiceNamespace,
});
}
}
ECS Service Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var ecsTarget = new Aws.AppAutoScaling.Target("ecsTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 4,
MinCapacity = 1,
ResourceId = "service/clusterName/serviceName",
ScalableDimension = "ecs:service:DesiredCount",
ServiceNamespace = "ecs",
});
var ecsScheduledAction = new Aws.AppAutoScaling.ScheduledAction("ecsScheduledAction", new Aws.AppAutoScaling.ScheduledActionArgs
{
ResourceId = ecsTarget.ResourceId,
ScalableDimension = ecsTarget.ScalableDimension,
ScalableTargetAction = new Aws.AppAutoScaling.Inputs.ScheduledActionScalableTargetActionArgs
{
MaxCapacity = 10,
MinCapacity = 1,
},
Schedule = "at(2006-01-02T15:04:05)",
ServiceNamespace = ecsTarget.ServiceNamespace,
});
}
}
ScheduledActionArgs
ScheduledActionState
Target
Provides an Application AutoScaling ScalableTarget resource. To manage policies which get attached to the target, see the aws.appautoscaling.Policy resource.
NOTE: The Application Auto Scaling service automatically attempts to manage IAM Service-Linked Roles when registering certain service namespaces for the first time. To manually manage this role, see the
aws.iam.ServiceLinkedRoleresource.
Example Usage
DynamoDB Table Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var dynamodbTableReadTarget = new Aws.AppAutoScaling.Target("dynamodbTableReadTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 100,
MinCapacity = 5,
ResourceId = $"table/{aws_dynamodb_table.Example.Name}",
ScalableDimension = "dynamodb:table:ReadCapacityUnits",
ServiceNamespace = "dynamodb",
});
}
}
DynamoDB Index Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var dynamodbIndexReadTarget = new Aws.AppAutoScaling.Target("dynamodbIndexReadTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 100,
MinCapacity = 5,
ResourceId = $"table/{aws_dynamodb_table.Example.Name}/index/{@var.Index_name}",
ScalableDimension = "dynamodb:index:ReadCapacityUnits",
ServiceNamespace = "dynamodb",
});
}
}
ECS Service Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var ecsTarget = new Aws.AppAutoScaling.Target("ecsTarget", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 4,
MinCapacity = 1,
ResourceId = $"service/{aws_ecs_cluster.Example.Name}/{aws_ecs_service.Example.Name}",
ScalableDimension = "ecs:service:DesiredCount",
ServiceNamespace = "ecs",
});
}
}
Aurora Read Replica Autoscaling
using Pulumi;
using Aws = Pulumi.Aws;
class MyStack : Stack
{
public MyStack()
{
var replicas = new Aws.AppAutoScaling.Target("replicas", new Aws.AppAutoScaling.TargetArgs
{
MaxCapacity = 15,
MinCapacity = 1,
ResourceId = $"cluster:{aws_rds_cluster.Example.Id}",
ScalableDimension = "rds:cluster:ReadReplicaCount",
ServiceNamespace = "rds",
});
}
}