Blog

Erhöhen Sie Ihre Entwicklungsgeschwindigkeit mit AWS Lambda Powertools

Joris Conijn

Joris Conijn

Aktualisiert Oktober 20, 2025
3 Minuten

Es ist nicht möglich, sich alle Methoden und Eigenschaften aller Klassen zu merken, die Sie schreiben und verwenden.

Das ist der Grund, warum ich in meiner IDE gerne Typ-Hinweise habe. Ich nehme mir sogar Zeit, um sicherzustellen, dass es funktioniert. Ich habe sogar einen Blogbeitrag darüber geschrieben, wie man es einrichtet, als ich mit einer neuen Sprache experimentiert habe.

In diesem Beitrag gebe ich Ihnen ein paar Tipps, mit denen Sie schneller entwickeln können. Durch die Nutzung von Type Hinting mit den AWS Lambda Powertools.

LambdaContext

Wenn Sie AWS Lambda-Funktionen entwickeln, erhalten Sie eine event und eine context Eigenschaft. Wenn Sie Metadaten aus dem Kontext benötigen, können Sie die Dokumentation lesen oder Type Hinting verwenden.

Beispiel für LambdaContext-Typ-Hinweise

Wie Sie im Beispiel sehen können, hilft Ihnen die IDE, die richtige Methode oder Eigenschaft zu finden. Aber was ist mit der event? Das Beispiel sagt Ihnen, dass wir eine Dict[str, Any] erwarten, aber das hängt davon ab, wie Sie die Lambda-Funktion aufrufen.

Ereignis-Quelldaten-Klassen

In den meisten Fällen wissen Sie, wie Sie Ihre Lambda-Funktion aufrufen. Zum Beispiel könnte eine API Gateway Proxy-Integration die Funktion auslösen:

API Gateway Proxy-Integration Typ-Hinweis-Beispiel

Neben der Verwendung der Datenklasse können Sie auch einen Dekorator verwenden. Dann verwenden Sie den Typ-Hinweis in der Methodensignatur.

from aws_lambda_powertools.utilities.data_classes import event_source, APIGatewayProxyEvent

@event_source(data_class=APIGatewayProxyEvent)
def lambda_handler(event: APIGatewayProxyEvent, context):
    if 'helloworld' in event.path and event.http_method == 'GET':
        do_something_with(event.body, user)

Eine vollständige Liste finden Sie auf der AWS-Github-Seite Unterstützte Ereignisquellen.

Was ist mit meinen benutzerdefinierten Ereignissen?

Sie könnten auch eine Lambda-Funktion mit einer benutzerdefinierten Nutzlast aufrufen. Dieses Ereignis wird nicht als Datenklasse unterstützt.

Nehmen wir an, wir erhalten eine Bestellung mit einem oder mehreren Artikeln. Mit dem Parser können Sie das Ereignis in einem Modell definieren. Und Sie können dieses Modell für den Typ-Hinweis verwenden.

from typing import Optional
from aws_lambda_powertools.utilities.parser import event_parser, BaseModel, ValidationError
from aws_lambda_powertools.utilities.typing import LambdaContext

import json

class OrderItem(BaseModel):
    id: int
    quantity: int
    description: str

class Order(BaseModel):
    id: int
    description: str
    items: List[OrderItem] # use nesting models
    optional_field: Optional[str] # this field may or may not be available when parsing

@event_parser(model=Order)
def handler(event: Order, context: LambdaContext):
    print(event.id)
    print(event.description)
    print(event.items)

    order_items = [items for item in event.items]
    ...

Aber mein benutzerdefiniertes Ereignis befindet sich in einer bestehenden Ereignisquelle

In diesem Fall müssen Sie die Ereignisquelle als Hüllkurve angeben.

from aws_lambda_powertools.utilities.parser import event_parser, parse, BaseModel, envelopes
from aws_lambda_powertools.utilities.typing import LambdaContext

class UserModel(BaseModel):
    username: str
    password1: str
    password2: str

# Same behavior but using our decorator
@event_parser(model=UserModel, envelope=envelopes.EventBridgeEnvelope)
def handler(event: UserModel, context: LambdaContext):
    assert event.password1 == event.password2

Fazit

Wenn Sie diesen Blog nützlich fanden, empfehle ich Ihnen, die offizielle Dokumentation zu lesen. Es ist eine kleine Investition, die sich durch schönen und sauberen Code auszahlt.

Sie müssen sich nicht alle Methoden und Eigenschaften merken und wissen, welche Typen sie erwarten und zurückgeben. Eine IDE kann das für Sie erledigen, so dass Sie sich auf die eigentliche Geschäftslogik konzentrieren können.

Verfasst von

Joris Conijn

Joris is the AWS Practise CTO of the Xebia Cloud service line and has been working with the AWS cloud since 2009 and focussing on building event-driven architectures. While working with the cloud from (almost) the start, he has seen most of the services being launched. Joris strongly believes in automation and infrastructure as code and is open to learning new things and experimenting with them because that is the way to learn and grow.

Contact

Let’s discuss how we can support your journey.