[PYTHON] Stellen Sie Django serverlos mit Lambda bereit

Sie haben Django erfolgreich für AWS Lambda bereitgestellt. Mit dem Serverless Framework ist das ganz einfach. Die URL und das Repository finden Sie hier. https://django-sls-helloworld.umihi.co/ https://github.com/umihico/django-sls-helloworld

Erstellen Sie ein Standardprojekt für sls und f1a13ba. Installieren Sie nach Bestätigung des Vorgangs das benutzerdefinierte Domänen-Plug-In. 0970afe API Gateway hat den Stufennamen am Ende der URL nicht entfernt und scheint mit dem Routing von Django nicht kompatibel zu sein. Daher habe ich zuerst eine benutzerdefinierte Domain vorbereitet.

$ serverless create --template aws-python3 --path django-sls-helloworld #Projekterstellung
$ cd django-sls-helloworld
$ serverless deploy #Einmal bereitstellen
$ serverless invoke -f hello #Testen Sie, ob es richtig funktioniert
{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}"
}
$ sls plugin install -n serverless-domain-manager #Plug-In-Installation für Domäneneinstellungen

Bearbeiten Sie serverless.yml. 603753b

serverless.yml




+ custom:
+   customDomain:
+     domainName: django-sls-helloworld.umihi.co
+     certificateName: umihi.co
+     basePath: ''
+     stage: ${opt:stage, self:provider.stage}
+     createRoute53Record: true
+     endpointType: 'edge'
+     securityPolicy: tls_1_2

provider:
  name: aws
  runtime: python3.8
$ sls create_domain
#Es wird gesagt, dass es bis zu 40 Minuten dauern wird, aber der nächste Bereitstellungsbefehl kann sofort ausgeführt werden. Das Anwenden der Domain dauert nur einige Zeit.
$ sls deploy

Dies vervollständigt die WEB-Seite mit benutzerdefinierten Domäneneinstellungen. Installieren Sie dann die erforderlichen Bibliotheken für Django. 80e8f1b

$ sls plugin install -n serverless-python-requirements

Ich habe die folgenden Dateien hinzugefügt und handler.py bearbeitet, um zu testen, ob es importiert, aber nicht benötigt wurde. ec47570

requirements.py


import os
import sys

requirements = os.path.join(
    os.path.split(__file__)[0],
    '.requirements',
)

if requirements not in sys.path:
    sys.path.append(requirements)

requirements.txt


Django
Werkzeug
PyMySQL

handler.py


import json
+ import requirements

def hello(event, context):
+     # testing import libraries
+     import django
+     import werkzeug
+     import pymysql
    body = {
        "message": "Go Serverless v1.0! Your function executed successfully!",

Wenn Sie bereitstellen und serverless invoke -f hello erfolgreich ist, ist der Import erfolgreich. Erstellen Sie als Nächstes ein Django-Projekt. 930a0c2 Installieren Sie dann das WSGI-Plug-In für die serverlose Bibliothek. 52386e4

$ django-admin startproject django_sls_helloworld .
$ sls plugin install -n serverless-wsgi

Schließlich, Das Update zur Installation von PyMySQL anstelle von MySQLdb und der zu diesem Zeitpunkt angegebene Versionsunterschied 30361dd wurden behoben Fügen Sie den Namen der Domain hinzu, die in ALLOWED_HOST und [1966857] festgelegt ist (https://github.com/umihico/django-sls-helloworld/commit/1966857aa6a5addc81b153281b27e36e13eb01a2). Sortieren Sie Lambda nach WSGI. 1dce3d3

django_sls_helloworld/settings.py


import os
+ import pymysql
+ 
+ pymysql.version_info = (1, 4, 2, "final", 0)
+ pymysql.install_as_MySQLdb()
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)

Kürzung

DATABASES = {
    'default': {
-         'ENGINE': 'django.db.backends.sqlite3',
-         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+         'ENGINE': 'django.db.backends.mysql',
+         'NAME': 'djangodemo',
    }
}

Kürzung

- ALLOWED_HOSTS = []
+ ALLOWED_HOSTS = ["django-sls-helloworld.umihi.co"]

serveless.yml


  endpointType: 'edge'
  securityPolicy: tls_1_2
+ wsgi:
+   app: django_sls_helloworld.wsgi.application
+   packRequirements: false

Kürzung

functions:
  hello:
-     handler: handler.hello
+     handler: wsgi_handler.handler
#    The following are a few example events you can configure

Nach der Bereitstellung wurde der vertraute Bildschirm auch am benutzerdefinierten Domänenziel angezeigt. das ist alles. Da es sich um ein Wegwerfprojekt handelt, wird es übrigens mit "DEBUG = True" bereitgestellt und "SECRET_KEY" wird ebenfalls auf Github veröffentlicht. Beachten Sie jedoch, dass es im tatsächlichen Betrieb tabu ist.

スクリーンショット 2020-06-20 11.14.30.png

Recommended Posts

Stellen Sie Django serverlos mit Lambda bereit
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
Stellen Sie die Django-Anwendung mit Docker bereit
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Django Heroku Deploy 1
Internationalisierung mit Django
Django Heroku Deploy 2
CRUD mit Django
Regelmäßiges Serverless Scraping mit AWS Lambda + Scrapy Teil 1.8
Serverlose Anwendung mit AWS SAM! (APIGATEWAY + Lambda (Python))
Die Lambda-Funktion bietet Best Practice mit CircleCI + Lamvery
Authentifizieren Sie Google mit Django
Django 1.11 wurde mit Python3.6 gestartet
Laden Sie Dateien mit Django hoch
Bilden Sie Lambda-Schichten mit Lambda
Entwicklungsverdauung mit Django
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Verwenden Sie Gentelella mit Django
Twitter OAuth mit Django
Erste Schritte mit Django 1
Mail mit Django senden
Datei-Upload mit Django
Verwenden Sie WENIGER mit Django
Pooling mechanisieren mit Django
Verwenden Sie MySQL mit Django
Django ab heute
Erste Schritte mit Django 2
Erstellen Sie eine Python-Version der Lambda-Funktion (+ Lambda-Schicht) mit Serverless Framework
Stellen Sie eine vorhandene App mit Docker + Pyenv-Virtualenv + Uwsgi + Django bereit
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Stellen Sie Flask jetzt mit ZEIT bereit
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Mit Python mit Kelch ganz einfach ohne Server
Minimale Konfigurations-Website-Umgebung mit Django
Erstellen Sie eine API mit Django
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Python3 + Django ~ Mac ~ mit Apache
Schreiben Sie einfach if-elif mit Lambda
Erste Schritte mit Python Django (1)
Erstellen Sie eine Homepage mit Django
Fangen Sie mit Django an! ~ Tutorial ④ ~
Erste Schritte mit Python Django (4)
Python-Kompilierung mit pyqt deploy
Erstellen Sie eine Webanwendung mit Django
Erste Schritte mit Python Django (3)
Kombinieren Sie Fast API mit Django ORM
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Verwenden Sie Django, um Tweet-Daten zu speichern
PyTorch mit AWS Lambda [Lambda-Import]
Führen Sie eine AES-Verschlüsselung mit DJango durch
Einführung in Python Django (6)
Kombiniere zwei Bilder mit Django
Erste Schritte mit Django mit PyCharm
Echtzeit-Web mit Django-Kanälen
Stellen Sie das Django-Projekt für Heroku bereit
Doppelte Submit-Unterdrückung mit Django
Django REST Framework mit Vue.js