DataScience

AWS上でJupyter Notebook環境を構築

以前、データ分析用のIDEであるJupyter Notebook環境を構築してみました。

データ分析の環境構築にはJupyter Notebookが良い

この環境を、是非クラウド上でも導入したいなと思い、今回は代表的なクラウドコンピューティングサービスであるAWSに分析環境であるAnacondaを導入し、どの環境でもJupyter Notebookが使えるようにしたいと思います。(手順が中々面倒だったので、備忘録的に書いております。)

AWSに登録&サインイン

まずはAWSに登録&サインインしておきます。クレジットカードの登録が必要ですが、1年間は基本的なツールを無料で使えます。

https://aws.amazon.com/jp/

AWSでEC2インスタンス作成

続いて、AWS上のEC2にインスタンスを作成します。EC2はいわゆる仮想サーバーで、AWS上にコンピューティング機能を提供するツールですね。AWSコンソールにアクセスし、EC2を選択します。AWSのサービスはあまりに多くて、全然覚えられないのですが、EC2は一番使われているのではないでしょうか。

https://aws.amazon.com/jp/console/

EC2の画面に行くと、「インスタンスの作成」ボタンが存在するので、そこでインスタンスを作成します。

1.AMI

最初にAMI(Amazon Machine Image)を選択します。つまり仮想コンピューティング上にどのOSを構築するのかということです。ここも様々な種類があるのですが、今回はAmazonが提供するAmazon Linuxにします。(多分Ubuntuなどと多くは変わらないはずです。)

後は手順通りに登録をしてインスタンスを作成するだけです(これは少し面倒なのですが…)。

2.インスタンスタイプ

まずはインスタンスタイプの選択です。要するにどのくらい大きなサーバーにしますかということなのですが、無料期間中は「t2.micro」タイプは無料で使えます。これは、まあ1人でそこそこの作業をする程度なら大丈夫なはず程度の大きさを持っていかなと思います。あまり大きなデータとかは処理できないかと思いますが…

3.インスタンス詳細の設定

ここは特に何もせずに次にいって良いはずです。

4.ストレージの追加

ストレージの大きさを選択できます。青枠にある通り、無料期間であれば30GiBまでは無料で使えるので、ここは30GiBとします。

5.タグの追加

これから作るインスタンスにタグ付けをしておくことができます。何もしなくても良いのですが、複数のインスタンスを立ち上げていく中で、どれがどれだか分からなくなってしまっては困るので、自分で後で思い出せるようにタグを付けておくと良いです。

6.セキュリティグループの設定

ここではファイアウォールを設定します。つまり今から作成するインスタンスにアクセスできるIPアドレスを制限しておきましょうということでうす。「セキュリティグループ名」には自分で分かるように適当に名前を付けておきます。

例えば、セキュリティを考えて自分の家(または会社や学校など)のIPアドレスからしかアクセスできないようにすることが多いかと思います。その際は「ソース」から「マイIP」を選択すれば自動的にIPを振ってくれます。

7.インスタンス作成の確認

ここまでの設定を確認し、「作成」を押せば、インスタンスが作成されます。

そして最後にキーペアを作成します。AWSでは、インスタンスへのアクセスに秘密鍵・公開鍵を使用します。公開鍵暗号方式は日常的にそこかしこで使用されているはずですが、普段は目にしないかと思います。仕組みの中身の数学的知識は中々難解ですが、要するに自分だけが持っている秘密鍵をここで作成し、AWSへそれを送信することで、AWS側は一対一で対応する公開鍵を持っているので、それで照らし合わせて本人確認を行っているのです。

3分で理解できる!共通鍵暗号方式と公開鍵暗号方式の仕組み

まだAWSでキーペアを作成したことがない場合は、ここで作成してしまいます。この秘密鍵は、なくしたらまあ再発行すれば良いのですが、決して他人に渡らないように注意しましょう。

これで「インスタンスの作成」を押すと、やっとインスタンスの作成成功です。ただすぐには作成されません。しばらくの間は、Amazonがどこかの場所にあるサーバーの一部分に、自分の空きスペースを確保して仮想コンピュータを作ってくれているということですね。

しばらくして、マネジメントコンソールのEC2における「インスタンス」画面にいくと、先程のインスタンスが作成されていることが確認できます。(ここのパブリックDNSは後で必要になります。)

