CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

A Pulumi provider SDK for creating and managing Amazon Web Services (AWS) cloud resources in Go, providing strongly-typed resource classes and data sources for all major AWS services.

Overview
Eval results
Files

autoscaling.mddocs/reference/compute/

Auto Scaling

Documentation for AWS Auto Scaling (EC2 Auto Scaling Groups) and Application Auto Scaling (appautoscaling) Pulumi resources.

Package Information

  • Package Names: autoscaling, appautoscaling
  • Import Paths:
    • github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling
    • github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appautoscaling

Core Imports

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling"
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appautoscaling"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

Overview

  • autoscaling: Manages EC2 Auto Scaling Groups and associated resources. Requires a launch configuration or launch template.
  • appautoscaling: Manages Application Auto Scaling for services such as ECS, DynamoDB, Lambda, and others. Uses scalable targets and policies.

Capabilities

EC2 Auto Scaling Group

Manages an EC2 Auto Scaling Group, which automatically adjusts the number of EC2 instances based on demand. Requires either LaunchConfiguration, LaunchTemplate, or MixedInstancesPolicy.

func NewGroup(ctx *pulumi.Context,
    name string, args *GroupArgs, opts ...pulumi.ResourceOption) (*Group, error)

func GetGroup(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *GroupState, opts ...pulumi.ResourceOption) (*Group, error)

