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のタブを開いてダッシュボードに移動します。
スクリーンショット 2018-04-01 10.43.49.png
その後EC2のダッシュボードを開いてください。

インバウンドのポートを開ける

起動中のEC2のインスタンスを選択し、説明タブにあるセキュリティーグループを選択します。
そうすると画面が遷移するので、インバウンドタブを開きます。
EC2 Management Console.png
編集ボタンを押すとインバウンドのルールを設定できるようになるので、「ルールの追加」をクリックし、TCPカスタムを選択し、ポート欄に5000を入力します。最後に保存を押せば設定が更新されて、5000番ポートのアクセスが許可されます。
part2_EC2 Management Console.png

flask runの引数にパブリックDNSを渡す

EC2のダッシュボードに戻り、起動中のインスタンスを選択します。パブリック DNSが記載されているので、コピーしてきます。(EC2インスタンスが落ちるたびに、この値は変更されます。解決は可能ですが、お金がかかります。)
コピーしてきたら、flaskアプリケーションのディレクトリで以下のコマンドを打ちます。

flask run --host=your-public-DNS

サーバーが起動できたら、以下のURLにアクセスできるようになっているはずです。
http://your-public-DNS:5000

参考

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.