2017-09-27 24 views
2

我想要發送已更改的數據從DynamoDb觸發了lambda函數。然後,我想要保存這個已更改的數據不同的DynamoDb表。

編程語言:的NodeJS

DynomaDb
流啓用:是
查看方式:新的和舊的圖像如何發送數據觸發lambda函數?

lambda函數

'use strict'; 

console.log('Loading function'); 

exports.handler = (event, context, callback) => { 
    //console.log('Received event:', JSON.stringify(event, null, 2)); 
    event.Records.forEach((record) => { 
     console.log(record.eventID); 
     console.log(record.eventName); 
     console.log('DynamoDB Record: %j', record.dynamodb); 
    }); 
    callback(null, `Successfully processed ${event.Records.length} records.`); 
}; 

它不工作。

+0

你有什麼到目前爲止已經試過刪除? –

+0

@VijayanathViswanathan 'use strict'; console.log('加載函數'); exports.handler =(event,context,callback)=> { //console.log('Received event:',JSON.stringify(event,null,2)); (記錄)=> { console.log(record.eventID); console.log(record.eventName); console.log('DynamoDB Record:%j',record.dynamodb) ; }); callback(null,'成功處理$ {event.Records.length} records.'); }; –

+0

但它是拋出錯誤@VijayanathViswanathan –

回答

2

DynamoDB流和Lambda可以用於上述用例。

1)使能DynamoDB上Dynamodb表流以流的數據

2)創建lambda函數消耗流並寫入另一DynamoDB表。 Lambda函數可以用許多編程語言(API)創建。您可以使用AWS SDK來創建lambda函數。

請參閱下面的鏈接瞭解更多詳情。

Full documentation

Enable Streams and Lambda - Cross region replication use case

流視圖類型: -

StreamViewType-指定每當表中的數據被修改,將被寫入到 流的信息:

KEYS_ONLY-只有m的關鍵屬性odified項目。

NEW_IMAGE-整個項目,因爲它在修改後出現。

OLD_IMAGE-整個項目,因爲它出現在它被修改之前。

NEW_AND_OLD_IMAGES - 項目的新圖像和舊圖像。

事件名稱: -

record.eventName應該有MODIFY當數據在DynamoDB表更新。

record.dynamodb應該具有基於Stream視圖類型的值。如果您選擇了NEW_AND_OLD_IMAGES,那麼它應該具有舊值和新值。

eventName的 - (字符串),這是在DynamoDB表執行 類型數據修改的:

INSERT - 一個新的項目被添加到表中。

MODIFY - 修改了一個或多個現有項目的屬性。

刪除 - 該項目從表

+0

我使用節點js。該流已啓用並且流視圖類型爲new_and_old_images。但是我不明白lambda函數如何捕獲更改的數據? @notionquest –

+0

@BurhanYılmaz更新了細節以識別事件名稱(INSERT,MODIFY或REMOVE)。 – notionquest

+0

感謝你的工作@notionquest –