- 公開日:2018年11月25日
- 最終更新日:2018年11月25日
記事概要
Aws lambdaでflaskアプリをdeployする方法を記載した記事です。
記事の対象者
- Aws lambdaでflaskをdeployしたい
- flaskを使った実装を理解している
環境
- flask
- python3.6
- aws lambda
- zappa
- doorkeeper 16.1.0
flaskアプリ作成の準備
アプリ構築用のフォルダを作成します。
mkdir flask-app
続いて仮想環境を構築します。Zappaを使ってbuildとdeployをするので、仮想環境の構築が必須になります。
仮想環境の構築には、virtualenvを使います。virtualenvはPythonの仮想的な環境を作ることができます。
Zappaがpyenvでdeployできるかどうかは確認していません。
virtualenvは、プロジェクトごとにPythonのバージョンを変えたり、必要なパッケージを分けてインストールして動かす事もできます。
cd flask-app/ $ virtualenv .env Using base prefix '/Users/{user_name}/.pyenv/versions/3.6.3' New python executable in /Users/{user_name}/workspace/flask-app/.env/bin/python3.6 Also creating executable in /Users/{user_name}/workspace/flask-app/.env/bin/python Installing setuptools, pip, wheel... done.
仮想環境に入ります。
source .env/bin/activate (.env)
terminalのプロンプトの最初が(.env)に変わってれば入れています。
確認のために仮想環境を出ます。
deactivate
terminalのプロンプトから(.env)が消えていれば、仮想環境を出ています。
flaskアプリの作成
アプリを作成します。requirements.txtを作成します。
// 仮想環境に入る source .env/bin/activate touch requirements.txt
requirements.txtに必要なパッケージを記載します。
flask zappa
ライブラリをpipでinstallします。
pip install -r requirements.txt
Hello worldのアプリを作成します。
from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def hello_world(): return jsonify({"message": "Hello World!"}) if __name__ == '__main__': app.run()
ローカルで動作することを確認します。
http://localhost:5000/でブラウザにアクセスします。
{"message":"Hello World!"}
問題ありませんね。
flaskアプリをlambdaにdeploy
ZAPPAを使います。
$ zappa init // 全てデフォルト
zappa_settings.jsonが作成されていることを確認します。
$ ls -l total 24 -rw-r--r--@ 1 edy staff 178 11 24 21:57 app.py -rw-r--r-- 1 edy staff 11 11 24 21:49 requirements.txt -rw-r--r-- 1 edy staff 240 11 24 23:09 zappa_settings.json
内容を確認すると、色々と設定が記載されているはずです。
deployします。
zappa deploy dev
deployします。
The role defined for the function cannot be assumed by Lambdaというエラーが表示されて
deployに失敗することがありますが、何回か叩くとうまくいくはずです。
URLが返却されたらURLをブラウザで叩いてみてください。
{"message":"Hello World!"}
上手くいきました。
flaskアプリをlambdaから削除
削除もコマンドで行えます。
zappa undeploy
これで削除されます。便利ですね。
まとめ
lambdaを使うと低コストでサーバーを利用することができます。
シンプルなAPIを作成するなら、これで十分です。機械学習のAPIとかなら、十分ですね。いやー、凄い時代になりました。
以上です。
Antalya
返信削除Trabzon
Niğde
Maraş
Antep
XGWHG
Isparta
返信削除Tunceli
Yozgat
Çorum
Konya
DNFEF
Bayburt
返信削除Kars
Batman
Urfa
İzmir
PV63
Burdur
返信削除Giresun
Sakarya
Artvin
Mardin
AJYHC
Ağrı
返信削除Diyarbakır
Bolu
Elazığ
Siirt
2ZOYO4
Afyon
返信削除Balıkesir
Kırklareli
Amasya
Bilecik
O82WB
Samsun
返信削除Nevşehir
Van
Bartın
Edirne
WBBW
İstanbul
返信削除Sivas
Kırıkkale
Zonguldak
Iğdır
K4NO1H
Bursa
返信削除Mersin
izmir
Rize
Antep
51SOZ
CE1BF
返信削除https://referanskodunedir.com.tr/
2A5BB
返信削除referanskodunedir.com.tr
A177C
返信削除Coin Nasıl Oynanır
Kaspa Coin Hangi Borsada
Binance Madenciliği Nedir
Binance Hesap Açma
Okex Borsası Güvenilir mi
Milyon Coin Hangi Borsada
Binance Sahibi Kim
Mith Coin Hangi Borsada
Pepecoin Coin Hangi Borsada