AWS Open Source Blog
Managing Computer Labs on Amazon AppStream 2.0 with Open Source Virtual Application Management
Amazon AppStream 2.0 offers a rich set of features to allow customers to stream non-persistent applications and desktops to end users. With AppStream 2.0, students can simply open a web browser to access the applications they need from anywhere at any time. This means that students do not need to be limited to specific computers on campus or in the classroom.
The COVID-19 pandemic required educational institutions to extend access to applications within their current physical computer labs to meet student needs. AppStream 2.0 allowed organizations to quickly pivot in response to the pandemic and offer services required for remote learning (e.g. Virtual Computer Labs). Scaling AppStream 2.0 to support students introduced the following challenges:
- Image management increases in complexity as the application catalog grows.
- IT teams are often resource constrained and are the central contact point for deploying AppStream 2.0 applications rather than providing a self-service portal to requesters.
- Integrating with existing identity management systems can be challenging and does not always provide a cohesive student experience.
Based on feedback from customers, our Envision Engineering team and Solution Architects developed AWS Virtual Application Management (VAM) as an an open source solution (Apache-2.0 licensed) to address the management and deployment of AppStream 2.0 images at scale. VAM is a companion application for AppStream 2.0 with additional capabilities for administrators to create, manage, and deploy images and fleets. These features include:
- Customizable application catalog
- Image deployment automation
- Session metrics dashboard
- Dynamic application catalog
- Integration with Chocolatey (Windows package manager)
- Native Learning Tools Interoperability (LTI) option for Learning Management System (LMS) integration
For more information and to download the source code, see AWS Labs – AWS Virtual Application Management GitHub repository.
At its core, VAM is a web application that sits on top of the AppStream 2.0 backend resources. Automation is provided through PowerShell with the ability for administrators to automatically deploy applications by configuring Chocolatey or PowerShell scripts in an application repository provided by the solution.
Administrators interact with VAM through a separate dashboard. From this dashboard administrators can select the applications they wish to incorporate as part of their image. Once the image is deployed, there are several automations that work behind the scenes to provision the resources and provide a completed image. With that image the administrator can then update their AppStream 2.0 fleets that are accessed by end users.
VAM is built on top of a serverless architecture and operates using an event- driven API framework. The solution is deployed via a continuous integration/ continuous deployment (CI/CD) environment that leverages an Amazon Simple Storage Service (Amazon S3) bucket as the source. This allows customers to easily update the solution and make changes iteratively.
The VAM solution front end is primarily served by Amazon CloudFront presenting the cached content, Amazon S3 for the static web assets and AWS Lambda@Edge for dynamic content. AWS WAF can optionally be deployed to provide additional protection of the web application. Authentication to the solution is managed by Amazon Cognito, which can be configured with a local user pool or your own SAML identity provider.
Many of the backend APIs are also orchestrated with serverless services such as Amazon API Gateway, AWS Lambda and AWS Step Functions. Amazon DynamoDB is the primary data store for image creation workflows and properties of created resources. By using serverless components, administrators do not need to maintain servers or perform operating system patching and maintenance, keeping costs low.
VAM has been designed as a tool for administrators to quickly and easily deploy new AppStream 2.0 Images. When you first log into the console you will be presented with the applications that have been imported into VAM.
Image Deployment and Management
When you navigate to the AppStream 2.0 Images page you will be presented with any images that have been created by VAM. Administrators will have the ability to view properties from the image. These include properties such as, the platform of the image (Operating System), date created, applications installed, etc.
By selecting the Create Image button, administrators will have the ability to deploy the image creation automation by filling out a form. Once the form is filled and the Create Image button is selected, an AppStream 2.0 Image builder is programmatically launched and the requested applications will be installed. After it has completed, the Image will be listed as available and it can used within your AppStream 2.0 Fleets.
Within the VAM console there is also a dashboard for viewing metrics of fleets that are managed by the VAM solution. This allows administrators to quickly gain insights into the average session length by fleet and the total number of daily sessions.
The AWS Virtual Application Management Solution is an open source companion application to AppStream 2.0 designed to help administrators programmatically create AppStream 2.0 images. VAM makes it easier to maintain, manage and update fleets and reduces administrative overhead.
VAM can be deployed in your personal AWS The VAM source code is available in our GitHub repository. Anyone in the community interested in this subject can contribute to it or reach out to us using GitHub issues.