Workspaces



Access your desktop anywhere, anytime, from any device

Workspaces

Amazon WorkSpaces is a managed, secure Desktop-as-a-Service (DaaS) solution. You can use Amazon WorkSpaces to provision either Windows or Linux desktops in just a few minutes and quickly scale to provide thousands of desktops to workers across the globe. You can pay either monthly or hourly, just for the WorkSpaces you launch, which helps you save money when compared to traditional desktops and on-premises VDI solutions. Amazon WorkSpaces helps you eliminate the complexity in managing hardware inventory, OS versions and patches, and Virtual Desktop Infrastructure (VDI), which helps simplify your desktop delivery strategy. With Amazon WorkSpaces, your users get a fast, responsive desktop of their choice that they can access anywhere, anytime, from any supported device.

First, some vocabulary: in the context of the workspace feature, a project is the whole directory tree making up your workspaces (often the repository itself). A workspace is a specific named package stored anywhere within the project. Finally, a worktree is the name given to packages that list their own child workspaces. A project contains one or more worktrees, which may themselves contain any number of. Amazon WorkSpaces App is used to connect to an Amazon WorkSpace – a cloud desktop that you can use for your day-to-day business tasks such as editing documents, accessing web applications, and sending/receiving company email. You need an existing Amazon WorkSpaces account to use this app. To learn more about Amazon WorkSpaces and setting up your own account, visit. Amazon WorkSpaces is a managed, secure Desktop-as-a-Service (DaaS) solution. You can use Amazon WorkSpaces to provision either Windows or Linux desktops in just a few minutes and quickly scale to provide thousands of desktops to workers across the globe. You can pay either monthly or hourly, just for the WorkSpaces you launch, which helps you save.

through July 31st, 2021 with the AWS Free Tier

Simplify Desktop Delivery

Amazon WorkSpaces helps you eliminate many administrative tasks associated with managing your desktop lifecycle including provisioning, deploying, maintaining, and recycling desktops. There is less hardware inventory to manage and no need for complex virtual desktop infrastructure (VDI) deployments that don’t scale.

Reduce Costs

Amazon WorkSpaces eliminates the need to over-buy desktop and laptop resources by providing on-demand access to cloud desktops that include a range of compute, memory, and storage resources to meet your users' performance needs.

Keep Your Data Secure

Amazon WorkSpaces is deployed within an Amazon Virtual Private Network (VPC), provide each user with access to persistent, encrypted storage volumes in the AWS Cloud, and integrate with AWS Key Management Service (KMS). No user data is stored on the local device. This helps improve the security of user data and reduces your overall risk surface area.

Centrally Manage and Scale Your Global Desktop Deployment

Amazon WorkSpaces is available in 13 AWS Regions and provides access to high performance cloud desktops wherever your teams get work done. You can manage a global deployment of many thousands of WorkSpaces from the AWS console. And you can rapidly provision and de-provision desktops as the needs of your workforce change.

Use cases

Provide secure cloud desktops for remote, mobile, and contract employees

The rapid growth of remote and mobile workers is placing pressure on IT to provide fast, easy access to corporate applications and data from the device of their choice. Amazon WorkSpaces helps mobile and remote employees access the applications users need by delivering a cloud desktop accessible anywhere with an internet connection using any supported device.

Enable bring your own device

To deliver on the promise of Bring Your Own Device (BYOD) initiatives, IT must ensure employees can easily and securely access their applications and data across a large and constantly changing number of devices. Amazon WorkSpaces lets you run a cloud desktop directly on a wide range of devices like PC, Mac, iPad, Kindle Fire, Android tablet, Chromebook, and web browsers like Firefox, and Chrome. This gives you the tools to deliver a secure, responsive desktop experience that will delight your users and help make your BYOD initiative a reality.

Workspaces

Rapidly provision and scale desktops for software test and development

Developers and test teams need access to a secure, high-performance WorkSpace for completing tasks without the expense and inventory that comes with a lot of over-provisioned physical hardware. You can provision Amazon WorkSpaces that includes all the tools your developers need to build applications quickly. Your source code is not stored on developers’ devices helping ensure the safety of your intellectual property.

Quickly provision persistent desktops for classroom and lab settings

Amazon WorkSpaces provides a full, persistent desktop that students can use throughout their education while Amazon AppStream 2.0 lets course instructors quickly deliver specific applications for the unique needs for their class. Used together, you can easily build the learning environment your students need and ensure students have what they need for your class from day one.

Rapid integration during mergers and acquisitions

