Show / Hide Table of Contents

Namespace Pulumi.AliCloud.Ess

Classes

Alarm

AlarmArgs

AlarmState

Attachment

Attaches several ECS instances to a specified scaling group or remove them from it.

NOTE: ECS instances can be attached or remove only when the scaling group is active and it has no scaling activity in progress.

NOTE: There are two types ECS instances in a scaling group: "AutoCreated" and "Attached". The total number of them can not larger than the scaling group "MaxSize".

Example Usage

using System.Collections.Generic;
using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var config = new Config();
    var name = config.Get("name") ?? "essattachmentconfig";
    var defaultZones = Output.Create(AliCloud.GetZones.InvokeAsync(new AliCloud.GetZonesArgs
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    }));
    var defaultInstanceTypes = defaultZones.Apply(defaultZones => Output.Create(AliCloud.Ecs.GetInstanceTypes.InvokeAsync(new AliCloud.Ecs.GetInstanceTypesArgs
    {
        AvailabilityZone = defaultZones.Zones[0].Id,
        CpuCoreCount = 2,
        MemorySize = 4,
    })));
    var defaultImages = Output.Create(AliCloud.Ecs.GetImages.InvokeAsync(new AliCloud.Ecs.GetImagesArgs
    {
        MostRecent = true,
        NameRegex = "^ubuntu_18.*64",
        Owners = "system",
    }));
    var defaultNetwork = new AliCloud.Vpc.Network("defaultNetwork", new AliCloud.Vpc.NetworkArgs
    {
        CidrBlock = "172.16.0.0/16",
    });
    var defaultSwitch = new AliCloud.Vpc.Switch("defaultSwitch", new AliCloud.Vpc.SwitchArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        CidrBlock = "172.16.0.0/24",
        VpcId = defaultNetwork.Id,
    });
    var defaultSecurityGroup = new AliCloud.Ecs.SecurityGroup("defaultSecurityGroup", new AliCloud.Ecs.SecurityGroupArgs
    {
        VpcId = defaultNetwork.Id,
    });
    var defaultSecurityGroupRule = new AliCloud.Ecs.SecurityGroupRule("defaultSecurityGroupRule", new AliCloud.Ecs.SecurityGroupRuleArgs
    {
        CidrIp = "172.16.0.0/24",
        IpProtocol = "tcp",
        NicType = "intranet",
        Policy = "accept",
        PortRange = "22/22",
        Priority = 1,
        SecurityGroupId = defaultSecurityGroup.Id,
        Type = "ingress",
    });
    var defaultScalingGroup = new AliCloud.Ess.ScalingGroup("defaultScalingGroup", new AliCloud.Ess.ScalingGroupArgs
    {
        MaxSize = 2,
        MinSize = 0,
        RemovalPolicies = 
        {
            "OldestInstance",
            "NewestInstance",
        },
        ScalingGroupName = name,
        VswitchIds = 
        {
            defaultSwitch.Id,
        },
    });
    var defaultScalingConfiguration = new AliCloud.Ess.ScalingConfiguration("defaultScalingConfiguration", new AliCloud.Ess.ScalingConfigurationArgs
    {
        Active = true,
        Enable = true,
        ForceDelete = true,
        ImageId = defaultImages.Apply(defaultImages => defaultImages.Images[0].Id),
        InstanceType = defaultInstanceTypes.Apply(defaultInstanceTypes => defaultInstanceTypes.InstanceTypes[0].Id),
        ScalingGroupId = defaultScalingGroup.Id,
        SecurityGroupId = defaultSecurityGroup.Id,
    });
    var defaultInstance = new List<AliCloud.Ecs.Instance>();
    for (var rangeIndex = 0; rangeIndex < 2; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        defaultInstance.Add(new AliCloud.Ecs.Instance($"defaultInstance-{range.Value}", new AliCloud.Ecs.InstanceArgs
        {
            ImageId = defaultImages.Apply(defaultImages => defaultImages.Images[0].Id),
            InstanceChargeType = "PostPaid",
            InstanceName = name,
            InstanceType = defaultInstanceTypes.Apply(defaultInstanceTypes => defaultInstanceTypes.InstanceTypes[0].Id),
            InternetChargeType = "PayByTraffic",
            InternetMaxBandwidthOut = "10",
            SecurityGroups = 
            {
                defaultSecurityGroup.Id,
            },
            SystemDiskCategory = "cloud_efficiency",
            VswitchId = defaultSwitch.Id,
        }));
    }
    var defaultAttachment = new AliCloud.Ess.Attachment("defaultAttachment", new AliCloud.Ess.AttachmentArgs
    {
        Force = true,
        InstanceIds = 
        {
            defaultInstance[0].Id,
            defaultInstance[1].Id,
        },
        ScalingGroupId = defaultScalingGroup.Id,
    });
}

}

