getInstanceTypes

This data source provides the ECS instance types of Alibaba Cloud.

NOTE: Available since v1.0.0. NOTE: By default, only the upgraded instance types are returned. If you want to get outdated instance types, you must set is_outdated to true. NOTE: If one instance type is sold out, it will not be exported.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
const config = new pulumi.Config();
const name = config.get("name") || "terraform-example";
const _default = alicloud.getZones({
availableResourceCreation: "VSwitch",
});
// Declare the data source
const defaultGetInstanceTypes = _default.then(_default => alicloud.ecs.getInstanceTypes({
availabilityZone: _default.zones?.[0]?.id,
instanceTypeFamily: "ecs.sn1ne",
}));
const defaultGetImages = alicloud.ecs.getImages({
nameRegex: "^ubuntu_[0-9]+_[0-9]+_x64*",
mostRecent: true,
owners: "system",
});
const defaultNetwork = new alicloud.vpc.Network("default", {
vpcName: name,
cidrBlock: "192.168.0.0/16",
});
const defaultSwitch = new alicloud.vpc.Switch("default", {
vswitchName: name,
vpcId: defaultNetwork.id,
cidrBlock: "192.168.192.0/24",
zoneId: _default.then(_default => _default.zones?.[0]?.id),
});
const defaultSecurityGroup = new alicloud.ecs.SecurityGroup("default", {
name: name,
vpcId: defaultNetwork.id,
});
const defaultEcsNetworkInterface = new alicloud.ecs.EcsNetworkInterface("default", {
networkInterfaceName: name,
vswitchId: defaultSwitch.id,
securityGroupIds: [defaultSecurityGroup.id],
});
const defaultInstance: alicloud.ecs.Instance[] = [];
for (const range = {value: 0}; range.value < 14; range.value++) {
defaultInstance.push(new alicloud.ecs.Instance(`default-${range.value}`, {
imageId: defaultGetImages.then(defaultGetImages => defaultGetImages.images?.[0]?.id),
instanceType: defaultGetInstanceTypes.then(defaultGetInstanceTypes => defaultGetInstanceTypes.instanceTypes?.[0]?.id),
instanceName: name,
securityGroups: [defaultSecurityGroup].map(__item => __item.id),
internetChargeType: "PayByTraffic",
internetMaxBandwidthOut: 10,
availabilityZone: _default.then(_default => _default.zones?.[0]?.id),
instanceChargeType: "PostPaid",
systemDiskCategory: "cloud_efficiency",
vswitchId: defaultSwitch.id,
}));
}
import pulumi
import pulumi_alicloud as alicloud
config = pulumi.Config()
name = config.get("name")
if name is None:
name = "terraform-example"
default = alicloud.get_zones(available_resource_creation="VSwitch")
# Declare the data source
default_get_instance_types = alicloud.ecs.get_instance_types(availability_zone=default.zones[0].id,
instance_type_family="ecs.sn1ne")
default_get_images = alicloud.ecs.get_images(name_regex="^ubuntu_[0-9]+_[0-9]+_x64*",
most_recent=True,
owners="system")
default_network = alicloud.vpc.Network("default",
vpc_name=name,
cidr_block="192.168.0.0/16")
default_switch = alicloud.vpc.Switch("default",
vswitch_name=name,
vpc_id=default_network.id,
cidr_block="192.168.192.0/24",
zone_id=default.zones[0].id)
default_security_group = alicloud.ecs.SecurityGroup("default",
name=name,
vpc_id=default_network.id)
default_ecs_network_interface = alicloud.ecs.EcsNetworkInterface("default",
network_interface_name=name,
vswitch_id=default_switch.id,
security_group_ids=[default_security_group&#46;id])
default_instance = []
for range in [{"value": i} for i in range(0, 14)]:
default_instance.append(alicloud.ecs.Instance(f"default-{range['value']}",
image_id=default_get_images.images[0].id,
instance_type=default_get_instance_types.instance_types[0].id,
instance_name=name,
security_groups=[__item&#46;id for __item in [default_security_group]],
internet_charge_type="PayByTraffic",
internet_max_bandwidth_out=10,
availability_zone=default.zones[0].id,
instance_charge_type="PostPaid",
system_disk_category="cloud_efficiency",
vswitch_id=default_switch.id))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var name = config.Get("name") ?? "terraform-example";
var @default = AliCloud.GetZones.Invoke(new()
{
AvailableResourceCreation = "VSwitch",
});
// Declare the data source
var defaultGetInstanceTypes = AliCloud.Ecs.GetInstanceTypes.Invoke(new()
{
AvailabilityZone = @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id),
InstanceTypeFamily = "ecs.sn1ne",
});
var defaultGetImages = AliCloud.Ecs.GetImages.Invoke(new()
{
NameRegex = "^ubuntu_[0-9]+_[0-9]+_x64*",
MostRecent = true,
Owners = "system",
});
var defaultNetwork = new AliCloud.Vpc.Network("default", new()
{
VpcName = name,
CidrBlock = "192.168.0.0/16",
});
var defaultSwitch = new AliCloud.Vpc.Switch("default", new()
{
VswitchName = name,
VpcId = defaultNetwork.Id,
CidrBlock = "192.168.192.0/24",
ZoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
});
var defaultSecurityGroup = new AliCloud.Ecs.SecurityGroup("default", new()
{
Name = name,
VpcId = defaultNetwork.Id,
});
var defaultEcsNetworkInterface = new AliCloud.Ecs.EcsNetworkInterface("default", new()
{
NetworkInterfaceName = name,
VswitchId = defaultSwitch.Id,
SecurityGroupIds = new[]
{
defaultSecurityGroup.Id,
},
});
var defaultInstance = new List<AliCloud.Ecs.Instance>();
for (var rangeIndex = 0; rangeIndex < 14; rangeIndex++)
{
var range = new { Value = rangeIndex };
defaultInstance.Add(new AliCloud.Ecs.Instance($"default-{range.Value}", new()
{
ImageId = defaultGetImages.Apply(getImagesResult => getImagesResult.Images[0]?.Id),
InstanceType = defaultGetInstanceTypes.Apply(getInstanceTypesResult => getInstanceTypesResult.InstanceTypes[0]?.Id),
InstanceName = name,
SecurityGroups = new[]
{
defaultSecurityGroup,
}.Select(__item => __item.Id).ToList(),
InternetChargeType = "PayByTraffic",
InternetMaxBandwidthOut = 10,
AvailabilityZone = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
InstanceChargeType = "PostPaid",
SystemDiskCategory = "cloud_efficiency",
VswitchId = defaultSwitch.Id,
}));
}
});
package main
import (
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ecs"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
name := "terraform-example";
if param := cfg.Get("name"); param != ""{
name = param
}
_default, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
AvailableResourceCreation: pulumi.StringRef("VSwitch"),
}, nil);
if err != nil {
return err
}
// Declare the data source
defaultGetInstanceTypes, err := ecs.GetInstanceTypes(ctx, &ecs.GetInstanceTypesArgs{
AvailabilityZone: pulumi.StringRef(_default.Zones[0].Id),
InstanceTypeFamily: pulumi.StringRef("ecs.sn1ne"),
}, nil);
if err != nil {
return err
}
defaultGetImages, err := ecs.GetImages(ctx, &ecs.GetImagesArgs{
NameRegex: pulumi.StringRef("^ubuntu_[0-9]+_[0-9]+_x64*"),
MostRecent: pulumi.BoolRef(true),
Owners: pulumi.StringRef("system"),
}, nil);
if err != nil {
return err
}
defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
VpcName: pulumi.String(name),
CidrBlock: pulumi.String("192.168.0.0/16"),
})
if err != nil {
return err
}
defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
VswitchName: pulumi.String(name),
VpcId: defaultNetwork.ID(),
CidrBlock: pulumi.String("192.168.192.0/24"),
ZoneId: pulumi.String(_default.Zones[0].Id),
})
if err != nil {
return err
}
defaultSecurityGroup, err := ecs.NewSecurityGroup(ctx, "default", &ecs.SecurityGroupArgs{
Name: pulumi.String(name),
VpcId: defaultNetwork.ID(),
})
if err != nil {
return err
}
_, err = ecs.NewEcsNetworkInterface(ctx, "default", &ecs.EcsNetworkInterfaceArgs{
NetworkInterfaceName: pulumi.String(name),
VswitchId: defaultSwitch.ID(),
SecurityGroupIds: pulumi.StringArray{
defaultSecurityGroup.ID(),
},
})
if err != nil {
return err
}
var splat0 pulumi.StringArray
for _, val0 := range %!v(PANIC=Format method: fatal: An assertion has failed: tok: ) {
splat0 = append(splat0, val0.ID())
}
var defaultInstance []*ecs.Instance
for index := 0; index < 14; index++ {
key0 := index
_ := index
__res, err := ecs.NewInstance(ctx, fmt.Sprintf("default-%v", key0), &ecs.InstanceArgs{
ImageId: pulumi.String(defaultGetImages.Images[0].Id),
InstanceType: pulumi.String(defaultGetInstanceTypes.InstanceTypes[0].Id),
InstanceName: pulumi.String(name),
SecurityGroups: splat0,
InternetChargeType: pulumi.String("PayByTraffic"),
InternetMaxBandwidthOut: pulumi.Int(10),
AvailabilityZone: pulumi.String(_default.Zones[0].Id),
InstanceChargeType: pulumi.String("PostPaid"),
SystemDiskCategory: pulumi.String("cloud_efficiency"),
VswitchId: defaultSwitch.ID(),
})
if err != nil {
return err
}
defaultInstance = append(defaultInstance, __res)
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.ecs.inputs.GetImagesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.ecs.SecurityGroup;
import com.pulumi.alicloud.ecs.SecurityGroupArgs;
import com.pulumi.alicloud.ecs.EcsNetworkInterface;
import com.pulumi.alicloud.ecs.EcsNetworkInterfaceArgs;
import com.pulumi.alicloud.ecs.Instance;
import com.pulumi.alicloud.ecs.InstanceArgs;
import com.pulumi.codegen.internal.KeyedValue;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var name = config.get("name").orElse("terraform-example");
final var default = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableResourceCreation("VSwitch")
.build());
// Declare the data source
final var defaultGetInstanceTypes = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.availabilityZone(default_.zones()[0].id())
.instanceTypeFamily("ecs.sn1ne")
.build());
final var defaultGetImages = EcsFunctions.getImages(GetImagesArgs.builder()
.nameRegex("^ubuntu_[0-9]+_[0-9]+_x64*")
.mostRecent(true)
.owners("system")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("192.168.0.0/16")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vswitchName(name)
.vpcId(defaultNetwork.id())
.cidrBlock("192.168.192.0/24")
.zoneId(default_.zones()[0].id())
.build());
var defaultSecurityGroup = new SecurityGroup("defaultSecurityGroup", SecurityGroupArgs.builder()
.name(name)
.vpcId(defaultNetwork.id())
.build());
var defaultEcsNetworkInterface = new EcsNetworkInterface("defaultEcsNetworkInterface", EcsNetworkInterfaceArgs.builder()
.networkInterfaceName(name)
.vswitchId(defaultSwitch.id())
.securityGroupIds(defaultSecurityGroup.id())
.build());
for (var i = 0; i < 14; i++) {
new Instance("defaultInstance-" + i, InstanceArgs.builder()
.imageId(defaultGetImages.images()[0].id())
.instanceType(defaultGetInstanceTypes.instanceTypes()[0].id())
.instanceName(name)
.securityGroups(defaultSecurityGroup.stream().map(element -> element.id()).collect(toList()))
.internetChargeType("PayByTraffic")
.internetMaxBandwidthOut(10)
.availabilityZone(default_.zones()[0].id())
.instanceChargeType("PostPaid")
.systemDiskCategory("cloud_efficiency")
.vswitchId(defaultSwitch.id())
.build());
}
}
}