Companies going through M&A activity must support quickly on-boarding or off-loading large numbers of employees with fast, easy, secure access to company applications and data. They must do so across a diverse set of devices without spending much money or going through lengthy complex integrations. With Amazon WorkSpaces, IT teams quickly can provision and decommission secure WorkSpaces to keep up with changing organizational structures.

Customer stories

The Amazon Client Engineering team manages and supports IT services within Amazon and is responsible for managing the company's devices. As Amazon brings on new subsidiaries, it saves money that would previously have been used for physical infrastructure.

“We save millions of dollars for every subsidiary we onboard, because Amazon WorkSpaces can be deployed in many different regions and the solution circumvents the need for physical logistics like shipping hardware and the buildout of network connections. Overall, Amazon WorkSpaces is expected to contribute to an annual savings of more than $17 million for Amazon across all use cases.”

– Andrew Blackard, Manager, Client Engineering, Amazon IT

GrubHub, Inc. is a billion dollar food-service online and mobile platform featuring the largest and most comprehensive network of restaurant partners in the US. As an essential business to support local restaurants, GrubHub leveraged Amazon WorkSpaces to ensure business continuity and support the safety of our employees by moving all departments to a Work From Home (WFH) model.

'Amazon WorkSpaces easily accommodated our real-time customer communication and contact channels allowing 100% of our workforce and new employees to be WFH, accelerating our BYOD (Bring Your Own Device) strategy. GrubHub now has the flexibility to control cost and scale this virtual desktop environment to meet the current needs and future needs of our customers, restaurant partners, and drivers for whatever comes next.'

- Justinian Fortenberry, Chief Information Security Officer

MAXIMUS partners with state, federal, and local governments to provide communities with critical health and human service programs. Csv to excel python downloadbackstage. MAXIMUS used Amazon WorkSpaces to replace their on-premises VDI infrastructure and accelerate their adoption to the cloud.

“MAXIMUS uses VDI for several different types of projects, including call centers and for remote users. MAXIMUS is currently going through a move to AWS for all IT services, so it was natural that we utilize WorkSpaces to replace our VDI infrastructure. We were having many issues with VDI backend server support, workstations, and many complaints from users about software configurations. With WorkSpaces, we were able to release ourselves from all of the backend maintenance and concentrate on the user experience.”

- Jason Winters, Principal Architect, MAXIMUS, IT.

Blog posts & articles

1

Get started with AWS

Begin building with step-by-step guides to help you launch your AWS project.
Get started with Amazon WorkSpaces
Have more questions?
Contact us
  • Overview
  • Configuring Workspaces

Overview

Workspaces allow Tasks to declare parts of the filesystem that need to be providedat runtime by TaskRuns. A TaskRun can make these parts of the filesystem availablein many ways: using a read-only ConfigMap or Secret, an existing PersistentVolumeClaimshared with other Tasks, create a PersistentVolumeClaim from a provided VolumeClaimTemplate, or simply an emptyDir that is discarded when the TaskRuncompletes.

Workspaces are similar to Volumes except that they allow a Task authorto defer to users and their TaskRuns Tuesdays with morriemr. beckers classroom. when deciding which class of storage to use.

Workspaces can serve the following purposes:

  • Storage of inputs and/or outputs
  • Sharing data among Tasks
  • A mount point for credentials held in Secrets
  • A mount point for configurations held in ConfigMaps
  • A mount point for common tools shared by an organization
  • A cache of build artifacts that speed up jobs

Workspaces in Tasks and TaskRuns

Tasks specify where a Workspace resides on disk for its Steps. Atruntime, a TaskRun provides the specific details of the Volume that ismounted into that Workspace.

This separation of concerns allows for a lot of flexibility. For example, in isolation,a single TaskRun might simply provide an emptyDir volume that mounts quicklyand disappears at the end of the run. In a more complex system, however, a TaskRunmight use a PersistentVolumeClaim which is pre-populated withdata for the Task to process. In both scenarios the Task'sWorkspace declaration remains the same and only the runtimeinformation in the TaskRun changes.

Tasks can also share Workspaces with their Sidecars, though there’s a little moreconfiguration involved to add the required volumeMount. This allows for along-running process in a Sidecar to share data with the executing Steps of a Task.

Workspaces in Pipelines and PipelineRuns

A Pipeline can use Workspaces to show how storage will be shared throughits Tasks. For example, Task A might clone a source repository onto a Workspaceand Task B might compile the code that it finds in that Workspace. It’sthe Pipeline's job to ensure that the Workspace these two Tasks use is thesame, and more importantly, that the order in which they access the Workspace iscorrect.

