Skip to content

273Do/Sls-Python-Docker-TPL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Serverless-Python(Flask)-Docker-Template

ローカルの Docker 環境で AWS Lambda(Serverless Framework)と Python(Flask)でサーバーレス API を実装,デプロイします.

使い方

事前準備.

  • AWS でアクセスキーとシークレットキーを発行してください.

  • Mac を使用している場合は設定から AirPlay レシーバーを切っておきましょう. (ポートが Flask のデフォルトポートである 5000 番と重複しているため)

  1. リポジトリを用意しましたのでクローンしてください.

  2. docker-compose.ymlcontainer_nameにコンテナ名を設定し,docker compose build で Docker イメージを構築します.

  3. docker compose up -dでデタッチドモードでコンテナを起動します.

  4. docker exec -it 設定したコンテナ名 /bin/bashでコンテナの中に入ります.

  5. serverless でプロジェクトを作成します.

    1. 今回は Flask で実装してみたいのでAWS / Python / Flask APIを選択します.
    2. プロジェクト名を設定します.
    3. Serverless Framework のログインを求められますので,表示されたリンクからログインしてください(Login/Registerを選びます).
    4. アプリを作成するか既存のアプリを選択するか聞かれますのが,Skip Adding An Appを選択します.
    5. AWS の認証を求められますので,Save AWS Credentials in a Local Profileを選択して事前準備で用意したアクセスキーを入力します.
    6. 作成されたディレクトリに移動し,npm iを実行します.
  6. serverless.ymlで Python のバージョン(runtimeの部分)をpython3.9に変更し,customwsgipythonBin: /usr/bin/python3を追加します.

  7. docker-compose.ymlのコメントアウトされている部分を解除し,FLASK_APPに app.py のパスを指定します.

  8. exitでコンテナから抜け, docker compose downでコンテナの終了させます.

  9. docker compose upでコンテナ内の flask アプリがローカルで起動します.この時点で http://localhost:5000 を GET メソッドで叩くと,json でHello from root!とレスポンスが返ってきます.

  10. コンテナの中に入って,aws configureコマンドで AWS の認証をしておきましょう.region(AWS サーバー)や output format(デフォルトは json)はお好みでどうぞ.

  11. デプロイする時はコンテナの中に入り,serverless.ymlのあるディレクトリに移動し,sls deployを実行します.すると AWS に自動でデプロイされます.デプロイ後,ターミナルにデプロイ先のリンクが表示されます.AWS コンソールからも確認できます.また,Lambda と API Gateway が作成,接続されているのを確認できます.

About

Implement and deploy a serverless API using AWS Lambda (Serverless Framework) and Python (Flask) in a local Docker environment.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors