2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS上のubuntu20.04でjupyter-notebookを使ってみた

Last updated at Posted at 2021-02-03

AWSの学習のために、かなりシンプルなEC2インスタンス(ubuntu20.04)を起動し、
そこでjupyter-notebookサーバーをたててpython3.6の使用を試みた。
AWS上の作業自体はかなりシンプルです。どちらかと言うと、jupyter-notebookの設定用の
記事になっていると思います。

環境

クライアント

OS: macOS
shhクライアント:openssh

AWS

OS:ubuntu:20.04
python3
jupyternotebook

#この記事で行うこと(目次)

1.Ubuntu AMIでEC2インスタンスの構築
・ AWSマネジメントコンソールへのログイン
・ VPCの作成
・ サブネットの作成
・ インターネットゲートウェイの作成・アタッチ
・ セキュリティグループの編集
・ EC2インスタンスの作成
・ 起動したサーバーへssh接続

2.python3のインストールとjupyter環境の構築
・ 各種インストール(python3、jupyter notebook)
・ jupyter notebookの設定
・ jupyter notebookを起動

3.インスタンスの削除
4.おわりに

#この記事で行わないこと

  • Anacondaのインストール
  • AWSアカウントの作成
  • ssl証明書の発行
  • gitを使用したコードの管理
  • GPU対応の機械学習環境構築
    など

#本編
ネットワークのざっくりとした構成要素は以下の通り。全て網羅していないので、参考程度にお願いします。

image.png

実際のところ、AWSマネジメントコンソール内のデフォルトのものを使用しても今回の
ネットワークの構築自体は可能ですが、勉強の意味も込めてあえて手を動かして構築する方法をとります。

#1. Ubuntu AMIでEC2インスタンスの構築
#・ AWSマネジメントコンソールへのログイン
ルートユーザではなく、IAMユーザーを作成してログインする。
代替テキスト

#・ VPCの作成
コンソール画面から、VPCと検索→左の一覧からVPCを選択→VPCを作成へ進むと設定画面
(下画像)に遷移。
VPCの名前や、VPCのIPv4アドレスの範囲を Classless Inter-Domain Routing (CIDR) ブロックの形式で指定。
あとはデフォルトでVPCの作成へ進む。
image.png
#・サブネットの作成
引き続き左の一覧からサブネットを作成を選択→設定画面(下画像)に遷移。
-サブネットを設置するVPC
-サブネット名
-アベイラビリティゾーン
-サブネット内のVPCのIPv4アドレスの範囲
を指定。そのほかはデフォルト。サブネットを作成へ進む。

代替テキスト

#・ インターネットゲートウェイの作成・アタッチ
同様に、左一覧のインターネットゲートウェイを選択→インターネットゲートウェイの作成を選択
→名前の指定→インターネットゲートウェイの作成へ進む。
画面右上のVPCへアタッチを選択→作成したVPCを選択

・ルートテーブルの設定
作成したVPCにデフォルトでルートテーブルが設定されているが、デフォルトではインターネットに向けたルートが設定されていないので、設定を行う。下画像のルートの編集へ進む。
代替テキスト

ルートの追加を選択し、送信先0.0.0.0/0ターゲットに作成したインターネットゲートウェイを指定して、ルートの保存
代替テキスト
#・ セキュリティグループの編集
作成したVPCにデフォルトでセキュリティグループが作成されているが、二つのインバウンドルール
・外部からssh接続を許可するルール
・サーバー内のjupyter-notebookサーバーに、外部から接続するためのルール
を追加する。
画面の下部のインバウンドルールを編集を選択
image.png
インバウンドルールとして、画面のように2つのルールを指定する。jupyter-notebookのport番号は8080とする。
(画像は8888になってますが、これ以降は8080で進めています。)
image.png

#・ EC2インスタンスの作成
コンソール画面からEC2と検索→左一覧からインスタンスを選択→インスタンスを起動を選択。
AMIは、無料枠のUbuntu Server 20.04 LTS (HVM), SSD Volume Typeを選択
インスタンスタイプは、無料枠のt2.micro