PipelineRuns perform mostly the same duties as TaskRuns - they provide thespecific Volume information to use for the Workspaces used by each Pipeline.PipelineRuns have the added responsibility of ensuring that whatever Volume type theyprovide can be safely and correctly shared across multiple Tasks.

Optional Workspaces

Both Tasks and Pipelines can declare a Workspace “optional”. When an optional Workspaceis declared the TaskRun or PipelineRun may omit a Workspace Binding for that Workspace.The Task or Pipeline behaviour may change when the Binding is omitted. This feature hasmany uses:

  • A Task may optionally accept credentials to run authenticated commands.
  • A Pipeline may accept optional configuration that changes the linting or compilationparameters used.
  • An optional build cache may be provided to speed up compile times.

Configuring Workspaces

This section describes how to configure one or more Workspaces in a TaskRun.

Using Workspaces in Tasks

To configure one or more Workspaces in a Task, add a workspaces list with each entry using the following fields:

  • name - (required) A unique string identifier that can be used to refer to the workspace
  • description - An informative string describing the purpose of the Workspace
  • readOnly - A boolean declaring whether the Task will write to the Workspace. Defaults to false.
  • optional - A boolean indicating whether a TaskRun can omit the Workspace. Defaults to false.
  • mountPath - A path to a location on disk where the workspace will be available to Steps. If amountPath is not provided the workspace will be placed by default at /workspace/<name> where <name>is the workspace’s unique name.

Note the following:

  • A Task definition can include as many Workspaces as it needs. It is recommended that Tasks useat most one writeableWorkspace.
  • A readOnlyWorkspace will have its volume mounted as read-only. Attempting to writeto a readOnlyWorkspace will result in errors and failed TaskRuns.
  • mountPath can be either absolute or relative. Absolute paths start with / and relative pathsstart with the name of a directory. For example, a mountPath of '/foobar' is absolute and exposesthe Workspace at /foobar inside the Task'sSteps, but a mountPath of 'foobar' is relative andexposes the Workspace at /workspace/foobar.

Below is an example Task definition that includes a Workspace called messages to which the Task writes a message:

Sharing Workspaces with Sidecars

A Task'sSidecars are also able to access the Workspaces the Task defines but must have theirvolumeMount configuration set explicitly. Below is an example Task that shares a Workspace betweenits Steps and its Sidecar. In the example a Sidecar sleeps for a short amount of time and then writesa ready file which the Step is waiting for:

Note:Sidecarsmust explicitly opt-in to receiving the Workspace volume. Injected Sidecars fromnon-Tekton sources will not receive access to Workspaces.

Setting a default TaskRunWorkspace Binding

An organization may want to specify default Workspace configuration for TaskRuns. This allows users touse Tasks without having to know the specifics of Workspaces - they can simply rely on the platformto use the default configuration when a Workspace is missing. To support this Tekton allows a defaultWorkspace Binding to be specified for TaskRuns. When the TaskRun executes, any Workspaces thata Task requires but which are not provided by the TaskRun will be bound with the default configuration.

The configuration for the default Workspace Binding is added to the config-defaultsConfigMap, underthe default-task-run-workspace-binding key. For an example, see the Customizing basic executionparameters section of the install doc.

Note: the default configuration is used for any requiredWorkspace declared by a Task. OptionalWorkspaces are not populated with the default binding. This is because a Task's behaviour will typicallydiffer slightly when an optional Workspace is bound.

Using Workspace variables in Tasks

The following variables make information about Workspaces available to Tasks:

  • $(workspaces.<name>.path) - specifies the path to a Workspacewhere <name> is the name of the Workspace. This will be anempty string when a Workspace is declared optional and not providedby a TaskRun.
  • $(workspaces.<name>.bound) - either true or false, specifieswhether a workspace was bound. Always true if the workspace is required.
  • $(workspaces.<name>.claim) - specifies the name of the PersistentVolumeClaim used as a volume source for the Workspacewhere <name> is the name of the Workspace. If a volume source other than PersistentVolumeClaim is used, an empty string is returned.
  • $(workspaces.<name>.volume)- specifies the name of the Volumeprovided for a Workspace where <name> is the name of the Workspace.

Godaddy Workspace Email

Mapping Workspaces in Tasks to TaskRuns

A TaskRun that executes a Task containing a workspaces list must bindthose workspaces to actual physical Volumes. To do so, the TaskRun includesits own workspaces list. Each entry in the list contains the following fields:

  • name - (required) The name of the Workspace within the Task for which the Volume is being provided
  • subPath - An optional subdirectory on the Volume to store data for that Workspace

