为用户提供对自定义图像的访问权限 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为用户提供对自定义图像的访问权限

本文档提供了相关 step-by-step 说明,让您的用户能够在其 JupyterLab 环境中访问自定义映像。您可以使用此页面上的信息为用户的工作流程创建自定义环境。该过程涉及利用:

  • Docker

  • AWS Command Line Interface

  • Amazon Elastic Container Registry

  • Amazon SageMaker AWS Management Console

按照此页面上的指南操作后,Amazon SageMaker 域上的 JupyterLab 用户将可以从其 Jupyter 空间访问自定义图像和环境,以增强其机器学习工作流程。

重要

本页假设您在本地计算机上Docker安装了 AWS Command Line Interface 和。

要让您的用户在其中成功运行他们的映像 JupyterLab,您必须执行以下操作:

让您的用户成功运行映像
  1. 创建 Dockerfile

  2. 从 Dockerfile 中生成镜像

  3. 将图片上传到 Amazon 弹性容器注册表

  4. 将图片附加到您的 Amazon SageMaker 域名

  5. 让您的用户从您的 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 模板创建亚马逊 SageMaker 配送映像:

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 弹性容器注册表存储库。

步骤 3:将镜像推送到 Amazon 弹性容器注册表存储库

生成映像后,使用以下命令登录您的 Amazon ECR 存储库:

aws ecr get-login-password --region AWS 区域 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.AWS 区域.amazonaws.com

登录后,使用以下命令推送你的 Dockerfile:

docker push 123456789012.dkr.ecr.AWS 区域.amazonaws.com/your-repository-name:tag

第 4 步:将图片附加到用户的 Amazon SageMaker 域名

推送图片后,您必须从您的 Amazon SageMaker 域名访问该图片。使用以下步骤将图像附加到 SageMaker 域中:

  1. 打开SageMaker 控制台

  2. 管理员配置下,选择

  3. 名列表中,选择一个域。

  4. 打开 “环境” 选项卡。

  5. 对于个人 Studio 应用程序的自定义图像,请选择附加图像

  6. 指定图像来源。

  7. 选择下一步

  8. 选择提交

现在,您的用户可以从他们的 JupyterLab 空间中选择您已附加到其域名的图片。