type Group struct {
    pulumi.CustomResourceState

    Arn                           pulumi.StringOutput                              `pulumi:"arn"`
    AvailabilityZoneDistribution  GroupAvailabilityZoneDistributionOutput          `pulumi:"availabilityZoneDistribution"`
    // Conflicts with VpcZoneIdentifiers
    AvailabilityZones             pulumi.StringArrayOutput                         `pulumi:"availabilityZones"`
    CapacityRebalance             pulumi.BoolPtrOutput                             `pulumi:"capacityRebalance"`
    CapacityReservationSpecification GroupCapacityReservationSpecificationOutput   `pulumi:"capacityReservationSpecification"`
    DefaultCooldown               pulumi.IntOutput                                 `pulumi:"defaultCooldown"`
    DefaultInstanceWarmup         pulumi.IntPtrOutput                              `pulumi:"defaultInstanceWarmup"`
    DesiredCapacity               pulumi.IntOutput                                 `pulumi:"desiredCapacity"`
    // Valid values: "units", "vcpu", "memory-mib"
    DesiredCapacityType           pulumi.StringPtrOutput                           `pulumi:"desiredCapacityType"`
    EnabledMetrics                MetricArrayOutput                                `pulumi:"enabledMetrics"`
    ForceDelete                   pulumi.BoolPtrOutput                             `pulumi:"forceDelete"`
    ForceDeleteWarmPool           pulumi.BoolPtrOutput                             `pulumi:"forceDeleteWarmPool"`
    HealthCheckGracePeriod        pulumi.IntPtrOutput                              `pulumi:"healthCheckGracePeriod"`
    // Valid values: "EC2", "ELB"
    HealthCheckType               pulumi.StringOutput                              `pulumi:"healthCheckType"`
    IgnoreFailedScalingActivities pulumi.BoolPtrOutput                             `pulumi:"ignoreFailedScalingActivities"`
    // Lifecycle hooks applied at creation time
    InitialLifecycleHooks         GroupInitialLifecycleHookArrayOutput             `pulumi:"initialLifecycleHooks"`
    InstanceMaintenancePolicy     GroupInstanceMaintenancePolicyPtrOutput          `pulumi:"instanceMaintenancePolicy"`
    InstanceRefresh               GroupInstanceRefreshPtrOutput                    `pulumi:"instanceRefresh"`
    LaunchConfiguration           pulumi.StringPtrOutput                           `pulumi:"launchConfiguration"`
    LaunchTemplate                GroupLaunchTemplateOutput                        `pulumi:"launchTemplate"`
    // Classic load balancers only. Use TargetGroupArns for ALB/NLB.
    LoadBalancers                 pulumi.StringArrayOutput                         `pulumi:"loadBalancers"`
    MaxInstanceLifetime           pulumi.IntPtrOutput                              `pulumi:"maxInstanceLifetime"`
    MaxSize                       pulumi.IntOutput                                 `pulumi:"maxSize"`
    MetricsGranularity            pulumi.StringPtrOutput                           `pulumi:"metricsGranularity"`
    MinElbCapacity                pulumi.IntPtrOutput                              `pulumi:"minElbCapacity"`
    MinSize                       pulumi.IntOutput                                 `pulumi:"minSize"`
    MixedInstancesPolicy          GroupMixedInstancesPolicyOutput                  `pulumi:"mixedInstancesPolicy"`
    Name                          pulumi.StringOutput                              `pulumi:"name"`
    NamePrefix                    pulumi.StringOutput                              `pulumi:"namePrefix"`
    PlacementGroup                pulumi.StringPtrOutput                           `pulumi:"placementGroup"`
    PredictedCapacity             pulumi.IntOutput                                 `pulumi:"predictedCapacity"`
    ProtectFromScaleIn            pulumi.BoolPtrOutput                             `pulumi:"protectFromScaleIn"`
    Region                        pulumi.StringOutput                              `pulumi:"region"`
    ServiceLinkedRoleArn          pulumi.StringOutput                              `pulumi:"serviceLinkedRoleArn"`
    // Valid values: "Launch", "Terminate", "HealthCheck", "ReplaceUnhealthy",
    // "AZRebalance", "AlarmNotification", "ScheduledActions", "AddToLoadBalancer", "InstanceRefresh"
    SuspendedProcesses            pulumi.StringArrayOutput                         `pulumi:"suspendedProcesses"`
    Tags                          GroupTagArrayOutput                              `pulumi:"tags"`
    TargetGroupArns               pulumi.StringArrayOutput                         `pulumi:"targetGroupArns"`
    // Valid values: "OldestInstance", "NewestInstance", "OldestLaunchConfiguration",
    // "ClosestToNextInstanceHour", "OldestLaunchTemplate", "AllocationStrategy", "Default"
    TerminationPolicies           pulumi.StringArrayOutput                         `pulumi:"terminationPolicies"`
    TrafficSources                GroupTrafficSourceArrayOutput                    `pulumi:"trafficSources"`
    // Subnet IDs. Conflicts with AvailabilityZones.
    VpcZoneIdentifiers            pulumi.StringArrayOutput                         `pulumi:"vpcZoneIdentifiers"`
    WaitForCapacityTimeout        pulumi.StringPtrOutput                           `pulumi:"waitForCapacityTimeout"`
    WaitForElbCapacity            pulumi.IntPtrOutput                              `pulumi:"waitForElbCapacity"`
    WarmPool                      GroupWarmPoolPtrOutput                           `pulumi:"warmPool"`
    WarmPoolSize                  pulumi.IntOutput                                 `pulumi:"warmPoolSize"`
}

