diff --git a/plugins/tiddlywiki/aws/docs/lambda.tid b/plugins/tiddlywiki/aws/docs/lambda.tid index 50da2a8b0..652ad21ae 100644 --- a/plugins/tiddlywiki/aws/docs/lambda.tid +++ b/plugins/tiddlywiki/aws/docs/lambda.tid @@ -39,6 +39,17 @@ The Lambda boot code looks for an array of tiddlers to load in `event.tiddlers`, ``` +The event data can optionally be compressed by passing a JSON object with a single property `compressed` that contains a base64 encoded GZIP compressed representation of the JSON payload data. For example: + +``` +var strPayload = JSON.stringify(payload); +require("zlib").gzip(strPayload,function(err,buff) { + var compressedPayload = {compressed: new Buffer(buff).toString("base64")}; + // Invoke lambda with compressed payload + ... +}); +``` + ! Return data If the Lambda function successfully executes it returns an object with the following fields: diff --git a/plugins/tiddlywiki/aws/templates/lambda/handler.tid b/plugins/tiddlywiki/aws/templates/lambda/handler.tid index d1421c901..d7e91d42e 100644 --- a/plugins/tiddlywiki/aws/templates/lambda/handler.tid +++ b/plugins/tiddlywiki/aws/templates/lambda/handler.tid @@ -16,15 +16,29 @@ exports.handler = function(event,context,callback) { $tw.packageInfo = lambdaPackageInfo; // Load any tiddlers from the package $tw.preloadTiddlerArray(lambdaTiddlers); - // Load any tiddlers from the event - if(event.tiddlers) { - $tw.preloadTiddlerArray(event.tiddlers); + // Decompress the event data if required + if(typeof event.compressed === "string") { + require("zlib").gunzip(Buffer.from(event.compressed,"base64"),function(err,buff) { + if(err) { + return callback(err); + } + boot(JSON.parse(buff.toString())); + }); + } else { + boot(event); + } + + function boot(event) { + // Load any tiddlers from the event + if(event.tiddlers) { + $tw.preloadTiddlerArray(event.tiddlers); + } + // Load the commands from the event + $tw.boot.argv = (event.commands || []).slice(0); + // Boot the TW5 app + _boot($tw); + $tw.boot.boot(function() { + callback(null,$tw["lambda-result"]); + }); } - // Load the commands from the event - $tw.boot.argv = (event.commands || []).slice(0); - // Boot the TW5 app - _boot($tw); - $tw.boot.boot(function() { - callback(null,$tw["lambda-result"]); - }); }