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

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

本文档提供分步说明,帮助用户访问 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 中成功运行映像,您必须执行以下操作:

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

  2. 根据 Dockerfile 构建映像

  3. 将映像上传到 Amazon Elastic Container Registry

  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 模板创建 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-stdin 123456789012.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 域:

  1. 打开 SageMaker 管理控制台

  2. 管理员配置下,选择

  3. 列表中选择一个域。

  4. 打开环境选项卡。

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

  6. 指定映像源。

  7. 选择下一步

  8. 选择提交

现在,用户可以从 JupyterLab 空间选择附加到其域的映像。