LoginSignup
0
0

More than 1 year has passed since last update.

FlaskをElastic Beanstalkでデプロイに関するヒント

Last updated at Posted at 2022-11-27

FlaskをElastic Beanstalkでデプロイに関するヒント

紹介

少し自分用のためのノートですが、Github Actionsを使ってPython FlaskをAWSのElastic Beanstalkでデプロイする時、いろいろ設定と注意点を書きたいです。

やりたいこと

  1. CI/CD
  2. IPでアクセス制限
  3. Flask(Dash)とPlotlyを使いたい
  4. 低コスト

ソースコードテンプレート

手順

ネットワーク

  1. VPCを作成
  2. サブネットは一つでも良い
  3. セキュリティグループを作成
  4. VPC・サブネット・SGのIDを記録

CI/CD

  1. AWSでデプロイ用ユーザーを作成、権限はこちら(少し過剰だけど)
  • AmazonEC2FullAccess
  • AdministratorAccess-AWSElasticBeanstalk
  1. キーをGitHub Secretsに入れる(先のネットワークのIDも)
  2. ファイルをレポジトリにアップロード
  3. GitHub Actionsを追加

これで自動ビルドとデプロイができて、デプロイ後ELBのSGルール変更でIP制御ができます。

注意点

  • Elastic Beanstalkでデプロイするためにポートを8080にするには必要だそうです。
if __name__ == '__main__':
    application.run_server(port=8080, debug=False)
  • Dashのインポートのフォーマットはこのようなりました。dash_core_componentsのような書き方はエラーまで行かないけど、警告が出します。
from dash import Dash, callback, dcc, html, dash_table
  • Flask(Dash)とPlotlyのライブラリはややこしくて、これで多分問題ないです。(必要がないライブラリも入っていると思いますが、一応これで無難)
Click>=7.0
dash>=1.6.0
dash-core-components>=1.5.0
dash-html-components>=1.0.1
dash-renderer>=1.2.0
Flask>=1.1.1
Flask-Compress>=1.4.0
future>=0.18.2
itsdangerous>=1.1.0
Jinja2>=2.10.3
MarkupSafe>=1.1.1
numpy>=1.16.5
pandas>=0.24.2
pytz>=2019.3
retrying>=1.3.3
six>=1.15.0
Werkzeug>=0.16.0
gunicorn>=19.5.0
plotly>=5.6.0
  • Elastic Beanstalkは環境名とアプリ名がある

  • ELBの手動作成はいらない

  • Elastic Beanstalkのログはかなり助かる

  • アプリの名前もapplication.pyが必要だそう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0