アプリケーション送信先の Lambda 関数を作成 - Amazon Kinesis Data Analytics for SQL Applications 開発者ガイド

新しいプロジェクトでは、SQL アプリケーション用 Kinesis Data Analytics ではなく、新しい Kinesis Data Analytics スタジオを使用することをお勧めします。Kinesis Data Analytics Studio は使いやすさと高度な分析機能を兼ね備えているため、高度なストリーム処理アプリケーションを数分で構築できます。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アプリケーション送信先の 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; } }

.NET で Lambda 関数送信先を作成する

.NET で送信先の Lambda 関数を作成するには、.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; } }

.NET での前処理と送信先のための Lambda 関数の作成の詳細については、を参照してくださいAmazon.Lambda.KinesisAnalyticsEvents