type GroupArgs struct {
    AvailabilityZoneDistribution  GroupAvailabilityZoneDistributionPtrInput
    AvailabilityZones             pulumi.StringArrayInput
    CapacityRebalance             pulumi.BoolPtrInput
    CapacityReservationSpecification GroupCapacityReservationSpecificationPtrInput
    DefaultCooldown               pulumi.IntPtrInput
    DefaultInstanceWarmup         pulumi.IntPtrInput
    DesiredCapacity               pulumi.IntPtrInput
    DesiredCapacityType           pulumi.StringPtrInput
    EnabledMetrics                MetricArrayInput
    ForceDelete                   pulumi.BoolPtrInput
    ForceDeleteWarmPool           pulumi.BoolPtrInput
    HealthCheckGracePeriod        pulumi.IntPtrInput
    HealthCheckType               pulumi.StringPtrInput
    IgnoreFailedScalingActivities pulumi.BoolPtrInput
    InitialLifecycleHooks         GroupInitialLifecycleHookArrayInput
    InstanceMaintenancePolicy     GroupInstanceMaintenancePolicyPtrInput
    InstanceRefresh               GroupInstanceRefreshPtrInput
    LaunchConfiguration           pulumi.Input
    LaunchTemplate                GroupLaunchTemplatePtrInput
    LoadBalancers                 pulumi.StringArrayInput
    MaxInstanceLifetime           pulumi.IntPtrInput
    // Required
    MaxSize                       pulumi.IntInput
    MetricsGranularity            pulumi.StringPtrInput
    MinElbCapacity                pulumi.IntPtrInput
    // Required
    MinSize                       pulumi.IntInput
    MixedInstancesPolicy          GroupMixedInstancesPolicyPtrInput
    Name                          pulumi.StringPtrInput
    NamePrefix                    pulumi.StringPtrInput
    PlacementGroup                pulumi.Input
    ProtectFromScaleIn            pulumi.BoolPtrInput
    Region                        pulumi.StringPtrInput
    ServiceLinkedRoleArn          pulumi.StringPtrInput
    SuspendedProcesses            pulumi.StringArrayInput
    Tags                          GroupTagArrayInput
    TargetGroupArns               pulumi.StringArrayInput
    TerminationPolicies           pulumi.StringArrayInput
    TrafficSources                GroupTrafficSourceArrayInput
    VpcZoneIdentifiers            pulumi.StringArrayInput
    WaitForCapacityTimeout        pulumi.StringPtrInput
    WaitForElbCapacity            pulumi.IntPtrInput
    WarmPool                      GroupWarmPoolPtrInput
}

EC2 Auto Scaling Policy

Defines how an Auto Scaling Group scales. Supports SimpleScaling, StepScaling, TargetTrackingScaling, and PredictiveScaling policy types.

func NewPolicy(ctx *pulumi.Context,
    name string, args *PolicyArgs, opts ...pulumi.ResourceOption) (*Policy, error)

func GetPolicy(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *PolicyState, opts ...pulumi.ResourceOption) (*Policy, error)

type Policy struct {
    pulumi.CustomResourceState

    // Valid values: "ChangeInCapacity", "ExactCapacity", "PercentChangeInCapacity"
    AdjustmentType                 pulumi.StringPtrOutput                                   `pulumi:"adjustmentType"`
    Arn                            pulumi.StringOutput                                      `pulumi:"arn"`
    AutoscalingGroupName           pulumi.StringOutput                                      `pulumi:"autoscalingGroupName"`
    Cooldown                       pulumi.IntPtrOutput                                      `pulumi:"cooldown"`
    Enabled                        pulumi.BoolPtrOutput                                     `pulumi:"enabled"`
    EstimatedInstanceWarmup        pulumi.IntPtrOutput                                      `pulumi:"estimatedInstanceWarmup"`
    // Valid values: "Minimum", "Maximum", "Average"
    MetricAggregationType          pulumi.StringOutput                                      `pulumi:"metricAggregationType"`
    MinAdjustmentMagnitude         pulumi.IntPtrOutput                                      `pulumi:"minAdjustmentMagnitude"`
    Name                           pulumi.StringOutput                                      `pulumi:"name"`
    // Valid values: "SimpleScaling" (default), "StepScaling", "TargetTrackingScaling", "PredictiveScaling"
    PolicyType                     pulumi.StringPtrOutput                                   `pulumi:"policyType"`
    PredictiveScalingConfiguration PolicyPredictiveScalingConfigurationPtrOutput            `pulumi:"predictiveScalingConfiguration"`
    Region                         pulumi.StringOutput                                      `pulumi:"region"`
    // For SimpleScaling: number of instances to scale (positive = up, negative = down)
    ScalingAdjustment              pulumi.IntPtrOutput                                      `pulumi:"scalingAdjustment"`
    // For StepScaling
    StepAdjustments                PolicyStepAdjustmentArrayOutput                          `pulumi:"stepAdjustments"`
    // For TargetTrackingScaling
    TargetTrackingConfiguration    PolicyTargetTrackingConfigurationPtrOutput               `pulumi:"targetTrackingConfiguration"`
}