AttachmentArgs

AttachmentState

GetAlarms

GetAlarmsArgs

GetAlarmsResult

GetLifecycleHooks

GetLifecycleHooksArgs

GetLifecycleHooksResult

GetNotifications

GetNotificationsArgs

GetNotificationsResult

GetScalingConfigurations

GetScalingConfigurationsArgs

GetScalingConfigurationsResult

GetScalingGroups

GetScalingGroupsArgs

GetScalingGroupsResult

GetScalingRules

GetScalingRulesArgs

GetScalingRulesResult

GetScheduledTasks

GetScheduledTasksArgs

GetScheduledTasksResult

LifecycleHook

LifecycleHookArgs

LifecycleHookState

Notification

Provides a ESS notification resource. More about Ess notification, see Autoscaling Notification.

NOTE: Available in 1.55.0+

Example Usage

using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var config = new Config();
    var name = config.Get("name") ?? "tf-testAccEssNotification-%d";
    var defaultRegions = Output.Create(AliCloud.GetRegions.InvokeAsync(new AliCloud.GetRegionsArgs
    {
        Current = true,
    }));
    var defaultAccount = Output.Create(AliCloud.GetAccount.InvokeAsync());
    var defaultZones = Output.Create(AliCloud.GetZones.InvokeAsync(new AliCloud.GetZonesArgs
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    }));
    var defaultNetwork = new AliCloud.Vpc.Network("defaultNetwork", new AliCloud.Vpc.NetworkArgs
    {
        CidrBlock = "172.16.0.0/16",
    });
    var defaultSwitch = new AliCloud.Vpc.Switch("defaultSwitch", new AliCloud.Vpc.SwitchArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        CidrBlock = "172.16.0.0/24",
        VpcId = defaultNetwork.Id,
    });
    var defaultScalingGroup = new AliCloud.Ess.ScalingGroup("defaultScalingGroup", new AliCloud.Ess.ScalingGroupArgs
    {
        MaxSize = 1,
        MinSize = 1,
        RemovalPolicies = 
        {
            "OldestInstance",
            "NewestInstance",
        },
        ScalingGroupName = name,
        VswitchIds = 
        {
            defaultSwitch.Id,
        },
    });
    var defaultQueue = new AliCloud.Mns.Queue("defaultQueue", new AliCloud.Mns.QueueArgs
    {
    });
    var defaultNotification = new AliCloud.Ess.Notification("defaultNotification", new AliCloud.Ess.NotificationArgs
    {
        NotificationArn = Output.Tuple(defaultRegions, defaultAccount, defaultQueue.Name).Apply(values =>
        {
            var defaultRegions = values.Item1;
            var defaultAccount = values.Item2;
            var name = values.Item3;
            return $"acs:ess:{defaultRegions.Regions[0].Id}:{defaultAccount.Id}:queue/{name}";
        }),
        NotificationTypes = 
        {
            "AUTOSCALING:SCALE_OUT_SUCCESS",
            "AUTOSCALING:SCALE_OUT_ERROR",
        },
        ScalingGroupId = defaultScalingGroup.Id,
    });
}

}

NotificationArgs

NotificationState

ScalingConfiguration

ScalingConfigurationArgs

ScalingConfigurationState

ScalingGroup

ScalingGroupArgs

ScalingGroupState

ScalingGroupVServerGroups

Attaches/Detaches vserver groups to a specified scaling group.

NOTE: The load balancer of which vserver groups belongs to must be in active status.

NOTE: If scaling group's network type is VPC, the vserver groups must be in the same VPC.

NOTE: A scaling group can have at most 5 vserver groups attached by default.

NOTE: Vserver groups and the default group of loadbalancer share the same backend server quota.

NOTE: When attach vserver groups to scaling group, existing ECS instances will be added to vserver groups; Instead, ECS instances will be removed from vserver group when detach.

