Skip to content

Instantly share code, notes, and snippets.

@aterreno
Last active September 10, 2019 17:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aterreno/a6f26acb31206cdfd3bdb6bead9f5c97 to your computer and use it in GitHub Desktop.
Save aterreno/a6f26acb31206cdfd3bdb6bead9f5c97 to your computer and use it in GitHub Desktop.
serverless-http & iopipe
const serverless = require("serverless-http");
const express = require("express");
const app = express();
// require("express-async-errors");
app.get("/hello", function(_req, res, _next) {
console.log("Hello, World");
try {
res.status(200).json({
message: "Go Serverless v1.0! Your function executed successfully!"
});
} catch (e) {
console.log(e);
}
console.log("Hello, World");
});
app.get("/throw", function(_req, _res, next) {
console.log("About to throw");
return next(new Error("Throw this"));
});
app.use(function(err, _req, res, _next) {
console.error(err.stack);
res.status(500).send(`Something broke: ${err.message}`);
});
module.exports = { handler: serverless(app) };
{
"name": "hello-world",
"version": "1.0.0",
"description": "",
"main": "handler.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"serverless-es-logs": "^3.0.3",
"serverless-iopipe-layers": "^0.4.0",
"serverless-offline": "^5.10.1"
},
"dependencies": {
"express": "^4.17.1",
"express-async-errors": "^3.1.1",
"serverless-http": "^2.3.0"
}
}
service: xxx-hello-world
provider:
name: aws
runtime: nodejs10.x
deploymentBucket:
name: xxx
stage: ${opt:stage, 'dev'}
region: ${opt:region, 'eu-west-2'}
logRetentionInDays: 30
versionFunctions: false
excludeDevDependencies: true
environment:
stage: ${self:provider.stage}
region: ${self:provider.region}
plugins:
# - serverless-plugin-typescript
- serverless-offline
- serverless-es-logs
- serverless-iopipe-layers
functions:
app:
handler: index.handler
events:
- http: ANY /
- http: "ANY {proxy+}"
custom:
iopipe:
token: ${file(${self:provider.stage}.yml):iopipeToken}
esLogs:
endpoint: xxx.eu-west-2.es.amazonaws.com
index: serverless-logs
tags:
stage: ${self:provider.stage}
region: ${self:provider.region}
service: hello-world
serverless-offline:
region: ${self:provider.region}
port: 3000
serverless-iam-roles-per-function:
defaultInherit: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment