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.
Recommended Posts