Elastic BeanstalkにFlaskのアプリをデプロイしてみた

AWSのElastic BeanstalkにFlaskで作ったWebアプリをアップロードして公開してみた。

環境は以下の通り。

  • Mac
  • Anaconda
  • PyCharm

セットアップ

MacにHomeBrewをインストールする。

https://brew.sh/index_ja

EBのCLIツールをインストールする。

$ brew install awsebcli
$ eb --version

バージョン情報が出ればOK。

仮想環境作成

Anacondaナビゲータを起動して仮想環境を作る。

次にflaskをインストール。

PyCharmを開いて、新規にプロジェクト作成。

その際に先ほど作った仮想環境のセットを忘れずに。

これで環境が整ったので、適当なWebアプリを作成する。

Webアプリが完成したら、requirements.txtを作成しておく。

あと、AWSのコンソールにログインして、アクセスキーを作成してダウンロードしておく。

IAMユーザを作成することがおすすめされているが、私はRootユーザでログインして作成した。

デプロイ

pythonのバージョン、アプリの名前、リージョンを指定して、アプリを作成する。

$ eb init -p python-3.7 flask-url-short --region us-west-2

なお、初めての場合、アクセスキーを入力しないといけないので、先ほどのアクセスキーを入力する。

次に環境を作成する。

$ eb create flask-env

最後に以下のコマンドでブラウザ起動しWebアプリが確認できる。

$ eb open

更新

Webアプリを更新したい場合は以下の通り。

$ eb deploy
$ eb open

Gitを使う場合

Gitを使ってコミットしてからeb deployしようとしたところ以下のエラーが発生した。

$ eb deploy
ERROR: This branch does not have a default environment. You must either specify an environment by typing "eb deploy my-env-name" or set a default environment by typing "eb use my-env-name".

環境を指定する。

$ eb deploy flask-env
$ eb open flask-env

ちなみに、eb deployする前に、gitでコミットしておかないと反映されなかったので注意。

参考URL

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create-deploy-python-flask.html#python-flask-deploy