Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build Status codecov Docker Pulls

Fake SNS

Fake Amazon Simple Notification Service (SNS) for testing. Supports:

  • Create/List/Delete topics
  • Subscribe endpoint
  • Publish message
  • Subscription persistence
  • Integrations with (Fake-)SQS, File, HTTP, RabbitMQ, Slack



Based on the official java:8-jre-alpine image. Run it with the command:

docker run -d -p 9911:9911 s12v/sns

If you would like to keep the topic/subscription database in the current host folder:

docker run -d -p 9911:9911 -v "$PWD":/etc/sns s12v/sns

Using aws-cli

The image has aws-cli preinstalled. For example, create a topic:

docker exec <CONTAINER_ID> sh -c 'aws sns --endpoint-url http://localhost:9911 create-topic --name test1'


Download the latest release from and run:

DB_PATH=/tmp/db.json java -jar sns-0.2.0.jar

Requires Java8.


Configuration can be set via environment variables:

  • DB_PATH - path to subscription database file, default: db.json
  • HTTP_INTERFACE - interface to bind to, default:
  • HTTP_PORT - tcp port, default: 9911

Supported integrations

  • Amazon SQS: aws-sqs://queueName?amazonSQSEndpoint=...&accessKey=&secretKey=
  • RabbitMQ: rabbitmq://hostname[:port]/exchangeName[?options]
  • HTTP: http:hostName[:port][/resourceUri][?options]
  • File: file://tmp?fileName=sns1.txt
  • Slack: slack:@username?webhookUrl=

See camel documentation for more details.

Note: Environment variables can be used to specify URIs via {{env:ENV_NAME}}.

Example: aws-sqs://{{env:QUEUE_NAME}}?amazonSQSEndpoint={{env:SQS_ENDPOINT}}&...

Example fake SQS integration:

Tested with elasticmq. See example/docker-compose.yml and example/config/db.json

docker run -d -p 9911:9911 -v "$PWD/example/config":/etc/sns s12v/sns


Unit tests

sbt test

Integration tests

It's tested with AWS Ruby and PHP SDKs. Start elasticmq for SQS integration tests with

docker run -d -p 9324:9324 s12v/elasticmq

Ruby SDK tests:

bundle install
ENDPOINT=http://localhost:9911 bundle exec cucumber

PHP SDK tests:

composer install
You can’t perform that action at this time.