Skip to content

Instantly share code, notes, and snippets.

@rotemtam
rotemtam / Dockerfile
Created August 26, 2016 12:34
Example Apex+Node Dockerfile
FROM node:4.2.3
# Install Apex
WORKDIR /tmp
RUN wget https://raw.githubusercontent.com/apex/apex/master/install.sh && bash /tmp/install.sh
# Install dependencies
COPY package.json /srv/package.json
WORKDIR /srv
RUN npm i && mkdir /srv/src && mkdir /srv/infra
module.exports = {
entry: './src/index.js',
target: 'node',
output: {
path: './lib',
filename: 'index.js',
libraryTarget: 'commonjs2'
},
externals: {
'aws-sdk': 'aws-sdk'
{
"name": "SampleProject",
"description": "A demo project of serverless ci",
"role": "arn:aws:iam::<aws account number>:role/<lambda role name>",
"runtime":"nodejs4.3",
"memory": 128,
"timeout": 10,
"handler": "lib.default",
"hooks": {
"build": "../../../node_modules/.bin/webpack --config ../../../infra/webpack.config.js",
'use strict';
const request = require('axios');
function *search(query) {
let options = {
params: {
q: query,
sort: 'stars',
order: 'desc'
'use strict';
const Repository = require('../../../model/Repository')
, LambdaRunner = require('../../../lib/lambda-co-runner');
function *main(e) {
let query = e.queryParams.q
, res = yield Repository.search(query);
return {items: res.items};
}
├── Dockerfile
├── infra
│   └── webpack.config.js
├── package.json
└── src
├── functions
│   └── getRepositories
│   ├── function.json
│   ├── src
│   │   └── index.js
@rotemtam
rotemtam / co-mocha-runner.js
Created August 18, 2016 10:07
LambdaRunner - interface between ES6 generators and lambda functions
'use strict';
const co = require('co');
module.exports = function(lambda) {
return function(e, ctx, cb) {
co(
function* () {
let result = yield lambda(e, ctx);
@rotemtam
rotemtam / example-lambda-runner.js
Created August 18, 2016 09:59
Example Lambda with Lambda Runner
'use strict';
const LambdaRunner = require('co-lambda-runner')
, DB = require('./db');
function *main(e) {
let id = e.params.id;
return yield DB.get(id);
}
@rotemtam
rotemtam / some-lambda-func.js
Created August 18, 2016 09:36
some-lambda-function
'use strict';
module.exports = function doSomething(e, ctx, cb) {
if (e.someParam > 0) {
ctx.succeed('Yay');
// we add the callback here to make it testable
// we'll show in the next step how we make this DRY
if (cb) cb();
} else {
ctx.fail('Nay')
@rotemtam
rotemtam / some-lambda-func.spec.js
Last active August 18, 2016 09:39
Node.js AWS Lambda Unit Test with a Mock Context object
'use strict';
const expect = require('chai').expect
, SomeLambda = require('./some-lambda-func')
, MockContext = require('./mock-lambda-context');
describe('Some Lambda Func', function() {
let ctx;
before(function() {