EC2 Auto Scaling Lifecycle Hook

Attaches lifecycle hooks to an Auto Scaling Group to perform custom actions when instances are launched or terminated.

func NewLifecycleHook(ctx *pulumi.Context,
    name string, args *LifecycleHookArgs, opts ...pulumi.ResourceOption) (*LifecycleHook, error)

func GetLifecycleHook(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *LifecycleHookState, opts ...pulumi.ResourceOption) (*LifecycleHook, error)

type LifecycleHook struct {
    pulumi.CustomResourceState

    AutoscalingGroupName  pulumi.StringOutput  `pulumi:"autoscalingGroupName"`
    // Action on timeout or failure. Valid values: "CONTINUE" (default is "ABANDON")
    DefaultResult         pulumi.StringOutput  `pulumi:"defaultResult"`
    // Timeout in seconds before DefaultResult is applied
    HeartbeatTimeout      pulumi.IntPtrOutput  `pulumi:"heartbeatTimeout"`
    // Valid values: "autoscaling:EC2_INSTANCE_LAUNCHING", "autoscaling:EC2_INSTANCE_TERMINATING"
    LifecycleTransition   pulumi.StringOutput  `pulumi:"lifecycleTransition"`
    Name                  pulumi.StringOutput  `pulumi:"name"`
    NotificationMetadata  pulumi.StringPtrOutput `pulumi:"notificationMetadata"`
    // ARN of SQS queue, SNS topic, or Lambda function for notifications
    NotificationTargetArn pulumi.StringPtrOutput `pulumi:"notificationTargetArn"`
    Region                pulumi.StringOutput  `pulumi:"region"`
    // IAM role ARN allowing ASG to publish to the notification target
    RoleArn               pulumi.StringPtrOutput `pulumi:"roleArn"`
}

type LifecycleHookArgs struct {
    AutoscalingGroupName  pulumi.StringInput
    // Valid values: "CONTINUE", "ABANDON". Default: "ABANDON"
    DefaultResult         pulumi.StringPtrInput
    HeartbeatTimeout      pulumi.IntPtrInput
    // Valid values: "autoscaling:EC2_INSTANCE_LAUNCHING", "autoscaling:EC2_INSTANCE_TERMINATING"
    LifecycleTransition   pulumi.StringInput
    Name                  pulumi.StringPtrInput
    NotificationMetadata  pulumi.StringPtrInput
    NotificationTargetArn pulumi.StringPtrInput
    Region                pulumi.StringPtrInput
    RoleArn               pulumi.StringPtrInput
}

EC2 Auto Scaling Schedule

Configures scheduled scaling actions for an Auto Scaling Group using cron expressions or one-time schedules.

func NewSchedule(ctx *pulumi.Context,
    name string, args *ScheduleArgs, opts ...pulumi.ResourceOption) (*Schedule, error)

func GetSchedule(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *ScheduleState, opts ...pulumi.ResourceOption) (*Schedule, error)

type Schedule struct {
    pulumi.CustomResourceState

    Arn                  pulumi.StringOutput `pulumi:"arn"`
    AutoscalingGroupName pulumi.StringOutput `pulumi:"autoscalingGroupName"`
    // -1 means no change. Default: 0
    DesiredCapacity      pulumi.IntOutput    `pulumi:"desiredCapacity"`
    // UTC format: "YYYY-MM-DDThh:mm:ssZ"
    EndTime              pulumi.StringOutput `pulumi:"endTime"`
    // -1 means no change. Default: 0
    MaxSize              pulumi.IntOutput    `pulumi:"maxSize"`
    // -1 means no change. Default: 0
    MinSize              pulumi.IntOutput    `pulumi:"minSize"`
    // Unix cron syntax for recurring schedules
    Recurrence           pulumi.StringOutput `pulumi:"recurrence"`
    Region               pulumi.StringOutput `pulumi:"region"`
    ScheduledActionName  pulumi.StringOutput `pulumi:"scheduledActionName"`
    // UTC format: "YYYY-MM-DDThh:mm:ssZ"
    StartTime            pulumi.StringOutput `pulumi:"startTime"`
    // IANA timezone (e.g., "Etc/GMT+9", "Pacific/Tahiti")
    TimeZone             pulumi.StringOutput `pulumi:"timeZone"`
}

