LoginSignup
0
0

More than 1 year has passed since last update.

DjangoをLambdaで動かそうと思ったけどやっぱり向かないと思った話

Last updated at Posted at 2021-08-10

はじめに

DjangoでWebアプリを作成した際に、サーバーを借りると高くつくので、何とかLambdaに乗っけて実行課金にできないかと試した記録です。
結論から言うと上手くいかなかったのですが、何か役立つかもしれないので書き残しておきます。
無事動かすことができましたので、こちらの記事もご覧ください。→https://qiita.com/kerorinfather/items/9fc0c6e2d68950fde50f

DjangoをLambdaで動かすまでの手順

以下のサイトを参考に実施しました。相違点としては、以下のサイトではMySQLにて動かしていますが、私はSQLiteにて試しています。(ただし、うまくいきませんでした。)

問題点

Werkzeugが最新バージョンだと動かない

Python用のWSGIユーティリティライブラリであるWerkzeugを、最新バージョンにしていると動かないです。
requirements.txtにて、バージョンを指定してあげる必要があります。

requirements.txt
Django
Werkzeug==1.0.1

Pythonが最新バージョンだと動かない

上記のエラーを解決後、また別のエラーになりました。
原因がよく分からなかったですが、ランタイムをPython 3.6にしたら解決しました。

MySQLのバージョンが古いと言われる

Lambdaで使われている環境には、標準でSQLite 3.7.17がインストールされていますが、Djangoで利用しようとした際に新しいバージョンにしろと言われます。
Djangoのバージョンを下げて対応しようかと考えましたが、Django3の場合最低でもSQLite 3.8.3が要求されるので、諦めました。。。

Serverless Frameworkに依存している

DjangoはWSGI(Web Server Gateway Interface)に対応するため、同じくWebサーバ側もWSGIに対応していれば実行可能です。しかし、LambdaでWSGIを実現するために、Serverless Frameworkのプラグインであるserverless-wsgiを利用しているため、Serverless Frameworkから離れられない状態です。

何が言いたいかというと、DockerイメージでSQLiteのバージョンを上げたものを作成して、Lambdaにデプロイすればいいと考えたのですが、その場合はserverless-wsgiを利用できないので詰む、ということです。ほかのライブラリも探しましたが見つからないので、自力でWSGIに対応させるしかなさそう。

おわりに

Lambdaを使うなら、素直にFlaskなどの軽量フレームワークを使うのがよさそうです。

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