

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

# 配合变更流使用 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 开发者指南*中的[ 结合 Amazon DocumentDB 使用 AWS Lambda console](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>

以下是使用 Amazon DocumentDB 和 AWS Lambda 时要考虑的限制：
+ AWS Lambda 目前仅在 Amazon 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)部分的“批处理行为”。