Return

A collection of values returned by getInstanceTypes.

Parameters

argument

A collection of arguments for invoking getInstanceTypes.


suspend fun getInstanceTypes(availabilityZone: String? = null, cpuCoreCount: Int? = null, eniAmount: Int? = null, gpuAmount: Int? = null, gpuSpec: String? = null, imageId: String? = null, instanceChargeType: String? = null, instanceType: String? = null, instanceTypeFamily: String? = null, isOutdated: Boolean? = null, kubernetesNodeRole: String? = null, memorySize: Double? = null, minimumEniIpv6AddressQuantity: Int? = null, minimumEniPrivateIpAddressQuantity: Int? = null, networkType: String? = null, outputFile: String? = null, sortedBy: String? = null, spotStrategy: String? = null, systemDiskCategory: String? = null): GetInstanceTypesResult

Return

A collection of values returned by getInstanceTypes.

Parameters

availabilityZone

The zone where instance types are supported.

cpuCoreCount

Filter the results to a specific number of cpu cores.

eniAmount

Filter the result whose network interface number is no more than eni_amount.

gpuAmount

The GPU amount of an instance type.

gpuSpec

The GPU spec of an instance type.

imageId

The ID of the image.

instanceChargeType

Filter the results by charge type. Valid values: PrePaid and PostPaid. Default to PostPaid.

