Einführung in das Testen mit sam local generate-event - 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.

Einführung in das Testen mit sam local generate-event

Verwenden Sie die AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAM CLIsam local generate-eventUnterbefehl zum Generieren von Nutzdatenbeispielen für Ereignisse, die unterstützt werden. AWS-Services Sie können diese Ereignisse dann ändern und zum Testen an lokale Ressourcen weitergeben.

Ein Ereignis ist ein JSON Objekt, das generiert wird, wenn ein eine Aktion oder Aufgabe AWS-Service ausführt. Diese Ereignisse enthalten spezifische Informationen, z. B. die verarbeiteten Daten oder den Zeitstempel des Ereignisses. Die meisten AWS-Services generieren Ereignisse, und die Ereignisse jedes Dienstes sind für den jeweiligen Dienst eindeutig formatiert.

Von einem Dienst generierte Ereignisse werden als Ereignisquelle an andere Dienste weitergegeben. Beispielsweise kann ein Artikel, der in einem Amazon Simple Storage Service (Amazon S3) -Bucket platziert wird, ein Ereignis auslösen. Dieses Ereignis kann dann als Ereignisquelle für eine AWS Lambda Funktion zur weiteren Verarbeitung der Daten verwendet werden.

Ereignisse, die Sie mit generieren, sam local generate-event werden in derselben Struktur formatiert wie die tatsächlichen Ereignisse, die vom AWS Service erstellt wurden. Sie können den Inhalt dieser Ereignisse ändern und sie zum Testen von Ressourcen in Ihrer Anwendung verwenden.

Um es zu verwendensam local generate-event, installieren Sie das AWS SAM CLI indem Sie Folgendes ausführen:

Vor der Verwendung sam local generate-event empfehlen wir ein grundlegendes Verständnis der folgenden Punkte:

Generieren Sie Beispielereignisse

Verwenden Sie die AWS SAM CLI sam local generate-eventUnterbefehl zum Generieren von Ereignissen für unterstützte AWS-Services.

Um eine Liste der unterstützten zu sehen AWS-Services
  1. Führen Sie Folgendes aus:

    $ sam local generate-event
  2. Die Liste der unterstützten AWS-Services wird angezeigt. Im Folgenden wird ein Beispiel gezeigt:

    $ sam local generate-event ... Commands: alb alexa-skills-kit alexa-smart-home apigateway appsync batch cloudformation ...
Um ein lokales Ereignis zu generieren
  1. Führen Sie den unterstützten Dienstnamen aus sam local generate-event und geben Sie ihn an. Daraufhin wird eine Liste der Ereignistypen angezeigt, die Sie generieren können. Im Folgenden wird ein Beispiel gezeigt:

    $ sam local generate-event s3 Usage: sam local generate-event s3 [OPTIONS] COMMAND [ARGS]... Options: -h, --help Show this message and exit. Commands: batch-invocation Generates an Amazon S3 Batch Operations Invocation Event delete Generates an Amazon S3 Delete Event put Generates an Amazon S3 Put Event
  2. Um das Beispielereignis zu generierensam local generate-event, führen Sie es aus und geben Sie den Dienst und den Ereignistyp an.

    $ sam local generate-event <service> <event>

    Im Folgenden wird ein Beispiel gezeigt:

    $ sam local generate-event s3 put { "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "us-east-1", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "amzn-s3-demo-bucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }

Diese Beispielereignisse enthalten Platzhalterwerte. Sie können diese Werte ändern, um auf tatsächliche Ressourcen in Ihrer Anwendung oder auf Werte zu verweisen, die beim Testen vor Ort hilfreich sind.

Um ein Beispielereignis zu ändern
  1. Sie können Beispielereignisse in der Befehlszeile ändern. Führen Sie den folgenden Befehl aus, um Ihre Optionen zu sehen:

    $ sam local generate-event <service> <event> --help

    Im Folgenden wird ein Beispiel gezeigt:

    $ sam local generate-event s3 put --help Usage: sam local generate-event s3 put [OPTIONS] Options: --region TEXT Specify the region name you'd like, otherwise the default = us-east-1 --partition TEXT Specify the partition name you'd like, otherwise the default = aws --bucket TEXT Specify the bucket name you'd like, otherwise the default = example-bucket --key TEXT Specify the key name you'd like, otherwise the default = test/key --debug Turn on debug logging to print debug message generated by AWS SAM CLI and display timestamps. --config-file TEXT Configuration file containing default parameter values. [default: samconfig.toml] --config-env TEXT Environment name specifying default parameter values in the configuration file. [default: default] -h, --help Show this message and exit.
  2. Verwenden Sie eine dieser Optionen in der Befehlszeile, um Ihre Beispielereignis-Payload zu ändern. Im Folgenden wird ein Beispiel gezeigt:

    $ sam local generate-event s3 put--bucket amzn-s3-demo-bucket { "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "us-east-1", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "amzn-s3-demo-bucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }

Verwenden Sie generierte Ereignisse für lokale Tests

Speichern Sie Ihre generierten Ereignisse lokal und testen Sie sie mit anderen sam local Unterbefehlen.

Um Ihre generierten Ereignisse lokal zu speichern
  • Führen Sie Folgendes aus:

    $ sam local generate-event <service> <event> <event-option> > <filename.json>

    Im Folgenden finden Sie ein Beispiel für ein Ereignis, das als s3.json Datei im events Ordner unseres Projekts gespeichert wird.

    sam-app$ sam local generate-event s3 put --bucket amzn-s3-demo-bucket > events/s3.json
Um ein generiertes Ereignis für lokale Tests zu verwenden
  • Übergeben Sie das Ereignis mithilfe der --event Option zusammen mit anderen sam local Unterbefehlen.

    Im Folgenden finden Sie ein Beispiel für die Verwendung des s3.json Ereignisses, um unsere Lambda-Funktion lokal aufzurufen:

    sam-app$ sam local invoke --event events/s3.json S3JsonLoggerFunction Invoking src/handlers/s3-json-logger.s3JsonLoggerHandler (nodejs18.x) Local image is up-to-date Using local image: public.ecr.aws/lambda/nodejs:18-rapid-x86_64. Mounting /Users/.../sam-app/.aws-sam/build/S3JsonLoggerFunction as /var/task:ro,delegated, inside runtime container START RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128 Version: $LATEST END RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128 REPORT RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128 Init Duration: 1.23 ms Duration: 9371.93 ms Billed Duration: 9372 ms Memory Size: 128 MB Max Memory Used: 128 MB

Weitere Informationen

Eine Liste aller sam local generate-event Optionen finden Sie untersam local generate-event.

Eine Demo der Verwendung sam local finden Sie unter AWS SAM Lokale Entwicklung. Testen von AWS Cloud Ressourcen aus lokalen Entwicklungsumgebungen in den Serverless Land Sessions mit der SAM Serie über YouTube.