1.0.3 • Published 6 years ago

serverless-plugin-kong v1.0.3

Weekly downloads
114
License
ISC
Repository
github
Last release
6 years ago

serverless-plugin-kong

Serverless framework Plugin to register lambda functions with Kong

Installation

Install the plugin from npm

$ npm install --save-dev serverless-plugin-kong

Without npm

Copy the source to the .serverless_plugins directory at the root of your service(serverless project)

Usage

Add the plugin to your serverless.yml

# serverless.yml

plugins:
  - serverless-plugin-kong

Add the config to your custom tag of serverless.yml,

# serverless.yml

"custom":
    "kong": {
          "admin_credentials": {
            "file": "~/.kong/credentials.json",
            "profile": "qa"
          },
          "service": {
              "name": "example-service",
              "plugins": [
                  {
                      "name": "cors",
                      "config": {
                          "origins": "*",
                          "methods": "GET, POST",
                          "headers": "Accept, Authorization, Accept-Version, Content-Length, Content-Type, Date, X-Auth-Token",
                          "exposed_headers": "X-Auth-Token",
                          "credentials": true,
                          "max_age": 3600
                      }
                  }
              ]
          }
      }
"functions": {
    "example-function-1": {
      "handler": "functions/example/function1.entry",
      "events": [
        {
          "kong": {
            "service": "test-service",
            "path": "/news",
            "method": "get"
          }
        }
      ],
    

If you are using "lambda-meta" to configure events, you can configure kong as given below

const lm = require('lambda-meta');
const iopipe = require('@iopipe/iopipe')({ token: process.env.IOPIPE_TOKEN });

module.exports = {
    name: 'example-service',
    description: 'Example service',
    timeout: 3,
    warmup: true,
    responseHeaders: {
        'Cache-Control': 'public, max-age=10',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': '*'
    },
    kong: {
        service: 'example-service',
        host: 'exmaple.com',
        path: '/users'
        method: 'post',
    },

    inputs: {
        apiKey: {
            required: true,
            type: 'String'
        }
    },

    entry: iopipe((event, context, callback) => lm.processRequest(module.exports, event, context, callback)),

    process: async (event, context) => {
        const { apiKey } = context.params;

        return true;
    }
};

~/.kong/credentials.json

{ "default": { "url": "http://localhost:8001", "headers": {} }, "qa": { "url": "http://localhost:8001" } }

Command to register lambda functions

sls kong create-service

sls kong update-service

sls kong create-routes --function-name example-function-1

sls kong update-route --function-name example-function-1

sls kong delete-route -s prod --function-name example-function-1

Contributing

We welcome pull requests! Please fork the repo and submit your PR.