1.はじめに
AWS Cloud9上でFlaskを走らせるための備忘録です。
概ね以下のような構成です。
・AWS Cloud9でpython3を使うための環境設定
・ポートの開放
・ElasticIPを使ったドメインの割り当て(追加しました)
2.Cloud9の起動
Cloud9を起動し、「Create enviroment」でFlaskで公開するCloud9用の環境を用意します。
Configure settings で環境設定を行います。Name欄に名称をつけで「Next Step」
Cost-saving settingは標準のままだと30分で強制的に終了しますので、「Never」に設定します。
後から設定変更可能です。(AWS Cloud9→Preferences→EC2 Instance)
(当初これを知らずに、勝手にflaskが停止する理由がわからなった...。)
「Next Step」のボタンを押し、確認の画面で「Create enviroment」ボタンで環境を構築します。
3.IDEの起動と初期設定
作成した開発環境を「Open IDE」で開き、開発環境を確認します。
Pythonは3.6、pipは2.7が設定されていますので変更します。
sudo update-alternatives --config python
「2」を選択します。
再確認します。
pipで必要なモジュールをインストールします。今回はflaskをインストールします。
flaskに限らずpipでインストールするときは末尾に「--user」をつけてインストールします。
4.ポートの開放
AWSのEC2管理画面から「実行中のインスタンス」を選択しインスタンスの一覧を表示します。
「説明」タブ内の「セキュリティグループ」の項目を選択
ここでパブリックIPのIPアドレスを控えておきます。
「ルールの追加」ボタンを押し、タイプ「カスタムTCP」を選択し、開放するポート番号とソースに「0.0.0.0/0」を指定し保存します。今回は50000を開放します。
5.Flaskのテスト
もう一度cloud9の開発環境に戻り、Flaskのテストコードを入力します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello World"
if __name__ == "__main__":
app.run(host = '0.0.0.0', port = 50000)
app.debug = True
ポート開放で確認したパブリックIP:ポート番号を叩いてアクセス可能なことを確認します。
http://〇〇.〇〇〇.〇〇〇.〇〇〇:50000/
#6. ドメインの割り当て(おまけ)
Elastic IPを使ってお名前ドットコムで取得したドメインを割り当てます。
##6.1 AWS側(Elastic IP)の設定
EC2ダッシュボードからElastic IPをクリック
プライベートIPも自動で候補が表示されますので、指定して「関連付ける」をクリックします。
これでElasticIPがEC2のインスタンスに割り当てられます。
##6.2 お名前ドットコム側の設定
お名前ドットコムのドメイン管理画面でDNS関連機能の設定をクリックします。
※ネームサーバーはお名前ドットコムのネームサーバーを使用します。
ちなみに「.com」のドメインで1年間1,166円でした。
A/AAAA/CNAME/MX/NS/TXT/SRV/DS/CAAレコードのVALUE欄にElasticIPで取得したパブリックIPを入力して追加し、「確認画面へ進む」→「設定する」
これでドメインと紐づけできました。反映されるまで数時間かかります。