Python FlaskアプリをAWS Elastic Beanstalkにデプロイする手順まとめ!初心者でもわかるやさしい解説
生徒
「Flaskで作ったWebアプリをAWSに公開したいんですが、どうやればいいんですか?」
先生
「AWS Elastic Beanstalkというサービスを使えば、Python Flaskアプリをかんたんにインターネットに公開できますよ。」
生徒
「Elastic Beanstalkってなんですか?難しそうに聞こえます…」
先生
「Elastic Beanstalk(エラスティック・ビーンストーク)は、Amazonのサービスのひとつで、アプリの公開(デプロイ)を自動でやってくれる魔法のような仕組みなんです。今回は、そのやり方を初心者向けに丁寧に説明しますね。」
1. AWS Elastic Beanstalkとは?
AWS(Amazon Web Services)は、Amazonが提供しているクラウドサービスです。その中でもElastic Beanstalk(エラスティック・ビーンストーク)は、PythonのFlaskアプリなどをかんたんにインターネットに公開できる便利なサービスです。
難しいサーバーの設定はElastic Beanstalkが自動でやってくれるので、初心者でも使いやすいのが特徴です。
2. Flaskアプリの準備をしよう
まずはFlaskアプリの基本構成を準備します。以下のようなファイル構成が一般的です。
my-flask-app/
├── application.py
├── requirements.txt
├── .ebextensions/
│ └── python.config
├── templates/
│ └── index.html
└── static/
Elastic Beanstalkでは、Flaskのファイル名をapp.pyではなくapplication.pyにする必要があります。
3. Flaskアプリのコード例
シンプルなFlaskアプリの例です。
from flask import Flask, render_template
application = Flask(__name__)
@application.route("/")
def index():
return render_template("index.html")
if __name__ == "__main__":
application.run()
4. requirements.txtを作成しよう
Flaskやその他のライブラリの情報を記載するファイルがrequirements.txtです。これがないとElastic Beanstalkではアプリを正しく動かせません。
Flask==2.3.3
バージョンは現在のものに合わせてください。
5. .ebextensionsでPythonの設定を追加
.ebextensionsというフォルダを作り、その中にpython.configファイルを入れて、使用するPythonのバージョンなどを指定します。
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: application:application
application:applicationの意味は、「application.pyというファイルの中にあるapplicationというFlaskのオブジェクトを使って起動する」ということです。
6. AWSアカウントを作成しよう
AWSを使うには、まず公式サイトでアカウントを作成します。クレジットカードが必要ですが、無料利用枠があるので安心です。
- AWS公式サイトから登録
- 登録後は「Elastic Beanstalk」サービスを使えるようになります
7. AWS CLIのインストールと初期設定
AWS CLI(コマンドラインインターフェース)を使って、パソコンからAWSにアクセスできるようにします。
pip install awsebcli --upgrade --user
インストールできたら、以下のコマンドで初期設定します。
aws configure
設定項目には、AWSのアクセスキーとシークレットキーを入力します。これらはAWSの「IAM」という機能から取得できます。
8. アプリをElastic Beanstalkにデプロイしよう
いよいよFlaskアプリをElastic Beanstalkにアップロード(デプロイ)します。
eb init -p python-3.11 flask-eb-app
eb create flask-env
eb open
eb init:プロジェクトの初期化eb create:新しい環境(サーバー)を作成eb open:公開されたWebページをブラウザで開く
9. アプリが公開されたか確認しよう
eb openコマンドを使うと、自動でブラウザが開き、Flaskアプリがインターネットに公開されていることが確認できます。
アプリのURLはElastic Beanstalkが自動で発行してくれます。たとえば:
http://flask-env.12345.ap-northeast-1.elasticbeanstalk.com/
10. Flaskアプリを更新したいときは?
コードを変更したあと、再びデプロイするには以下のコマンドを使います。
eb deploy
変更が反映されたかどうかは、URLを再読み込みして確認してみましょう。
11. よくあるエラーと対処法
- エラー:requirements.txtがない
→ 必ず作成し、Flaskなどのライブラリを記載してください。 - エラー:application not found
→ ファイル名がapplication.pyになっているか、Flaskの変数名がapplicationになっているかを確認。 - ebコマンドが使えない
→ AWS CLIやEB CLIのインストールができていない可能性があります。
12. AWS Elastic Beanstalkを使うメリット
- サーバーの構築や運用の知識がなくても使える
- 無料利用枠でコストをかけずに試せる
- 自動スケーリングやログの確認など便利な機能も充実
- Amazonのサービスなので信頼性が高い
本格的なWebアプリを運用したいときには、Elastic Beanstalkはとても役立ちます。
まとめ
Python FlaskアプリをAWS Elastic Beanstalkに公開する流れをここまで一つ一つ見ていくと、クラウド上でWebアプリを運用する仕組みがどのように成り立っているのかが自然と理解できてきます。とくにElastic Beanstalkは、初心者がつまづきやすいサーバー管理の工程を自動化してくれるため、FlaskのようなシンプルなPythonアプリをインターネットへ公開したいときに非常に相性の良いサービスです。今回学んだ流れを振り返ると、まずはFlaskアプリの基本的なファイル構成を整えることから始まり、requirements.txtを作成して必要なライブラリを明確にし、.ebextensionsによってWSGIの設定を記述するという準備作業が重要であることが見えてきます。
さらに、AWSアカウントの作成やAWS CLI/EB CLIのインストール、AWSとの接続設定など、デプロイを進める前の環境整備も欠かせないステップです。これらの工程を丁寧に進めることで、Elastic Beanstalkにデプロイしたときにスムーズにアプリが公開されるようになります。特に、application.pyというファイル名やFlaskインスタンス名をapplicationに統一する点はElastic Beanstalk固有の注意点で、ここを間違えると起動時にエラーが出るためしっかり押さえておきたいポイントです。また、eb init、eb create、eb openといったコマンドの流れは、AWSのデプロイ手順を理解するうえで基礎となります。
デプロイ後はアプリのURLが自動で発行され、手軽に公開状態を確認でき、さらに変更を加えたい場合はeb deployで更新できるため、学習中の小規模アプリから本番運用を意識したアプリまで柔軟に対応できます。Elastic BeanstalkはAuto Scalingやログ管理などの便利な機能も提供しているため、実際にWebアプリを育てていく上で長く付き合っていけるサービスです。今回の手順を理解することは、クラウド上でのアプリ運用の第一歩につながり、今後DynamoDBやRDSなどの別のAWSサービスと組み合わせてより高度な構成を組む際にも役立つ知識となります。
ここでは学んだ内容のおさらいとして、Elastic Beanstalkに対応した簡単なFlaskアプリのサンプルコードをもう一度整理して載せておきます。各ファイルの役割を意識しながら、どう動作しているのかを追いかけてみると理解がさらに深まるでしょう。
サンプルコードで復習しよう
from flask import Flask, render_template
# Elastic Beanstalkでは "application" が必要
application = Flask(__name__)
@application.route("/")
def index():
return render_template("index.html")
if __name__ == "__main__":
application.run()
このような基礎構成を守るだけで、Elastic BeanstalkはFlaskアプリを自動的に理解し、環境を準備し、公開まで進めてくれます。初心者がクラウドやデプロイに触れる最初の学習としてちょうどよい題材であり、実際のWebアプリ運用の基礎力として今後の開発に大きく役立つ内容となります。ファイル構成、設定ファイル、コマンド、AWSとの接続、環境の準備など、どれか一つが欠けると正常にデプロイできないため、今回のように順番に全体像を理解していくことはとても重要です。
生徒
「Elastic Beanstalkってもっと難しいものだと思っていましたが、流れを追うと意外とシンプルなんですね!」
先生
「そうなんですよ。クラウドの仕組みを全部理解しなくても、必要な設定をしっかり整えれば自動で公開まで進めてくれる便利なサービスなんです。」
生徒
「application.pyにする理由や、requirements.txtの準備が大事な理由もよくわかりました。あれを忘れたらエラーになりますよね。」
先生
「その通り。Elastic Beanstalkがアプリを正しく読み取るための重要な部分だからね。今回の流れを理解しておけば、次はデータベース連携や環境変数設定にも挑戦できますよ。」
生徒
「今回学んだことをもとに、自分のアプリを実際に公開してみたくなりました!」