FlaskアプリをAWSにデプロイするための準備手順まとめ!初心者向け完全ガイド
生徒
「自分で作ったFlaskのWebアプリを、世界中の人に見てもらえるようにしたいです!AWSというものを使えばいいと聞いたのですが、何を準備すればいいですか?」
先生
「自分のパソコンの中だけで動いているアプリを、インターネットという大きな海に送り出す作業をデプロイと言います。AWSは、Amazonが提供しているとても強力なコンピューターの貸し出しサービスのことですよ。」
生徒
「なんだか難しそうですね。パソコン初心者でも準備できますか?」
先生
「大丈夫です。一つずつ順番に準備を進めていけば、必ずできるようになります。まずはデプロイに必要な道具を揃えるところから始めましょう!」
1. FlaskとAWSの基本を理解しよう
まずは、今回使う道具の名前を覚えましょう。Flask(フラスク)とは、Pythonというプログラミング言語を使って、WebサイトやWebアプリを簡単に作るための道具箱のようなものです。非常に軽量で、初心者の方でも扱いやすいのが特徴です。
次にAWS(エーダブリューエス)です。これは「Amazon Web Services」の略で、インターネットを通じてサーバー(24時間動いている性能の良いパソコンのようなもの)を借りることができるサービスです。自分のパソコンの電源を切っても、AWS上のサーバーが動いていれば、世界中の人があなたの作ったアプリにいつでもアクセスできるようになります。
デプロイとは、自分の手元のパソコンで作ったプログラムを、このAWSという遠くにあるレンタルサーバーにコピーして、そこで動くように設定することを指します。これを料理に例えると、自宅のキッチンで考えたレシピ(プログラム)を、大きなお店の厨房(サーバー)に持ち込んで、お客さんに提供できる状態にすることだと言えます。
2. AWSアカウントの作成とログイン
デプロイを始めるための第一歩は、AWSのアカウントを作成することです。AWSを利用するには、まず公式サイトから登録を行う必要があります。登録にはメールアドレスのほかに、本人確認のための電話番号や、利用料金を支払うためのクレジットカード情報が必要になります。
ここで「お金がかかるのでは?」と不安になるかもしれませんが、AWSには無料利用枠という仕組みがあります。新しくアカウントを作ってから12ヶ月間は、一部の機能を無料で使えるようになっています。初心者の方が練習で使う範囲であれば、この無料枠の中で十分に収まることが多いので安心してください。
登録が終わったら、AWSマネジメントコンソールという管理画面にログインします。ここは、これから借りるサーバーの設定をしたり、動いている様子を確認したりするための、いわばコントロールパネルのような場所です。ブラウザでお気に入り登録しておくと便利です。
3. Python環境の最終チェックと簡単なアプリ作成
デプロイの準備をする前に、まずは自分のパソコンで動く簡単なFlaskアプリを用意しましょう。Pythonがインストールされていることを確認し、Flaskというライブラリを取り込みます。ここでは、画面に「Hello AWS!」と表示するだけのシンプルなプログラムを作ってみます。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello AWS! これはFlaskで作ったアプリです。"
if __name__ == "__main__":
app.run()
上記のコードを「app.py」という名前で保存してください。プログラムの中で使われている@app.route("/")という部分は、「サイトのトップページにアクセスしたときに、次の命令を実行してね」という合図です。初心者のうちは、この呪文を書くことで画面が表示されると覚えておけば問題ありません。
4. 仮想環境の構築と依存ファイルの書き出し
WebアプリをAWSへ持っていくとき、一番困るのが「自分のパソコンでは動いたのに、AWSでは動かない」という現象です。これを防ぐために、仮想環境(かそうかんきょう)という仕組みを使います。これは、パソコンの中にアプリ専用の小さな部屋を作るイメージです。その部屋の中で使っている道具をリストアップすることで、AWS上でも全く同じ環境を再現できます。
具体的には、まずターミナルやコマンドプロンプトという、文字を入力してパソコンを操作する画面を開きます。そこで以下のコマンドを入力して、アプリに必要なライブラリのリストを作成します。このリストをrequirements.txt(リクワイアメンツ・テキスト)と呼びます。
pip freeze > requirements.txt
このファイルには「Flaskのバージョンは何番を使っています」といった情報が書き込まれます。AWSはこのファイルを読み取って、自分の中に同じバージョンのFlaskを自動でインストールしてくれるのです。この準備を忘れると、AWSが「Flaskなんて知らないよ!」とエラーを出して止まってしまいます。
5. Gunicornの導入と設定ファイルの準備
Flaskに標準で付いている動かす機能は、実は「練習用」です。たくさんの人が同時にアクセスするインターネット上(AWS)で動かすには、もっとタフで力持ちなWSGIサーバーというものが必要です。その代表的なものがGunicorn(グニコーーン)です。
AWSでFlaskを動かす際は、このGunicornを仲介役として使うのが一般的です。以下のコードは、設定ファイルの一部として使われることが多い、非常にシンプルな実行コマンドの例です。これを直接打ち込むのではなく、AWSの設定画面や設定ファイルに記述することになります。
# AWS上の環境で実行されるコマンドのイメージ
# app.pyの中にあるappという名前のインスタンスを動かします
gunicorn --bind 0.0.0.0:8000 app:app
このように、Flask本体だけでなく、本番環境で動かすための「助っ人」も一緒に連れていく準備が必要になります。これもpip install gunicornを実行して、先ほどのリストに追加しておきましょう。
6. Gitを使ったプログラムの管理
AWSにプログラムを届けるための「運び屋」として、Git(ギット)というツールを使います。Gitはプログラムの変更履歴を記録する道具ですが、これをオンライン上の倉庫であるGitHub(ギットハブ)と連携させることで、自分のパソコンからAWSへ簡単にプログラムを転送できるようになります。
まず、自分のプログラムが置かれているフォルダでGitを使えるように初期化します。次に、そのフォルダ内のファイルをすべてGitに登録します。この作業を「コミット」と言います。初心者の方にとっては、ファイルを箱に詰めて、宛先を書くような作業だと思ってください。以下の手順で行います。
git init
git add .
git commit -m "初めてのデプロイ準備"
これらのコマンドを打つことで、プログラムがAWSへ旅立つ準備が整います。パソコンを触ったことがない人にとっては呪文のように見えるかもしれませんが、順番に入力するだけで大丈夫です。Gitを使うことで、もしプログラムを書き間違えて動かなくなっても、前の状態にすぐ戻せるというメリットもあります。
7. AWS Elastic Beanstalkの準備
AWSにはたくさんの機能がありますが、初心者がFlaskアプリをデプロイするのに最もおすすめなのがElastic Beanstalk(エラスティック・ビーンスターク)です。これは、サーバーの設定や、アプリを動かすための複雑な調整を自動でやってくれる魔法のようなサービスです。通称「豆の木」と呼ばれています。
通常、サーバーをゼロから設定するにはLinuxという専門的なOSの知識が必要ですが、Beanstalkを使えば「Pythonのアプリを動かしたいです」と伝えるだけで、最適な環境を自動で作ってくれます。準備として、AWSの管理画面から「Elastic Beanstalk」を検索し、「アプリケーションの作成」というボタンを探しておきましょう。
また、これを利用するための補助ツールとして「EB CLI」という道具を自分のパソコンにインストールしておくと、コマンド一つでデプロイができるようになり、非常に便利です。準備段階では、まずAWSの画面構成に慣れておくことが大切です。
8. データベース連携が必要な場合の準備
もしあなたのアプリが、ユーザーの情報を保存したり、掲示板のような機能を持っていたりする場合、データを保存する場所が必要です。これをデータベースと呼びます。AWSでは、RDS(アールディーエス)というデータベース専用のサービスがあります。
Flaskからデータベースに接続するためには、SQLAlchemyなどのライブラリを準備する必要があります。以下のコードは、Flaskでデータベースを扱うための設定の書き方です。デプロイ前には、こうした接続情報も整理しておく必要があります。
from flask_sqlalchemy import SQLAlchemy
# データベースの場所を指定する設定
# デプロイ時はAWSのRDSのアドレスに書き換えます
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
最初は自分のパソコン内(sqlite)で動かしていても、AWSに持っていくときは、AWSのデータベースを見るように設定を少し変える必要があります。このように「場所によって設定を切り替える」という考え方も、デプロイの重要な準備の一つです。
9. セキュリティと公開設定の確認
最後に、安全にアプリを公開するための準備をしましょう。AWSのサーバーには、外からのアクセスを許可したり拒否したりするセキュリティグループという門番のような仕組みがあります。デフォルトでは誰も入れないようになっていることが多いので、Webサイトを表示するための「80番ポート」や「443番ポート」を開放する設定が必要です。
また、プログラムの中にパスワードや秘密の鍵を直接書いてはいけません。万が一、プログラムが他人の目に触れたときに、悪用される危険があるからです。これらは環境変数(かんきょうへんすう)という仕組みを使って、プログラムの外から読み込むように準備します。
こうしたセキュリティの準備をしっかり行うことで、安心して世界中にあなたのWebアプリを届けることができます。準備が整ったら、いよいよAWSの管理画面からファイルをアップロードするか、コマンドを使ってデプロイを実行するだけです。あなたの挑戦が成功することを応援しています!