Pool class

Manages a WorkSpaces Pool in the AWS WorkSpaces service.

Example Usage

Basic Usage

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const example = aws.workspaces.getBundle({
    owner: "AMAZON",
    name: "Standard with Windows 10 (Server 2022 based) (WSP)",
});
const exampleDirectory = new aws.workspaces.Directory("example", {
    subnetIds: [
        exampleC.id,
        exampleD.id,
    ],
    workspaceType: "POOLS",
    workspaceDirectoryName: "example-directory",
    workspaceDirectoryDescription: "Example WorkSpaces Directory for Pools",
    userIdentityType: "CUSTOMER_MANAGED",
});
const examplePool = new aws.workspaces.Pool("example", {
    capacity: {
        desiredUserSessions: 10,
    },
    bundleId: example.then(example => example.id),
    poolName: "example-pool",
    description: "Example WorkSpaces Pool",
    directoryId: exampleDirectory.directoryId,
    runningMode: "AUTO_STOP",
});
import pulumi
import pulumi_aws as aws

example = aws.workspaces.get_bundle(owner="AMAZON",
    name="Standard with Windows 10 (Server 2022 based) (WSP)")
example_directory = aws.workspaces.Directory("example",
    subnet_ids=[
        example_c["id"],
        example_d["id"],
    ],
    workspace_type="POOLS",
    workspace_directory_name="example-directory",
    workspace_directory_description="Example WorkSpaces Directory for Pools",
    user_identity_type="CUSTOMER_MANAGED")
example_pool = aws.workspaces.Pool("example",
    capacity={
        "desired_user_sessions": 10,
    },
    bundle_id=example.id,
    pool_name="example-pool",
    description="Example WorkSpaces Pool",
    directory_id=example_directory.directory_id,
    running_mode="AUTO_STOP")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

