Package Exports
- serverless-offline-local-authorizers-plugin
- serverless-offline-local-authorizers-plugin/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (serverless-offline-local-authorizers-plugin) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
serverless-offline-local-authorizers-plugin
Serverless plugin for adding authorizers when developing and testing functions locally with serverless-offline.
This plugin allows you to add local authorizer functions to your serverless projects. These authorizers
are added dynamically in a way they can be called by serverless-offline
but don't interfer with your
deployment and your shared authorizer functions. This helps when you have shared API Gateway authorizers
and developing and testing locally with serverless-offline
.
⚠️ If you are using this plugin and get schema validation errors: Please check indentation of
localAuthorizer:
config property! See example below...
Installation
Installing using npm:
npm i serverless-offline-local-authorizers-plugin --save-dev
Usage
Step 1: Define your authorizer functions in a file called local-authorizers.js
and put it into your
project root (that's where your serverless.yml
lives).
If you want the local function to call your deployed shared authorizer it could look something like this:
const AWS = require("aws-sdk");
const mylocalAuthProxyFn = async (event, context) => {
const lambda = new AWS.Lambda();
const result = await lambda.invoke({
FunctionName: "my-shared-lambda-authorizer",
InvocationType: "RequestResponse",
Payload: JSON.stringify(event),
}).promise();
if (result.StatusCode === 200) {
return JSON.parse(result.Payload);
}
throw Error("Authorizer error");
};
module.exports = { mylocalAuthProxyFn };
Of course you could also just return a mocked response, call Cognito to mock your Cognito Authorizer or whatever suits your needs. You can also define multiple authorizer functions if you need to.
Step 2: In your serverless.yml
, add the localAuthorizer
property to your http events. This will not interfere
with your "real" authorizers and will be ignored upon deployment.
functions:
myFunction:
handler: myFunction.handler
events:
- http:
path: /my/api/path
method: GET
authorizer:
type: CUSTOM
authorizerId: abcjfk
localAuthorizer:
name: "mylocalAuthProxyFn"
type: "request"
Step 3: Add the plugin to the plugins sections in serverless.yml
:
plugins:
- serverless-offline-local-authorizers-plugin
- serverless-offline
Step 4: Fire up serverless offline with the local-authorizers
option:
$ sls offline local-authorizers --stage dev --region eu-central-1
License
MIT