EC2上にAnaconda環境導入

さて、いよいよEC2という仮想サーバー上に、Anacondaを設置し、そこからJupyter Notebookを立ち上げられるようにします。(ここからはMac環境を想定しています。Windowsでは細かいところで差異があるかもしれません…)

まずは自分のターミナル(Windowsだとコマンドプロンプト)を起動します。最初に、ダウンロードした秘密鍵(pemファイル)のアクセス権を変更する必要があります。デフォルトでは何の権限もないらしいので、読み込み可能な400に変更します。(おそらく読み書き可能な600とかでもOKかと。)これは1回設定してしまえば、後は変更する必要はないです。

これで、AWSへアクセスします。ここで必要なのは、自分の秘密鍵ファイルと先程のEC2のインスタンス画面にあったパブリックDNSです。

最初だけyes/noと聞かれるので、yesと打ちます。これでめでたくAWSのインスタンスへ到達です。

次に、こいつにAnacondaパッケージを導入してあげる必要があります。以下のAnacondaインストーラーから適切なパッケージを選択します。今回はAmazon Linuxなので、Anaconda3系で最新のLinux版「Anaconda3-4.4.0-Linux-x86_64.sh」にします。これを右クリックしてリンクをコピーします。

Anacondaインストーラー

ターミナル上で、URLを貼り付けてダウンロードします。

ダウンロードはされたのでインスタンス上にはAnaconda3ファイルが乗っかっている状態です。(lsコマンドで.shファイルがあることが確認できます。)こいつをシェルコマンドで実行してあげます。

これでファイルが展開されます。途中途中で色々聞かれますが、基本EnterやyesでOKです。

Jupyter Notebookを起動させる

最後の作業です。今のままだと、「jupyter Notebook」と打っても開かないので、Jupyter Notebookが起動するようにします。

AWSはローカル環境ではないので、一応パスワードを設定しておくことが多いです。まずはAnacondaに搭載されているPythonシェルであるipythonを起動してみると、きちんと動いていることがわかりますが、ここでpasswdを取得するライブラリを入れて、パスワードを作成します。好きなパスワードを打つと、ハッシュ関数を通してハッシュ化されたパスワードが分かるので、これを押さえておきます。

そして、コンフィグファイルを設定します。

以下のように3行分追加します。(他にも追加すべき項目があったり、正確に何が必要なのかは分かりませんが、とりあえず自分はこの3行でOKでした…)

 

さて、もう一つだけ、AWSコンソール上で設定をしておく必要があるようです。最初のインスタンスの設定で、インスタンスへのアクセスはマイIPからだけの許可にしておきましたが、Jupyterを起動するためにもう一つPortを開いておきます。良くあるのは「8888」なので、マイIPにおいて、カスタムTCPで8888を追加しておきます。

これで、後はターミナルでいつものように「jupyter notebook &」と打つと、起動します。ただ、自動的には起動せず、自分でもう一手間必要です。AWSコンソール上にある作成したインスタンスの「IPv4 パブリック IP」をコピーし、以下のURLへGoogle Chromeなどに打ち込みます。

最後に、先程登録したパスワードを入力する画面に移行します。

これで、Jupyter Notebookがきました!

後はいつも通り、以下のように操作性の高い環境下で分析ができます。

次回以降は、AWS上でデータ分析をしてみたいと思います。

関連記事

  1. DataScience

    データ分析の環境構築にはJupyter Notebookが良い

    最近、データ分析系の仕事が始まったので、このブログもそんな記事が多くな…

  2. DataScience

    はじめてのKaggle。まずはタイタニック(Titanic)問題をやってみよう

    やっと時間が取れて、久々にブログ書いてます。今回は、データ解析にお…

Profile

プロフィールはこちら

 

休学してインターンしてます。データサイエンス修行中。おもしろいことしたいです。

カテゴリー

  1. DataScience

    AWS上でJupyter Notebook環境を構築
  2. DataScience

    データ分析の環境構築にはJupyter Notebookが良い
  3. DataScience

    はじめてのKaggle。まずはタイタニック(Titanic)問題をやってみよう
  4. Drone

    ドローンPhantom4始めて飛ばしてきた!
PAGE TOP