https://github.com/273do/sls-python-docker-tpl
Implement and deploy a serverless API using AWS Lambda (Serverless Framework) and Python (Flask) in a local Docker environment.
https://github.com/273do/sls-python-docker-tpl
Last synced: 4 months ago
JSON representation
Implement and deploy a serverless API using AWS Lambda (Serverless Framework) and Python (Flask) in a local Docker environment.
- Host: GitHub
- URL: https://github.com/273do/sls-python-docker-tpl
- Owner: 273Do
- Created: 2024-10-03T14:07:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-03T14:25:26.000Z (over 1 year ago)
- Last Synced: 2025-12-22T21:04:53.988Z (5 months ago)
- Language: Dockerfile
- Homepage: https://qiita.com/273Do/items/520c6fb22dda5c38ef85
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Serverless-Python(Flask)-Docker-Template
ローカルの Docker 環境で AWS Lambda(Serverless Framework)と Python(Flask)でサーバーレス API を実装,デプロイします.
# 使い方
事前準備.
- AWS でアクセスキーとシークレットキーを発行してください.
- Mac を使用している場合は設定から AirPlay レシーバーを切っておきましょう.
(ポートが Flask のデフォルトポートである 5000 番と重複しているため)
1. リポジトリを用意しましたのでクローンしてください.
2. `docker-compose.yml`の`container_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`に変更し,`custom`の`wsgi`に`pythonBin: /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 が作成,接続されているのを確認できます.