AWS-Dynamodb流将多个事件组合到单个流中以进行lambda触发–不必要的流聚合

时间:2019-07-12 16:36:13

标签: amazon-web-services aws-lambda amazon-dynamodb amazon-dynamodb-streams

免责声明:由于对流,分片等的工作原理了解不足,我可能会误用术语。

我已经设置了一个dynamodb表,以使用流触发lambda函数。管道是:

1)项目已添加到dynamodb

2)Lambda触发了来自添加到dynamodb的新项目的信息

3)Lambda修改dynamodb中的项目

非常重要的是,我需要每个新项来触发一个单独的lambda实例。到目前为止,这一直很好。但是,有时我注意到它会将多个dynamodb插入事件组合到一个流中,因此如果同时创建多个来自不同插入的信息,它将触发我的lambda,而我的lambda函数无法处理。有没有办法解决?强制它为每个新插入触发不同的lambda实例?

下面是一个由具有多个事件的dynamodb流触发的lambda示例。我想要的是下面的记录列表,永远不会发生多个事件。

{'Records': [{'awsRegion': 'eu-west-2',
   'dynamodb': {'ApproximateCreationDateTime': 1562924320.0,
    'Keys': {'id': {'S': 'fakedata1'}},
    'NewImage': {'constraints': {'S': 'fakedata1'},
     'id': {'S': 'fakedata'},
     'status': {'S': 'RUNNING'}},
    'SequenceNumber': '212050800000000001290145608',
    'SizeBytes': 310,
    'StreamViewType': 'NEW_IMAGE'},
   'eventID': '2e0348cfb304f4182cad18d326197031',
   'eventName': 'INSERT',
   'eventSource': 'aws:dynamodb',
   'eventSourceARN': 'arn:aws:dynamodb:eu-west-2:1562924320:table/mylambdafunc/stream/2019-05-28T16:42:58.716',
   'eventVersion': '1.1'},
  {'awsRegion': 'eu-west-2',
   'dynamodb': {'ApproximateCreationDateTime': 1562924328.0,
    'Keys': {'id': {'S': 'fakedata2'}},
    'NewImage': {'constraints': {'S': 'fakedata2'},
     'id': {'S': 'fakedata2'},
     'status': {'S': 'RUNNING'}},
    'SequenceNumber': '212050900000000001290146992',
    'SizeBytes': 214,
    'StreamViewType': 'NEW_IMAGE'},
   'eventID': '944e6d6776f78051f5b3e0e1af0ad207',
   'eventName': 'INSERT',
   'eventSource': 'aws:dynamodb',
   'eventSourceARN': 'arn:aws:dynamodb:eu-west-2:501873828238:table/mylambdafunc/stream/2019-05-28T16:42:58.716',
   'eventVersion': '1.1'},
  {'awsRegion': 'eu-west-2',
   'dynamodb': {'ApproximateCreationDateTime': 1562924328.0,
    'Keys': {'id': {'S': 'fakedata3'}},
    'NewImage': {'constraints': {'S': 'fakedata3'},
     'id': {'S': 'fakedata3'},
     'status': {'S': 'RUNNING'}},
    'SequenceNumber': '212051000000000001290147068',
    'SizeBytes': 326,
    'StreamViewType': 'NEW_IMAGE'},
   'eventID': '9f3d5a16390b6afce6f812d48588269e',
   'eventName': 'INSERT',
   'eventSource': 'aws:dynamodb',
   'eventSourceARN': 'arn:aws:dynamodb:eu-west-2:501873828238:table/mylambdafunc/stream/2019-05-28T16:42:58.716',
   'eventVersion': '1.1'}]}```


0 个答案:

没有答案