為應用程式目的地建立 Lambda 函數 - Amazon Kinesis Data Analytics for SQL Applications 開發人員指南

在仔細考慮之後,我們決定在兩個步驟中停止 Amazon Kinesis Data Analytics for SQL 應用程式:

1. 從 2025 年 10 月 15 日起,您將無法為SQL應用程式建立新的 Kinesis Data Analytics。

2. 我們將從 2026 年 1 月 27 日起刪除您的應用程式。您將無法啟動或操作SQL應用程式的 Amazon Kinesis Data Analytics。從那時SQL起,Amazon Kinesis Data Analytics 將不再提供 的支援。如需詳細資訊,請參閱Amazon Kinesis Data Analytics for SQL 應用程式終止

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為應用程式目的地建立 Lambda 函數

Kinesis Data Analytics 應用程式可以使用 AWS Lambda 函數作為輸出。Kinesis Data Analytics 提供範本,可讓您建立 Lambda 函數作為應用程式的目的地使用。使用這些範本做為應用程式後續處理輸出的起點。

在 Node.js 中建立一個 Lambda 函數目的地

主控台提供在 Node.js 中建立目的地 Lambda 函數的下列範本:

Lambda 作為輸出藍圖 語言與版本 描述
kinesis-analytics-output Node.js 12.x 將輸出記錄從 Kinesis Data Analytics 應用程式傳送至自訂目的地。

在 Python 中建立一個 Lambda 函數目的地

主控台提供在 Python 中建立目的地 Lambda 函數的下列範本:

Lambda 作為輸出藍圖 語言與版本 描述
kinesis-analytics-output-sns Python 2.7 將輸出記錄從 Kinesis Data Analytics 應用程式交付至 Amazon SNS。
kinesis-analytics-output-ddb Python 2.7 將輸出記錄從 Kinesis Data Analytics 應用程式傳送至 Amazon DynamoDB。

在 Java 中建立一個 Lambda 函數目的地

如要在 Java 中建立目的地 Lambda 函數,請使用 Java 事件類別。

下列程式碼會示範使用 Java 的範例目的地 Lambda 函數:

public class LambdaFunctionHandler implements RequestHandler<KinesisAnalyticsOutputDeliveryEvent, KinesisAnalyticsOutputDeliveryResponse> { @Override public KinesisAnalyticsOutputDeliveryResponse handleRequest(KinesisAnalyticsOutputDeliveryEvent event, Context context) { context.getLogger().log("InvocatonId is : " + event.invocationId); context.getLogger().log("ApplicationArn is : " + event.applicationArn); List<KinesisAnalyticsOutputDeliveryResponse.Record> records = new ArrayList<KinesisAnalyticsOutputDeliveryResponse.Record>(); KinesisAnalyticsOutputDeliveryResponse response = new KinesisAnalyticsOutputDeliveryResponse(records); event.records.stream().forEach(record -> { context.getLogger().log("recordId is : " + record.recordId); context.getLogger().log("record retryHint is :" + record.lambdaDeliveryRecordMetadata.retryHint); // Add logic here to transform and send the record to final destination of your choice. response.records.add(new Record(record.recordId, KinesisAnalyticsOutputDeliveryResponse.Result.Ok)); }); return response; } }

在 中建立 Lambda 函數目的地。NET

若要在 中建立目的地 Lambda 函數NET,請使用 .NET 事件類別。

下列程式碼會示範使用 C# 的範例目的地 Lambda 函數:

public class Function { public KinesisAnalyticsOutputDeliveryResponse FunctionHandler(KinesisAnalyticsOutputDeliveryEvent evnt, ILambdaContext context) { context.Logger.LogLine($"InvocationId: {evnt.InvocationId}"); context.Logger.LogLine($"ApplicationArn: {evnt.ApplicationArn}"); var response = new KinesisAnalyticsOutputDeliveryResponse { Records = new List<KinesisAnalyticsOutputDeliveryResponse.Record>() }; foreach (var record in evnt.Records) { context.Logger.LogLine($"\tRecordId: {record.RecordId}"); context.Logger.LogLine($"\tRetryHint: {record.RecordMetadata.RetryHint}"); context.Logger.LogLine($"\tData: {record.DecodeData()}"); // Add logic here to send to the record to final destination of your choice. var deliveredRecord = new KinesisAnalyticsOutputDeliveryResponse.Record { RecordId = record.RecordId, Result = KinesisAnalyticsOutputDeliveryResponse.OK }; response.Records.Add(deliveredRecord); } return response; } }

如需在 中為預先處理和目的地建立 Lambda 函數的詳細資訊NET,請參閱 Amazon.Lambda.KinesisAnalyticsEvents