無料枠のAWSのEC2インスタンスにFlask環境を構築しました。
FlaskはPythonのWebアプリケーションフレームワークの一つです。
小規模向けで、他のフレームワークよりも学習コストが低いとされています。
手順はこちらの記事を参考にしました。
【AWS】AWSのEC2でPythonのFlaskサーバーを構築する方法。
上の記事ではAmazon Linuxを使用していますが、今回はUbuntuのEC2を使用しています。
目次
やりたいこと
- AWS EC2インスタンス(Ubuntu)でFlask環境を構築
- 外部からEC2上のWebアプリにアクセス
やったこと
EC2インスタンスのポート設定
まずは、AWSマネージメントコントロールから、Flaskで使用するポートに外部から許可する設定をします。
- AWSマネージメントコントロールにログイン
- FlaskをデプロイするEC2インスタンスを選択
- [セキュリティタブ] – [セキュリティグループ]を選択
- [インバウンドルール]タブの[インバウンドルールを編集]を選択
- [ルールを追加]をクリックし、新しく追加された行のポート範囲を「5000」に設定し、ソースを「0.0.0.0/0」に設定
EC2インスタンスへのFlaskインストール
UbuntuのEC2インスタンスでは、デフォルトでpython3がインストール済です。
他に足りないライブラリをインストールしていきます。
ubuntu@ip-172-31-87-222:~$ sudo apt update
ubuntu@ip-172-31-87-222:~$ sudo apt install python3-pip
ubuntu@ip-172-31-87-222:~$ sudo apt-get install python3-venv
venv構築
flask用にpythonのvenv環境を作成します。
venv環境をつくることで、仮想環境ごとにインストールしたパッケージや設定ができるため、管理が容易になります。
ubuntu@ip-172-31-87-222:~$ python3 -m venv flaskenv
ubuntu@ip-172-31-87-222:~$ source flaskenv/bin/activate
Hello worldアプリのデプロイ
テスト用に”Hellow world”を表示するアプリを作成します。
適当な名前(app.py)で、アプリ本体を作成し、venv環境で実行します。
from flask import Flask
app = Flask(__name__)
@app.route('/',methods=["GET"])
def reply():
return "Hello world!!"
if __name__ == "__main__":
app.run(host='0.0.0.0')
(flaskenv) ubuntu@ip-172-31-87-222:~$ sudo python app.py
* Serving Flask app 'app' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://172.31.87.222:5000/ (Press CTRL+C to quit)
アクセス
ブラウザから、以下のURLで作成したWebアプリにアクセスできれば成功です。
http://[Elastic IP]:5000/