NOTE: Detach action will be executed before attach action.

NOTE: Vserver group is defined uniquely by loadbalancer_id, vserver_group_id, port.

NOTE: Modifing weight attribute means detach vserver group first and then, attach with new weight parameter.

NOTE: Resource alicloud.ess.ScalingGroupVServerGroups is available in 1.53.0+.

Example Usage

using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;

class MyStack : Stack
{
public MyStack()
{
    var config = new Config();
    var name = config.Get("name") ?? "testAccEssVserverGroupsAttachment";
    var defaultZones = Output.Create(AliCloud.GetZones.InvokeAsync(new AliCloud.GetZonesArgs
    {
        AvailableDiskCategory = "cloud_efficiency",
        AvailableResourceCreation = "VSwitch",
    }));
    var defaultNetwork = new AliCloud.Vpc.Network("defaultNetwork", new AliCloud.Vpc.NetworkArgs
    {
        CidrBlock = "172.16.0.0/16",
    });
    var defaultSwitch = new AliCloud.Vpc.Switch("defaultSwitch", new AliCloud.Vpc.SwitchArgs
    {
        AvailabilityZone = defaultZones.Apply(defaultZones => defaultZones.Zones[0].Id),
        CidrBlock = "172.16.0.0/24",
        VpcId = defaultNetwork.Id,
    });
    var defaultLoadBalancer = new AliCloud.Slb.LoadBalancer("defaultLoadBalancer", new AliCloud.Slb.LoadBalancerArgs
    {
        VswitchId = defaultSwitch.Id,
    });
    var defaultServerGroup = new AliCloud.Slb.ServerGroup("defaultServerGroup", new AliCloud.Slb.ServerGroupArgs
    {
        LoadBalancerId = defaultLoadBalancer.Id,
    });
    var defaultListener = new List<AliCloud.Slb.Listener>();
    for (var rangeIndex = 0; rangeIndex < 2; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        defaultListener.Add(new AliCloud.Slb.Listener($"defaultListener-{range.Value}", new AliCloud.Slb.ListenerArgs
        {
            BackendPort = "22",
            Bandwidth = "10",
            FrontendPort = "22",
            HealthCheckType = "tcp",
            LoadBalancerId = 
            {
                defaultLoadBalancer,
            }.Select(__item => __item.Id).ToList()[range.Value],
            Protocol = "tcp",
        }));
    }
    var defaultScalingGroup = new AliCloud.Ess.ScalingGroup("defaultScalingGroup", new AliCloud.Ess.ScalingGroupArgs
    {
        MaxSize = "2",
        MinSize = "2",
        ScalingGroupName = name,
        VswitchIds = 
        {
            defaultSwitch.Id,
        },
    });
    var defaultScalingGroupVServerGroups = new AliCloud.Ess.ScalingGroupVServerGroups("defaultScalingGroupVServerGroups", new AliCloud.Ess.ScalingGroupVServerGroupsArgs
    {
        ScalingGroupId = defaultScalingGroup.Id,
        VserverGroups = 
        {
            new AliCloud.Ess.Inputs.ScalingGroupVServerGroupsVserverGroupArgs
            {
                LoadbalancerId = defaultLoadBalancer.Id,
                VserverAttributes = 
                {
                    new AliCloud.Ess.Inputs.ScalingGroupVServerGroupsVserverGroupVserverAttributeArgs
                    {
                        Port = "100",
                        VserverGroupId = defaultServerGroup.Id,
                        Weight = "60",
                    },
                },
            },
        },
    });
}

}

Block vserver_group

the vserver_group supports the following:

  • loadbalancer_id - (Required) Loadbalancer server ID of VServer Group.
  • vserver_attributes - (Required) A list of VServer Group attributes. See Block vserver_attribute below for details.

Block vserver_attribute

  • vserver_group_id - (Required) ID of VServer Group.
  • port - (Required) - The port will be used for VServer Group backend server.
  • weight - (Required) The weight of an ECS instance attached to the VServer Group.

ScalingGroupVServerGroupsArgs

ScalingGroupVServerGroupsState

ScalingRule

ScalingRuleArgs

ScalingRuleState

Schedule

ScheduleArgs

ScheduledTask

ScheduledTaskArgs

ScheduledTaskState

ScheduleState

Back to top Copyright 2016-2020, Pulumi Corporation.