aws lambda in pictures

A lambda function is a cost saver.
You can save
– some virtual machines (they are managed by the IaaS itself)
– some setup (the API interface is the code itself)
– some maintenance cost (the function will live forever and you control the downtime if you need some)

Do you want to build an API that cost you nothing when not called ?
Write one express-like app in javascript this way :

const doCallback = (data, callback) =>
callback(null, {body: data, isBase64Encoded: false, headers: {'Content-Type': 'application/json'}})

const handler = ({pathParameters, queryStringParameters, myParam}, context, callback) =>
pathParameters && pathParameters.myParam
doCallback(myAction(pathParameters.myParam), callback):
queryStringParameters && queryStringParameters.myParam ?
doCallback(myAction(queryStringParameters.myParam), callback):
typeof myParam === 'string' ?
doCallback(myAction(myParam), callback):
context.succeed(myAction(myParam))

module.exports = {handler}

This polymorphic handler is able to read myParam from several different HTTP verbs.

Use pathParameters in case of GET/POST with path variables
Use queryStringParameters in case of GET + optional queryParameters
Use myParam as request body in a POST call.

I have made a simple lambda function which draws a graph according to a list of coords pair
(example with https://x3b2fqbqf0.execute-api.eu-west-1.amazonaws.com/prod/chartify/0_5_1_7_2_4_3_4_4_4_5_1 : [0,5],[1,7][2,4][3,4][4,4][5,1])

If you want to start from something rather than from scratch and if you don’t need (yet) the serverless framework, take a look at that repository : http://github.com/libetl/chartify

It works standalone, no need to code inside AWS Cloud9, and the build target in the package.json already prepares a zip archive that you can send to the Lambda console.

Leave a Reply

Your email address will not be published. Required fields are marked *

*