

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ローカルモードの開始方法
<a name="studio-updated-local-get-started"></a>

以下のセクションでは、Amazon SageMaker Studio でローカルモードを開始するために必要な、次の手順の概要を示します。
+ 前提条件を満たす
+ `EnableDockerAccess` の設定
+ Docker のインストール

## 前提条件
<a name="studio-updated-local-prereq"></a>

Studio アプリケーションでローカルモードを使用するには、次の前提条件を満たす必要があります。
+ Amazon Elastic Container Registry リポジトリからイメージを取得するために、Amazon ECR イメージをホストするアカウントから、ユーザーの実行ロールにアクセス許可を付与する必要があります。ドメインの実行ロールで Amazon ECR へのアクセスを許可する必要もあります。
+ 次のコマンドを使用して、最新バージョンの Studio Python SDK を使用していることを確認します: 

  ```
  pip install -U sagemaker
  ```
+ ローカルモードと Docker 機能を使用するために、 AWS Command Line Interface (AWS CLI) を使用してドメインの `DockerSettings` に次のパラメータを設定します: 

  ```
  EnableDockerAccess : ENABLED
  ```
+ `EnableDockerAccess` を使用すると、ドメイン内のユーザーにローカルモードの使用を許可するかどうかも制御できます。デフォルトでは、Studio アプリケーションでのローカルモードと Docker 機能の使用は許可されていません。詳細については、「[`EnableDockerAccess` の設定](#studio-updated-local-enable)」を参照してください。
+ 「[Docker のインストール](#studio-updated-local-docker-installation)」の手順に従って、Studio アプリケーションに Docker CLI をインストールします。
+ [Rootless Docker 設定](#studio-updated-local-rootless) では、VPC に必要な Docker レジストリに適したエンドポイントとルーティングが設定されていることを確認します。

## `EnableDockerAccess` の設定
<a name="studio-updated-local-enable"></a>

以下のセクションでは、ドメインがパブリックインターネットにアクセスできるか、または `VPC-only` モードである場合に `EnableDockerAccess` を設定する方法を示します。

**注記**  
`EnableDockerAccess` の変更は、ドメインの更新後に作成されたアプリケーションにのみ適用されます。ドメインを更新した後で、新しいアプリケーションを作成している必要があります。

**パブリックインターネットアクセス**

次のコマンド例は、新しいドメインの作成時、または既存のドメインをパブリックインターネットアクセスで更新する場合に `EnableDockerAccess` を設定する方法を示しています。

```
# create new domain
aws --region region \
    sagemaker create-domain --domain-name domain-name \
    --vpc-id vpc-id \
    --subnet-ids subnet-ids \
    --auth-mode IAM \
    --default-user-settings "ExecutionRole=execution-role" \
    --domain-settings '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}' \
    --query DomainArn \
    --output text

# update domain
aws --region region \
    sagemaker update-domain --domain-id domain-id \
    --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'
```

**`VPC-only` モード**

ドメインを `VPC-only` モードで使用する場合、Docker イメージのプッシュリクエストとプルリクエストは、顧客が設定した VPC ではなく、サービスの VPC を使用してルーティングされます。そのため管理者は、ユーザーに Amazon ECR Docker のプルリクエストとプッシュリクエストの送信を許可する、信頼された AWS アカウント のリストを設定できます。

信頼された Docker のリストに含まれ AWS アカウント ていない に対してイメージのプッシュまたはプルリクエストが行われた場合 AWS アカウント、リクエストは失敗します。Amazon Elastic Container Registry (Amazon ECR) 外のDockerプルおよびプッシュオペレーションは、 `VPC-only` モードではサポートされていません。

デフォルトでは、以下 AWS アカウント が信頼されています。
+ SageMaker AI ドメインをホストするアカウント
+ 次の SageMaker イメージをホストする SageMaker AI アカウント:
  + DLC フレームワークイメージ
  + イメージを処理する Sklearn、Spark、XGBoost

追加の信頼された のリストを設定するには AWS アカウント、次のように`VpcOnlyTrustedAccounts`値を指定します。

```
aws --region region \
    sagemaker update-domain --domain-id domain-id \
    --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED", "VpcOnlyTrustedAccounts": ["account-list"]}}'
```

**注記**  
[Rootless Docker 設定](#studio-updated-local-rootless) を有効にすると、`VpcOnlyTrustedAccounts` は無視され、Docker トラフィックは VPC 構成を経由してルーティングされるため、VPC からアクセスできるすべてのレジストリへのアクセスが許可されます。

## Rootless Docker 設定
<a name="studio-updated-local-rootless"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DockerSettings.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DockerSettings.html) を有効にすると、Studio は [Rootless Docker デーモン](https://docs.docker.com/engine/security/rootless/)を使用してトラフィックを VPC 経由でルーティングします。これにより、セキュリティが強化され、追加の Docker レジストリへのアクセスが許可されます。`RootlessDocker` との主な違いは、次のとおりです。
+ Docker 操作でアクセスできるレジストリは、VPC 構成によって決まります。`VpcOnlyTrustedAccounts` は無視され、Docker トラフィックは VPC 構成を経由してルーティングされます。

Rootless Docker を使用するには、`DockerSettings` で `EnableDockerAccess` と `RootlessDocker` の両方を `ENABLED` に設定する必要があります。例えば、上記の [`EnableDockerAccess` の設定](#studio-updated-local-enable) の例では、ドメイン設定を変更して以下を含めることができます。

```
'{"DockerSettings": {"EnableDockerAccess": "ENABLED", "RootlessDocker": "ENABLED"}}'
```

## Docker のインストール
<a name="studio-updated-local-docker-installation"></a>

Docker を使用するには、Studio アプリケーションのターミナルから手動で Docker をインストールする必要があります。ドメインがインターネットにアクセスできるかどうかによって、Docker のインストール手順は異なります。

### インターネットアクセス
<a name="studio-updated-local-docker-installation-internet"></a>

ドメインがパブリックインターネットアクセスありで作成されている場合、または `VPC-only` モードで、インターネットアクセスが制限された状態で作成されている場合は、次の手順で Docker をインストールします。

1. (オプション) ドメインが `VPC-only` モードで、インターネットアクセスが制限された状態で作成されている場合は、Docker ウェブサイトにアクセス可能なパブリック NAT ゲートウェイを作成します。手順については、「[NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)」を参照してください。

1. Docker をインストールする Studio アプリケーションのターミナルに移動します。

1. アプリケーションのオペレーティングシステムを返すには、ターミナルから次のコマンドを実行します:

   ```
   cat /etc/os-release
   ```

1. Docker を、[Amazon SageMaker Local Mode 例のリポジトリ](https://github.com/aws-samples/amazon-sagemaker-local-mode/tree/main/sagemaker_studio_docker_cli_install)にある、アプリケーションのオペレーティングシステム別の手順に従ってインストールします。

   例えば、Docker をUbuntu にインストールする場合は、[https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker\$1studio\$1docker\$1cli\$1install/sagemaker-ubuntu-focal-docker-cli-install.sh](https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker_studio_docker_cli_install/sagemaker-ubuntu-focal-docker-cli-install.sh)のスクリプトに従います。以下の点を考慮してください。
   + 連鎖コマンドが失敗する場合は、コマンドを 1 つずつ実行します。
   + Studio は Docker バージョン `20.10.X.` および Docker Engine API バージョン `1.41` のみをサポートします。
   + 以下のパッケージは Studio で Docker CLI を使用する際に必要ないため、インストールをスキップできます。
     + `containerd.io`
     + `docker-ce`
     + `docker-buildx-plugin`
**注記**  
アプリケーションで Docker サービスを起動する必要はありません。Studio アプリケーションをホストするインスタンスが、デフォルトで Docker サービスを実行します。すべての Docker API コールは、自動的に Docker サービスを経由してルーティングされます。

1. Studio アプリケーション内で Docker とやり取りするために、公開された Docker ソケットを使用します。デフォルトでは、次のソケットが公開されます。

   ```
   unix:///docker/proxy.sock
   ```

   この公開されたソケットを、デフォルトの `USER` に対する次の Studio アプリケーション環境変数が使用します。

   ```
   DOCKER_HOST
   ```

### インターネットアクセスがない場合
<a name="studio-updated-local-docker-installation-no-internet"></a>

ドメインが `VPC-only` モードで、インターネットアクセスなしで作成されている場合は、次の手順で Docker をインストールします。

1. Docker をインストールする Studio アプリケーションのターミナルに移動します。

1. ターミナルから次のコマンドを実行して、アプリケーションのオペレーティングシステムを返します。

   ```
   cat /etc/os-release
   ```

1. Docker の `.deb` ファイルをローカルマシンにダウンロードします。Studio アプリケーションのオペレーティングシステムごとに必要なファイルをダウンロードする手順については、[「Install Docker Engine](https://docs.docker.com/engine/install/)」を参照してください。

   例えば、Ubuntu のパッケージから Docker をインストールするには、以下の点を考慮しながら、「[Install from a package](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package)」の手順 1～4 に従います。
   + パッケージから Docker をインストールします。他の方法を使用して Docker をインストールすると失敗します。
   + Docker バージョン `20.10.X` に対応する最新のパッケージをインストールします。
   + Studio で Docker CLI を使用するために、次のパッケージは必要ありません。インストールは不要です:
     + `containerd.io`
     + `docker-ce`
     + `docker-buildx-plugin`
**注記**  
アプリケーションで Docker サービスを起動する必要はありません。Studio アプリケーションをホストするインスタンスが、デフォルトで Docker サービスを実行します。すべての Docker API コール、自動的に Docker サービスを経由してルーティングされます。

1. `.deb` ファイルを Amazon EFS ファイルシステム、またはアプリケーションの Amazon EBS ファイルシステムにアップロードします。

1. Studio アプリケーションターミナルから `docker-ce-cli` および `docker-compose-plugin` `.deb` パッケージを手動でインストールします。詳細と手順については、Docker のドキュメントウェブサイトの「[Install from a package](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package)」の手順 5 を参照してください。

1. Studio アプリケーション内で Docker とやり取りするために、公開された Docker ソケットを使用します。デフォルトでは、次のソケットが公開されます。

   ```
   unix:///docker/proxy.sock
   ```

   この公開されたソケットを、デフォルトの `USER` に対する次の Studio アプリケーション環境変数が使用します。

   ```
   DOCKER_HOST
   ```