NodeJS 仅使用insert配置DynamoDB流触发器

dohp0rv5  于 2023-05-28  发布在  Node.js
关注(0)|答案(5)|浏览(174)

我目前有一个AWS DynamoDB流触发Lambda函数。
Lambda函数由DynamoDB中的insertupdate事件触发。有没有一种方法可以更改配置,使Lambda函数由'insert'触发?

bvuwiixz

bvuwiixz1#

据我所知,这是不可能的。AWS Lambda polls the stream,并在检测到任何类型的流记录更新时调用Lambda函数。您的Lambda将不得不忽略您不感兴趣的记录。您可以使用流记录的eventName property(可以具有值INSERT|修改|删除)

ecfdbz9o

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
rqqzpn5f

rqqzpn5f3#

一般来说,不仅是nodejs,所有类型都支持非全局表。好的过滤器片段集合可以找到here
您基本上是在函数被触发之前在Lambda服务端应用过滤。
PS,也很棒article解释它是如何工作的

ubbxdtey

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的已接受答案以了解更多详细信息。

相关问题