

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

# JupyterHub の設定と管理
<a name="emr-jupyterhub-administer"></a>

JupyterHub と Docker コンテナ内で実行される関連のコンポーネント (`jupyterhub`) は Ubuntu オペレーティングシステムを使用します。コンテナ内で実行するコンポーネントを管理する方法はいくつかあります。

**警告**  
コンテナ内で行うカスタマイズはコンテナの再起動時に保持されない場合があります。カスタマイズをより再現しやすくするため、スクリプトを使用するかコンテナ設定の自動化を推奨します。

## コマンドラインを使用して管理する
<a name="emr-jupyterhub-administer-cli"></a>

SSH を使用してマスターノードに接続する場合は、Docker コマンドラインインターフェイス (CLI) を使用してコマンドを実行できます。その場合はコンテナを名前または ID で指定します (`jupyterhub`)。たとえば、`sudo docker exec jupyterhub command` はオペレーティングシステムまたはコンテナ内で実行されるアプリケーションが認識するコマンドを実行します。このメソッドを使用し、オペレーティングシステムにユーザーを追加して Docker コンテナ内に追加アプリケーションやライブラリをインストールすることができます。たとえば、デフォルトのコンテナイメージにはパッケージのインストールの Conda が含まれているので、マスターノードラインで次のコマンドを実行し、コンテナ内でアプリケーション、Keras をインストールすることができます。

```
sudo docker exec jupyterhub conda install keras
```

## ステップを送信して管理する
<a name="emr-jupyterhub-administer-steps"></a>

ステップはクラスターに作業を送信する方法です。クラスターを起動するときにステップを送信、または実行中のクラスターにステップを送信することができます。`command-runner.jar` を使用し、コマンドラインで実行するコマンドをステップとして送信できます。詳細については「*Amazon EMR 管理ガイド*」の「[CLI およびコンソールを使用した手順の作業](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html)」と「[Amazon EMR クラスターでのコマンドとスクリプトの実行](emr-commandrunner.md)」を参照してください。

たとえば、ローカルコンピュータで次の AWS CLI コマンドを使用して、前の例のマスターノードのコマンドラインから行ったのと同じ方法で Keras をインストールできます。

```
aws emr add-steps --cluster-id MyClusterID --steps Name="Command Runner",Jar="command-runner.jar",Args="/usr/bin/sudo","/usr/bin/docker","exec","jupyterhub","conda","install","keras"
```

一連のステップをスクリプトにし、そのスクリプトを Amazon S3 にアップロードすると、クラスターの作成時またはステップとしてスクリプトを追加する場合に `script-runner.jar` を使用してスクリプトを実行できます。詳細については、「[Amazon EMR クラスターでのコマンドとスクリプトの実行](emr-commandrunner.md)」を参照してください。例については、[例: Bash スクリプトで複数のユーザーを追加する](emr-jupyterhub-pam-users.md#emr-jupyterhub-script-multuser)を参照してください。

## REST API を使用して管理する
<a name="emr-jupyterhub-administer-rest"></a>

Jupyter、JupyterHub、JupyterHub の HTTP プロキシはリクエスト送信に使用できる REST API を提供します。JupyterHub にリクエストを送信するには、リクエストを含む API トークンを渡す必要があります。マスターノードのコマンドラインから `curl` コマンドを使用して、REST コマンドを実行できます。詳細については、以下のリソースを参照してください。
+ JupyterHub のドキュメント「[Using JupyterHub's REST API](http://jupyterhub.readthedocs.io/en/latest/reference/rest.html)」(API トークンを生成する方法も記載されています)
+ GitHub の [Jupyter Notebook Server API](https://github.com/jupyter/jupyter/wiki/Jupyter-Notebook-Server-API)
+ GitHub の [configurable-http-proxy](https://github.com/jupyterhub/configurable-http-proxy)

次の例では REST API を使用して JupyterHub がユーザーリストを取得する方法を示しています。コマンドは以前生成された admin トークンを渡し、JupyterHub にデフォルトのポート 9443 を使用して出力を [jq](https://stedolan.github.io/jq/) にパイピングすることで見やすくします。

```
curl -XGET -s -k https://$HOST:9443/hub/api/users \
-H "Authorization: token $admin_token" | jq .
```