type ScheduleArgs struct {
    // Required
    AutoscalingGroupName pulumi.StringInput
    DesiredCapacity      pulumi.IntPtrInput
    EndTime              pulumi.StringPtrInput
    MaxSize              pulumi.IntPtrInput
    MinSize              pulumi.IntPtrInput
    Recurrence           pulumi.StringPtrInput
    Region               pulumi.StringPtrInput
    // Required
    ScheduledActionName  pulumi.StringInput
    StartTime            pulumi.StringPtrInput
    TimeZone             pulumi.StringPtrInput
}

EC2 Auto Scaling - Available Resources

// Resource constructors
func NewGroup(ctx *pulumi.Context, name string, args *GroupArgs, opts ...pulumi.ResourceOption) (*Group, error)
func NewPolicy(ctx *pulumi.Context, name string, args *PolicyArgs, opts ...pulumi.ResourceOption) (*Policy, error)
func NewLifecycleHook(ctx *pulumi.Context, name string, args *LifecycleHookArgs, opts ...pulumi.ResourceOption) (*LifecycleHook, error)
func NewSchedule(ctx *pulumi.Context, name string, args *ScheduleArgs, opts ...pulumi.ResourceOption) (*Schedule, error)
func NewNotification(ctx *pulumi.Context, name string, args *NotificationArgs, opts ...pulumi.ResourceOption) (*Notification, error)
func NewTag(ctx *pulumi.Context, name string, args *TagArgs, opts ...pulumi.ResourceOption) (*Tag, error)
func NewAttachment(ctx *pulumi.Context, name string, args *AttachmentArgs, opts ...pulumi.ResourceOption) (*Attachment, error)
func NewTrafficSourceAttachment(ctx *pulumi.Context, name string, args *TrafficSourceAttachmentArgs, opts ...pulumi.ResourceOption) (*TrafficSourceAttachment, error)

// Data source
func GetAmiIds(ctx *pulumi.Context, args *GetAmiIdsArgs, opts ...pulumi.InvokeOption) (*GetAmiIdsResult, error)

// Resource import functions
func GetGroup(ctx *pulumi.Context, name string, id pulumi.IDInput, state *GroupState, opts ...pulumi.ResourceOption) (*Group, error)
func GetAttachment(ctx *pulumi.Context, name string, id pulumi.IDInput, state *AttachmentState, opts ...pulumi.ResourceOption) (*Attachment, error)
func GetLifecycleHook(ctx *pulumi.Context, name string, id pulumi.IDInput, state *LifecycleHookState, opts ...pulumi.ResourceOption) (*LifecycleHook, error)
func GetNotification(ctx *pulumi.Context, name string, id pulumi.IDInput, state *NotificationState, opts ...pulumi.ResourceOption) (*Notification, error)
func GetPolicy(ctx *pulumi.Context, name string, id pulumi.IDInput, state *PolicyState, opts ...pulumi.ResourceOption) (*Policy, error)
func GetSchedule(ctx *pulumi.Context, name string, id pulumi.IDInput, state *ScheduleState, opts ...pulumi.ResourceOption) (*Schedule, error)
func GetTag(ctx *pulumi.Context, name string, id pulumi.IDInput, state *TagState, opts ...pulumi.ResourceOption) (*Tag, error)
func GetTrafficSourceAttachment(ctx *pulumi.Context, name string, id pulumi.IDInput, state *TrafficSourceAttachmentState, opts ...pulumi.ResourceOption) (*TrafficSourceAttachment, error)

