

慎重に検討した結果、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="how-it-works-output-lambda"></a>

を送信先 AWS Lambda として使用すると、最終送信先に送信する前に SQL 結果の後処理をより簡単に実行できます。一般的な後処理タスクには次のものがあります。
+ 複数の行を 1 つのレコードに集約する
+ 現在の結果と過去の結果を組み合わせて、遅れて届くデータに対処する
+ 情報のタイプに基づいて異なる送信先に配信する
+ レコード形式の変換 (Protobuf への変換など)
+ 文字列操作または変換
+ 分析処理後のデータの強化
+ 地理空間ユースケースのカスタム処理
+ データ暗号化

Lambda 関数は、次のようなさまざまな AWS サービスやその他の送信先に分析情報を配信できます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)
+ カスタム API
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/)
+ [Amazon Aurora](http://aurora.apache.org/)
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/)
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/)
+ [Amazon Simple Queue Service](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/) (Amazon SQS)
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/)

Lambda アプリケーションの作成の詳細については、「[AWS Lambdaのご利用開始にあたって](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)」を参照してください。

**Topics**
+ [出力許可としての Lambda](#how-it-works-output-lambda-perms)
+ [出力メトリクスとしての Lambda](#how-it-works-output-lambda-metrics)
+ [出力イベント入力データモデルおよびレコードレスポンスモデルとしての Lambda](#how-it-works-output-lambda-model)
+ [Lambda 出力呼び出しの頻度](#how-it-works-output-lambda-frequency)
+ [出力として使用するための Lambda 関数の追加](#how-it-works-output-lambda-procedure)
+ [出力エラーとしてよく見られる Lambda](#how-it-works-output-lambda-troubleshooting)
+ [アプリケーションの送信先の Lambda 関数の作成](how-it-works-output-lambda-functions.md)

## 出力許可としての Lambda
<a name="how-it-works-output-lambda-perms"></a>

出力として Lambda を使用するには、アプリケーションの Lambda 出力 IAM ロールに次のアクセス許可ポリシーが必要です。

```
{
   "Sid": "UseLambdaFunction",
   "Effect": "Allow",
   "Action": [
       "lambda:InvokeFunction",
       "lambda:GetFunctionConfiguration"
   ],
   "Resource": "{{FunctionARN}}"
}
```

## 出力メトリクスとしての Lambda
<a name="how-it-works-output-lambda-metrics"></a>

Amazon CloudWatch を使用して、送信バイト数、成功および失敗などをモニタリングします。出力として Lambda を使用する Kinesis Data Analytics によって出力される CloudWatch メトリクスについては、「[Amazon Kinesis Analytics Metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html)」を参照してください。

## 出力イベント入力データモデルおよびレコードレスポンスモデルとしての Lambda
<a name="how-it-works-output-lambda-model"></a>

Kinesis Data Analytics 出力レコードを送信する場合、Lambda 関数は、必要なイベント入力データおよびレコードレスポンスモデルに準拠している必要があります。

### イベント入力データモデル
<a name="how-it-works-output-lambda-model-request"></a>

Kinesis Data Analytics は、次のリクエストモデルの出力関数として、アプリケーションから Lambda に出力レコードを継続的に送信します。関数内では、リストを繰り返し処理し、ビジネスロジックを適用して、出力要件 (最終的な送信先に送信する前のデータ変換など) を実行します。


<table>
<thead>
  <tr><th>フィールド</th><th>説明</th></tr>
</thead>
<tbody>
  <tr><td>invocationId</td><td>Lambda 呼び出し ID (ランダム GUID)。</td></tr>
  <tr><td>applicationArn</td><td>Kinesis Data Analytics アプリケーションの Amazon リソースネーム (ARN)。</td></tr>
  <tr><td colspan="2">レコード [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/kinesisanalytics/latest/dev/how-it-works-output-lambda.html) </td></tr>
</tbody>
</table>


**注記**  
`retryHint` は配信失敗ごとに増加する値です。この値は永続的に保持されず、アプリケーションが中断された場合にリセットされます。

### レコードレスポンスモデル
<a name="how-it-works-output-lambda-model-response"></a>

出力関数として `Ok` に (レコード ID と共に) 送信される各レコードは、 または `DeliveryFailed` のどちらかで確認される必要があり、次のパラメータを含める必要があります。それ以外の場合、Kinesis Data Analytics はそれらを配信失敗として扱います。


| フィールド | 説明 | 
| --- | --- | 
| レコード [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 
| recordId | レコード ID は呼び出し時に Kinesis Data Analytics から Lambda に渡されます。元のレコードの ID と確認されたレコードの ID との不一致は、配信失敗として扱われます。 | 
| result | レコード配信のステータス。以下の値を指定できます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/kinesisanalytics/latest/dev/how-it-works-output-lambda.html)  | 

## Lambda 出力呼び出しの頻度
<a name="how-it-works-output-lambda-frequency"></a>

Kinesis Data Analytics アプリケーションは、出力レコードをバッファして AWS Lambda 宛先関数を頻繁に呼び出します。
+ タンブリングウィンドウとしてデータ分析アプリケーション内の送信先アプリケーション内ストリームにレコードが出力された場合、送信 AWS Lambda 先関数はタンブリングウィンドウトリガーごとに呼び出されます。例えば、タンブリングウィンドウを 60 秒に設定してレコードを宛先のアプリケーション内ストリームに出力すると、Lambda 関数は、60 秒ごとに 1 回呼び出されます。
+ アプリケーション内で連続するクエリまたはスライディングウィンドウとしてレコードがアプリケーション内ストリームに出力される場合、Lambda 宛先関数は約 1 秒に 1 回呼び出されます。

**注記**  
[Lambda 関数あたりの呼び出しリクエストのペイロードサイズの制限](https://docs.aws.amazon.com/lambda/latest/dg/limits.html)が適用されます。これらの制限を超えると、出力レコードが分割され、複数の Lambda 関数呼び出しに分けて送信されます。

## 出力として使用するための Lambda 関数の追加
<a name="how-it-works-output-lambda-procedure"></a>

次の手順では、Kinesis Data Analytics アプリケーションの出力として Lambda 関数を追加する方法を示しています。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/kinesisanalytics](https://console.aws.amazon.com/kinesisanalytics) で Managed Service for Apache Flink コンソールを開きます。

1. リストからアプリケーションを選択し、[**Application details**] を選択します。

1. [**宛先**] セクションで、[**Connect new destination**] を選択します。

1. [**宛先**] 項目に、[**AWS Lambda 関数**] を選択します。

1. [** AWS Lambdaにレコードを配信**] セクションで、既存の Lambda 関数とバージョンを選択するか、[**新規作成**] を選択します。

1. 新しい Lambda 関数を作成する場合は、次の操作を行います。

   1. 提供されているいずれかのテンプレートのいずれかを選択します。詳細については、[アプリケーションの送信先の Lambda 関数の作成](how-it-works-output-lambda-functions.md)。

   1. [**関数の作成**] ページが新しいブラウザタブで開きます。[**Name (名前)**] ボックスで、関数にわかりやすい名前を付けます (例: **myLambdaFunction**)。

   1. アプリケーションの後処理機能のテンプレートを更新します。Lambda 関数作成の詳細については、AWS Lambda 開発者ガイドの[入門ガイド](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)を参照してください。

   1. Kinesis Data Analytics コンソールの [**Lambda 関数**] リストで、先ほど作成した Lambda 関数を選択します。Lambda 関数のバージョンは **[$最新]** を選択します。

1. [**In-application stream**] セクションで、[**Choose an existing in-application stream**] を選択します。[**In-application stream name**] に、アプリケーションの出力ストリームを選択します。選択した出力ストリームからの結果は、Lambda 出力関数に送信されます。

1. 残りのフォームはデフォルト値のままにして、[**Save and continue**] を選択します。

アプリケーションはアプリケーション内ストリームから Lambda 関数にレコードを送信するようになりました。Amazon CloudWatch コンソールのデフォルトテンプレートの結果を確認できます。`AWS/KinesisAnalytics/LambdaDelivery.OkRecords` メトリクスをモニタリングして、Lambda 関数に配信されるレコードの数を確認します。

## 出力エラーとしてよく見られる Lambda
<a name="how-it-works-output-lambda-troubleshooting"></a>

以下は、Lambda 関数への配信が失敗する可能性のある一般的な理由です。
+ Lambda 関数に送信されるバッチのレコード (レコード ID 付き) の一部が Kinesis Data Analytics サービスに返されていません。
+ レスポンスにレコード ID、またはステータスフィールドのいずれかが欠落しています。
+ Lambda 関数のタイムアウトが Lambda 関数内のビジネスロジックを達成するのに十分ではありません。
+ Lambda 関数内のビジネスロジックは、すべてのエラーをキャッチしないため、処理されない例外のためにタイムアウトとバックプレッシャーが生じます。これらのメッセージは、「ポイズンピル」と呼ばれることが少なくありません。

データ配信が失敗した場合、Kinesis Data Analytics は、成功するまで同じレコードセットで Lambda 呼び出しを再試行し続けます。次の CloudWatch メトリクスを監視して、失敗から情報を得ることができます。
+ Kinesis Data Analytics アプリケーションの Output CloudWatch メトリクスとしてのLambda : 統計の中でも、特に成功と失敗の数を示します。詳細については、「[Amazon Kinesis Analytics Metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aka-metricscollected.html)」を参照してください。
+ AWS Lambda 関数 CloudWatch メトリクスとログ。