Netlify CMS Authentication as a Lambda Service
This library exposes https://github.com/vencax/netlify-cms-github-oauth-provider as a lambda service.
Usage
As a library
npm i netlify-cms-auth-lambda
AWS Lambda example using serverless-http:
// handler.js
const serverless = require('serverless-http')
const app = require('netlify-cms-github-lambda')
module.exports = serverless(app)
This repository includes this for convenience in handler.js
, which you can use as a Serverless service as described below, but you might also wish to consume this library as an Express app to deploy using a different framework or on a different cloud platform. Make sure you configure your production environment appropriately.
As a Serverless AWS Lambda service
- Clone this repository
git clone https://github.com/lukeburns/netlify-cms-auth-lambda
- Install dependencies
npm i
-
Configure your local Serverless and AWS environment
-
Configure your production environment
The following Serverless configuration will prepare an authentication server for Github on AWS Lambda and API Gateway. You can also configure for use with another provider, like Gitlab. To do this, see configuration details in the original library: vencax/netlify-cms-github-oauth-provider. serverless.yml
should be added to your local repository.
# serverless.yml
service: netlify-cms-auth
provider:
name: aws
runtime: nodejs8.10
stage: prod
region: us-east-1
functions:
app:
handler: handler.handler
environment:
NODE_ENV: production
OAUTH_CLIENT_ID: # get from https://github.com/settings/developers
OAUTH_CLIENT_SECRET: # get from https://github.com/settings/developers
events:
- http: ANY /
- http: 'ANY {proxy+}'
This is also where you can prepare additional Serverless configuration, such as a custom domain.
- Deploy with the Serverless CLI
sls deploy
Your authentication server should now be running, e.g. at https://id.execute-api.us-east-1.amazonaws.com/prod.
- Configure Netlify CMS
For instance, the following backend configuration is what you'll need to if you deploy to AWS without a custom domain.
# config.yml
backend:
name: github
repo: username/repo
branch: master
base_url: https://id.execute-api.us-east-1.amazonaws.com
auth_endpoint: /prod/auth
Note, if you deploy via AWS to https://id.execute-api.us-east-1.amazonaws.com/prod, make sure you set base_url
to https://id.execute-api.us-east-1.amazonaws.com
and auth_endpoint
to /prod/auth
. Otherwise, you may find yourself frustrated.