Amazon SageMaker ノートブックインスタンスで実行されている Jupyter ノートブックのプロキシ設定を指定する方法を教えてください。

最終更新日: 2019 年 9 月 24 日

ライフサイクル設定を使って、新しい Jupyter ノートブック、または既存のノートブックのシェル環境に、プロキシ設定を構成しようと思っています。しかし、Jupyter がこの設定を採用しません。Amazon SageMaker ノートブックインスタンスで実行されている Jupyter ノートブックにプロキシ設定を指定し、Jupyter がこの設定を確実に使うようにする方法を教えてください。

簡単な説明

Jupyter ノートブックは、IPython ノートブックのサーバー環境でプロキシ設定を指定しておかないと、ライフサイクル設定からこのプロキシ設定を選ぶことはできません。

IPython ノートブックのサーバープロファイルを設定するには、Python スクリプトを作成し、それを 00-startup.py として /home/ec2-user/.ipython/profile_default/startup に保存します。Amazon SageMaker ノートブックインスタンスで Jupyter ノートブックを開くと、/home/ec2-user/.ipython/profile_default/startup パスが作成されます。Jupyter は辞書式順序でスクリプトを実行するので、スクリプトファイル名が "00" から始まる場合、Jupyter はそのスクリプトを最初に実行します。

注意: Jupyter ノートブックとシェルは別々のプロセスとして実行されます。つまり、00-startup.py を介して適用されたプロキシ設定はそのシェルには渡されません。また、Jupyter のターミナルを開いたときに作成されるデフォルトのシェルは非ログインシェルです。これはインタラクティブシェルとも呼ばれます。ライフサイクル設定を使ってプロキシ設定をシェル環境に適用するには、デフォルトのインタラクティブシェルを bash のようなログインシェルに変更し、プロキシ設定を /home/ec2-user/.profile に配置します。

解決方法

AWS ラボの GitHub リポジトリから proxy-for-jupyter ライフサイクル設定スクリプトをダウンロードし、実行します。

  • Jupyter ノートブックとシェルの両方のプロキシを設定するには、このスクリプトのすべての echo ステートメントを残します。
  • Jupyter ノートブックのみのプロキシを設定するには、このスクリプトの、最初の 4 つの echo ステートメントを削除します。
  • シェルのみのプロキシを設定するには、このスクリプトの、最後の 4 つの echo ステートメントを削除します。

スクリプトを実行すると、Jupyter ノートブックとターミナルにプロキシ設定が表示されます。プロキシが想定された通りに動作することを確認するには、以下の手順を実行します。

1.    Amazon SageMaker ノートブックインスタンスでターミナルウィンドウを開き、次のコマンドを実行してプロキシ接続をテストします。

wget google.com

次のような出力が表示されたら、プロキシはターミナルで正しく設定されています。

--2019-09-24 07:46:05--  http://google.com/
Resolving proxy.local (proxy.local)...

2.    Amazon SageMaker ノートブックインスタンスで Jupyter ノートブックを開き、次のコマンドを実行して環境変数を一覧表示します。

%env

出力例:

{...'GIT_PAGER': 'cat',
 'MPLBACKEND': 'module://ipykernel.pylab.backend_inline',
 'HTTP_PROXY': 'http://proxy.local:3128',
 'HTTPS_PROXY': 'http://proxy.local:3128'
 'NO_PROXY': 's3.amazonaws.com,127.0.0.1,localhost'}

注意: プロキシ URL など特定の値は、お使いの設定に一意のものとなります。

3.    ノートブックインスタンスでこのプロキシ設定が使用されていることを確認するよう要求します。

import requests
requests.get("http://google.com")

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合