return await Deployment.RunAsync(() =>
{
    var example = Aws.Workspaces.GetBundle.Invoke(new()
    {
        Owner = "AMAZON",
        Name = "Standard with Windows 10 (Server 2022 based) (WSP)",
    });

    var exampleDirectory = new Aws.Workspaces.Directory("example", new()
    {
        SubnetIds = new[]
        {
            exampleC.Id,
            exampleD.Id,
        },
        WorkspaceType = "POOLS",
        WorkspaceDirectoryName = "example-directory",
        WorkspaceDirectoryDescription = "Example WorkSpaces Directory for Pools",
        UserIdentityType = "CUSTOMER_MANAGED",
    });

    var examplePool = new Aws.Workspaces.Pool("example", new()
    {
        Capacity = new Aws.Workspaces.Inputs.PoolCapacityArgs
        {
            DesiredUserSessions = 10,
        },
        BundleId = example.Apply(getBundleResult => getBundleResult.Id),
        PoolName = "example-pool",
        Description = "Example WorkSpaces Pool",
        DirectoryId = exampleDirectory.DirectoryId,
        RunningMode = "AUTO_STOP",
    });

});
package main

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

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		example, err := workspaces.GetBundle(ctx, &workspaces.GetBundleArgs{
			Owner: pulumi.StringRef("AMAZON"),
			Name:  pulumi.StringRef("Standard with Windows 10 (Server 2022 based) (WSP)"),
		}, nil)
		if err != nil {
			return err
		}
		exampleDirectory, err := workspaces.NewDirectory(ctx, "example", &workspaces.DirectoryArgs{
			SubnetIds: pulumi.StringArray{
				exampleC.Id,
				exampleD.Id,
			},
			WorkspaceType:                 pulumi.String("POOLS"),
			WorkspaceDirectoryName:        pulumi.String("example-directory"),
			WorkspaceDirectoryDescription: pulumi.String("Example WorkSpaces Directory for Pools"),
			UserIdentityType:              pulumi.String("CUSTOMER_MANAGED"),
		})
		if err != nil {
			return err
		}
		_, err = workspaces.NewPool(ctx, "example", &workspaces.PoolArgs{
			Capacity: &workspaces.PoolCapacityArgs{
				DesiredUserSessions: pulumi.Int(10),
			},
			BundleId:    pulumi.String(example.Id),
			PoolName:    pulumi.String("example-pool"),
			Description: pulumi.String("Example WorkSpaces Pool"),
			DirectoryId: exampleDirectory.DirectoryId,
			RunningMode: pulumi.String("AUTO_STOP"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    aws = {
      source = "pulumi/aws"
    }
  }
}

data "aws_workspaces_getbundle" "example" {
  owner = "AMAZON"
  name  = "Standard with Windows 10 (Server 2022 based) (WSP)"
}

resource "aws_workspaces_directory" "example" {
  subnet_ids                      = [exampleC.id, exampleD.id]
  workspace_type                  = "POOLS"
  workspace_directory_name        = "example-directory"
  workspace_directory_description = "Example WorkSpaces Directory for Pools"
  user_identity_type              = "CUSTOMER_MANAGED"
}
resource "aws_workspaces_pool" "example" {
  capacity = {
    desired_user_sessions = 10
  }
  bundle_id    = data.aws_workspaces_getbundle.example.id
  pool_name    = "example-pool"
  description  = "Example WorkSpaces Pool"
  directory_id = aws_workspaces_directory.example.directory_id
  running_mode = "AUTO_STOP"
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.workspaces.WorkspacesFunctions;
import com.pulumi.aws.workspaces.inputs.GetBundleArgs;
import com.pulumi.aws.workspaces.Directory;
import com.pulumi.aws.workspaces.DirectoryArgs;
import com.pulumi.aws.workspaces.Pool;
import com.pulumi.aws.workspaces.PoolArgs;
import com.pulumi.aws.workspaces.inputs.PoolCapacityArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 example = WorkspacesFunctions.getBundle(GetBundleArgs.builder()
            .owner("AMAZON")
            .name("Standard with Windows 10 (Server 2022 based) (WSP)")
            .build());

        var exampleDirectory = new Directory("exampleDirectory", DirectoryArgs.builder()
            .subnetIds(
                exampleC.id(),
                exampleD.id())
            .workspaceType("POOLS")
            .workspaceDirectoryName("example-directory")
            .workspaceDirectoryDescription("Example WorkSpaces Directory for Pools")
            .userIdentityType("CUSTOMER_MANAGED")
            .build());

        var examplePool = new Pool("examplePool", PoolArgs.builder()
            .capacity(PoolCapacityArgs.builder()
                .desiredUserSessions(10)
                .build())
            .bundleId(example.id())
            .poolName("example-pool")
            .description("Example WorkSpaces Pool")
            .directoryId(exampleDirectory.directoryId())
            .runningMode("AUTO_STOP")
            .build());

    }
}
resources:
  exampleDirectory:
    type: aws:workspaces:Directory
    name: example
    properties:
      subnetIds:
        - ${exampleC.id}
        - ${exampleD.id}
      workspaceType: POOLS
      workspaceDirectoryName: example-directory
      workspaceDirectoryDescription: Example WorkSpaces Directory for Pools
      userIdentityType: CUSTOMER_MANAGED
  examplePool:
    type: aws:workspaces:Pool
    name: example
    properties:
      capacity:
        desiredUserSessions: 10
      bundleId: ${example.id}
      poolName: example-pool
      description: Example WorkSpaces Pool
      directoryId: ${exampleDirectory.directoryId}
      runningMode: AUTO_STOP
variables:
  example:
    fn::invoke:
      function: aws:workspaces:getBundle
      arguments:
        owner: AMAZON
        name: Standard with Windows 10 (Server 2022 based) (WSP)

With Application Settings

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const example = new aws.workspaces.Pool("example", {
    capacity: {
        desiredUserSessions: 10,
    },
    bundleId: exampleAwsWorkspacesBundle.id,
    poolName: "example-pool",
    description: "Example WorkSpaces Pool with Application Settings",
    directoryId: exampleAwsWorkspacesDirectory.directoryId,
    runningMode: "AUTO_STOP",
    applicationSettings: [{
        status: "ENABLED",
        settingsGroup: "my-settings-group",
    }],
});
import pulumi
import pulumi_aws as aws

example = aws.workspaces.Pool("example",
    capacity={
        "desired_user_sessions": 10,
    },
    bundle_id=example_aws_workspaces_bundle["id"],
    pool_name="example-pool",
    description="Example WorkSpaces Pool with Application Settings",
    directory_id=example_aws_workspaces_directory["directoryId"],
    running_mode="AUTO_STOP",
    application_settings=[{
        "status": "ENABLED",
        "settings_group": "my-settings-group",
    }])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

