

慎重に検討した結果、Amazon Kinesis Data Analytics for SQL アプリケーションを中止することにしました。

1. **2025 年 9 月 1** 日以降、Amazon Kinesis Data Analytics for SQL アプリケーションのバグ修正は提供されません。これは、今後の廃止によりサポートが制限されるためです。

2. **2025 年 10 月 15** 日以降、新しい Kinesis Data Analytics for SQL アプリケーションを作成することはできません。

3. **2026 年 1 月 27 日**以降、アプリケーションは削除されます。Amazon Kinesis Data Analytics for SQL アプリケーションを起動することも操作することもできなくなります。これ以降、Amazon Kinesis Data Analytics for SQL のサポートは終了します。詳細については、「[Amazon Kinesis Data Analytics for SQL アプリケーションのサポート終了](discontinuation.md)」を参照してください。

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

# 事前処理用の Lambda 関数の作成
<a name="lambda-preprocessing-functions"></a>

Amazon Kinesis Data Analytics アプリケーションは、アプリケーションに取り込まれる際に、Lambda 関数をレコードの事前処理に使用できます。Kinesis Data Analytics では、データの事前処理用の開始点として使用するため、コンソールで以下のテンプレートが用意されています。

**Topics**
+ [Node.js での事前処理 Lambda 関数の作成](#lambda-preprocessing-functions-nodejs)
+ [Python での事前処理 Lambda 関数の作成](#lambda-preprocessing-functions-python)
+ [Java での事前処理 Lambda 関数の作成](#lambda-preprocessing-functions-java)
+ [.NET での事前処理 Lambda 関数の作成](#lambda-preprocessing-functions-net)

## Node.js での事前処理 Lambda 関数の作成
<a name="lambda-preprocessing-functions-nodejs"></a>

事前処理の Lambda 関数を Node.js で作成するための次のテンプレートが Kinesis Data Analytics コンソールで利用できます。


| Lambda の設計図 | 言語とバージョン | 説明 | 
| --- | --- | --- | 
| 一般的な Kinesis Data Analytics の入力処理  | Node.js 6.10 |  JSON レコードまたは CSV レコードを入力として受け取り、処理ステータスで返す Kinesis Data Analytics レコードのプリプロセッサ。このプロセッサをカスタム変換ロジックの開始点として使用します。  | 
| 圧縮入力処理 | Node.js 6.10 | 圧縮された (圧縮 GZIP または Deflate) JSON レコードまたは CSV レコードを入力として受け取り、圧縮解除されたレコードを処理ステータスで返す Kinesis Data Analytics のレコードプロセッサ。 | 

## Python での事前処理 Lambda 関数の作成
<a name="lambda-preprocessing-functions-python"></a>

事前処理の Lambda 関数を Python で作成するための次のテンプレートがコンソールで利用できます。


| Lambda の設計図 | 言語とバージョン | 説明 | 
| --- | --- | --- | 
| 一般的な Kinesis Analytics の入力処理  | Python 2.7 |  JSON レコードまたは CSV レコードを入力として受け取り、処理ステータスで返す Kinesis Data Analytics レコードのプリプロセッサ。このプロセッサをカスタム変換ロジックの開始点として使用します。  | 
| KPL 入力処理 | Python 2.7 | Kinesis Producer Library (KPL) の JSON レコードまたは CSV レコードの集計を入力として受け取り、処理ステータスと一緒に集約解除されたレコードを返す Kinesis Data Analytics のレコードプロセッサ。 | 

## Java での事前処理 Lambda 関数の作成
<a name="lambda-preprocessing-functions-java"></a>

Java でレコードの事前処理用の Lambda 関数を作成するには、[Java イベント](https://github.com/aws/aws-lambda-java-libs/tree/master/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events)クラスを使用します。

次のコードは、Java を使用してレコードを事前処理する Lambda 関数のサンプルを示しています。

```
public class LambdaFunctionHandler implements
        RequestHandler<KinesisAnalyticsStreamsInputPreprocessingEvent, KinesisAnalyticsInputPreprocessingResponse> {

    @Override
    public KinesisAnalyticsInputPreprocessingResponse handleRequest(
            KinesisAnalyticsStreamsInputPreprocessingEvent event, Context context) {
        context.getLogger().log("InvocatonId is : " + event.invocationId);
        context.getLogger().log("StreamArn is : " + event.streamArn);
        context.getLogger().log("ApplicationArn is : " + event.applicationArn);

        List<KinesisAnalyticsInputPreprocessingResponse.Record> records = new ArrayList<KinesisAnalyticsInputPreprocessingResponse.Record>();
        KinesisAnalyticsInputPreprocessingResponse response = new KinesisAnalyticsInputPreprocessingResponse(records);

        event.records.stream().forEach(record -> {
            context.getLogger().log("recordId is : " + record.recordId);
            context.getLogger().log("record aat is :" + record.kinesisStreamRecordMetadata.approximateArrivalTimestamp);
             // Add your record.data pre-processing logic here.                               
            // response.records.add(new Record(record.recordId, KinesisAnalyticsInputPreprocessingResult.Ok, <preprocessedrecordData>));
        });
        return response;
    }

}
```

## .NET での事前処理 Lambda 関数の作成
<a name="lambda-preprocessing-functions-net"></a>

.NET でレコードの事前処理用の Lambda 関数を作成するには、[.NET イベント](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents)クラスを使用します。

次のコードは、C\$1 を使用してレコードを前処理する Lambda 関数のサンプルを示しています。

```
public class Function
    {
        public KinesisAnalyticsInputPreprocessingResponse FunctionHandler(KinesisAnalyticsStreamsInputPreprocessingEvent evnt, ILambdaContext context)
        {
            context.Logger.LogLine($"InvocationId: {evnt.InvocationId}");
            context.Logger.LogLine($"StreamArn: {evnt.StreamArn}");
            context.Logger.LogLine($"ApplicationArn: {evnt.ApplicationArn}");

            var response = new KinesisAnalyticsInputPreprocessingResponse
            {
                Records = new List<KinesisAnalyticsInputPreprocessingResponse.Record>()
            };

            foreach (var record in evnt.Records)
            {
                context.Logger.LogLine($"\tRecordId: {record.RecordId}");
                context.Logger.LogLine($"\tShardId: {record.RecordMetadata.ShardId}");
                context.Logger.LogLine($"\tPartitionKey: {record.RecordMetadata.PartitionKey}");
                context.Logger.LogLine($"\tRecord ApproximateArrivalTime: {record.RecordMetadata.ApproximateArrivalTimestamp}");
                context.Logger.LogLine($"\tData: {record.DecodeData()}");

                // Add your record preprocessig logic here.

                var preprocessedRecord = new KinesisAnalyticsInputPreprocessingResponse.Record
                {
                    RecordId = record.RecordId,
                    Result = KinesisAnalyticsInputPreprocessingResponse.OK
                };
                preprocessedRecord.EncodeData(record.DecodeData().ToUpperInvariant());
                response.Records.Add(preprocessedRecord);
            }
            return response;
        }
    }
```

事前処理および宛先の Lambda 関数を .NET で作成する場合の詳細については、「[https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents](https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda.KinesisAnalyticsEvents)」を参照してください。