AWS Cloud9でFlaskアプリサーバーを起動する
FalaskのチュートリアルでFlaskサーバーを立ち上げる際に若干作業が必要だったのでメモしておきます。
結論から言うと、AWSのファイアーウォールとflaskのホスト制限を外します。
環境
AWS Cloud9
AWS Cloud9はクラウドベースのIDEです。EC2の料金がかかってしまいますが、仮想環境をローカルに作る手間が省けて重宝しています。
Flask
FlaskはPythonのフレームワークです。マイクロと謳っている通り、必要最低限と行った感じで扱いやすいです。
問題点
tutorialのStep 3: Installing flaskr as a Packageで、以下のコマンドをterminalで叩いてサーバーを起動してくださいと記載されています。
export FLASK_APP=flaskr
export FLASK_DEBUG=true
flask run
しかし、この方法ではアプリサーバーは起動していますがAWSのファイアーウォールとflaskのホスト制限で外部からアクセスすることができません。
解決方法
EC2のセキュリティーグループを設定してポートを開ける
EC2へアクセス
以下の画像のようにAWS Clooud9のタブを開いてダッシュボードに移動します。
その後EC2のダッシュボードを開いてください。
インバウンドのポートを開ける
起動中のEC2のインスタンスを選択し、説明タブにあるセキュリティーグループを選択します。
そうすると画面が遷移するので、インバウンドタブを開きます。
編集ボタンを押すとインバウンドのルールを設定できるようになるので、「ルールの追加」をクリックし、TCPカスタムを選択し、ポート欄に5000を入力します。最後に保存を押せば設定が更新されて、5000番ポートのアクセスが許可されます。
flask runの引数にパブリックDNSを渡す
EC2のダッシュボードに戻り、起動中のインスタンスを選択します。パブリック DNSが記載されているので、コピーしてきます。(EC2インスタンスが落ちるたびに、この値は変更されます。解決は可能ですが、お金がかかります。)
コピーしてきたら、flaskアプリケーションのディレクトリで以下のコマンドを打ちます。
flask run --host=your-public-DNS
サーバーが起動できたら、以下のURLにアクセスできるようになっているはずです。
http://your-public-DNS:5000