Chalice ist ein Framework zum Schreiben serverloser Apps in Python. Damit können Sie schnell Anwendungen erstellen und bereitstellen, die AWS Lambda verwenden. Es bietet:
Sie können Rest-APIs erstellen:
from chalice import Chalice
app = Chalice ( app_name = "helloworld" )
@ app . route ( "/" )
def index ():
return { "hello" : "world" }
Aufgaben, die regelmäßig ausgeführt werden:
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" }
Sie können eine Lambda-Funktion mit einem S3-Ereignis verbinden:
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 ))
Sowie eine SQS-Warteschlange:
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 )
Und mehrere andere AWS-Ressourcen.
Sobald Sie Ihren Code geschrieben haben, führen Sie einfach chalice deploy
aus und Chalice kümmert sich um die Bereitstellung Ihrer App.
$ chalice bereitstellen ... https://endpoint/dev $ curl https://endpoint/api {"Hallo": "Welt"}
In weniger als 30 Sekunden betriebsbereit. Probieren Sie dieses Projekt aus und teilen Sie uns Ihr Feedback hier auf Github mit.
Die Dokumentation finden Sie hier.
In diesem Tutorial verwenden Sie das Befehlszeilendienstprogramm chalice
, um eine grundlegende REST-API zu erstellen und bereitzustellen. Dieser Schnellstart verwendet Python 3.7, aber AWS Chalice unterstützt alle von AWS Lambda unterstützten Python-Versionen, einschließlich Python 3.7 bis Python 3.12.
Die neuesten Versionen von Python finden Sie auf der Python-Downloadseite.
Um Chalice zu installieren, erstellen und aktivieren wir zunächst eine virtuelle Umgebung in Python3.7:
$ python3 --version Python 3.7.3 $ python3 -m venv venv37 $ . venv37/bin/activate
Als nächstes installieren wir Chalice mit pip
:
$ python3 -m pip install chalice
Sie können überprüfen, ob Chalice installiert ist, indem Sie Folgendes ausführen:
$ chalice --help Verwendung: Kelch [OPTIONEN] BEFEHL [ARGS]... ...
Bevor Sie eine Anwendung bereitstellen können, stellen Sie sicher, dass Ihre Anmeldeinformationen konfiguriert sind. Wenn Sie Ihren Computer zuvor für die Ausführung von boto3 (dem AWS SDK für Python) oder der AWS CLI konfiguriert haben, können Sie diesen Abschnitt überspringen.
Wenn Sie zum ersten Mal Anmeldeinformationen für AWS konfigurieren, können Sie die folgenden Schritte ausführen, um schnell loszulegen:
$ mkdir ~/.aws $ cat >> ~/.aws/config [Standard] aws_access_key_id=YOUR_ACCESS_KEY_HERE aws_secret_access_key=YOUR_SECRET_ACCESS_KEY region=IHRE_REGION (z. B. us-west-2, us-west-1 usw.)
Weitere Informationen zu allen unterstützten Methoden zum Konfigurieren von Anmeldeinformationen finden Sie in den boto3-Dokumenten.
Als nächstes verwenden wir den Befehl chalice
, um ein neues Projekt zu erstellen:
$ chalice neues Projekt hallowelt
Dadurch wird ein helloworld
-Verzeichnis erstellt. CD in dieses Verzeichnis. Sie werden sehen, dass mehrere Dateien für Sie erstellt wurden:
$ cd hallowelt $ ls -la drwxr-xr-x .chalice -rw-r--r-- app.py -rw-r--r-- Anforderungen.txt
Sie können das Verzeichnis .chalice
vorerst ignorieren. Die beiden Hauptdateien, auf die wir uns konzentrieren, sind app.py
und requirements.txt
.
Werfen wir einen Blick auf die Datei app.py
:
from chalice import Chalice
app = Chalice ( app_name = 'helloworld' )
@ app . route ( '/' )
def index ():
return { 'hello' : 'world' }
Der Befehl new-project
hat eine Beispiel-App erstellt, die eine einzelne Ansicht definiert, /
, die beim Aufruf den JSON-Text {"hello": "world"}
zurückgibt.
Lassen Sie uns diese App bereitstellen. Stellen Sie sicher, dass Sie sich im helloworld
-Verzeichnis befinden, und führen Sie chalice deploy
aus:
$ chalice bereitstellen Bereitstellungspaket erstellen. IAM-Rolle erstellen: helloworld-dev Lambda-Funktion erstellen: helloworld-dev Rest-API erstellen Eingesetzte Ressourcen: - Lambda ARN: arn:aws:lambda:us-west-2:12345:function:helloworld-dev - Rest-API-URL: https://abcd.execute-api.us-west-2.amazonaws.com/api/
Sie haben jetzt eine API mit API Gateway und Lambda eingerichtet und ausgeführt:
$ Curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/ {"Hallo": "Welt"}
Versuchen Sie, über die Funktion index()
eine Änderung am zurückgegebenen Wörterbuch vorzunehmen. Anschließend können Sie Ihre Änderungen erneut bereitstellen, indem Sie chalice deploy
ausführen.
Sie haben jetzt Ihre erste App mit chalice
erstellt. Sie können Änderungen an Ihrer app.py
Datei vornehmen und chalice deploy
erneut ausführen, um Ihre Änderungen erneut bereitzustellen.
An diesem Punkt können Sie mehrere nächste Schritte unternehmen.
Wenn Sie mit dem Experimentieren mit Chalice fertig sind und aufräumen möchten, können Sie den Befehl chalice delete
verwenden. Chalice löscht dann alle Ressourcen, die beim Ausführen des Befehls chalice deploy
erstellt wurden.
$ Kelch löschen Rest-API wird gelöscht: abcd4kwyl4 Funktion aws:arn:lambda:region:123456789:helloworld-dev wird gelöscht Löschen der IAM-Rolle helloworld-dev
Wir würden uns auch freuen, von Ihnen zu hören. Bitte erstellen Sie alle Github-Probleme für zusätzliche Funktionen, die Sie sehen möchten, unter https://github.com/aws/chalice/issues. Sie können auch mit uns auf Gitter chatten: https://gitter.im/awslabs/chalice