샘플 함수 코드 - AWS Lambda

샘플 함수 코드

샘플 코드는 다음 언어로 제공됩니다.

Node.js

다음 예에서는 DynamoDB의 메시지를 처리하고 해당 메시지의 내용을 로깅합니다.

예 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"); };

샘플 코드를 압축하여 배포 패키지를 생성합니다. 지침은 .zip 파일 아카이브를 사용하여 Node.js Lambda 함수 배포 섹션을 참조하세요.

Java 11

다음 예제는 DynamoDB의 메시지를 처리하고, 그 내용을 로깅합니다. handleRequest는 AWS Lambda가 이벤트 데이터를 호출하고 제공하는 핸들러입니다. 해당 핸들러는 DynamodbEvent 라이브러리에서 사전 정의된 aws-lambda-java-events 클래스를 사용합니다.

예 DDBEventProcessor.java
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord; public class DDBEventProcessor implements RequestHandler<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."; } }

핸들러가 예외 없이 정상적으로 반환되면 Lambda는 레코드의 입력 배치가 성공적으로 처리된 것으로 간주하고 스트림의 새 레코드 읽기를 시작합니다. 핸들러에 예외가 발생하면 Lambda는 레코드의 입력 배치를 처리하지 않은 것으로 간주하고 동일한 레코드 배치로 함수를 다시 호출합니다.

종속성
  • aws-lambda-java-core

  • aws-lambda-java-events

Lambda 라이브러리 종속성으로 코드를 빌드하여 배포 패키지를 만듭니다. 지침은 .zip 또는 JAR 파일 아카이브를 사용하여 Java Lambda 함수 배포 섹션을 참조하세요.

C#

다음 예제는 DynamoDB의 메시지를 처리하고, 그 내용을 로깅합니다. ProcessDynamoEvent는 AWS Lambda가 이벤트 데이터를 호출하고 제공하는 핸들러입니다. 해당 핸들러는 DynamoDbEvent 라이브러리에서 사전 정의된 Amazon.Lambda.DynamoDBEvents 클래스를 사용합니다.

예 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()); } } } }

.NET Core 프로젝트의 Program.cs를 위의 샘플로 바꿉니다. 지침은 .zip 파일 아카이브를 사용하여 C# Lambda 함수 배포 섹션을 참조하세요.

Python 3

다음 예에서는 DynamoDB의 메시지를 처리하고 해당 메시지의 내용을 로깅합니다.

예 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'])))

샘플 코드를 압축하여 배포 패키지를 생성합니다. 지침은 .zip 파일 아카이브를 사용하여 Python Lambda 함수 배포 섹션을 참조하세요.

Go

다음 예에서는 DynamoDB의 메시지를 처리하고 해당 메시지의 내용을 로깅합니다.

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()) } } } }

go build를 사용하여 실행 파일을 빌드하고 배포 패키지를 생성합니다. 지침은 .zip 파일 아카이브를 사용하여 Go Lambda 함수 배포 단원을 참조하세요.