2017-09-27 8 views
2

Je souhaite envoyer une fonction lambda à données modifiées depuis DynamoDb. Ensuite, je veux enregistrer ces données modifiées différentes tables DynamoDb.

Langage de programmation: NodeJS

DynomaDb
flux activé: Oui
Voir Type: images anciennes et nouvellesComment envoyer des données lambda fonction déclenchée?

Lambda Fonction

'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.`); 
}; 

il ne fonctionne pas .

+0

ce que vous avez essayé jusqu'à présent? –

+0

@VijayanathViswanathan 'use strict'; console.log ('Fonction de chargement'); exports.handler = (événement, contexte, rappel) => { //console.log('Rapport event: ', JSON.stringify (event, null, 2)); event.Records.forEach ((enregistrement) => { console.log (record.eventID); console.log (record.eventName); console.log ('Enregistrement DynamoDB:% j', record.dynamodb) ; }); callback (null, 'traité avec succès $ {event.Records.length} records.'); }; –

+0

Mais il était erreur jeter @VijayanathViswanathan –

Répondre

2

Les flux DynamoDB et Lambda peuvent être utilisés pour le cas d'utilisation ci-dessus.

1) Activer le flux DynamoDB sur la table DynamoDB pour écouter les données

2) créer une fonction Lambda pour consommer le courant et écrire dans une autre table de DynamoDB. La fonction Lambda peut être créée dans de nombreux langages de programmation (API). Vous pouvez utiliser AWS SDK pour créer la fonction lambda.

Référez-vous aux liens ci-dessous pour plus de détails.

Full documentation

Enable Streams and Lambda - Cross region replication use case

flux Type de vue: -

StreamViewType-spécifie les informations qui seront écrites dans le flux chaque fois que les données dans le tableau est modifié:

KEYS_ONLY - seuls les attributs clés du m article odifié.

NEW_IMAGE: l'élément entier, tel qu'il apparaît après sa modification.

OLD_IMAGE: l'élément entier, tel qu'il était avant sa modification.

NEW_AND_OLD_IMAGES: à la fois les nouvelles et les anciennes images de l'élément.

Nom de l'événement: -

record.eventName devrait avoir ACTUALISATION lorsque les données sont mises à jour dans la table DynamoDB.

record.dynamodb doit avoir les valeurs basées sur le type de vue Stream. Si vous avez sélectionné NEW_AND_OLD_IMAGES, alors il devrait avoir à la fois les anciennes et les nouvelles valeurs.

eventName - (String) Le type de modification de données qui a été effectuée sur la table DynamoDB:

INSERT - un nouvel élément a été ajouté à la table.

MODIFIER - un ou plusieurs des attributs d'un élément existant ont été modifiés.

RETIRER - l'élément a été supprimé de la table

+0

ı utiliser le noeud js. Le flux est activé et le flux affiche le type new_and_old_images. Mais je ne comprends pas comment les fonctions lambda capturent les données modifiées? @notionquest –

+0

@ BurhanYılmaz Mise à jour des détails pour identifier le nom de l'événement (INSERT, MODIFY ou REMOVE). – notionquest

+0

merci de son travail @notionquest –