Beispiel-Funktionscode - AWS Lambda

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.

Beispiel-Funktionscode

Beispiel-Code steht für die folgenden Sprachen zur Verfügung.

Node.js

Das folgende Beispiel verarbeitet Nachrichten aus DynamoDB und protokollierte ihren Inhalt.

Beispiel ProcessDynamoDBStream.js
console.log('Loading function'); exports.lambda_handler = function(event, context, callback) { console.log(JSON.stringify(event, null, 2)); event.Records.forEach(function(record) { console.log(record.eventID); console.log(record.eventName); console.log('DynamoDB Record: %j', record.dynamodb); }); callback(null, "message"); };

Komprimieren Sie den Beispielcode, um ein Bereitstellungspaket zu erstellen. Detaillierte Anweisungen finden Sie unter Bereitstellen von Node.js Lambda-Funktionen mit ZIP-Dateiarchiven.

Java 11

Das folgende Beispiel verarbeitet Nachrichten von DynamoDB und protokolliert ihren Inhalt. handleRequest ist der Handler, den AWS Lambda aufruft und Ereignisdaten bereitstellt. Der Handler verwendet die vordefinierte Klasse DynamodbEvent, die in der Bibliothek aws-lambda-java-events definiert ist.

Beispiel DDB EventProcessor.java
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler2; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord; public class DDBEventProcessor implements RequestHandler2<DynamodbEvent, String> { public String handleRequest(DynamodbEvent ddbEvent, Context context) { for (DynamodbStreamRecord record : ddbEvent.getRecords()){ System.out.println(record.getEventID()); System.out.println(record.getEventName()); System.out.println(record.getDynamodb().toString()); } return "Successfully processed " + ddbEvent.getRecords().size() + " records."; } }

Wenn der Handler normal ohne Ausnahmen zurückgegeben wird, betrachtet Lambda den Eingabebatch mit Datensätzen als erfolgreich verarbeitet und beginnt mit dem Lesen neuer Datensätze im Stream. Wenn der Handler eine Ausnahme ausgibt, betrachtet Lambda den Eingabebatch mit Datensätzen als nicht verarbeitet und ruft die Funktion mit demselben Batch an Datensätzen erneut auf.

Abhängigkeiten
  • aws-lambda-java-core

  • aws-lambda-java-events

Erstellen Sie den Code mit den Abhängigkeiten der Lambda-Bibliothek, um Bereitstellungspakete zu erstellen. Detaillierte Anweisungen finden Sie unter Bereitstellen von Java-Lambda-Funktionen mit ZIP- oder JAR-Dateiarchiven.

C#

Das folgende Beispiel verarbeitet Nachrichten von DynamoDB und protokolliert ihren Inhalt. ProcessDynamoEvent ist der Handler, den AWS Lambda aufruft und Ereignisdaten bereitstellt. Der Handler verwendet die vordefinierte Klasse DynamoDbEvent, die in der Bibliothek Amazon.Lambda.DynamoDBEvents definiert ist.

Beispiel ProcessingDynamoDBStreams.cs
using System; using System.IO; using System.Text; using Amazon.Lambda.Core; using Amazon.Lambda.DynamoDBEvents; using Amazon.Lambda.Serialization.Json; namespace DynamoDBStreams { public class DdbSample { private static readonly JsonSerializer _jsonSerializer = new JsonSerializer(); public void ProcessDynamoEvent(DynamoDBEvent dynamoEvent) { Console.WriteLine($"Beginning to process {dynamoEvent.Records.Count} records..."); foreach (var record in dynamoEvent.Records) { Console.WriteLine($"Event ID: {record.EventID}"); Console.WriteLine($"Event Name: {record.EventName}"); string streamRecordJson = SerializeObject(record.Dynamodb); Console.WriteLine($"DynamoDB Record:"); Console.WriteLine(streamRecordJson); } Console.WriteLine("Stream processing complete."); } private string SerializeObject(object streamRecord) { using (var ms = new MemoryStream()) { _jsonSerializer.Serialize(streamRecord, ms); return Encoding.UTF8.GetString(ms.ToArray()); } } } }

Ersetzen Sie Program.cs in einem .NET-Core-Projekt mit dem obigen Beispiel. Detaillierte Anweisungen finden Sie unter Erstellen und Bereitstellen von C#-Lambda-Funktionen mit ZIP-Dateiarchiven.

Python 3

Das folgende Beispiel verarbeitet Nachrichten aus DynamoDB und protokollierte ihren Inhalt.

Beispiel ProcessDynamoDBStream.py
from __future__ import print_function def lambda_handler(event, context): for record in event['Records']: print(record['eventID']) print(record['eventName']) print('Successfully processed %s records.' % str(len(event['Records'])))

Komprimieren Sie den Beispielcode, um ein Bereitstellungspaket zu erstellen. Detaillierte Anweisungen finden Sie unter Arbeiten mit ZIP-Dateiarchiven und Python-Lambda-Funktionen.

Go

Das folgende Beispiel verarbeitet Nachrichten aus DynamoDB und protokollierte ihren Inhalt.

import ( "strings" "github.com/aws/aws-lambda-go/events" ) func handleRequest(ctx context.Context, e events.DynamoDBEvent) { for _, record := range e.Records { fmt.Printf("Processing request data for event ID %s, type %s.\n", record.EventID, record.EventName) // Print new values for attributes of type String for name, value := range record.Change.NewImage { if value.DataType() == events.DataTypeString { fmt.Printf("Attribute name: %s, value: %s\n", name, value.String()) } } } }

Erstellen Sie die ausführbare Datei mit go build und erstellen Sie ein Bereitstellungspaket. Detaillierte Anweisungen finden Sie unter Bereitstellen von Lambda-Go-Funktionen mit ZIP-Dateiarchiven.