기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
샘플 함수 코드
Amazon Kinesis의 이벤트를 처리하려면 이벤트 객체에 포함된 레코드를 반복하고 각각에 포함된 Base64로 인코딩된 데이터를 디코딩합니다.
참고
이 페이지의 코드는 집계된 레코드를 지원하지 않습니다. Kinesis 생산자 라이브러리 구성에서 집계를 비활성화하거나 Kinesis 레코드 집계 라이브러리
샘플 코드는 다음 언어로 제공됩니다.
Node.js 12.x
다음은 Kinesis 이벤트 입력을 수신하고 이벤트에 포함된 메시지를 처리하는 예제 코드입니다. 예를 들어, 코드는 들어오는 이벤트 데이터 중 일부를 CloudWatch Logs에 기록합니다.
예 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); }); };
샘플 코드를 압축하여 배포 패키지를 생성합니다. 지침은 .zip 파일 아카이브를 사용하여 Node.js Lambda 함수 배포 섹션을 참조하세요.
Java 11
다음은 입력으로 Kinesis 이벤트 레코드 데이터를 수신하고 처리하는 Java 코드의 예입니다. 예를 들어, 코드는 들어오는 이벤트 데이터 중 일부를 CloudWatch Logs에 기록합니다.
코드에서 recordHandler
는 핸들러입니다. 해당 핸들러는 KinesisEvent
라이브러리에서 사전 정의된 aws-lambda-java-events
클래스를 사용합니다.
예 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; } }
핸들러가 예외 없이 정상적으로 반환되면 Lambda는 레코드의 입력 배치가 성공적으로 처리된 것으로 간주하고 스트림의 새 레코드 읽기를 시작합니다. 핸들러에 예외가 발생하면 Lambda는 레코드의 입력 배치를 처리하지 않은 것으로 간주하고 동일한 레코드 배치로 함수를 다시 호출합니다.
의존성
aws-lambda-java-core
aws-lambda-java-events
aws-java-sdk
Lambda 라이브러리 종속성으로 코드를 빌드하여 배포 패키지를 만듭니다. 지침은 .zip 또는 JAR 파일 아카이브를 사용하여 Java Lambda 함수 배포 섹션을 참조하세요.
C#
다음은 입력으로 Kinesis 이벤트 레코드 데이터를 수신하고 처리하는 C# 코드의 예입니다. 예를 들어, 코드는 들어오는 이벤트 데이터 중 일부를 CloudWatch Logs에 기록합니다.
코드에서 HandleKinesisRecord
는 핸들러입니다. 해당 핸들러는 KinesisEvent
라이브러리에서 사전 정의된 Amazon.Lambda.KinesisEvents
클래스를 사용합니다.
예 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(); } } } }
.NET Core 프로젝트의 Program.cs
를 위의 샘플로 바꿉니다. 지침은 .zip 파일 아카이브를 사용하여 C# Lambda 함수를 빌드 및 배포 섹션을 참조하세요.
Python 3
다음은 입력으로 Kinesis 이벤트 레코드 데이터를 수신하고 처리하는 Python 코드의 예입니다. 예를 들어, 코드는 들어오는 이벤트 데이터 중 일부를 CloudWatch Logs에 기록합니다.
예 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))
샘플 코드를 압축하여 배포 패키지를 생성합니다. 지침은 Python Lambda 함수에 대한 .zip 파일 아카이브 작업 섹션을 참조하세요.
Go
다음은 입력으로 Kinesis 이벤트 레코드 데이터를 수신하고 처리하는 Go 코드의 예입니다. 예를 들어, 코드는 들어오는 이벤트 데이터 중 일부를 CloudWatch Logs에 기록합니다.
예 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) } }
go build
를 사용하여 실행 파일을 빌드하고 배포 패키지를 생성합니다. 지침은 .zip 파일 아카이브를 사용하여 Go Lambda 함수 배포 단원을 참조하세요.