A customised version of jupyterlab v1.2.17 (as of Oct 2020) with panes for git, experiment tracking and endpoints.
Notebooks and terminals (aka image terminals) are started in docker containers and accessed by a kernel gateway. These are known as apps. Several docker images are provided eg: Data Science, TensorFlow 2. By default the containers start on a ml.t3.medium. These are what you pay for.
There is one SageMaker domain per account. A domain can have multiple users, each with their own workspace and set of apps. Anyone with access to the account can open an user's workspace.
User workspaces are persisted to EFS. They are mounted at /home/sagemaker-user
List apps:
aws sagemaker list-apps
The system terminal is a command line for Studio itself. Studio runs on Amazon Linux with miniconda python 3.7.7 installed in /opt/conda/bin/python
Studio runs in a container with internet egress, which can be disabled when running Studio in a VPC.
Studio starts Jupyter lab with:
/opt/conda/bin/python /opt/conda/bin/jupyter-lab --ip 0.0.0.0 --port 8888 \
--NotebookApp.kernel_manager_class=sagemaker_nb2kg.managers.RemoteKernelManager \
--NotebookApp.kernel_spec_manager_class=sagemaker_nb2kg.managers.RemoteKernelSpecManager \
--NotebookApp.token= --NotebookApp.base_url=/jupyter/default --NotebookApp.allow_origin=* \
--debug --no-browser /home/sagemaker-user
This delegates kernel management to SageMaker in a fashion similar to Enterprise Gateway.
No access to the ec2 metadata endpoint.
Studio via a presigned domain url, eg: https://<id>.studio.<region>.sagemaker.aws/jupyter/default/lab
Ports (eg: TensorBoard etc.) on the notebook instance can be accessed via https://<id>.studio.<region>.sagemaker.aws/jupyter/default/proxy/<port>
.
- @jupyter-widgets/jupyterlab-manager
- @jupyterlab/celltags
- @jupyterlab/git
- @amzn/sagemaker-ui - The primary UI module that ties all the components together for AWS' SageMaker UI JupyterLab plugin
- @amzn/sagemaker-ui-theme-dark-jupyterlab
- nbdime-jupyterlab
- sagemaker-forked-extensions - SageMaker customized jupyterlab extensions for notebook, console and - terminal.
- sagemaker_notebooks_extension - A JupyterLab extension to enable SageMaker Notebooks functionality
- sagemaker_session_manager - A JupyterLab extension.
- sagemaker_sharing_extension - A JupyterLab extension to enable sharing of files within SageMaker
Located at /opt/conda/share/jupyter/lab/extensions
- aws_jupyter_proxy
- jupyter_server_proxy
- jupyterlab
- jupyterlab_git
- nbdime
- sagemaker_sharing
- sagemaker_nb2kg
- sagemaker_ui_proxy
Installed at /opt/conda/lib/python3.7/site-packages/:
- awscli
- aws-jupyter-proxy
- sagemaker-jupyter-server-tools
- sagemaker-nb2kg
- sagemaker-sharing
- sagemaker-ui-proxy (depends on jupyter-server-proxy and jupyter-telemetry): establishes URL handlers for /graphql(.*), /studio/eventlog, /studio/context
NPM:
- sagemaker-graphql-server
/var/log/studio/nb2kg.log