AWS Lambda 目标不使用 DynamoDB 流触发

AWS Lambda destination not triggering with DynamoDB Streams

我正在使用 AWS Dynamo Streams 触发 AWS Lambda 函数。如果 lambda 函数调用成功,我希望通过 Lambda 提供的异步调用目标功能调用子 lambda 函数。

即使我已经使用目标子 Lambda 函数配置了异步调用,但当父 Lambda 函数成功时子函数不会被触发,子 Lambda 函数关联的 CloudWatch 日志组为空。

我的父级 lambda 有这样的策略:AWSLambdaInvocation-DynamoDB(提供对 DynamoDB 流的读取访问)、AWSLambdaFullAccessAWSLambdaBasicExecutionRole

问题: 为什么 onSuccess 和 onFailure 目标不能通过 AWS Dynamo Streams 调用父 lambda?

AWS 支持帮助我解决了这个问题。

如果我们为 Lambda 配置异步目标,则只有异步调用您的 Lambda 函数时,异步目标才会起作用。因此,在这种特定情况下,使用 DynamoDB 事件源,DynamoDB 不会调用我们的异步函数,而是 Lambda 从流中读取 。因此,还有另一个选项可以为流配置目标,但这仅适用于 on-failure 目标。

异步目标仅适用于异步事件源,如 SNS 或 S3。

The page that shows how different event sources works with Lambda

因此,如果您在“异步调用 Lambda 函数的服务”标题下查看 - 这些是调用 Lambda 异步并可与异步目标一起使用的服务集成。这些服务,或者如果您实际通过 CLI 异步调用您的函数。

例如,如果您从 CLI 调用您的函数并传递标志 --invocation-type Event。那将调用您的函数异步。 如果你传递 --invocation-type RequestResponse,那将是同步的。