---
id: "aws-appstream"
type: "component"
kind: "virtual-desktop"
provider: "aws"
category: "compute"
docs: "https://docs.aws.amazon.com/appstream2/latest/developerguide/what-is-appstream.html"
url: "https://localhost:3000/catalogue/components/aws-appstream"
---

# Amazon WorkSpaces Applications

Fully managed application and desktop streaming from Always-On, On-Demand or Elastic fleets.

| | |
|---|---|
| Provider | [aws](https://localhost:3000/catalogue?provider=aws) |
| Kind | [Virtual desktop pool](https://localhost:3000/catalogue/kinds/virtual-desktop) |
| Category | Compute |
| Official docs | [https://docs.aws.amazon.com/appstream2/latest/developerguide/what-is-appstream.html](https://docs.aws.amazon.com/appstream2/latest/developerguide/what-is-appstream.html) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `agentAccess` | boolean | — | no | false | inherited |
| `autoScaling` | boolean | — | no | false | inherited |
| `fleetType` | enum | `always-on`, `on-demand`, `elastic` | no | — | inherited |
| `hostCount` | integer | — | no | — | inherited |
| `loadBalancing` | enum | `breadth-first`, `depth-first` | no | — | inherited |
| `managed` | boolean | — | no | false | **true** |
| `maxSessionsPerHost` | integer | — | no | — | **1** |
| `mfaRequired` | boolean | — | no | — | inherited |
| `multiSession` | boolean | — | no | false | inherited |
| `persistentProfiles` | boolean | — | no | — | **false** |
| `sessionMode` | enum | `pooled`, `personal` | no | — | **"pooled"** |

Bold values are the ones this component pins.

## Rules that apply · 1

### Stateful node without zone redundancy `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- all of these hold:
  - the node's `stateless` is false
  - the node sits inside exactly 1 availability-zone group
  - this does not hold:
    - the node sits inside at least one cell group

## Other products of the same kind · 19

- [Elastic Cloud Phone](https://localhost:3000/catalogue/components/alibaba-elastic-cloud-phone.md) `alibaba-elastic-cloud-phone` — alibabacloud
- [WUYING Workspace](https://localhost:3000/catalogue/components/alibaba-wuying-workspace.md) `alibaba-wuying-workspace` — alibabacloud
- [AWS Cloud9](https://localhost:3000/catalogue/components/aws-cloud9.md) `aws-cloud9` — aws
- [Amazon GameLift Streams](https://localhost:3000/catalogue/components/aws-gamelift-streams.md) `aws-gamelift-streams` — aws
- [Amazon WorkSpaces](https://localhost:3000/catalogue/components/aws-workspaces.md) `aws-workspaces` — aws
- [Amazon WorkSpaces Pools](https://localhost:3000/catalogue/components/aws-workspaces-pools.md) `aws-workspaces-pools` — aws
- [Amazon WorkSpaces Secure Browser](https://localhost:3000/catalogue/components/aws-workspaces-secure-browser.md) `aws-workspaces-secure-browser` — aws
- [Microsoft Dev Box](https://localhost:3000/catalogue/components/azure-dev-box.md) `azure-dev-box` — azure
- [Azure DevTest Labs](https://localhost:3000/catalogue/components/azure-devtest-labs.md) `azure-devtest-labs` — azure
- [Azure Lab Services](https://localhost:3000/catalogue/components/azure-lab-services.md) `azure-lab-services` — azure
- [Azure Virtual Desktop](https://localhost:3000/catalogue/components/azure-virtual-desktop.md) `azure-virtual-desktop` — azure
- [Cloudflare Browser Isolation](https://localhost:3000/catalogue/components/cloudflare-browser-isolation.md) `cloudflare-browser-isolation` — cloudflare
- [Citrix Virtual Apps and Desktops](https://localhost:3000/catalogue/components/citrix-virtual-apps.md) `citrix-virtual-apps` — default
- [Apache Guacamole](https://localhost:3000/catalogue/components/guacamole.md) `guacamole` — default
- [Kasm Workspaces](https://localhost:3000/catalogue/components/kasm.md) `kasm` — default
- [Omnissa Horizon](https://localhost:3000/catalogue/components/omnissa-horizon.md) `omnissa-horizon` — default
- [Generic virtual desktop pool](https://localhost:3000/catalogue/components/virtual-desktop.md) `virtual-desktop` — default
- [Cloud Workstations](https://localhost:3000/catalogue/components/google-cloud-workstations.md) `google-cloud-workstations` — gcp
- [OCI Secure Desktops](https://localhost:3000/catalogue/components/oci-secure-desktops.md) `oci-secure-desktops` — oci

## Use it in a design

```yaml
nodes:
  - { id: "aws-appstream", component: "aws-appstream" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Amazon WorkSpaces Applications (AppStream 2.0): fully managed application and desktop streaming
# ("What Is Amazon WorkSpaces Applications?"). A streaming instance is given to a single user and
# is terminated when the session completes, so sessions are pooled and non-persistent; fleets are
# Always-On, On-Demand or Elastic, and multi-session is Windows Always-On/On-Demand only
# ("Key Concepts", "WorkSpaces Applications Fleet Types").
schemaVersion: "1"
type: "component"
id: "aws-appstream"
kind: "virtual-desktop"
provider: "aws"
docs: "https://docs.aws.amazon.com/appstream2/latest/developerguide/what-is-appstream.html"
defaults:
  managed: true
  sessionMode: "pooled"
  maxSessionsPerHost: 1
  persistentProfiles: false
properties:
  fleetType:
    type: "enum"
    values: ["always-on", "on-demand", "elastic"]
  multiSession:
    type: "boolean"
    default: false
  autoScaling:
    type: "boolean"
    default: false
  agentAccess:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/components/aws-appstream
