AWSのEC2サーバーでFlaskのWebアプリケーションサーバーへアクセスする

FlaskのWebサーバをECインスタンス上で起動したい

PythonのWebアプリ開発をテキストにの勉強をしているなかで、FLASKでローカルにサーバを立ち上げ、ブラウザでアクセスするケースでつまずきました。

AWSのECインスタンスに開発環境を構築しているので、FLASKで起動するアプリケーションを外部からアクセスできるように設定する必要があります。

FLASKでサーバを起動するコード

サンプルコードはローカル環境のサーバ立ち上げだったので記載は以下の通りでした。


from flask import Flask                                               
                                                                      
application = Flask(__name__)                                         
                                                                      
@application.route('/')                                               
                                                                      
def hello_world():                                                    
    return "Hello World!"                                             
                                                                      
if __name__ == '__main__':                                            
    application.run('127.0.0.1', 8000, debug=True)                 

起動してみます。


python Hello_World.py

アプリケーションサーバーは一応起動します


Serving Flask app "Hello_World" (lazy loading)
Environment: production
WARNING: Do not use the development server in a produc
tion environment.
Use a production WSGI server instead.
Debug mode: on
Running on http://127.0.0.1:8000/ (Press CTRL+C to quit)
Restarting with stat
Debugger is active!
Debugger PIN: 121-481-375

application変数にFlaskのインスタンスを代入し、application.runでローカルサーバー(127.0.0.1)を起動するわけですが、クラウド環境においてあるので、当然こうなります。

調べてみると、実行可能ファイルを使用してサーバーを起動する場合は、‘host=0.0.0.0’を使用することで非ローカル接続に開くことができるとのことでした。

そこで、以下の通り、IPを変更します。

application.run(‘0.0.0.0’, 5000, debug=True)

8000番のポートはApachが待ち受けているので、5000番に変更します。
ちなみに、Application.runのポートはデフォルトで5000番になっているので、ここは省略も可です。

コードを実行すると記載したIPアドレスの5000番ポートで待ちうけの状態になります。

$python Hello_World.py

* Serving Flask app "Hello_World" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environm
ent.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 121-481-375

5000番のポートを開ける

5000番のポートは開けていないので、AWSのセキュリティグループでルーティングの設定を変更します。

AWSコンソールでVPCを開き、セキュリティグループの設定へ移動します

該当するセキュリティグループを選択して、ポートを追加します

ポートの指定はTCP、任意の場所から、ポート番号は先ほどコードに記載した5000番です。

これで準備は完了です。

Webブラウザからアクセスしてみる

http://xxx.xxx.xxx.xxx:5000

無事にアクセスできました

まとめ

Flaskで実行しているWebサーバを外部へ公開するための設定を紹介しました。’host=0,0,0,0″という特別なIPを指定した上、ポートを開放すれば比較的簡単に実現できます。

1 個のコメント

  • コメントを残す

    メールアドレスが公開されることはありません。