Set up an auto scaling virtual desktop infrastructure (VDI) by using NICE EnginFrame and NICE DCV Session Manager
Created by Dario La Porta and Salvatore Maccarone (AWS)
Summary
NICE DCV is a high-performance remote display protocol that helps you stream remote desktops and applications from any cloud or data center to any device, over varying network conditions. With NICE DCV and Amazon Elastic Compute Cloud (Amazon EC2), you can run graphics-intensive applications remotely on EC2 instances and stream their user interfaces to simpler, remote client machines. This eliminates the need for expensive dedicated workstations and the need to transfer large amounts of data between the cloud and client machines.
This pattern sets up a fully functional, auto scaling Linux and Windows virtual desktop infrastructure (VDI) that is accessible through a web-based user interface. The VDI solution provides research and development (R&D) users with an accessible and performant user interface for submitting graphics-intensive analysis requests and reviewing results remotely.
Prerequisites and limitations
Prerequisites
An active AWS account.
Administrator permissions and a set of access keys.
AWS Cloud Development Kit (AWS CDK) Toolkit, installed and configured. For more information, see Install the AWS CDK.
AWS Command Line Interface (AWS CLI), installed and configured for your AWS account. For more information, see Installing or updating the latest version of the AWS CLI.
Python, installed and configured. For more information, see Source releases
(Python website). One or more virtual private clouds (VPCs) available.
Two or more Elastic IP address available. For more information about the default limit, see Elastic IP address limit.
For the Linux EC2 instances, set up a Secure Shell (SSH) key pair. For more information, see Key pairs and Linux instances.
Product versions
AWS CDK version 2.26.0 or later
Python version 3.8 or later
Architecture
Target architecture
The following figure shows the different components of this VDI solution. The user interacts with NICE EnginFrame to launch Amazon EC2 instances according to the Amazon EC2 Auto Scaling groups for Windows and Linux NICE DCV instances.

Automation and scale
The code included with this pattern creates a custom VPC, public and private subnets, an internet gateway, NAT gateway, Application Load Balancer, security groups, and IAM policies. AWS CloudFormation is also used to create the fleet of Linux And Windows NICE DCV servers.
Tools
AWS services
AWS Cloud Development Kit (AWS CDK) is a software development framework that helps you define and provision AWS Cloud infrastructure in code.
AWS CloudFormation helps you set up AWS resources, provision them quickly and consistently, and manage them throughout their lifecycle across AWS accounts and Regions.
NICE DCV is a high-performance remote display protocol that helps you deliver remote desktops and application streaming from any cloud or data center to any device, over varying network conditions. In this pattern, it provides a bandwidth-efficient experience that streams high performance computing (HPC) 3D graphics remotely.
NICE DCV Session Manager helps you create and manage the lifecycle of NICE DCV sessions across a fleet of NICE DCV servers.
NICE EnginFrame is an advanced frontend web interface for accessing technical and scientific applications in the cloud.
Code repository
The code for this pattern is available in the Auto scaling VDI solution with NICE EnginFrame and NICE DCV Session Manager
Epics
Task | Description | Skills required |
---|---|---|
Clone the repository. | Clone the repository containing the code.
| Cloud architect |
Install the required AWS CDK libraries. | Install the AWS CDK libraries.
| Cloud architect |
Update the parameters. |
| Cloud architect |
Deploy the solution. | Run the following commands in sequence.
When the deployment is complete, the following two outputs are returned:
Make note of these values. You use them later in this pattern. | Cloud architect |
Deploy the fleet of Linux servers. |
| Cloud architect |
Deploy the fleet of Windows servers. |
| Cloud architect |
Task | Description | Skills required |
---|---|---|
Retrieve the EnginFrame administrator password. | The EnginFrame administration account is named efadmin, and the password is stored in AWS Secrets Manager as a secret. The ARN of the secret is generated dynamically and is visible in the output of the AWS CDK deployment.
| Cloud architect |
Access the EnginFrame portal. |
| Cloud architect |
Start a Windows session. |
| Cloud architect |
Start a Linux session. |
| Cloud architect |
Task | Description | Skills required |
---|---|---|
Delete the stacks. | In the AWS CloudFormation console, delete the stacks for the Windows and Linux server fleets. For more information, see Deleting a stack. | Cloud architect |
Delete the infrastructure. | Delete the deployed infrastructure by using the following AWS CDK command.
| Cloud architect |
Troubleshooting
Issue | Solution |
---|---|
The deployment didn’t complete because it was interrupted. | Follow the instructions in the Clean up epic and then repeat this pattern to deploy the environment again. |