return await Deployment.RunAsync(() =>
{
    var example = new Aws.Workspaces.Pool("example", new()
    {
        Capacity = new Aws.Workspaces.Inputs.PoolCapacityArgs
        {
            DesiredUserSessions = 10,
        },
        BundleId = exampleAwsWorkspacesBundle.Id,
        PoolName = "example-pool",
        Description = "Example WorkSpaces Pool with Application Settings",
        DirectoryId = exampleAwsWorkspacesDirectory.DirectoryId,
        RunningMode = "AUTO_STOP",
        ApplicationSettings = new[]
        {
            new Aws.Workspaces.Inputs.PoolApplicationSettingArgs
            {
                Status = "ENABLED",
                SettingsGroup = "my-settings-group",
            },
        },
    });

});
package main

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

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workspaces.NewPool(ctx, "example", &workspaces.PoolArgs{
			Capacity: &workspaces.PoolCapacityArgs{
				DesiredUserSessions: pulumi.Int(10),
			},
			BundleId:    pulumi.Any(exampleAwsWorkspacesBundle.Id),
			PoolName:    pulumi.String("example-pool"),
			Description: pulumi.String("Example WorkSpaces Pool with Application Settings"),
			DirectoryId: pulumi.Any(exampleAwsWorkspacesDirectory.DirectoryId),
			RunningMode: pulumi.String("AUTO_STOP"),
			ApplicationSettings: workspaces.PoolApplicationSettingArray{
				&workspaces.PoolApplicationSettingArgs{
					Status:        pulumi.String("ENABLED"),
					SettingsGroup: pulumi.String("my-settings-group"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    aws = {
      source = "pulumi/aws"
    }
  }
}

resource "aws_workspaces_pool" "example" {
  capacity = {
    desired_user_sessions = 10
  }
  bundle_id    = exampleAwsWorkspacesBundle.id
  pool_name    = "example-pool"
  description  = "Example WorkSpaces Pool with Application Settings"
  directory_id = exampleAwsWorkspacesDirectory.directoryId
  running_mode = "AUTO_STOP"
  application_settings {
    status         = "ENABLED"
    settings_group = "my-settings-group"
  }
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.workspaces.Pool;
import com.pulumi.aws.workspaces.PoolArgs;
import com.pulumi.aws.workspaces.inputs.PoolCapacityArgs;
import com.pulumi.aws.workspaces.inputs.PoolApplicationSettingArgs;
import java.util.ArrayList;
import java.util.Arrays;
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) {
        var example = new Pool("example", PoolArgs.builder()
            .capacity(PoolCapacityArgs.builder()
                .desiredUserSessions(10)
                .build())
            .bundleId(exampleAwsWorkspacesBundle.id())
            .poolName("example-pool")
            .description("Example WorkSpaces Pool with Application Settings")
            .directoryId(exampleAwsWorkspacesDirectory.directoryId())
            .runningMode("AUTO_STOP")
            .applicationSettings(PoolApplicationSettingArgs.builder()
                .status("ENABLED")
                .settingsGroup("my-settings-group")
                .build())
            .build());

    }
}
resources:
  example:
    type: aws:workspaces:Pool
    properties:
      capacity:
        desiredUserSessions: 10
      bundleId: ${exampleAwsWorkspacesBundle.id}
      poolName: example-pool
      description: Example WorkSpaces Pool with Application Settings
      directoryId: ${exampleAwsWorkspacesDirectory.directoryId}
      runningMode: AUTO_STOP
      applicationSettings:
        - status: ENABLED
          settingsGroup: my-settings-group

With Timeout Settings

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const example = new aws.workspaces.Pool("example", {
    capacity: {
        desiredUserSessions: 10,
    },
    bundleId: exampleAwsWorkspacesBundle.id,
    poolName: "example-pool",
    description: "Example WorkSpaces Pool with Timeout Settings",
    directoryId: exampleAwsWorkspacesDirectory.directoryId,
    runningMode: "AUTO_STOP",
    timeoutSettings: [{
        disconnectTimeoutInSeconds: 900,
        idleDisconnectTimeoutInSeconds: 900,
        maxUserDurationInSeconds: 14400,
    }],
});
import pulumi
import pulumi_aws as aws

example = aws.workspaces.Pool("example",
    capacity={
        "desired_user_sessions": 10,
    },
    bundle_id=example_aws_workspaces_bundle["id"],
    pool_name="example-pool",
    description="Example WorkSpaces Pool with Timeout Settings",
    directory_id=example_aws_workspaces_directory["directoryId"],
    running_mode="AUTO_STOP",
    timeout_settings=[{
        "disconnect_timeout_in_seconds": 900,
        "idle_disconnect_timeout_in_seconds": 900,
        "max_user_duration_in_seconds": 14400,
    }])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

return await Deployment.RunAsync(() =>
{
    var example = new Aws.Workspaces.Pool("example", new()
    {
        Capacity = new Aws.Workspaces.Inputs.PoolCapacityArgs
        {
            DesiredUserSessions = 10,
        },
        BundleId = exampleAwsWorkspacesBundle.Id,
        PoolName = "example-pool",
        Description = "Example WorkSpaces Pool with Timeout Settings",
        DirectoryId = exampleAwsWorkspacesDirectory.DirectoryId,
        RunningMode = "AUTO_STOP",
        TimeoutSettings = new[]
        {
            new Aws.Workspaces.Inputs.PoolTimeoutSettingArgs
            {
                DisconnectTimeoutInSeconds = 900,
                IdleDisconnectTimeoutInSeconds = 900,
                MaxUserDurationInSeconds = 14400,
            },
        },
    });

});
package main

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

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := workspaces.NewPool(ctx, "example", &workspaces.PoolArgs{
			Capacity: &workspaces.PoolCapacityArgs{
				DesiredUserSessions: pulumi.Int(10),
			},
			BundleId:    pulumi.Any(exampleAwsWorkspacesBundle.Id),
			PoolName:    pulumi.String("example-pool"),
			Description: pulumi.String("Example WorkSpaces Pool with Timeout Settings"),
			DirectoryId: pulumi.Any(exampleAwsWorkspacesDirectory.DirectoryId),
			RunningMode: pulumi.String("AUTO_STOP"),
			TimeoutSettings: workspaces.PoolTimeoutSettingArray{
				&workspaces.PoolTimeoutSettingArgs{
					DisconnectTimeoutInSeconds:     pulumi.Int(900),
					IdleDisconnectTimeoutInSeconds: pulumi.Int(900),
					MaxUserDurationInSeconds:       pulumi.Int(14400),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    aws = {
      source = "pulumi/aws"
    }
  }
}

resource "aws_workspaces_pool" "example" {
  capacity = {
    desired_user_sessions = 10
  }
  bundle_id    = exampleAwsWorkspacesBundle.id
  pool_name    = "example-pool"
  description  = "Example WorkSpaces Pool with Timeout Settings"
  directory_id = exampleAwsWorkspacesDirectory.directoryId
  running_mode = "AUTO_STOP"
  timeout_settings {
    disconnect_timeout_in_seconds      = 900
    idle_disconnect_timeout_in_seconds = 900
    max_user_duration_in_seconds       = 14400
  }
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.workspaces.Pool;
import com.pulumi.aws.workspaces.PoolArgs;
import com.pulumi.aws.workspaces.inputs.PoolCapacityArgs;
import com.pulumi.aws.workspaces.inputs.PoolTimeoutSettingArgs;
import java.util.ArrayList;
import java.util.Arrays;
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) {
        var example = new Pool("example", PoolArgs.builder()
            .capacity(PoolCapacityArgs.builder()
                .desiredUserSessions(10)
                .build())
            .bundleId(exampleAwsWorkspacesBundle.id())
            .poolName("example-pool")
            .description("Example WorkSpaces Pool with Timeout Settings")
            .directoryId(exampleAwsWorkspacesDirectory.directoryId())
            .runningMode("AUTO_STOP")
            .timeoutSettings(PoolTimeoutSettingArgs.builder()
                .disconnectTimeoutInSeconds(900)
                .idleDisconnectTimeoutInSeconds(900)
                .maxUserDurationInSeconds(14400)
                .build())
            .build());

    }
}
resources:
  example:
    type: aws:workspaces:Pool
    properties:
      capacity:
        desiredUserSessions: 10
      bundleId: ${exampleAwsWorkspacesBundle.id}
      poolName: example-pool
      description: Example WorkSpaces Pool with Timeout Settings
      directoryId: ${exampleAwsWorkspacesDirectory.directoryId}
      runningMode: AUTO_STOP
      timeoutSettings:
        - disconnectTimeoutInSeconds: 900
          idleDisconnectTimeoutInSeconds: 900
          maxUserDurationInSeconds: 14400

Import

Using pulumi import, import WorkSpaces Pool using the pool ID. For example:

$ pulumi import aws:workspaces/pool:Pool example wspool-12345678

Identity Schema

Required

  • poolId (String) WorkSpaces Pool identifier.

Optional

  • accountId (String) AWS Account where this resource is managed.
  • region (String) Region where this resource is managed.

Constructors

Pool(String name, {PoolArgs? args, CustomResourceOptions? options})
Creates a new Pool. name The Pulumi resource name. args Arguments used to configure this Pool. The set of arguments for Pool. options Resource options controlling this resource's behavior.
Pool.reference(String urn)
Creates a typed reference to an existing Pool resource.

Properties

applicationSettings ↔ Output<List<PoolApplicationSetting>>
Application settings configuration for the WorkSpaces Pool. See applicationSettings Block below.
latefinal
bundleId ↔ Output<String>
ID of the bundle for the WorkSpaces Pool.
latefinal
capacity ↔ Output<PoolCapacity?>
Capacity configuration for the WorkSpaces Pool. See capacity below.
latefinal
capacityStatuses ↔ Output<List<PoolCapacityStatus>>
Capacity status of the WorkSpaces Pool. See capacityStatus Block below.
latefinal
childResources Set<Resource>
finalinherited
completionSources Map<String, IOutputCompletionSource>
latefinalinherited
createdAt ↔ Output<String>
Date and time the WorkSpaces Pool was created.
latefinal
description ↔ Output<String>
Description of the WorkSpaces Pool.
latefinal
directoryId ↔ Output<String>
ID of the directory for the WorkSpaces Pool.
latefinal
hashCode int
The hash code for this object.
no setterinherited
id ↔ Output<String>
getter/setter pairinherited
isCustom bool
Returns whether this resource is provider-managed.
no setterinherited
isProtected bool
Returns whether this resource is protected from deletion.
no setterinherited
isRemote bool
Whether this resource is registered as remote.
no setterinherited
isResourceReference bool
Whether this instance represents a resource value returned over RPC.
finalinherited
poolArn ↔ Output<String>
ARN of the WorkSpaces Pool.
latefinal
poolId ↔ Output<String>
ID of the WorkSpaces Pool.
latefinal
poolName ↔ Output<String>
Name of the WorkSpaces Pool. This cannot be changed after creation.
latefinal
region ↔ Output<String>
Region where this resource will be managed. Defaults to the Region set in the provider configuration.
latefinal
resourceTransforms List<ResourceTransform>
Inherited/explicit async transforms.
no setterinherited
runningMode ↔ Output<String>
Running mode of the WorkSpaces Pool. Valid values are AUTO_STOP and ALWAYS_ON.
latefinal
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
s3BucketName ↔ Output<String>
S3 bucket where application settings are stored when applicationSettings is enabled.
latefinal
state ↔ Output<String>
Current state of the WorkSpaces Pool.
latefinal
tags ↔ Output<Map<String, String>?>
Map of tags assigned to the resource. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.
latefinal
tagsAll ↔ Output<Map<String, String>>
Map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.
latefinal
timeouts ↔ Output<PoolTimeouts?>
latefinal
timeoutSettings ↔ Output<List<PoolTimeoutSetting>>
Timeout settings configuration for the WorkSpaces Pool. See timeoutSettings Block below.
latefinal
transformations List<ResourceTransformation>
Inherited/explicit legacy transformations.
no setterinherited
urn ↔ Output<String>
latefinalinherited

Methods

failId(Object error) → void
Completes this resource ID with an error when registration fails.
inherited
failOutputs(Object error) → void
Completes all output properties with error.
inherited
failUrn(Object error) → void
Completes this resource URN with an error when registration fails.
inherited
getProvider(String moduleMember) → ProviderResource?
Returns provider for moduleMember's package, if configured.
inherited
getResourceName() String
Returns this resource's logical name.
inherited
getResourceType() String
Returns this resource's Pulumi type token.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
registerOutput<T>(String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output<T>
Registers a dynamic output property for this resource.
inherited
resolveId(String? value, {required bool isKnown}) → void
Resolves the provider-assigned ID for this resource.
inherited
resolveOutputs(Struct outputs) → void
Resolves all output properties from a monitor response payload.
inherited
resolveUrn(String value) → void
Resolves this resource's URN once assigned by the engine.
inherited
serializeProperties(Map<String, dynamic> properties) Future<Struct>
Serializes resource properties for RPC transmission.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

get(String name, Input<String> id, {PoolState? state, CustomResourceOptions? options}) Pool
Gets an existing Pool resource's state with the given name and id.