CapacityReservationArgs

data class CapacityReservationArgs(val capacityReservationName: Output<String>? = null, val description: Output<String>? = null, val dryRun: Output<Boolean>? = null, val endTime: Output<String>? = null, val endTimeType: Output<String>? = null, val instanceAmount: Output<Int>? = null, val instanceType: Output<String>? = null, val matchCriteria: Output<String>? = null, val platform: Output<String>? = null, val resourceGroupId: Output<String>? = null, val tags: Output<Map<String, String>>? = null, val zoneIds: Output<List<String>>? = null) : ConvertibleToJava<CapacityReservationArgs>

Provides a Ecs Capacity Reservation resource. For information about Ecs Capacity Reservation and how to use it, see What is Capacity Reservation.

NOTE: Available in v1.195.0+.

Example Usage

Basic Usage

import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
const _default = alicloud.ecs.getInstanceTypes({
instanceTypeFamily: "ecs.g5",
});
const defaultGetZones = _default.then(_default => alicloud.getZones({
availableResourceCreation: "Instance",
availableInstanceType: _default.ids?.[0],
}));
const defaultGetResourceGroups = alicloud.resourcemanager.getResourceGroups({
status: "OK",
});
const defaultCapacityReservation = new alicloud.ecs.CapacityReservation("default", {
description: "terraform-example",
platform: "linux",
capacityReservationName: "terraform-example",
endTimeType: "Unlimited",
resourceGroupId: defaultGetResourceGroups.then(defaultGetResourceGroups => defaultGetResourceGroups.ids?.[0]),
instanceAmount: 1,
instanceType: _default.then(_default => _default.ids?.[0]),
matchCriteria: "Open",
tags: {
Created: "terraform-example",
},
zoneIds: [defaultGetZones&#46;then(defaultGetZones => defaultGetZones&#46;zones?&#46;[0]?&#46;id)],
});
import pulumi
import pulumi_alicloud as alicloud
default = alicloud.ecs.get_instance_types(instance_type_family="ecs.g5")
default_get_zones = alicloud.get_zones(available_resource_creation="Instance",
available_instance_type=default.ids[0])
default_get_resource_groups = alicloud.resourcemanager.get_resource_groups(status="OK")
default_capacity_reservation = alicloud.ecs.CapacityReservation("default",
description="terraform-example",
platform="linux",
capacity_reservation_name="terraform-example",
end_time_type="Unlimited",
resource_group_id=default_get_resource_groups.ids[0],
instance_amount=1,
instance_type=default.ids[0],
match_criteria="Open",
tags={
"Created": "terraform-example",
},
zone_ids=[default_get_zones&#46;zones[0]&#46;id])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
return await Deployment.RunAsync(() =>
{
var @default = AliCloud.Ecs.GetInstanceTypes.Invoke(new()
{
InstanceTypeFamily = "ecs.g5",
});
var defaultGetZones = AliCloud.GetZones.Invoke(new()
{
AvailableResourceCreation = "Instance",
AvailableInstanceType = @default.Apply(getInstanceTypesResult => getInstanceTypesResult.Ids[0]),
});
var defaultGetResourceGroups = AliCloud.ResourceManager.GetResourceGroups.Invoke(new()
{
Status = "OK",
});
var defaultCapacityReservation = new AliCloud.Ecs.CapacityReservation("default", new()
{
Description = "terraform-example",
Platform = "linux",
CapacityReservationName = "terraform-example",
EndTimeType = "Unlimited",
ResourceGroupId = defaultGetResourceGroups.Apply(getResourceGroupsResult => getResourceGroupsResult.Ids[0]),
InstanceAmount = 1,
InstanceType = @default.Apply(@default => @default.Apply(getInstanceTypesResult => getInstanceTypesResult.Ids[0])),
MatchCriteria = "Open",
Tags =
{
{ "Created", "terraform-example" },
},
ZoneIds = new[]
{
defaultGetZones.Apply(getZonesResult => getZonesResult.Zones[0]?.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/resourcemanager"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_default, err := ecs.GetInstanceTypes(ctx, &ecs.GetInstanceTypesArgs{
InstanceTypeFamily: pulumi.StringRef("ecs.g5"),
}, nil)
if err != nil {
return err
}
defaultGetZones, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
AvailableResourceCreation: pulumi.StringRef("Instance"),
AvailableInstanceType: pulumi.StringRef(_default.Ids[0]),
}, nil)
if err != nil {
return err
}
defaultGetResourceGroups, err := resourcemanager.GetResourceGroups(ctx, &resourcemanager.GetResourceGroupsArgs{
Status: pulumi.StringRef("OK"),
}, nil)
if err != nil {
return err
}
_, err = ecs.NewCapacityReservation(ctx, "default", &ecs.CapacityReservationArgs{
Description: pulumi.String("terraform-example"),
Platform: pulumi.String("linux"),
CapacityReservationName: pulumi.String("terraform-example"),
EndTimeType: pulumi.String("Unlimited"),
ResourceGroupId: pulumi.String(defaultGetResourceGroups.Ids[0]),
InstanceAmount: pulumi.Int(1),
InstanceType: pulumi.String(_default.Ids[0]),
MatchCriteria: pulumi.String("Open"),
Tags: pulumi.StringMap{
"Created": pulumi.String("terraform-example"),
},
ZoneIds: pulumi.StringArray{
pulumi.String(defaultGetZones.Zones[0].Id),
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.resourcemanager.ResourcemanagerFunctions;
import com.pulumi.alicloud.resourcemanager.inputs.GetResourceGroupsArgs;
import com.pulumi.alicloud.ecs.CapacityReservation;
import com.pulumi.alicloud.ecs.CapacityReservationArgs;
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 default = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.instanceTypeFamily("ecs.g5")
.build());
final var defaultGetZones = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableResourceCreation("Instance")
.availableInstanceType(default_.ids()[0])
.build());
final var defaultGetResourceGroups = ResourcemanagerFunctions.getResourceGroups(GetResourceGroupsArgs.builder()
.status("OK")
.build());
var defaultCapacityReservation = new CapacityReservation("defaultCapacityReservation", CapacityReservationArgs.builder()
.description("terraform-example")
.platform("linux")
.capacityReservationName("terraform-example")
.endTimeType("Unlimited")
.resourceGroupId(defaultGetResourceGroups.applyValue(getResourceGroupsResult -> getResourceGroupsResult.ids()[0]))
.instanceAmount(1)
.instanceType(default_.ids()[0])
.matchCriteria("Open")
.tags(Map.of("Created", "terraform-example"))
.zoneIds(defaultGetZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.build());
}
}
resources:
defaultCapacityReservation:
type: alicloud:ecs:CapacityReservation
name: default
properties:
description: terraform-example
platform: linux
capacityReservationName: terraform-example
endTimeType: Unlimited
resourceGroupId: ${defaultGetResourceGroups.ids[0]}
instanceAmount: 1
instanceType: ${default.ids[0]}
matchCriteria: Open
tags:
Created: terraform-example
zoneIds:
- ${defaultGetZones.zones[0].id}
variables:
default:
fn::invoke:
function: alicloud:ecs:getInstanceTypes
arguments:
instanceTypeFamily: ecs.g5
defaultGetZones:
fn::invoke:
function: alicloud:getZones
arguments:
availableResourceCreation: Instance
availableInstanceType: ${default.ids[0]}
defaultGetResourceGroups:
fn::invoke:
function: alicloud:resourcemanager:getResourceGroups
arguments:
status: OK

Import

Ecs Capacity Reservation can be imported using the id, e.g.

$ pulumi import alicloud:ecs/capacityReservation:CapacityReservation example <id>

Constructors

Link copied to clipboard
constructor(capacityReservationName: Output<String>? = null, description: Output<String>? = null, dryRun: Output<Boolean>? = null, endTime: Output<String>? = null, endTimeType: Output<String>? = null, instanceAmount: Output<Int>? = null, instanceType: Output<String>? = null, matchCriteria: Output<String>? = null, platform: Output<String>? = null, resourceGroupId: Output<String>? = null, tags: Output<Map<String, String>>? = null, zoneIds: Output<List<String>>? = null)

Properties

Link copied to clipboard
val capacityReservationName: Output<String>? = null

Capacity reservation service name.

Link copied to clipboard
val description: Output<String>? = null

description of the capacity reservation instance.

Link copied to clipboard
val dryRun: Output<Boolean>? = null

Specifies whether to pre-check the API request. Valid values: true and false.

Link copied to clipboard
val endTime: Output<String>? = null

end time of the capacity reservation. the capacity reservation will be released at the end time automatically if set. otherwise it will last until manually released

Link copied to clipboard
val endTimeType: Output<String>? = null

Release mode of capacity reservation service. Value range:Limited: release at specified time. The EndTime parameter must be specified at the same time.Unlimited: manual release. No time limit.

Link copied to clipboard
val instanceAmount: Output<Int>? = null

The total number of instances that need to be reserved within the capacity reservation.

Link copied to clipboard
val instanceType: Output<String>? = null

Instance type. Currently, you can only set the capacity reservation service for one instance type.

Link copied to clipboard
val matchCriteria: Output<String>? = null

The type of private resource pool generated after the capacity reservation service takes effect. Value range:Open: Open mode.Target: dedicated mode.Default value: Open

Link copied to clipboard
val platform: Output<String>? = null

platform of the capacity reservation, value range windows, linux.

Link copied to clipboard
val resourceGroupId: Output<String>? = null

The resource group id.

Link copied to clipboard
val tags: Output<Map<String, String>>? = null

The tag of the resource.

Link copied to clipboard
val zoneIds: Output<List<String>>? = null

The ID of the zone in the region to which the capacity reservation service belongs. Currently, it is only supported to create a capacity reservation service in one zone.

Functions

Link copied to clipboard
open override fun toJava(): CapacityReservationArgs