Skip to content

A serverless plugin to run an SNS server and call lambdas with events notifications.

License

Notifications You must be signed in to change notification settings

mj1618/serverless-offline-sns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

serverless-offline-sns

A serverless plugin to listen to offline SNS and call lambda fns with events.

serverless Build Status npm version PRs Welcome License: MIT All Contributors

Docs

For an example of a working application please see serverless-offline-sns-example

Prerequisites

This plugin provides an SNS server configured automatically without you specifying an endpoint.

If you'd rather use your own endpoint, e.g. from your AWS account or a localstack SNS server endpoint, you can put it in the custom config. See below for details.

Installation

Install the plugin

npm install serverless-offline-sns --save

Let serverless know about the plugin

plugins:
  - serverless-offline-sns

Note that ordering matters when used with serverless-offline and serverless-webpack. serverless-webpack must be specified at the start of the list of plugins.

Configure the plugin with your offline SNS endpoint, host to listen on, and a free port the plugin can use.

custom:
  serverless-offline-sns:
    port: 4002 # a free port for the sns server to run on
    debug: false
    # host: 0.0.0.0 # Optional, defaults to 127.0.0.1 if not provided to serverless-offline
    # sns-endpoint: http://127.0.0.1:4567 # Optional. Only if you want to use a custom endpoint
    # accountId: 123456789012 # Optional

In normal operation, the plugin will use the same --host option as provided to serverless-offline. The host parameter as shown above overrides this setting.

If you are using the serverless-offline plugin serverless-offline-sns will start automatically. If you are not using this plugin you can run the following command instead:

serverless offline-sns start

Configure

Configure your function handlers with events as described in the Serverless SNS Documentation

Here's an example serverless.yml config which calls a function on an SNS notifcation. Note that the offline-sns plugin will automatically pick up this config, subscribe to the topic and call the handler on an SNS notification.

functions:
  pong:
    handler: handler.pong
    events:
      - sns: test-topic

Or you can use the exact ARN of the topic:

functions:
  pong:
    handler: handler.pong
    events:
      - sns:
         arn: "arn:aws:sns:us-east-1:123456789012:test-topic"

Here's a demo of some code that will trigger this handler:

var AWS = require("aws-sdk"); // must be npm installed to use
var sns = new AWS.SNS({
  endpoint: "http://127.0.0.1:4002",
  region: "us-east-1",
});
sns.publish({
  Message: "hello!",
  MessageStructure: "json",
  TopicArn: "arn:aws:sns:us-east-1:123456789012:test-topic",
}, () => {
  console.log("ping");
});

Note the region that offline-sns will listen on is what is configured in your serverless.yml provider.

Usage

If you use serverless-offline this plugin will start automatically.

However if you don't use serverless-offline you can start this plugin manually with -

serverless offline-sns start

Contributors

Happy to accept contributions, feature requests and issues.

Thanks goes to these wonderful people (emoji key):


Matthew James

💬 💻 🎨 📖 💡

darbio

🐛 💻

TiVoMaker

🐛 💻 🎨 📖

Jade Hwang

🐛

Bennett Rogers

🐛 💻

Julius Breckel

💻 💡 ⚠️

RainaWLK

🐛 💻

Jamie Learmonth

🐛

Gevorg A. Galstyan

🐛 💻

Ivan Montiel

🐛 💻 ⚠️

Matt Ledom

💻 🎨

This project follows the all-contributors specification. Contributions of any kind welcome!

About

A serverless plugin to run an SNS server and call lambdas with events notifications.

Resources

License

Stars

Watchers

Forks

Packages

No packages published