MotoJapan's Tech-Memo

技術めも

【AWS】初期導入のハマりポイント覚書(導入からJupterNotebookでリモート作業まで)

GWなのでAWSを使ってみたいと思ったので、
先輩と導入からJupterNotebookでのリモート作業までやってみました

今回はハマったところを覚書

作業の主な流れ

①アカウント登録
②EC2インスタンス作成
③クライアントからEC2インスタンスに接続
python環境構築(anaconda3インストール
⑤JupterNotebookリモート操作環境構築

基本的な作業手順は後述のリンクで確認が吉

①アカウント登録

特になし

流れに身を任せて「まずは無料ではじめる」をクリックして作業していきます
登録にはクレジットカードが必要なのでお忘れなく
f:id:motojapan:20170505134053p:plain

②EC2インスタンス作成

アカウントが登録できればコンソールという管理画面へのログインができます
この画面↓インスタンスは「仮想マシンの起動」から行う(※リージョンは適切なものを選択)
f:id:motojapan:20170505134437p:plain

リージョン選択を忘れずに!

「使用を開始する」をクリック。。。する前にリージョン選択(水色のところ)
リージョンによって使用料金はが変わります
f:id:motojapan:20170505135258p:plain

今回の構成は無料枠利用目的なので、
OS :AMI
instance type: t2.micro

あとは流れに従い、無事インスタンス生成完了!
「アクション」ボタンでインスタンスの「開始、停止、再起動、削除」ができます
f:id:motojapan:20170505150008p:plain

③クライアントからEC2インスタンスに接続

今回はSSHで繋ぐ為、teratermから接続

接続先 : IPv4 パブリック IP (インスタンス画面の下部に記載 ※起動毎に変わるので注意)
EC2のデフォルトユーザ名 : ec2-user
EC2のデフォルトパスワード : (なし)
②のインスタンス生成時に生成したprivate keyを指定(xxx.pem)
f:id:motojapan:20170505150235p:plain

python環境構築(anaconda3インストール

AMIはどうやらpython2系が標準装備なので普段使っている3系に合わせたいと思います
日頃はanacondaを使用するのでそれを入れます

git,emacs,gcc もろもろを入れる

$ sudo yum -y install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel

pyenvをインストール

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

編集

$ emacs ~/.bashrc

次を書き込み

export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi

適用

$ source ~/.bashrc

anaconda インストール

$ pyenv install anaconda 3-2.3.0


pyenvでpythonがデフォルトで指しているsystemからanaconda 3-2.3.0へ変更

$ pyenv global anaconda 3-2.3.0
$ pyenv global
system

変更されてないだと。。。

pyenvで環境が切り替えらえない場合

いろいろ調べましたが、結論が見つからず結局再起動で解決でした。。。

$ sudo reboot
$ pyenv global anaconda 3-2.3.0
$ pyenv global
anaconda 3-2.3.0

⑤JupterNotebookリモート操作環境構築

実用編です
先輩からの提案でJupyterNotebookリモート環境を構築してみました

つまり、
「手元のクライアントPCからAWS上のEC2インスタンス機械学習とかできてみんなハッピー!」
というストーリーです

参考資料はこちら
apt-get環境ありが基本になっているので、AMIでの構築手順を記載します
qiita.com


1.jupyterインストール
まず早速ですがjupyterが入らないです。。。

pip install jupyter

→ setuptoolsでerror

jupyterが入らない場合

これはcondaの更新が必要でした

conda update setuptools
pip install jupyter

無事インストール

2.notebookをインストール

git clone https://github.com/jupyter/notebook.git
cd notebook
pip install --pre -e .
jupyter notebook

3.ipython設定
ipythonはanacondaのサブセットとして入っているので改めて入れなくてOK

SHA1キーを取得するため次を実行

$ ipython
from notebook.auth import passwd
passwd()

ここで2回Enterすると、SHA1キー(xxxxxxxxxxxxx)が得られます。(メモ)


コンソールから次を一旦実行

$ jupyter notebook

.jupyterフォルダが生成されいます。

設定ファイルを記載

~/.jupyter/jupyter_notebook_config.py
c = get_config()
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8080
c.NotebookApp.password = u'sha1:xxxxxxxxxxxxx'

jupyter notebookサーバー起動

$ jupyter notebook &

無事起動ですね!


ここからクライアントPCでの作業

クライアントPCのブラウザから次を実行

http://<パブリック IP>:8080

無事、、、はいれません!

クライアントから接続できない場合

これはEC2の設定問題でした
確かにポートを開ける必要があるので次の設定が必要です

1.EC2のインスタンス画面⇒対象のインスタンスのセキュリティグループを選択
2.編集⇒カスタムTCPルールのポート範囲/送信元を設定(8080 -8084/カスタム)


無事接続完了!
f:id:motojapan:20170505145804p:plain