##本ページの目的
Python + Flaskで作成したWEBページをAWSのVPC、EC2、Elassticsearchサービスで公開します。
##前提要件
1、AWSアカウントを所有すること
2、プログラミングの基礎知識を有すること
##目次
1.VPCの環境構築
2.EC2環境構築
3.Elasticsearch環境構築
4.EC2の接続
5.実行環境の構築
6.公開するため、ポート番号の開放
7.公開サイトにアクセルする
##1.VPCの環境構築
###1.1.今回の環境構築は1個のパブリックサブネットを持つVPCとを作成します。
(1)AWSのコンソールへログイン
(2)VPCサービスを選ぶ
(3)「VPCの作成」をクリック
(4)「1個のパブリックサブネットを持つVPC」を選択(図1)
図1 VPC設定の選択
(5)VPCの設定
・VPC名任意、アベイラビリテイーゾーン任意
・他の項目はデフォルト
・「VPCの作成」をクリック
図2 完成イメージ
###1.2.インタネットに接続するため
・ルートテーブルを編集、インタネットゲットウェアを追加(設定は図3)
*インタネットゲットウェアがない場合は、まずゲットウェアを作成する必要がある
図3 ゲットウェアの設定
###1.3.セキュリティグループの設定
・「セキュリティグループ」をクリック、構築したVPCのセキュリティグループグループを選択
・Inbound Rulesを選択、「Edit」をクリック、「ルールの追加」をクリック
・下記のタイプのルールを追加する(図4)
・「保存」をクリック
図4 セキュリティグループの設定
「RDP」:windowsリモートデスクトップのプロトコル
「HTTPS」:elasticsearchにアクセスするためのプロトコル
「8080」:EC2で公開したウェブにアクセスするためのプロトコル
##2.EC2環境構築
###2.1性能上の要求がなければ、今回は無料枠のインスタンスを使います。
(1)「インスタンスの作成」をクリック
(2)「無料利用枠のみ」を選ぶ
(3)「Microsoft Windows Server 2016 Base」を選択、「次の手順」をクリック
(4)インスタンス「t2.micro」を選択、「詳細設定」をクリック
(5)構築したVPCと対応するネットワークとサブネットを選択
(6)自動割り当てパブリック IPを有効化、「確認と作成」を押す
(7)「作成」を押す
図5 EC2設定
###2.2初めてEC2のインスタンを作成する場合は
(1)新しいキーペアの作成、キーペア名を入力し、「ダウンロード」を押す
(2)「インスタンスの作成」、「インスタンスの表示」
##3.Elasticsearch環境構築
(1)Elasticsearchサービスを選択する
(2)ドメイン名任意、次へ
(3)インスタンスタイプはt2.small.elastisearch、次へ
(4)構築したVPCを選択し、設定したEC2インスタンスのサブネット、セキュリティグループを設定
図6 elasticsearch設定
(5)テンプレートを「IAM認証情報を使用した署名リクエストを要求しない」に設定
(6)設定内容を確認し、確認を押す
(7)構築が完了するまで、10分かかる
##4.EC2の接続
(1)EC2サービスを選んで、「インスタンス」を選択
(2)作成したインスタンスに右クリックし、「接続」を選択
(3)「リモートデスクトップファイルのダウンロード」をクリック
(4)「パスワードの取得」、「キーペアのパス」、「パスワードの複号」をクリック
(5)複号したパスワードをメモする
(6)「リモートデスク」のアプリをクリック、記録したパスワードを入力、「OK」
##5.実行環境の構築
###5.1簡易書籍管理システム
(1)EC2インスタンスにログインする
(2)Pythonをインストール
(4)簡易な書籍管理システムをダウンロードする(下記のURL、使い方readme.md)
https://github.com/michihosokawa/MiniBookManagementSystem
###5.2Elasticsearchインデックスの設定
(1)「ElasticsearchWrapper.py」ファイルの21行目を修正(エンドポイントは図7)
編集前:self.es=Elasticsearch("localhost:9200")
編集後:self.es=Elasticsearch("VPCエンドポイント:443")
(2)コマンドラインで「「pip install elasticsearch」を実行
(3)システムのフォルダで「Python initialize.py」を実行
*initializeは2回実行する(一回目は既存のelasticsearchのindexを削除)
###5.3ページの確認
(1)コマンドラインで「pip install flask」を実行
(1)「Python app.py」を実行
*moduleエラーが出た場合は「pip install モジュール名」を実行
(2)localhost:8080をブラウザ(chrome)で確認(図8)
図8 簡易書籍・追加ページ
##6.公開するため、ポート番号の開放
AWSの無料枠のwindowsはポートが開放されていないため、443と8080ポートを開放する必要があります。ポートの開放方法について、グッグルで調べてください。
##7.公開サイトにアクセルする
(1)EC2インスタンの公開IPアドレスをメモする(公開IPの記載場所は下記の図)
(2)自分の端末のブラウザ(chrome)に「公開IP:443」を入力して実行(図9)
図9 公開IPアドレス
(3)図8の画面が表示されたら、おめでとう構築が成功しました。