スポンサーリンク

【AWS】AWSのEC2でPythonのFlaskサーバーを構築する方法。

AWS
スポンサーリンク

今回の記事はAWSのEC2でPython3をインストールしPythonの仮想環境「venv」を作成し、FlaskによるEC2サーバ構築を行っていきます。AWS開発に関しては複数の記事を書いております。また、Python関連はAIからRPA、Djangoまで幅広く記事を書いているので気になる方はリンクから記事をご参照ください。

スポンサーリンク

AWSのEC2インスタンス作成とSSH接続

こちらに関しては下記の記事にまとめているのでこちらをご参照ください。

無料枠でAWSのEC2インスタンス作成&SSH接続手順

また、インスタンスはこのままではFlaskなどで作ったローカルサーバにアクセスすることができません。理由としてポートが許可されていないからです。

その為下記手順でAWSコンソールから、ポート許可をセキュリティグループのインバウンドルールから追加していきます。

まずは、EC2コンソールのセキュリティグループをクリックします。

すると上記のようなページに移動するのでそこのインバウンドルールをクリックします。このインバウンドルールではポートの制限などを記述することができます。

今回はFlaskをでウェブサーバ側を操作するのでFlaskのデフォルトポートである5000番を追加します。

上のSSH用のポートはデフォルトで存在しているので、ルールの追加をクリックし、カスタムTCPでポート範囲を「5000」に設定し、ソース(入ってくる側)をインターネット経由の「0.0.0.0/0」にすれば良いです。

以上でEC2の構築は完了です。

AWSのEC2でPython3をインストールと仮想環境構築

既存のEC2の「t.micro」ではPython2系のみが入っている為Python3の「venv」が使用できません。その為、Python3をインストールする機会は多いと考えられます。

〜SSH接続後〜

[ec2-user ~]$cd ~

#パッケージインデックスのアップデート(これはエラーになるかも)
[ec2-user ~]$ yum check-update

#Pythonのインストール(インストールされていない場合のみ)
[ec2-user ~]$ sudo yum install python3 -y

#仮想環境の構築
[ec2-user ~]$ python3 -m venv env

#仮想環境をアクティブにする
[ec2-user ~]$ source ~/env/bin/activate

#仮想環境の有効化成功
(env) [ec2-user ~]$

#Python用ファイル作成
(env) [ec2-user ~]$touch app.py
(env) [ec2-user ~]$ls
app.py

#pipで必要なライブラリを入れていく
(env) [ec2-user ~]$ pip install [ライブラリ名]

AWSのEC2にFlaskサーバを作成

最後にFlaskサーバの構築を行なっていきましょう。

pip install flask

上記で作成したファイルの中身を下記のようにします。Viで操作してもいいですがファイル転送するのが本来は楽かもです。

from flask import Flask

app = Flask(__name__)

@app.route('/',methods=["GET"])
def hello():
    print("GET通信です。")
    return "hello"

@app.route('/',methods=["POST"])
def hello():
    print("POST通信です。")
    return "hello"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

ではこちらを動かしていきます。

(env) [ec2-user ~]$ python3 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 http://0.0.0.0:5000/ (Press CTRL+C to quit)

これで完了です。サーバを立てることができました。

上記のファイルの簡単な説明としてはpost通信かget通信かを判別できるようになっております。ただ、基本的にEC2サーバにhttp通信をする際はElastic IPが必要になります。その為、ローカルサーバの場合は「http://0.0.0.0:5000/」をブラウザで開くと自動的に「get通信」になるのですがEC2の場合は「http://[Elastic IP]:5000/」とする必要があります。

ElasticIPの設定まで完了させてブラウザにて上記のURLへアクセスしてみましょう。「GET通信です。」と応答があればOKです。

AWS
スポンサーリンク
tomoをフォローする
スポンサーリンク
SunnyDayTravel-Blog

コメント

  1. […] 「EC2にPython3インストールと仮想環境でFlaskによるWebサーバを作成する手順」 […]

タイトルとURLをコピーしました