Skip to main content
When you open SageMaker Studio from its URL you land directly in the Studio UI. Studio supports both dark and light themes (many accounts default to dark) and provides a richer set of hosted applications than a standard JupyterLab install. The left-hand navigation bar gives access to Running instances, data tools, deployments, projects, and at the top-left the Applications panel where you can launch different hosted apps. Available applications in SageMaker Studio
If you plan to move from interactive experimentation toward production code (refactoring notebooks into scripts, CI/CD, automated pipelines), the Code Editor (VS Code) provides a more developer-centric environment than JupyterLab.
If your account still shows Studio Classic, note that it is legacy and being deprecated — use the newer SageMaker Studio UI unless you have a specific dependency on Classic. Left navigation highlights
  • Running instances — lists your currently running Studio app instances (each started app is a separate instance you can start/stop).
  • HyperPod — for large, resilient clusters typically used for LLM training.
  • Data tools — Data Wrangler (graphical data preparation), Feature Store (shareable engineered features), and EMR integration for PySpark/distributed jobs.
  • Deployments — manage hosted endpoints for inference.
  • Projects — templates for CI/CD pipelines and reproducible ML workflows.
We’ll now walk through JupyterLab spaces: what a space is, how sharing and storage work, how instances and container images are managed, and how to view and control spaces from Studio and the AWS Console.

Creating a JupyterLab space

A “space” is a managed EC2 instance running a hosted application (for example JupyterLab) inside a container. To create one, open the Applications panel, choose JupyterLab, and follow the create-space dialog. You provide a name and a sharing mode: Private or Share with my domain. Private spaces are visible only to the creating user profile; shared spaces are visible to all user profiles in the same SageMaker Domain (access may still be controlled via IAM).
A dark-themed screenshot of Amazon SageMaker Studio's JupyterLab interface showing a "Create JupyterLab space" dialog with the name "jupyterlab-space-1" and the "Private" sharing option selected. The dialog shows "Cancel" and "Create space" buttons at the bottom.

Private vs. shared spaces

Private spaces provide each user a dedicated managed VM and a dedicated EBS volume that only that user can access. Shared spaces run a single managed VM that multiple users access and therefore share the same attached EBS volume. Key differences Historically, SageMaker used Amazon EFS for user home directories. Many current Studio configurations use EBS by default, but if you need EFS behavior you must explicitly mount EFS from within the instance. Expect different performance characteristics and potential configuration effort when using EFS.
EFS is considered legacy in some setups. In many current Studio configurations, shared and private spaces use EBS volumes by default. Be cautious when following older documentation that references EFS; it may apply to SageMaker Classic or previous Studio designs.
A blue notification popup with a note stating that private home directories on EFS for private and shared spaces are only available in SageMaker Classic mode and that SageMaker Classic support ends in 2025. The popup is shown over a dimmed SageMaker Studio workflow background.

Storage and visibility model

Conceptually, a SageMaker Domain contains user profiles and spaces:
  • User A creates a private JupyterLab space: only User A sees it.
  • User B cannot see User A’s private space.
  • A shared space marked as “shared with the domain” is visible to all user profiles in that Domain.
When creating a space you also choose an instance size (for example ml.t3.medium). The selected EC2 instance will have an attached EBS volume that stores the space’s files. If you require the older EFS behavior, mount EFS manually from within the instance; plan for different performance and permission considerations.
A dark-themed architecture diagram titled "Workflow: JupyterLab Spaces" showing an AWS SageMaker domain with two user profiles connected to private and shared JupyterLab spaces. It illustrates compute instances (ml.t3.medium) and storage components (EBS and EFS) with arrows showing Studio and mount relationships.

Instance lifecycle and container images

A JupyterLab space runs as a managed EC2 instance that executes a containerized JupyterLab server. Studio pulls the chosen container image from Amazon ECR in your account and runs it on the instance. When creating a space you select the image (for example “SageMaker Distribution 2.1”). Images typically include common ML libraries; verify the image contains the frameworks you need (TensorFlow, PyTorch, MXNet, etc.) or choose a framework-specific image. Stopping vs. deleting
  • Stopping a space shuts down the EC2 instance so you no longer pay for instance runtime charges, but attached EBS volumes continue to incur storage charges.
  • Any cloud resources you created from inside the space (SageMaker endpoints, EMR clusters, S3 buckets, etc.) remain active and continue to incur costs until you delete them.