Application Auto Scaling

Application Auto Scaling Target

Registers a scalable target with Application Auto Scaling. Supports services such as DynamoDB, ECS, Lambda, RDS, SageMaker, and others.

func NewTarget(ctx *pulumi.Context,
    name string, args *TargetArgs, opts ...pulumi.ResourceOption) (*Target, error)

func GetTarget(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *TargetState, opts ...pulumi.ResourceOption) (*Target, error)

type Target struct {
    pulumi.CustomResourceState

    Arn               pulumi.StringOutput          `pulumi:"arn"`
    MaxCapacity       pulumi.IntOutput             `pulumi:"maxCapacity"`
    MinCapacity       pulumi.IntOutput             `pulumi:"minCapacity"`
    Region            pulumi.StringOutput          `pulumi:"region"`
    // Resource ID format depends on service. e.g., "table/tableName" for DynamoDB,
    // "service/clusterName/serviceName" for ECS
    ResourceId        pulumi.StringOutput          `pulumi:"resourceId"`
    RoleArn           pulumi.StringOutput          `pulumi:"roleArn"`
    // e.g., "dynamodb:table:ReadCapacityUnits", "ecs:service:DesiredCount"
    ScalableDimension pulumi.StringOutput          `pulumi:"scalableDimension"`
    // e.g., "dynamodb", "ecs", "lambda", "rds", "sagemaker"
    ServiceNamespace  pulumi.StringOutput          `pulumi:"serviceNamespace"`
    SuspendedState    TargetSuspendedStateOutput   `pulumi:"suspendedState"`
    Tags              pulumi.StringMapOutput       `pulumi:"tags"`
    TagsAll           pulumi.StringMapOutput       `pulumi:"tagsAll"`
}

type TargetArgs struct {
    // Required
    MaxCapacity       pulumi.IntInput
    // Required
    MinCapacity       pulumi.IntInput
    Region            pulumi.StringPtrInput
    // Required
    ResourceId        pulumi.StringInput
    RoleArn           pulumi.StringPtrInput
    // Required
    ScalableDimension pulumi.StringInput
    // Required
    ServiceNamespace  pulumi.StringInput
    SuspendedState    TargetSuspendedStatePtrInput
    Tags              pulumi.StringMapInput
}

Application Auto Scaling Policy

Attaches a scaling policy to an Application Auto Scaling target. Supports StepScaling, TargetTrackingScaling, and PredictiveScaling policy types.

func NewPolicy(ctx *pulumi.Context,
    name string, args *PolicyArgs, opts ...pulumi.ResourceOption) (*Policy, error)

func GetPolicy(ctx *pulumi.Context,
    name string, id pulumi.IDInput, state *PolicyState, opts ...pulumi.ResourceOption) (*Policy, error)

type Policy struct {
    pulumi.CustomResourceState

    AlarmArns                                 pulumi.StringArrayOutput                                           `pulumi:"alarmArns"`
    Arn                                       pulumi.StringOutput                                               `pulumi:"arn"`
    Name                                      pulumi.StringOutput                                               `pulumi:"name"`
    // Valid values: "StepScaling", "TargetTrackingScaling" (default), "PredictiveScaling"
    PolicyType                                pulumi.StringPtrOutput                                            `pulumi:"policyType"`
    // Requires PolicyType = "PredictiveScaling"
    PredictiveScalingPolicyConfiguration      PolicyPredictiveScalingPolicyConfigurationPtrOutput               `pulumi:"predictiveScalingPolicyConfiguration"`
    Region                                    pulumi.StringOutput                                               `pulumi:"region"`
    ResourceId                                pulumi.StringOutput                                               `pulumi:"resourceId"`
    ScalableDimension                         pulumi.StringOutput                                               `pulumi:"scalableDimension"`
    ServiceNamespace                          pulumi.StringOutput                                               `pulumi:"serviceNamespace"`
    // Requires PolicyType = "StepScaling"
    StepScalingPolicyConfiguration            PolicyStepScalingPolicyConfigurationPtrOutput                     `pulumi:"stepScalingPolicyConfiguration"`
    // Requires PolicyType = "TargetTrackingScaling"
    TargetTrackingScalingPolicyConfiguration  PolicyTargetTrackingScalingPolicyConfigurationPtrOutput           `pulumi:"targetTrackingScalingPolicyConfiguration"`
}

