Automatisieren Sie lokale Integrationstests mit AWS SAM - AWS Serverless Application Model

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Automatisieren Sie lokale Integrationstests mit AWS SAM

Sie können Einführung in das Testen mit sam local invoke damit zwar Code manuell testen, AWS SAM aber Sie können Ihren Code auch mithilfe automatisierter Integrationstests testen. Integrationstests helfen Ihnen dabei, Probleme früh im Entwicklungszyklus zu erkennen, die Qualität Ihres Codes zu verbessern, Zeit zu sparen und gleichzeitig Kosten zu senken.

Um automatisierte Integrationstests zu erstellen AWS SAM, führen Sie zunächst Tests mit lokalen Lambda-Funktionen durch, bevor Sie sie in der AWS Cloud bereitstellen. Der Einführung in das Testen mit sam local start-lambda Befehl startet einen lokalen Endpunkt, der den Lambda-Aufrufendpunkt emuliert. Sie können ihn von Ihren automatisierten Tests aus aufrufen. Da dieser Endpunkt den Lambda-Aufrufendpunkt emuliert, können Sie Tests einmal schreiben und sie dann (ohne Änderungen) für die lokale Lambda-Funktion oder für eine bereitgestellte Lambda-Funktion ausführen. Sie können dieselben Tests auch für einen bereitgestellten AWS SAM Stack in Ihrer CI/CD-Pipeline ausführen.

So funktioniert der Prozess:

  1. Starten Sie den lokalen Lambda-Endpunkt.

    Starten Sie den lokalen Lambda-Endpunkt, indem Sie den folgenden Befehl in dem Verzeichnis ausführen, das Ihre AWS SAM Vorlage enthält:

    sam local start-lambda

    Mit diesem Befehl wird ein lokaler Endpunkt gestartethttp://127.0.0.1:3001, der emuliert AWS Lambda. Sie können Ihre automatisierten Tests für diesen lokalen Lambda-Endpunkt ausführen. Wenn Sie diesen Endpunkt mit dem AWS CLI oder SDK aufrufen, führt er lokal die in der Anfrage angegebene Lambda-Funktion aus und gibt eine Antwort zurück.

  2. Führen Sie einen Integrationstest für den lokalen Lambda-Endpunkt durch.

    In Ihrem Integrationstest können Sie das AWS SDK verwenden, um Ihre Lambda-Funktion mit Testdaten aufzurufen, auf eine Antwort zu warten und zu überprüfen, ob die Antwort Ihren Erwartungen entspricht. Um den Integrationstest lokal auszuführen, sollten Sie das AWS SDK so konfigurieren, dass es einen Lambda Invoke-API-Aufruf sendet, um den lokalen Lambda-Endpunkt aufzurufen, den Sie im vorherigen Schritt gestartet haben.

    Das Folgende ist ein Python-Beispiel (die AWS SDKs für andere Sprachen haben ähnliche Konfigurationen):

    import boto3 import botocore # Set "running_locally" flag if you are running the integration test locally running_locally = True if running_locally: # Create Lambda SDK client to connect to appropriate Lambda endpoint lambda_client = boto3.client('lambda', region_name="us-west-2", endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=botocore.client.Config( signature_version=botocore.UNSIGNED, read_timeout=15, retries={'max_attempts': 0}, ) ) else: lambda_client = boto3.client('lambda') # Invoke your Lambda function as you normally usually do. The function will run # locally if it is configured to do so response = lambda_client.invoke(FunctionName="HelloWorldFunction") # Verify the response assert response == "Hello World"

    Sie können diesen Code verwenden, um bereitgestellte Lambda-Funktionen zu testen, indem Sie running_locally auf False setzen. Dadurch wird das AWS SDK für die Verbindung AWS Lambda in der AWS Cloud eingerichtet.