A screenshot of a JupyterLab Spaces configuration panel for "jupyterlab-space-1," showing controls like "Run space," the instance type (ml.t3.medium), and the Image set to "SageMaker Distribution 2.1.0." A highlighted banner notes you can still use the SageMaker Python SDK in Jupyter notebooks for ML training, inference, and deployment.
Common pre-installed SDKs Container images usually include the SageMaker Python SDK and the AWS SDK for Python (boto3), so most notebooks can import them directly:
Stopping a running space shows a confirmation dialog to remind you that stopping reduces instance charges but does not delete other AWS resources you may have provisioned.
A slide titled "Workflow: JupyterLab Spaces" showing a modal dialog warning that you're about to stop a JupyterLab space (jupyterlab-space-1) and reminding you to delete additional AWS resources like SageMaker endpoints, EMR clusters, and S3 buckets, with Cancel and Stop space buttons.

Using the JupyterLab interface

When a JupyterLab space is running, an “Open JupyterLab” action launches the JupyterLab interface. From the Launcher you can create notebooks using available kernels (Python 3 is common). The left sidebar includes file browser, terminals, a Git extension for cloning/pushing repositories, and other typical JupyterLab panels. Shared spaces enable real-time collaboration (RTC). Visual indicators include an RTC marker on the Launcher and colored circular user avatars in the top-right of the JupyterLab window showing collaborators’ presence.
A slide titled "Workflow: JupyterLab Spaces" showing a JupyterLab window with a highlighted purple circular user avatar in the top-right toolbar. The caption explains that each user gets a unique circle identity.

Creating a shared space

To provision a shared space, select the “Share with my domain” option during creation. Shared spaces let multiple domain users work in the same runtime and access files on the shared EBS volume. Consider IAM policies and data governance when enabling shared spaces so users see only the resources they are expected to access.
A dark-themed UI screenshot titled "Workflow: JupyterLab Space" showing a "Create JupyterLab space" dialog. The dialog includes a name field prefilled with "jupyterlab-space-2", sharing options (Private or Share with my domain), and "Cancel"/"Create space" buttons.

Managing spaces from the Console and Studio

You can manage spaces either from the SageMaker Studio UI (Applications > JupyterLab > list of spaces) or from the AWS Management Console on your SageMaker Domain’s Space management tab. The domain page lists all spaces, their owners, type, status, and provides create/delete actions.
A screenshot of an Amazon SageMaker "Domain details" page showing the Space management tab. It lists two JupyterLab spaces (one shared, one private) with status and a Create button.
From Studio you see each space’s Type (Private / Shared), Status (Running / Stopped), and Actions (Open, Stop, Run). For a running shared space you can open JupyterLab directly.
A screenshot of a JupyterLab Space dashboard showing the space "jupyterlab-space-2" running with buttons to Stop or Open JupyterLab. It shows instance ml.t3.medium, SageMaker image selected, and a success message confirming the JupyterLab app was created.
Private spaces are visible only to the creating user profile; shared spaces are visible to all users in the domain (subject to IAM permissions). If you need strict tenant separation, create additional SageMaker Domains to partition users and resources.
A screenshot of a "Workflow: JupyterLab Spaces" dashboard (SageMaker Studio) showing the "Running instances" page. It lists a JupyterLab instance named "jupyterlab-space-1" with status "Running" and sharing set to "Private."

Summary

  • SageMaker Studio hosts multiple managed applications (JupyterLab, RStudio, Code Editor, Canvas, MLflow) that suit different workflow stages from exploration to productionization.
  • A space is a managed EC2 instance running the chosen application inside a container image pulled from ECR.
  • Studio spaces typically use attached EBS volumes; EFS was used historically and may still appear in legacy or explicitly configured setups.
  • Choose Private spaces for isolated single-user work and customization; choose Shared spaces for real-time collaboration and shared data.
  • Container images usually include the SageMaker Python SDK and boto3, so most notebooks can import these libraries out of the box.
If you plan to use RStudio, verify licensing and that the required image and instance sizes are available in your AWS Region before provisioning a space.
Links and references

Watch Video