LoginSignup
5
5

More than 3 years have passed since last update.

AWSでJupyterHub (概要)

Last updated at Posted at 2019-11-27

はじめに

こんちには,こんばんわ.
今年は,AWSやらPythonやらをいじっていた時間が長かったのか,「なにかしたいな~」と考えていた時,一人で黙々とやるのも好きなんですが,協同でなにかするのもそこそこ好きなので,ふと「そうだ,JupyterHubの環境を作ろう」と.
今回は,その時の内容を何回かに分けて記事にしようと思います.

でも,普通に「インストール後起動」だけじゃ物足りないので,次のような点を解決しながら環境を作ってみようと思いました.

  • 普通に「インストールして,起動して,アクセスする」的なものじゃ物足りない
  • アクセスするURLが http://localhost:8080/ のようなものも味気ない
  • ドメインが何かよく分からないものはイヤ(自分の好きなドメインにしたい!)
  • URLにポート番号付けるのとかカッコ悪い
  • 通信を暗号化させたい(HTTPS化)

ゴール

最終的に,以下の要素が達成できるようにしていきます.

  1. 好きなドメイン(サブドメイン)でJupyterHubにアクセスできること
  2. 通信の暗号化(HTTPS化)
  3. 複数アカウントを用意して,別々の環境が用意できること
  4. 各アカウントがJupyterHubで作成したデータやコードがJupyterLabが起動しているボリュームと別にあること
  5. WAFを利用した簡単なアクセスポイントの制御と監視

道のり

ゴールに向けて,AWSでやってみたことを順を追って書いていきます.
AWSをしっかりと勉強したわけでもないし,今回取った方法がベストプラクティスでもないと思うし,「こっちの方法が良いよ」とか「これじゃ面倒だよね」とかあると思います.
私の勉強不足のため,AWSを使いこなしてないです,IAM使ってセキュリティをしっかりとするとかね,今回やってません.

  1. EC2を使ってJupyterHubのサーバを用意
    1. EC2インスタンスの作成
    2. TeraTermからのログイン
    3. EBSを使ってJupyterHub専用ストレージをマウント
  2. webサーバとしてnginxを用意
  3. Pythonの準備
    1. Pythonのインストール
    2. Anacondaのインストール
  4. JupyterHubのインストール
    1. Anacondaを使ってJupyterHubのインストール
    2. nginxとの接続(リバースプロキシの設定)
  5. JupyterHubのアカウント
    1. jupyterhubユーザのsudo権限付与
    2. shadowの設定
  6. Route53でドメインの設定
    1. JupyterHub用のサブドメインの設定
  7. 通信の暗号化とリクエストの制御
    1. ACMで証明書の発行
    2. AWS WAFでACLを作成
    3. ALBにACLを設定
  8. サービスの自動化
    1. ログの設定
    2. 毎日リブートさせる
  9. WAFのログを使ってアクセスの監視
    1. CloudWatch+SNSを使って監視メールの送信

各項目は,記事が出来次第,リンクに差し替えていきます.

5
5
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
5
5