我目前有一个AWS DynamoDB流触发Lambda函数。Lambda函数由DynamoDB中的insert和update事件触发。有没有一种方法可以更改配置,使Lambda函数只由'insert'触发?
bvuwiixz1#
据我所知,这是不可能的。AWS Lambda polls the stream,并在检测到任何类型的流记录更新时调用Lambda函数。您的Lambda将不得不忽略您不感兴趣的记录。您可以使用流记录的eventName property(可以具有值INSERT|修改|删除)
ecfdbz9o2#
您可以使用lambda函数忽略rest而不是insert。
for record in event.get('Records'): if record.get('eventName') in ('INSERT'): """ code for execution. """ elif record.get('eventName') == 'REMOVE': pass elif record.get('eventName') == 'MODIFY': pass
rqqzpn5f3#
一般来说,不仅是nodejs,所有类型都支持非全局表。好的过滤器片段集合可以找到here。您基本上是在函数被触发之前在Lambda服务端应用过滤。PS,也很棒article解释它是如何工作的
ubbxdtey4#
虽然接受的答案是准确的,但现在Lambda事件过滤利用事件源Map支持这一点。
aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:sqs:us-east-2:123456789012:my-queue \ --filter-criteria "{\"Filters\": [{\"Pattern\": \"{ \"a\" : [ 1, 2 ]}\"}]}"
此外,您可以将其包含在您的Cloud formation或CDK工作流程中。请参阅this的已接受答案以了解更多详细信息。
ttygqcqt5#
您现在可以使用流过滤器,并过滤您只需要的那些事件类型:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.Lambda.Tutorial2.html
5条答案
按热度按时间bvuwiixz1#
据我所知,这是不可能的。AWS Lambda polls the stream,并在检测到任何类型的流记录更新时调用Lambda函数。您的Lambda将不得不忽略您不感兴趣的记录。您可以使用流记录的eventName property(可以具有值INSERT|修改|删除)
ecfdbz9o2#
您可以使用lambda函数忽略rest而不是insert。
rqqzpn5f3#
一般来说,不仅是nodejs,所有类型都支持非全局表。好的过滤器片段集合可以找到here。
您基本上是在函数被触发之前在Lambda服务端应用过滤。
PS,也很棒article解释它是如何工作的
ubbxdtey4#
虽然接受的答案是准确的,但现在Lambda事件过滤利用事件源Map支持这一点。
此外,您可以将其包含在您的Cloud formation或CDK工作流程中。请参阅this的已接受答案以了解更多详细信息。
ttygqcqt5#
您现在可以使用流过滤器,并过滤您只需要的那些事件类型:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.Lambda.Tutorial2.html