i当前具有AWS DynamoDB流触发lambda函数。
lambda函数均由 insert 和 UPDATE 在DynamoDB中的事件触发。有没有一种方法可以更改配置,以便lambda函数只能由'insert'触发?
据我所知,这是不可能的。AWS lambda polls 当它检测到任何类型的流记录更新时,流并调用您的lambda功能。您的lambda将不得不忽略您不感兴趣的记录。您可以使用流记录的EventName属性(可以具有值insert insert | modify | remove)
您可以使用lambda功能忽略静止。
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
一般而言,不仅对于nodejs,而且对于所有类型,都支持 non Global 表。
可以找到良好的过滤片段。在触发功能之前,您基本上将过滤在lambda服务方面。
ps,也很棒的文章解释了它的工作原理
虽然被接受的答案准确,但现在由lambda事件过滤利用事件源映射支持。
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 ]}"}]}"
此外,您可以将其包括在云层或CDK工作流程中。有关更多详细信息,请参阅此信息。
您现在可以使用流滤波器,并过滤您仅需要的事件类型:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/streams.lambda.tutorial2.html