ページ

2020年12月7日月曜日

東大・計数学科の「 AWSによるクラウド入門」について

はじめに

 東大・計数学科の講義及びAmazon Web Service(AWS)を使ったハンズオンの内容がWebで公開されていたので、それを実際に体験してみた際のメモになります。
公開されているウェブページ:https://tomomano.gitlab.io/intro-aws/

講義の概要

 全3回(90分 x 3回)の講義の概要は下記です。
  1. クラウドの基礎
     クラウド及びAWSの概要(AWS CLIによるS3、CDKによるEC2立上げ)
  2. クラウドで行う機械学習
     Jupyter notebook/PyTorchによる機械学習。コンテナ(Docker/ECS)
  3. Serverless Architecture入門
     LambdaによるServerlessの実現、簡易SNSの構築
 講師自身が、
本講義のフィロソフィーを一言で表すなら, "ロケットで宇宙まで飛んでいって一度地球を眺めてみよう!" である.

と書かれているのですが、クラウドコンピューティングの全体像を、AWSに触りながら、具体的に手っ取りばやくつかむのが目的でその目的は十分に達成できる内容です。この分野に興味がある人であれば誰もが体験すべき素晴らしい内容だと思います。

気になった点メモ

 以下に幾つか気になった点をメモします。
  1. 実際にいくらかかったか?
     講義資料によると、「数百円程度のコスト」と言う書き方がされていますが、実際には下記にあるように、1.16USD = 121円程度でした。











  2. うまく動かなかった点(Windows 10 HomeでWSLを利用しない場合
     講義資料の1.4.必要な計算機環境に「UNIX系コンソール」とあり、Windowsのユーザは、Windows Subsystem for Linux(WSL)のインストールが推奨されています。が、私は、Windows 10 Home上のPythonの環境を利用してハンズオンを行いました(結論として、Dockerを利用するハンズオン(7.3等)以外は問題なく行うことができました。)その際に、うまく動かなくて注意が必要だった点を以下にまとめておきます。

    a. 変数の設定について(P16。以下、ページ数は講義資料のPDFのページ数)
     講義資料中でシェル変数にパス名等を登録し、その直後で利用する例が見られます。この際に、Windows上で動かないコマンド等がありエラーが出ることがあります。
     <例>
    $ bucketName="mybucket-$(openssl rand -hex 12)"
    $ echo $bucketName
    $ aws s3 mb "s3://${bucketName}"

     上記では、1行目で作成されたbucketName変数の中身が、3行目で${bucketName}として利用されているだけです。Windowsのプロンプトで1行目でエラーがでる場合は、上記をの1行目、2行目を入力せず、講義資料を基に、

     <例>
    $ aws s3 mb "s3://mybucket-c6f93855550a72b5b66f5efe"  
     等と置き換えてしまえばエラーが消えるはずです。

    b. 4.1準備(P.20)
     Windows 10 Home上で、下記のそれぞれのリンクに従いインストールしました。2020年11月現在は全て最新版をインストールすることで問題なく講義資料の内容を確認できました。
     -Python:https://www.python.jp/install/anaconda/windows/install.html
     -Node.js:https://nodejs.org/ja/
     -AWS CLI:https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html
     -AWS CDK: https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html
     -講義のソースコード:https://gitlab.com/tomomano/intro-aws/-/tree/master/handson

    c. SSH(P.21)
     上記でインストールしたanaconda3のプロンプト(下記d参照)からSSHを利用

    d. プログラムの実行(P.26)
     以下、プログラムの実行時には、anacondaでインストールしたプロンプトから実行しました(画面左下「スタートアイコン」 -> Anaconda3(64-bit) -> Anaconda Prompt(anaconda 3)を選択)

    e. 仮想環境の作成(Windows環境)(P.26)
      以下、ダウンロードしてきた講義のソースコードのhandson/01-ec2のフォルダで実行しました。
    $ python -m venv .env
    $ .env/Scripts/activate
    $ pip install -r requirements.txt

      Anacondaで3系のpythonをインストールした場合にコマンドを入力する場合は、上記のように"python"のみで良いことに注意(python3としない)

    f. 環境変数の設定(P.27)
     Linuxではexportコマンドで環境変数を設定しますが、Windowsではsetxコマンドで設定します(コマンド入力後、プロンプトを一旦終了、再起動することで設定完了)

    $ setx AWS_ACCESS_KEY_ID=XXXXXX
    $ setx AWS_SECRET_ACCESS_KEY=YYYYYY
    $ setx AWS_DEFAULT_REGION=ap-northeast-1

    なお、上記設定後、setコマンドで、3つの環境変数が正しく登録されているかを確認すると良いと思います(Linuxの場合はprintenvを利用)

    g. SSH鍵を生成(P.27)
     オプションの一部が既に廃止されているようで、以下のコマンドで実行しました。
     なお、以下のコマンドでは、EC2KEY.pemと言うSSH鍵が生成されます。

    $ aws ec2 create-key-pair --key-name EC2KEY --output text > EC2KEY.pem
    

    この生成されたEC2KEY.pemですが、私の環境ではそのまま利用することが出来ませんでした。一旦、メモ帳等で開き、先頭と末尾の不要な行を整形し、以下のような書式とする必要がありました。

     
    -----BEGIN RSA PRIVATE KEY-----
    <文字列>
    -----END RSA PRIVATE KEY-----
    


    h. デプロイを実行(P.27)
     cdk deployのコマンドでcdk.jsonファイルが実行されるのですが、ファイル中に記載されているコマンドでpython3となっているためエラーとなります。事前にcdk.jsonのファイルをメモ帳等で開き、python3となっている個所をpythonに修正しておきます。

上記までで、第1回講義分(P32)まではカバーできたと思います。長くなってきたので、続きは別途記載します。