Vous avez déployé avec succès Django sur AWS Lambda. C'est facile avec le Framework sans serveur. L'URL et le référentiel sont ici. https://django-sls-helloworld.umihi.co/ https://github.com/umihico/django-sls-helloworld
Créez un projet par défaut pour sls et f1a13ba Après avoir confirmé l'opération, installez le plug-in de domaine personnalisé. 0970afe API Gateway n'a pas supprimé le nom d'étape à la fin de l'URL, et il semble être incompatible avec le routage de django, j'ai donc préparé un domaine personnalisé en premier.
$ serverless create --template aws-python3 --path django-sls-helloworld #Création de projet
$ cd django-sls-helloworld
$ serverless deploy #Déployer une fois
$ serverless invoke -f hello #Testez si cela fonctionne correctement
{
"statusCode": 200,
"body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}"
}
$ sls plugin install -n serverless-domain-manager #Installation du plug-in pour les paramètres du domaine
Modifiez 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
#On dit que cela prendra jusqu'à 40 minutes, mais la prochaine commande de déploiement peut être effectuée immédiatement. L'application du domaine prend juste du temps.
$ sls deploy
Ceci complète la page WEB avec des paramètres de domaine personnalisés. Ensuite, installez les bibliothèques requises pour Django. 80e8f1b
$ sls plugin install -n serverless-python-requirements
J'ai ajouté les fichiers suivants et modifié handler.py pour tester s'il était importé mais pas nécessaire. 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!",
Si vous déployez et que «serverless invoke -f hello» réussit, l'importation est réussie. Ensuite, créez un projet Django. 930a0c2 Ensuite, installez le plug-in WSGI pour la bibliothèque sans serveur. 52386e4
$ django-admin startproject django_sls_helloworld .
$ sls plugin install -n serverless-wsgi
Finalement, Correction du correctif pour installer PyMySQL au lieu de MySQLdb et la différence de version signalée à ce moment-là, 30361dd Ajoutez le nom du domaine défini dans ALLOWED_HOST et 1966857 Triez Lambda pour faire référence à 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, ...)
réduction
DATABASES = {
'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+ 'ENGINE': 'django.db.backends.mysql',
+ 'NAME': 'djangodemo',
}
}
réduction
- 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
réduction
functions:
hello:
- handler: handler.hello
+ handler: wsgi_handler.handler
# The following are a few example events you can configure
Après le déploiement, l'écran familier est apparu même à la destination du domaine personnalisé. c'est tout.
Au fait, puisqu'il s'agit d'un projet jetable, il est déployé avec DEBUG = True
et SECRET_KEY
est également posté sur Github, mais veuillez noter que c'est tabou en fonctionnement réel.
Recommended Posts