AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

Kinesis 拡張ファンアウトモードで Lambda ESM を呼び出すと、GetRecords のメトリクスが表示される理由を知りたいです。

所要時間1分
0

Amazon Kinesis 拡張ファンアウト (EFO) モードで AWS Lambda イベントソースマッピング (ESM) を呼び出すと、GetRecords のメトリクスが表示されます。

簡単な説明

標準の Kinesis データストリームでは、Lambda はストリーム内のシャードに対し、シャードごとに 1 秒に 1 回のレートでレコードをポーリングします。Kinesis EFO では、Lambda は HTTP/2 接続を使用して Kinesis からプッシュされたレコードをリッスンします。レコードが使用可能になると、Lambda は関数を呼び出して結果を待ちます。

解決策

この問題をトラブルシューティングするには、次のアクションを実行してください。

アクセス許可を確認する

Lambda 関数を作成し、EFO コンシューマーで Kinesis アクティベーションを設定するには、次のアクセス許可が必要です。

kinesis:GetRecords
kinesis:GetShardIterator

これらのアクセス許可は、AWSLambdaKinesisExecutionRole マネージドポリシーに含まれており、標準コンシューマーと EFO コンシューマーをサポートしています。実行ロールに以前のアクセス許可がない場合、次のエラーが表示されます。 「トリガーの作成中にエラーが発生しました。 イベントソースにアクセスできません <Kinesis stream ARN>。」

AWS Identity and Access Management (IAM) ロールに次のアクセス許可があることを確認します。 DescribeStreamSummaryListShardsGetShardIteratorGetRecords (ストリーム)、SubscribeToShard (コンシューマ)。

イベントソースのマッピングを確認する

Lambda のイベントソースマッピングが Kinesis EFO ストリームコンシューマーで設定されている場合、Lambda 関数は指定された Kinesis ストリームからのメッセージを処理できます。Kinesis の GetRecords Amazon CloudWatch メトリクスは、Lambda が正常に呼び出されても表示されません。Lambda ESM はプッシュベースの拡張ファンアウトコンシューマーを使用するため、これは予想される動作です。

表示された CloudWatch メトリクスとその理由を確認する

Lambda 呼び出しが失敗した場合、Lambda サービスは同じバッチを複数回処理しようとします (設定されている最大再試行回数に基づく)。これらの再試行中に、GetRecords API コールに関するメトリクスが表示されます。これは、Lambda サービスが失敗した Lambda 呼び出し試行に関するレコードをシャードからポーリングするためです。レコードのポーリングは GetRecords API コールであり、その結果、関連するメトリクスデータポイントが生成されます。

関連情報

Amazon Kinesis Data Streams のディメンションとメトリクス

AWS公式
AWS公式更新しました 1ヶ月前