Kategorien
Automatisierung Uncategorized

Serverlose Backends mit AWS Chalice

Es gibt viele Möglichkeiten AWS Ressourcen zu erstellen. Sei es mit einem Infrastructure as Code Tool wie Terraform oder Cloudformation, mit Configuration Management Tools wie Ansible oder auch über spezielle Werkzeuge wie das Cloud Development Kit oder Amplify.

Bei jeder dieser Möglichkeiten muss man Rollen und Rechte, Events und Abhängigkeiten eigenständig definieren. Dies kann einige Zeit in Anspruch nehmen.

Hier kommt Chalice ins Spiel, welches ein Python Framework für serverlose Applikationen ist. Im ersten Moment hat mich die Syntax aufgrund der Annotationen an das express Framework für NodeJS oder auch Spring für Java erinnert.

from chalice import Chalice

app = Chalice(app_name="helloworld")

@app.route("/")
def index():
    return {"hello": "world"}

@app.on_s3_event(bucket='mybucket')
def s3_handler(event):
    print(event.bucket, event.key)

Mit diesen wenigen Zeilen werden die folgenden Ressourcen erstellt:

  1. API Gateway mit der Route „/“,
  2. eine Lambda Funktion, die ausgelöst wird, wenn das API Gateway aufgerufen wird,
  3. alle benötigten Rechte und Rollen,
  4. S3 Event Handler für den Bucket „mybucket“ (Dieser muss schon existieren)

Hierdurch wird sehr viel Aufwand reduziert und es kann in kürzester Zeit ein serverloses Backend aufgebaut werden. Außerdem ist es auch möglich mit Chalice Continous Deployment Pipelines aufzubauen.

Mehr Informationen zur Installation und Einrichtung können der Projektdokumentation entnommen werden.