The entry must also include one VolumeSource. See Specifying VolumeSources in Workspaces for more information.

Caution:- The Workspaces declared in a Task must be available when executing the associated TaskRun. Otherwise, the TaskRun will fail.

Examples of TaskRun definition using Workspaces

The following example illustrate how to specify Workspaces in your TaskRun definition,an emptyDiris provided for a Task’s workspace called myworkspace:

Download zimbra mail clientwindows free. For examples of using other types of volume sources, see Specifying VolumeSources in Workspaces.For a more in-depth example, see Workspaces in a TaskRun.

Using Workspaces in Pipelines

While individual Tasks declare the Workspaces they need to run, the Pipeline decideswhich Workspaces are shared among its Tasks. To declare shared Workspaces in a Pipeline,you must add the following information to your Pipeline definition:

  • A list of Workspaces that your PipelineRuns will be providing. Use the workspaces field tospecify the target Workspaces in your Pipeline definition as shown below. Each entry in thelist must have a unique name.
  • A mapping of Workspace names between the Pipeline and the Task definitions.

The example below defines a Pipeline with a Workspace named pipeline-ws1. ThisWorkspace is bound in two Tasks - first as the output workspace declared by the gen-codeTask, then as the src workspace declared by the commitTask. If the Workspaceprovided by the PipelineRun is a PersistentVolumeClaim then these two Tasks can sharedata within that Workspace.

Include a subPath in the Workspace Binding to mount different parts of the same volume for different Tasks. See a full example of this kind of Pipeline which writes data to two adjacent directories on the same Volume.

The subPath specified in a Pipeline will be appended to any subPath specified as part of the PipelineRun workspace declaration. So a PipelineRun declaring a Workspace with subPath of /foo for a Pipeline who binds it to a Task with subPath of /bar will end up mounting the Volume’s /foo/bar directory.

Specifying Workspace order in a Pipeline and Affinity Assistants

Workspaces

Sharing a Workspace between Tasks requires you to define the order in which those Taskswrite to or read from that Workspace. Use the runAfter field in your Pipeline definitionto define when a Task should be executed. For more information, see the runAfter documentation.

When a PersistentVolumeClaim is used as volume source for a Workspace in a PipelineRun,an Affinity Assistant will be created. The Affinity Assistant acts as a placeholder for TaskRun podssharing the same Workspace. All TaskRun pods within the PipelineRun that share the Workspacewill be scheduled to the same Node as the Affinity Assistant pod. This means that Affinity Assistant is incompatiblewith e.g. other affinity rules configured for the TaskRun pods. If the PipelineRun has a customPodTemplate configured, the NodeSelector and Tolerations fieldswill also be set on the Affinity Assistant pod. The Affinity Assistantis deleted when the PipelineRun is completed. The Affinity Assistant can be disabled by setting thedisable-affinity-assistant feature gate to true.

Note: Affinity Assistant use Inter-pod affinity and anti-affinitythat require substantial amount of processing which can slow down scheduling in large clusterssignificantly. We do not recommend using them in clusters larger than several hundred nodes

Note: Pod anti-affinity requires nodes to be consistently labelled, in other words everynode in the cluster must have an appropriate label matching topologyKey. If some or all nodesare missing the specified topologyKey label, it can lead to unintended behavior.

Specifying Workspaces in PipelineRuns

For a PipelineRun to execute a Pipeline that includes one or more Workspaces, it needs tobind the Workspace names to volumes using its own workspaces field. Each entry inthis list must correspond to a Workspace declaration in the Pipeline. Each entry in theworkspaces list must specify the following:

  • name - (required) the name of the Workspace specified in the Pipeline definition for which a volume is being provided.
  • subPath - (optional) a directory on the volume that will store that Workspace's data. This directory must exist at thetime the TaskRun executes, otherwise the execution will fail.

The entry must also include one VolumeSource. See Using VolumeSources with Workspaces for more information.

Note: If the Workspaces specified by a Pipeline are not provided at runtime by a PipelineRun, that PipelineRun will fail.

Example PipelineRun definition using Workspaces

In the example below, a volumeClaimTemplate is provided for how a PersistentVolumeClaim should be created for a workspace namedmyworkspace declared in a Pipeline. When using volumeClaimTemplate a new PersistentVolumeClaim is created foreach PipelineRun and it allows the user to specify e.g. size and StorageClass for the volume.

For examples of using other types of volume sources, see Specifying VolumeSources in Workspaces.For a more in-depth example, see the Workspaces in PipelineRun YAML sample.

Specifying VolumeSources in Workspaces