インスタンスの詳細の設定では、ネットワークサブネットを自分が作成したVPCとサブネットを指定する。
他はデフォルトを選択。
image.png
ステップ6までデフォルト値を使用。
ステップ6の「セキュリティグループの設定」では、「セキュリティグループの割り当て」で、既存のセキュリティグループを選択するにチェック。

ステップ7に進んで「起動」を選択。
キーペアの作成を求められるので、適当な名前をつけてダウンロードして、インスタンスの作成を行う。
image.png

#・ 起動したサーバーへssh接続
端末を起動して、起動したサーバーにssh接続を行う。
鍵の権限に問題あり(他の人にアクセス権限を与えないで)と言われるので、
chmod 400 [keyの名前].pem として所有者のみ読み取り可能にする。
ssh接続のコマンドは以下の通り。
ssh [-i 鍵のファイル] [ユーザー名]:[パブリックIPv4アドレス]
ubuntuのEMIを起動したら、デフォルトのユーザーネームは「ubuntu」。

macOS
ssh -i ~/Desktop/test-keypair-ubuntu.pem ubuntu@54.238.161.253

初めての接続時には、確認を求められるので、「yes」と答える。

#2. python3のインストールとjupyter環境の構築
ここからは、接続先のサーバー(Ubuntu20.04)の中での作業。

まずはアップデート。

Ubuntu20.04
sudo apt update

#・ 各種インストール(python3、jupyter notebook)

Ubuntu20.04
# Python3のインストール
$ sudo apt install python3-pip python3-pandas python3-sklearn

# Jupyter Notebookのインストール
$ sudo apt install jupyter-notebook

#・ jupyter notebookの設定
jupyter-notebookの設定ファイルの作成

Ubuntu20.04
$ jupyter-notebook --generate-config
Writing default config to: /home/ubuntu/.jupyter/jupyter_notebook_config.py

/home/ubuntu/.jupyter/に設定ファイルが作成された。
jupyter_notebook_config.pyを編集する前に、ログイン時のパスワードを設定するための
ハッシュ値を取得する。パスワードを2回入力してハッシュ値を取得。

Ubuntu20.04
$ python3 -c "import IPython;print(IPython.lib.passwd())"
Enter password:
Verify password:
sha1:2fc8faf488d0:575967cef992baf593e9cbeeed0e554147e2b88c

sha1:2fc8faf48...をコピーしておく。

jupyter-ntoebookの設定ファイルの編集

Ubuntu20.04
$ vi /home/ubuntu/.jupyter/jupyter_notebook_config.py

設定ファイルを編集していく。vimの操作方法はここでは省略する。
デフォルトでは全てコメントアウトしてあるので該当箇所を探しながら設定を変更。

jupyter_notebook_config.py
# ipアドレスの設定
c.NotebookApp.ip = '0.0.0.0' 
# ブラウザを開くかどうか
c.NotebookApp.open_browser = False
# portの設定
c.NotebookApp.port = 8080
# さっきコピーしたハッシュ値をペースト
c.NotebookApp.token = u'sha1:2fc8faf488d0:575967cef992baf593e9cbeeed0e554147e2b88c'

#・ jupyter notebookを起動

Ubuntu20.04
$ jupyter-notebook

ブラウザのアドレスバーに[インスタンスのパブリックIPv4アドレス]:[ポート番号(8080)]などと入力。
ログイン画面が開くので設定したパスワードを入力

設定ファイルを編集しなくても、jupyter-notebookの起動時にオプションを設定してログイン可能。
jupyter-notebook --ip=0.0.0.0 --port=8080 --no-browser
tokenはjupyterサーバー起動時に出力される。

スクリーンショット 2021-02-03 0.35.18.png

ホームディレクトリの一覧が表示されれば完了。
numpyやpandas、その他機械学習ライブラリなど、必要に応じてインストールして終了。

#3. インスタンスの削除
今回は無料枠のみで構築しましたが、大掛かりなネットワークを作成した際は、放置しておくと
高額な料金が発生しかねないので、インスタンスの削除または停止をする。
#4. おわりに
今後はより複雑な構造のネットワークを構築や、GPUを使用した機械学習環境の構築
に挑戦したいです。

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?