ユーザーにカスタムイメージへのアクセスを許可する - 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 イメージを作成します。

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 リソースを作成するためのアクセス許可を付与する Amazon SageMaker 向けの AWS マネージドポリシー には、これらのリソースの作成中にイメージを一覧表示するためのアクセス許可が既に含まれています。

イメージをプッシュしたら、Amazon SageMaker ドメインからそのイメージにアクセスする必要があります。SageMaker ドメインにイメージをアタッチするには、次の手順に従います。

  1. [SageMaker コンソール] を開きます。

  2. [管理設定] で、[ドメイン] を選択します。

  3. [ドメイン] リストで、ドメインを選択します。

  4. [環境] タブを開きます。

  5. [パーソナル Studio アプリ用のカスタムイメージ][イメージをアタッチ] を選択します。

  6. イメージソースを指定します。

  7. [Next] を選択します。

  8. [送信] を選択します。

これで、ユーザーは JupyterLab のスペースからドメインにアタッチしたイメージを選択できるようになりました。