Chalice est un framework pour écrire des applications sans serveur en python. Il vous permet de créer et de déployer rapidement des applications qui utilisent AWS Lambda. Il fournit :
Vous pouvez créer des API Rest :
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
@ app . route ( "/" )
def index ():
return { "hello" : "world" }
Tâches exécutées périodiquement :
from chalice import Chalice , Rate
app = Chalice ( app_name = "helloworld" )
# Automatically runs every 5 minutes
@ app . schedule ( Rate ( 5 , unit = Rate . MINUTES ))
def periodic_task ( event ):
return { "hello" : "world" }
Vous pouvez connecter une fonction lambda à un événement S3 :
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
# Whenever an object is uploaded to 'mybucket'
# this lambda function will be invoked.
@ app . on_s3_event ( bucket = 'mybucket' )
def handler ( event ):
print ( "Object uploaded for bucket: %s, key: %s"
% ( event . bucket , event . key ))
Ainsi qu'une file d'attente SQS :
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
# Invoke this lambda function whenever a message
# is sent to the ``my-queue-name`` SQS queue.
@ app . on_sqs_message ( queue = 'my-queue-name' )
def handler ( event ):
for record in event :
print ( "Message body: %s" % record . body )
Et plusieurs autres ressources AWS.
Une fois que vous avez écrit votre code, il vous suffit d'exécuter chalice deploy
et Chalice s'occupe du déploiement de votre application.
$ déploiement du calice ... https://point de terminaison/dev $ curl https://endpoint/api {"Bonjour le monde"}
Opérationnel en moins de 30 secondes. Essayez ce projet et partagez vos commentaires avec nous ici sur Github.
La documentation est disponible ici.
Dans ce didacticiel, vous utiliserez l'utilitaire de ligne de commande chalice
pour créer et déployer une API REST de base. Ce démarrage rapide utilise Python 3.7, mais AWS Chalice prend en charge toutes les versions de Python prises en charge par AWS Lambda, qui incluent Python 3.7 à Python 3.12.
Vous pouvez trouver les dernières versions de Python sur la page de téléchargement de Python.
Pour installer Chalice, nous allons d'abord créer et activer un environnement virtuel en python3.7 :
$ python3 --version Python 3.7.3 $ python3 -m venv venv37 $. venv37/bin/activer
Ensuite, nous installerons Chalice en utilisant pip
:
$ python3 -m pip installer le calice
Vous pouvez vérifier que Chalice est installé en exécutant :
$ calice --aide Utilisation : calice [OPTIONS] COMMANDE [ARGS]... ...
Avant de pouvoir déployer une application, assurez-vous d'avoir configuré les informations d'identification. Si vous avez déjà configuré votre machine pour exécuter boto3 (le kit AWS SDK pour Python) ou l'AWS CLI, vous pouvez ignorer cette section.
Si c'est la première fois que vous configurez des informations d'identification pour AWS, vous pouvez suivre ces étapes pour démarrer rapidement :
$ mkdir ~/.aws $ chat >> ~/.aws/config [défaut] aws_access_key_id = VOTRE_ACCESS_KEY_HERE aws_secret_access_key=VOTRE_SECRET_ACCESS_KEY région = VOTRE_REGION (comme us-west-2, us-west-1, etc.)
Si vous souhaitez plus d'informations sur toutes les méthodes prises en charge pour configurer les informations d'identification, consultez la documentation boto3.
La prochaine chose que nous ferons est d'utiliser la commande chalice
pour créer un nouveau projet :
$ calice nouveau projet helloworld
Cela créera un répertoire helloworld
. Cd dans ce répertoire. Vous verrez que plusieurs fichiers ont été créés pour vous :
$ cd bonjour le monde $ ls -la drwxr-xr-x .calice -rw-r--r-- app.py -rw-r--r-- conditions.txt
Vous pouvez ignorer le répertoire .chalice
pour l'instant, les deux fichiers principaux sur lesquels nous allons nous concentrer sont app.py
et requirements.txt
.
Jetons un coup d'œil au fichier app.py
:
from chalice import Chalice
app = Chalice ( app_name = 'helloworld' )
@ app . route ( '/' )
def index ():
return { 'hello' : 'world' }
La commande new-project
a créé un exemple d'application qui définit une vue unique, /
, qui, une fois appelée, renverra le corps JSON {"hello": "world"}
.
Déployons cette application. Assurez-vous que vous êtes dans le répertoire helloworld
et exécutez chalice deploy
:
$ déploiement du calice Création du package de déploiement. Création d'un rôle IAM : helloworld-dev Création de la fonction lambda : helloworld-dev Création de l'API Rest Moyens déployés : - ARN Lambda : arn:aws:lambda:us-west-2:12345:function:helloworld-dev - URL de l'API de repos : https://abcd.execute-api.us-west-2.amazonaws.com/api/
Vous disposez désormais d'une API opérationnelle utilisant API Gateway et Lambda :
$ boucle https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/ {"Bonjour le monde"}
Essayez d'apporter une modification au dictionnaire renvoyé à partir de la fonction index()
. Vous pouvez ensuite redéployer vos modifications en exécutant chalice deploy
.
Vous avez maintenant créé votre première application en utilisant chalice
. Vous pouvez apporter des modifications à votre fichier app.py
et réexécuter chalice deploy
pour redéployer vos modifications.
À ce stade, vous pouvez suivre plusieurs étapes suivantes.
Si vous avez fini d'expérimenter avec Chalice et que vous souhaitez effectuer un nettoyage, vous pouvez utiliser la commande chalice delete
, et Chalice supprimera toutes les ressources qu'il a créées lors de l'exécution de la commande chalice deploy
.
$ calice supprimer Suppression de l'API Rest : abcd4kwyl4 Suppression de la fonction aws:arn:lambda:region:123456789:helloworld-dev Suppression du rôle IAM helloworld-dev
Nous aimerions également avoir de vos nouvelles. Veuillez créer tous les problèmes Github pour les fonctionnalités supplémentaires que vous aimeriez voir sur https://github.com/aws/chalice/issues. Vous pouvez également discuter avec nous sur gitter : https://gitter.im/awslabs/chalice