Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gmjelle/56e036b5d24102563454c86a453e4bd1 to your computer and use it in GitHub Desktop.
Save gmjelle/56e036b5d24102563454c86a453e4bd1 to your computer and use it in GitHub Desktop.
index dynamodb data to cloudsearch using AWS Lambda
var AWS = require('aws-sdk');
exports.handler = function(event, context) {
var cloudsearchdomain = new AWS.CloudSearchDomain({endpoint: 'doc-dev-cinch-accounts-ltmqj5gt5mjb5hg5eyqaf2v5hu.us-east-1.cloudsearch.amazonaws.com'});
var documents = event.Records.map(function(record) {
var data = {id : record.dynamodb.Keys.id.S};
if (record.eventName === 'REMOVE') {
data.type = 'delete'
} else {
var image = record.dynamodb.NewImage;
data.type = 'add'
data.fields = {
name : image.name.S,
username : image.username.S,
email : image.email.S
};
}
return data;
});
var params = {contentType: 'application/json', documents : JSON.stringify(documents) };
console.log('uploading documents to cloudsearch domain', params);
cloudsearchdomain.uploadDocuments(params, function(err, data) {
if(err) {
console.log('Error uploading documents to cloudsearch', err, err.stack);
context.fail(err);
} else {
context.succeed("Successfully processed " + event.Records.length + " records.");
}
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment