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.
Einführung in das Testen mit sam local start-lambda
Benutze die AWS SAM CLI Unterbefehlsam local start-lambda
, um Ihre Lambda-Funktion über und aufzurufen. AWS CLI SDKs Dieser Befehl startet einen lokalen Endpunkt, der Lambda emuliert.
-
Für eine Einführung in die AWS SAM CLI, siehe Was ist der AWS SAM CLI?
-
Eine Liste der
sam local start-lambda
Befehlsoptionen finden Sie untersam local start-lambda.
Um es zu verwendensam local start-lambda
, installieren Sie AWS SAM CLI indem Sie die folgenden Schritte ausführen:
Vor der Verwendung empfehlen wirsam local start-lambda
, sich mit folgenden Grundkenntnissen vertraut zu machen:
Sam Local Start-Lambda verwenden
Wenn du rennst, ist der sam local start-lambda
AWS SAM CLI geht davon aus, dass Ihr aktuelles Arbeitsverzeichnis das Stammverzeichnis Ihres Projekts ist. Das AWS SAM CLI sucht zuerst nach einer template.[yaml|yml]
Datei in einem .aws-sam
Unterordner. Wenn sie nicht gefunden wird, AWS SAM CLI sucht nach einer template.[yaml|yml]
Datei in Ihrem aktuellen Arbeitsverzeichnis.
Um Sam Local Start-Lambda zu verwenden
-
Führen Sie im Stammverzeichnis Ihres Projekts Folgendes aus:
$
sam local start-lambda
<options>
-
Das AWS SAM CLI erstellt Ihre Lambda-Funktionen in einem lokalen Docker Behälter. Anschließend gibt er die lokale Adresse an Ihren HTTP Serverendpunkt aus. Im Folgenden wird ein Beispiel gezeigt:
$
sam local start-lambda
Initializing the lambda functions containers. Local image is up-to-date Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64. Mounting /Users/.../sam-app/hello_world as /var/task:ro,delegated, inside runtime container Containers Initialization is done. Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2023-04-13 07:25:43 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:3001 2023-04-13 07:25:43 Press CTRL+C to quit -
Verwenden Sie das AWS CLI oderSDKs, um Ihre Lambda-Funktion lokal aufzurufen.
Im Folgenden finden Sie ein Beispiel für die Verwendung von: AWS CLI
$
aws lambda invoke --function-name
StatusCode: 200 (END)"HelloWorldFunction"
--endpoint-url"http://127.0.0.1:3001"
--no-verify-ssl out.txtDas Folgende ist ein Beispiel für die Verwendung von AWS SDK for Python:
import boto3 from botocore.config import Config from botocore import UNSIGNED lambda_client = boto3.client('lambda', endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=Config(signature_version=UNSIGNED, read_timeout=1, retries={'max_attempts': 0} ) ) lambda_client.invoke(FunctionName="HelloWorldFunction")
Optionen
Geben Sie eine Vorlage an
Um eine Vorlage für das anzugeben AWS SAM CLI um zu referenzieren, verwenden Sie die --template
Option. Die AWS SAM CLI lädt nur diese AWS SAM Vorlage und die Ressourcen, auf die sie verweist. Im Folgenden wird ein Beispiel gezeigt:
$
sam local start-lambda --template
myTemplate.yaml
Bewährte Methoden
Wenn Ihre Anwendung ein .aws-sam
Verzeichnis hat, das nicht ausgeführt wirdsam build
, stellen Sie sicher, dass es sam build
jedes Mal ausgeführt wird, wenn Sie Ihren Funktionscode aktualisieren. Führen Sie dann sam local start-lambda
die Ausführung aus, um Ihren aktualisierten Funktionscode lokal zu testen.
Lokales Testen ist eine hervorragende Lösung für schnelles Entwickeln und Testen vor der Bereitstellung in der Cloud. Bei lokalen Tests wird jedoch nicht alles überprüft, z. B. die Berechtigungen zwischen Ihren Ressourcen in der Cloud. Testen Sie Ihre Anwendungen so oft wie möglich in der Cloud. Wir empfehlen sam sync
die Verwendung, um Ihre Cloud-Test-Workflows zu beschleunigen.
Weitere Informationen
Eine Liste aller sam local start-lambda
Optionen finden Sie untersam local start-lambda.