instanceType

Instance specifications. For more information, see instance Specification Family, or you can call the describe instance types interface to get the latest specification table.

instanceTypeFamily

Filter the results based on their family name. For example: 'ecs.n4'.

isOutdated

If true, outdated instance types are included in the results. Default to false.

kubernetesNodeRole

Filter the result which is used to create a kubernetes cluster and managed kubernetes cluster. Optional Values: Master and Worker.

memorySize

Filter the results to a specific memory size in GB.

minimumEniIpv6AddressQuantity

The minimum number of IPv6 addresses per ENI. Note: If an instance type supports fewer IPv6 addresses per ENI than the specified value, information about the instance type is not queried.

minimumEniPrivateIpAddressQuantity

The minimum expected IPv4 address upper limit of a single ENI when querying instance specifications. Note: If an instance type supports fewer IPv4 addresses per ENI than the specified value, information about the instance type is not queried.

networkType

Filter the results by network type. Valid values: Classic and Vpc.

outputFile

File name where to save data source results (after running pulumi preview).

sortedBy

Sort mode, valid values: CPU, Memory, Price.

spotStrategy

Filter the results by ECS spot type. Valid values: NoSpot, SpotWithPriceLimit and SpotAsPriceGo. Default to NoSpot.

systemDiskCategory

Filter the results by system disk category. Valid values: cloud, ephemeral_ssd, cloud_essd, cloud_efficiency, cloud_ssd, cloud_essd_entry, cloud_auto. NOTE: Its default value cloud_efficiency has been removed from the version v1.150.0.

See also


Return

A collection of values returned by getInstanceTypes.

Parameters

argument

Builder for com.pulumi.alicloud.ecs.kotlin.inputs.GetInstanceTypesPlainArgs.

See also