

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 AWS Lambda 有变更流
<a name="using-lambda"></a>

Amazon DocumentDB 已与集成， AWS Lambda 因此您可以使用 Lambda 函数来处理变更流中的记录。Lambda 事件源映射是一种资源，它可以用来调用 Lambda 函数，以便处理不直接调用 Lambda 的 Amazon DocumentDB 事件。以 Amazon DocumentDB 变更流作为事件源，您可以构建响应数据变化的事件驱动型应用。例如，您可以使用 Lambda 函数来处理新文档、跟踪现有文档的更新或记录已删除的文档。

您可以配置事件源映射以发送来自 Amazon DocumentDB 变更流的记录至 Lambda 函数。事件可以一次一个发送或批量发送以提高效率，将按顺序处理。您可以根据特定的时间窗持续时间（0-300 秒）或批处理记录计数（最大限值为 10,000 条记录），配置事件源映射的批处理行为。您可以创建多个事件源映射，以使用多个 Lambda 函数处理相同的数据，或使用单个函数处理来自多个流的不同项目。

如果您的函数返回错误，则 Lambda 将重试批处理，直到它成功处理。在变更流中事件已过期的情况下，Lambda 将禁用事件源映射。在这种情况下，您可以创建新的事件源映射，并用您选择的起始位置对其配置。由于轮询器的分布式特性，Lambda 事件源映射至少处理一次事件。因此，在极少数情况下，Lambda 函数可能会收到重复的事件。遵循使用 AWS Lambda 函数的最佳实践，构建等性函数，以避免与重复事件相关的问题。有关更多信息，请参阅*AWS Lambda 开发者*指南中的[AWS Lambda console 与亚马逊 DocumentDB 配合使用](https://docs.aws.amazon.com/lambda/latest/dg/with-documentdb.html)。

作为性能最佳实践，Lambda 函数需要短时间运行。为避免引入不必要的处理延迟，它也不应执行复杂的逻辑。特别是对于高速流，最好是触发异步后处理 Step Function 工作流，而不是长时间运行的 Lambda 函数。有关的更多信息 AWS Lambda，请参阅《[AWS Lambda 开发人员指南》](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)。

## 限制
<a name="lambda-limitations"></a>

以下是使用亚马逊 DocumentDB 时需要考虑的限制，以及： AWS Lambda
+ AWS Lambda 目前仅支持亚马逊 DocumentDB 4.0 和 5.0。
+ AWS Lambda 弹性集群或全局集群目前不支持。
+ AWS Lambda 有效载荷大小不能超过 6MB。有关 Lambda 批量大小的更多信息，请参阅*AWS Lambda 开发者指南*中 [Lambda 事件源映射](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html#invocation-eventsourcemapping-batching)部分的“批处理行为”。