为用户提供自定义映像的访问权限
本文档提供分步说明,帮助用户访问 JupyterLab 环境中的自定义映像。您可以使用本页上的信息为用户的工作流程创建自定义环境。这一过程包括利用:
-
Docker
-
AWS Command Line Interface
-
Amazon Elastic Container Registry
-
Amazon SageMaker AWS Management Console
按照本页面的指导进行操作后,Amazon SageMaker 域中的 JupyterLab 用户将可从其 Jupyter 空间访问自定义映像和环境,以增强其机器学习工作流程的能力。
重要
本页面假定您已在本地计算机上安装了 AWS Command Line Interface 和 Docker。
要让用户在 JupyterLab 中成功运行映像,您必须执行以下操作:
要让用户成功运行映像
-
创建 Dockerfile
-
根据 Dockerfile 构建映像
-
将映像上传到 Amazon Elastic Container Registry
-
将映像附加到 Amazon SageMaker 域
-
让用户从 JupyterLab 空间访问映像
步骤 1:创建 Dockerfile
创建 Dockerfile,定义创建在用户容器中运行应用程序所需环境的步骤。
重要
您的 Dockerfile 必须符合 Dockerfile 规范 中提供的规范。
使用以下 Dockerfile 模板创建 Amazon Linux 2 映像:
FROM public.ecr.aws/amazonlinux/amazonlinux:2 ARG NB_USER="sagemaker-user" ARG NB_UID="1000" ARG NB_GID="100" RUN yum install --assumeyes python3 shadow-utils && \ useradd --create-home --shell /bin/bash --gid "${NB_GID}" --uid ${NB_UID} ${NB_USER} && \ yum clean all && \ python3 -m pip install jupyterlab RUN python3 -m pip install --upgrade pip RUN python3 -m pip install --upgrade urllib3==1.26.6 USER ${NB_UID} CMD jupyter lab --ip 0.0.0.0 --port 8888 \ --ServerApp.base_url="/jupyterlab/default" \ --ServerApp.token='' \ --ServerApp.allow_origin='*'
使用以下 Dockerfile 模板创建 Amazon SageMaker Distribution Image:
FROM public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu ARG NB_USER="sagemaker-user" ARG NB_UID=1000 ARG NB_GID=100 ENV MAMBA_USER=$NB_USER USER root RUN apt-get update RUN micromamba install sagemaker-inference --freeze-installed --yes --channel conda-forge --name base USER $MAMBA_USER ENTRYPOINT ["jupyter-lab"] CMD ["--ServerApp.ip=0.0.0.0", "--ServerApp.port=8888", "--ServerApp.allow_origin=*", "--ServerApp.token=''", "--ServerApp.base_url=/jupyterlab/default"]
步骤 2:构建 Dockerfile
在与 Dockerfile 相同的目录下,使用以下命令构建映像:
docker build -t username/imagename:tag your-account-id.dkr.ecr.
AWS 区域
.amazonaws.com/your-repository-name
:tag
重要
您的映像必须按以下格式标记:123456789012
.dkr.ecr.your-region.amazonaws.com/your-repository-name
:tag
否则,您将无法将其推送到 Amazon Elastic Container Registry 存储库。
步骤 3:将映像推送到 Amazon Elastic Container Registry 存储库
创建映像后,使用以下命令登录 Amazon ECR 存储库:
aws ecr get-login-password --region
AWS 区域
| docker login --username AWS --password-stdin123456789012
.dkr.ecr.AWS 区域
.amazonaws.com
登录后,使用以下命令推送 Dockerfile:
docker push
123456789012
.dkr.ecr.AWS 区域
.amazonaws.com/your-repository-name
:tag
步骤 4:将映像附加到用户的 Amazon SageMaker 域
重要
允许 Studio 用户创建空间的自定义 IAM 策略还必须授予列出映像 (sagemaker: ListImage
) 的权限,以便查看自定义映像。要添加权限,请参阅《AWS Identity and Access Management 用户指南》中的添加或删除身份权限。
在创建 SageMaker 资源时,赋予创建 SageMaker 资源权限的 Amazon SageMaker 的 AWS 托管式策略 已包含列出映像的权限。
推送映像后,您必须从 Amazon SageMaker 域访问该映像。使用以下步骤将映像附加到 SageMaker 域:
-
打开 SageMaker 管理控制台
。 -
在管理员配置下,选择域。
-
从域列表中选择一个域。
-
打开环境选项卡。
-
对于专用 Studio 应用程序的自定义映像,请选择附加映像。
-
指定映像源。
-
选择下一步。
-
选择提交。
现在,用户可以从 JupyterLab 空间选择附加到其域的映像。