type PolicyArgs struct {
    // Required: must be 1-255 characters
    Name                                      pulumi.StringInput
    // Valid values: "StepScaling", "TargetTrackingScaling", "PredictiveScaling". Default: "StepScaling"
    PolicyType                                pulumi.StringPtrInput
    PredictiveScalingPolicyConfiguration      PolicyPredictiveScalingPolicyConfigurationPtrInput
    Region                                    pulumi.StringPtrInput
    // Required: must match the registered scalable target
    ResourceId                                pulumi.StringInput
    // Required: must match the registered scalable target
    ScalableDimension                         pulumi.StringInput
    // Required: must match the registered scalable target
    ServiceNamespace                          pulumi.StringInput
    StepScalingPolicyConfiguration            PolicyStepScalingPolicyConfigurationPtrInput
    TargetTrackingScalingPolicyConfiguration  PolicyTargetTrackingScalingPolicyConfigurationPtrInput
}

Usage Examples

EC2 Auto Scaling Group with Launch Template

package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/autoscaling"
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ec2"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        lt, err := ec2.NewLaunchTemplate(ctx, "example", &ec2.LaunchTemplateArgs{
            Name:         pulumi.String("example"),
            ImageId:      pulumi.String("ami-0c55b159cbfafe1f0"),
            InstanceType: pulumi.String("t3.micro"),
        })
        if err != nil {
            return err
        }

        _, err = autoscaling.NewGroup(ctx, "example", &autoscaling.GroupArgs{
            Name:    pulumi.String("example-asg"),
            MinSize: pulumi.Int(1),
            MaxSize: pulumi.Int(5),
            DesiredCapacity: pulumi.Int(2),
            VpcZoneIdentifiers: pulumi.StringArray{
                pulumi.String("subnet-abc123"),
                pulumi.String("subnet-def456"),
            },
            LaunchTemplate: &autoscaling.GroupLaunchTemplateArgs{
                Id:      lt.ID(),
                Version: pulumi.String("$Latest"),
            },
            HealthCheckType:        pulumi.String("ELB"),
            HealthCheckGracePeriod: pulumi.Int(300),
            Tags: autoscaling.GroupTagArray{
                &autoscaling.GroupTagArgs{
                    Key:               pulumi.String("Name"),
                    Value:             pulumi.String("example-instance"),
                    PropagateAtLaunch: pulumi.Bool(true),
                },
            },
        })
        return err
    })
}

Target Tracking Scaling Policy

// EC2 Auto Scaling - Target Tracking
_, err = autoscaling.NewPolicy(ctx, "cpuPolicy", &autoscaling.PolicyArgs{
    AutoscalingGroupName: asg.Name,
    Name:                 pulumi.String("cpu-target-tracking"),
    PolicyType:           pulumi.String("TargetTrackingScaling"),
    TargetTrackingConfiguration: &autoscaling.PolicyTargetTrackingConfigurationArgs{
        PredefinedMetricSpecification: &autoscaling.PolicyTargetTrackingConfigurationPredefinedMetricSpecificationArgs{
            PredefinedMetricType: pulumi.String("ASGAverageCPUUtilization"),
        },
        TargetValue: pulumi.Float64(50.0),
    },
})

Lifecycle Hook for Instance Termination

