lambdr v0.0.5
Lambdr
Lambdr is automated deployment and flow management module to create powerful micro services with AWS Lambda functions. It's still in development and looking for contributors. 🤘
Getting Started
First we need to install cli globally.
npm install lambdr -gCreating a project
Assume that a lambdr project as a micro service.
lambdr new my-micro-serviceThis will create a folder named 'my-micro-service' and it includes the following files:
my-micro-service
|-- config
| |-- aws.json (AWS credentials)
| |-- env.json (Environment variables for every stage)
| |-- lambdr.json (Lambder configurations)
|-- functions
| |-- .... (You lambda functions will be here)
|-- package.json
|-- .gitignoreCreating a function
Let's create a signup function. After you enter the command the cli will ask you the HTTP method for the function and the endpoint.
We can use POST method and /users endpoint for signup function.
lambdr function:create signupAfter the command finishes, a js file will be added into functions folder.
Running a function locally
It's really easy to run the function in your local machine by using this command:
lambdr function:run signupBefore running a function you can pass event parameters by changing testEvents function property in config/lambdr.json.
{
"accountId": "123456789",
"name": "my-micro-service",
"functions": {
"signup": {
"method": "POST",
"endpoint": "/users",
"testEvent": {
"email": "test@example.com",
"password": "incredible_password"
}
}
}
}Create a stage
To deploy your functions you need to create a stage. You can create multiple stages like (development, staging, production).
Assume we want a development stage for now.
lambdr stage:create developmentDeploy a function
lambdr function:deploy signup developmentWe deployed signup function into development stage. After this command you will see an endpoint to test this function.
Using environment variables
Lambdr deploys environment variables for it's own stage. You can set environment variables in config/env.json file. An example env.json:
{
"default": {
"APP_NAME": "Example OAuth Micro Service",
"TEST_STAGE": true
},
"local": {
"DYNAMO_TABLE": "users-local"
},
"development": {
"DYNAMO_TABLE": "users-dev"
},
"production": {
"TEST_STAGE": false
}
}Notice that TEST_STAGE will be overridden in production stage.
exports.handler = function(event, context) {
if (process.env.TEST_STAGE) {
context.done(null, 'This stage is for testing');
} else {
context.done(null, 'This stage is production');
}
}Other Commands
List stages
lambdr stage:listRemove a stage
lambdr stage:remove staging