代码之家  ›  专栏  ›  技术社区  ›  Ludo

AWS-Dynamodb流将多个事件合并为一个lambda触发器流

  •  0
  • Ludo  · 技术社区  · 6 年前

    免责声明:我可能因为不了解流、碎片等的工作原理而误用了术语。

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

    1) 添加到dynamodb的项目

    2) Lambda由添加到dynamodb的新项目的信息触发

    3) Lambda修改dynamodb中的项目

    非常重要的是,我需要每个新项来触发一个单独的lambda实例。到目前为止,这种方法一直运作良好。然而,有时我注意到,它会将多个dynamodb Insert事件合并到一个流中,因此如果多个不同插入的信息是在同一时间进行的,而我的lambda函数无法处理,它就会用这些信息触发我的lambda。有什么办法吗?强制它为每个新插入触发不同的lambda实例?

    下面是一个lambda被带有多个事件的dynamodb流触发的示例。我想要的是下面的记录列表,不要有超过一个事件。

    {'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 回复  |  直到 6 年前
    推荐文章