Código de función de ejemplo - AWS Lambda

Código de función de ejemplo

Para procesar eventos desde Amazon Kinesis, itere a través de los registros incluidos en el objeto de evento y decodifique los datos codificados en Base64 incluidos en cada uno.

nota

El código de esta página no admite registros agregados. Puede deshabilitar la agregación en la configuración de Kinesis Producer Library o utilice la biblioteca de agregación de registros de Kinesis para desagregar registros.

El código de muestra está disponible para los lenguajes que se indican a continuación.

Node.js 12.x

A continuación se muestra código de ejemplo que recibe un evento de Kinesis como entrada y procesa los mensajes que contiene. Con fines ilustrativos, el código escribe parte de los datos de los eventos de entrada en CloudWatch Logs.

ejemplo index.js
console.log('Loading function'); exports.handler = function(event, context) { //console.log(JSON.stringify(event, null, 2)); event.Records.forEach(function(record) { // Kinesis data is base64 encoded so decode here var payload = Buffer.from(record.kinesis.data, 'base64').toString('ascii'); console.log('Decoded payload:', payload); }); };

Compile el código de muestra para crear un paquete de implementación. Para obtener instrucciones, consulte Implementar funciones Node.js de Lambda con archivos de archivo.zip.

Java 11

A continuación, se muestra código de ejemplo de Java que recibe datos de registros de eventos de Kinesis como entrada y los procesa. Con fines ilustrativos, el código escribe parte de los datos de los eventos de entrada en CloudWatch Logs.

En el código, recordHandler es el controlador. Este controlador utiliza la clase KinesisEvent predefinida, que se define en la biblioteca aws-lambda-java-events.

ejemplo ProcessKinesisEvents.java
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.KinesisEvent; import com.amazonaws.services.lambda.runtime.events.KinesisEvent.KinesisEventRecord; public class ProcessKinesisRecords implements RequestHandler<KinesisEvent, Void>{ @Override public Void handleRequest(KinesisEvent event, Context context) { for(KinesisEventRecord rec : event.getRecords()) { System.out.println(new String(rec.getKinesis().getData().array())); } return null; } }

Si el controlador vuelve normalmente sin excepciones, Lambda considera que el lote de registros de entrada se ha procesado correctamente y empieza a leer nuevos registros en el flujo. Si el controlador genera una excepción, Lambda considera que el lote de registros de entrada no se ha procesado e invoca de nuevo la función con el mismo lote de registros.

Dependencies
  • aws-lambda-java-core

  • aws-lambda-java-events

  • aws-java-sdk

Compile el código con las dependencias de la biblioteca Lambda para crear un paquete de implementación. Para obtener instrucciones, consulte Implementar funciones de Lambda Java con archivos de archivo .zip o JAR.

C#

A continuación, se muestra código de ejemplo de C# que recibe datos de registros de eventos de Kinesis como entrada y los procesa. Con fines ilustrativos, el código escribe parte de los datos de los eventos de entrada en CloudWatch Logs.

En el código, HandleKinesisRecord es el controlador. Este controlador utiliza la clase KinesisEvent predefinida, que se define en la biblioteca Amazon.Lambda.KinesisEvents.

ejemplo ProcessingKinesisEvents.cs
using System; using System.IO; using System.Text; using Amazon.Lambda.Core; using Amazon.Lambda.KinesisEvents; namespace KinesisStreams { public class KinesisSample { [LambdaSerializer(typeof(JsonSerializer))] public void HandleKinesisRecord(KinesisEvent kinesisEvent) { Console.WriteLine($"Beginning to process {kinesisEvent.Records.Count} records..."); foreach (var record in kinesisEvent.Records) { Console.WriteLine($"Event ID: {record.EventId}"); Console.WriteLine($"Event Name: {record.EventName}"); string recordData = GetRecordContents(record.Kinesis); Console.WriteLine($"Record Data:"); Console.WriteLine(recordData); } Console.WriteLine("Stream processing complete."); } private string GetRecordContents(KinesisEvent.Record streamRecord) { using (var reader = new StreamReader(streamRecord.Data, Encoding.ASCII)) { return reader.ReadToEnd(); } } } }

Reemplace el Program.cs en un proyecto .NET Core con el ejemplo anterior. Para obtener instrucciones, consulte Implementar funciones de Lambda C# con archivos de archivo .zip.

Python 3

A continuación se muestra código de ejemplo de Python que recibe datos de registros de eventos de Kinesis como entrada y los procesa. Con fines ilustrativos, el código escribe parte de los datos de los eventos de entrada en CloudWatch Logs.

ejemplo ProcessKinesisRecords.py
from __future__ import print_function #import json import base64 def lambda_handler(event, context): for record in event['Records']: #Kinesis data is base64 encoded so decode here payload=base64.b64decode(record["kinesis"]["data"]) print("Decoded payload: " + str(payload))

Compile el código de muestra para crear un paquete de implementación. Para obtener instrucciones, consulte Implementar funciones Python Lambda con archivos .zip.

Go

A continuación se muestra código de ejemplo de Go que recibe datos de registros de eventos de Kinesis como entrada y los procesa. Con fines ilustrativos, el código escribe parte de los datos de los eventos de entrada en CloudWatch Logs.

ejemplo ProcessKinesisRecords.go
import ( "strings" "github.com/aws/aws-lambda-go/events" ) func handler(ctx context.Context, kinesisEvent events.KinesisEvent) { for _, record := range kinesisEvent.Records { kinesisRecord := record.Kinesis dataBytes := kinesisRecord.Data dataText := string(dataBytes) fmt.Printf("%s Data = %s \n", record.EventName, dataText) } }

Compile el ejecutable con go build y cree un paquete de implementación. Para obtener instrucciones, consulte Implementar funciones Go Lambda con archivos .zip.