_, err = autoscaling.NewLifecycleHook(ctx, "terminationHook", &autoscaling.LifecycleHookArgs{
    AutoscalingGroupName:  asg.Name,
    Name:                  pulumi.String("drain-instance"),
    LifecycleTransition:   pulumi.String("autoscaling:EC2_INSTANCE_TERMINATING"),
    DefaultResult:         pulumi.String("CONTINUE"),
    HeartbeatTimeout:      pulumi.Int(300),
    NotificationTargetArn: snsTopic.Arn,
    RoleArn:               iamRole.Arn,
})

Scheduled Scaling Action

_, err = autoscaling.NewSchedule(ctx, "scaleDown", &autoscaling.ScheduleArgs{
    AutoscalingGroupName: asg.Name,
    ScheduledActionName:  pulumi.String("scale-down-nights"),
    MinSize:              pulumi.Int(0),
    MaxSize:              pulumi.Int(2),
    DesiredCapacity:      pulumi.Int(0),
    Recurrence:           pulumi.String("0 20 * * *"), // 8 PM UTC daily
    TimeZone:             pulumi.String("UTC"),
})

Application Auto Scaling for ECS Service

package main

import (
    "fmt"

    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/appautoscaling"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        target, err := appautoscaling.NewTarget(ctx, "ecsTarget", &appautoscaling.TargetArgs{
            MaxCapacity: pulumi.Int(10),
            MinCapacity: pulumi.Int(1),
            ResourceId: pulumi.Sprintf("service/%v/%v",
                ecsCluster.Name, ecsService.Name),
            ScalableDimension: pulumi.String("ecs:service:DesiredCount"),
            ServiceNamespace:  pulumi.String("ecs"),
        })
        if err != nil {
            return err
        }

        _, err = appautoscaling.NewPolicy(ctx, "ecsCpuPolicy", &appautoscaling.PolicyArgs{
            Name: target.ResourceId.ApplyT(func(id string) (string, error) {
                return fmt.Sprintf("cpu-tracking:%v", id), nil
            }).(pulumi.StringOutput),
            PolicyType:        pulumi.String("TargetTrackingScaling"),
            ResourceId:        target.ResourceId,
            ScalableDimension: target.ScalableDimension,
            ServiceNamespace:  target.ServiceNamespace,
            TargetTrackingScalingPolicyConfiguration: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationArgs{
                PredefinedMetricSpecification: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs{
                    PredefinedMetricType: pulumi.String("ECSServiceAverageCPUUtilization"),
                },
                TargetValue:      pulumi.Float64(70),
                ScaleInCooldown:  pulumi.Int(300),
                ScaleOutCooldown: pulumi.Int(60),
            },
        })
        return err
    })
}

Application Auto Scaling for DynamoDB

target, err := appautoscaling.NewTarget(ctx, "dynamoReadTarget", &appautoscaling.TargetArgs{
    MaxCapacity:       pulumi.Int(100),
    MinCapacity:       pulumi.Int(5),
    ResourceId:        pulumi.Sprintf("table/%v", table.Name),
    ScalableDimension: pulumi.String("dynamodb:table:ReadCapacityUnits"),
    ServiceNamespace:  pulumi.String("dynamodb"),
})

_, err = appautoscaling.NewPolicy(ctx, "dynamoReadPolicy", &appautoscaling.PolicyArgs{
    Name: target.ResourceId.ApplyT(func(id string) (string, error) {
        return fmt.Sprintf("DynamoDBReadCapacityUtilization:%v", id), nil
    }).(pulumi.StringOutput),
    PolicyType:        pulumi.String("TargetTrackingScaling"),
    ResourceId:        target.ResourceId,
    ScalableDimension: target.ScalableDimension,
    ServiceNamespace:  target.ServiceNamespace,
    TargetTrackingScalingPolicyConfiguration: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationArgs{
        PredefinedMetricSpecification: &appautoscaling.PolicyTargetTrackingScalingPolicyConfigurationPredefinedMetricSpecificationArgs{
            PredefinedMetricType: pulumi.String("DynamoDBReadCapacityUtilization"),
        },
        TargetValue: pulumi.Float64(70),
    },
})

Install with Tessl CLI

npx tessl i tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

docs

index.md

tile.json