You can only use a single type of VolumeSource per Workspace entry. The configurationoptions differ for each type. Workspaces support the following fields:

Using PersistentVolumeClaims as VolumeSource

PersistentVolumeClaim volumes are a good choice for sharing data among Tasks within a Pipeline.Beware that the access modeconfigured for the PersistentVolumeClaim effects how you can use the volume for parallel Tasks in a Pipeline. SeeSpecifying workspace order in a Pipeline and Affinity Assistants for more information about this.There are two ways of using PersistentVolumeClaims as a VolumeSource.

volumeClaimTemplate

The volumeClaimTemplate is a template of a PersistentVolumeClaim volume,created for each PipelineRun or TaskRun. When the volume is created from a template in a PipelineRun or TaskRunit will be deleted when the PipelineRun or TaskRun is deleted.

persistentVolumeClaim

The persistentVolumeClaim field references an existingpersistentVolumeClaim volume. The example exposes only the subdirectory my-subdir from that PersistentVolumeClaim

Using other types of VolumeSources

emptyDir

The emptyDir field references an emptyDir volume which holdsa temporary directory that only lives as long as the TaskRun that invokes it. emptyDir volumes are not suitable for sharing data among Tasks within a Pipeline.However, they work well for single TaskRuns where the data stored in the emptyDir needs to be shared among the Steps of the Task and discarded after execution.

configMap

The configMap field references a configMap volume.Using a configMap as a Workspace has the following limitations:

  • configMap volume sources are always mounted as read-only. Steps cannot write to them and will error out if they try.
  • The configMap you want to use as a Workspace must exist prior to submitting the TaskRun.
  • configMaps are size-limited to 1MB.
secret

Workspaces Client

The secret field references a secret volume.Using a secret volume has the following limitations:

  • secret volume sources are always mounted as read-only. Steps cannot write to them and will error out if they try.
  • The secret you want to use as a Workspace must exist prior to submitting the TaskRun.
  • secret are size-limited to 1MB.

If you need support for a VolumeSource type not listed above, open an issue ora pull request.

Using Persistent Volumes within a PipelineRun

When using a workspace with a PersistentVolumeClaim as VolumeSource,a Kubernetes Persistent Volumes is used within the PipelineRun.There are some details that are good to know when using Persistent Volumes within a PipelineRun.

Storage Class

PersistentVolumeClaims specify a Storage Class for the underlying Persistent Volume. Storage Classes have specificcharacteristics. If a StorageClassName is not specified for your PersistentVolumeClaim, the cluster defined defaultStorage Class is used. For regional clusters - clusters that typically consist of Nodes located in multiple AvailabilityZones - it is important to know whether your Storage Class is available to all Nodes. Default Storage Classes are typicallyonly available to Nodes within one Availability Zone. There is usually an option to use a regional Storage Class,but they have trade-offs, e.g. you need to pay for multiple volumes since they are replicated and your volume may havesubstantially higher latency.

When using a workspace backed by a PersistentVolumeClaim (typically only available within a Data Center) and the TaskRunpods can be scheduled to any Availability Zone in a regional cluster, some techniques must be used to avoid deadlock in the Pipeline.

Tekton provides an Affinity Assistant that schedules all TaskRun Pods sharing a PersistentVolumeClaim to the sameNode. This avoids deadlocks that can happen when two Pods requiring the same Volume are scheduled to different Availability Zones.A volume typically only lives within a single Availability Zone.

Access Modes

Workspaces Aws

A PersistentVolumeClaim specifies an Access Mode.Available Access Modes are ReadWriteOnce, ReadWriteMany and ReadOnlyMany. What Access Mode you can use depend onthe storage solution that you are using.

  • ReadWriteOnce is the most commonly available Access Mode. A volume with this Access Mode can only be mounted on oneNode at a time. This can be problematic for a Pipeline that has parallel Tasks that access the volume concurrently.The Affinity Assistant helps with this problem by scheduling all Tasks that use the same PersistentVolumeClaim tothe same Node.

  • ReadOnlyMany is read-only and is less common in a CI/CD-pipeline. These volumes often need to be “prepared” with datain some way before use. Dynamically provided volumes can usually not be used in read-only mode.

  • ReadWriteMany is the least commonly available Access Mode. If you use this access mode and these volumes are availableto all Nodes within your cluster, you may want to disable the Affinity Assistant.

More examples

Workspaces For Rent

See the following in-depth examples of configuring Workspaces:

Workspaces Google

Feedback

Was this page helpful?

Thanks! Tell us how we can further improve.

Sorry about that. Tell us how we can further improve.

Www.workspacesolutions.com