Help us understand the problem. What is going on with this article?

AWSでJupyterHub (概要)

はじめに

こんちには,こんばんわ.
今年は,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を使って監視メールの送信

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away