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
activestatus.
NOTE: If scaling group's network type is
VPC, the vserver groups must be in the sameVPC.
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
weightattribute means detach vserver group first and then, attach with new weight parameter.
NOTE: Resource
alicloud.ess.ScalingGroupVServerGroupsis 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.