Sign inSign up

kununu/goaws

By kununu

•Updated over 9 years ago

A clone of the AWS SQS/SNS systems for local use.

Image
0

10K+

kununu/goaws repository overview

⁠GoAws

Build Status

Written in Go this is a clone of the AWS SQS/SNS systems. This system is designed to emulate SQS ans SNS in a local environment so developers can test their interfaces without having to connect the the AWS Cloud and possibly incurring the expense, or even worse actually write to production topics/queues by mistake. If you see any problems or would like to see a new feature, please open an issue here in github. As well, I will logon to Gitter so we can discuss your deployment issues or the weather.

⁠SNS/SQS Api status:

All SNS/SQS APIs have been implemented except:

  • The full capabilities for Get and Set QueueAttributes. At the moment you can only Get ALL the attributes.

Here is a list of the APIs:

  • ListQueues
  • CreateQueue
  • GetQueueAttributes (Always returns all attributes - depth and arn are set correctly others are mocked)
  • GetQueueUrl
  • SendMessage
  • ReceiveMessage
  • DeleteMessage
  • PurgeQueue
  • Delete Queue

⁠Current SNS APIs implemented:

  • ListTopics
  • CreateTopic
  • Subscribe (raw)
  • ListSubscriptions
  • Publish
  • DeleteTopic
  • Subscribe
  • Unsubscribe
  • ListSubscriptionsByTopic

⁠Yaml Configuration Implemented

  • Read config file
  • -config flag to read a specific configuration file (e.g.: -config=myconfig.yaml)
  • a command line argument to determine the environment to use in the config file (e.e.: Dev)
  • IN the config file to can create Queues, Topic and Subscription see the example config file in the conf directory

⁠Debug logging can be turned on via a command line flag (e.g.: -debug)

⁠Note: The system does not authenticate or presently use https

⁠Installation

go get github.com/p4tin/goaws

⁠Build and Run (Standalone)

Build
    cd to GoAws directory
    go build . 
    
Run
    ./goaws  (by default goaws listens on port 4100 but you can change it in the goaws.yaml file to another port of your choice)
    

⁠Run (Docker Version)

Get it
    docker pull pafortin/goaws
    
run
    docker run -d --name goaws -p 4100:4100 pafortin/goaws

⁠Testing your installation

You can test that your installation is working correctly in one of two ways:

  1. Usign the postman collection, use this link to import it⁠. As well the Environment variable for the collection should be set as follows: URL = http://localhost:4100/⁠.

  2. by using the AWS cli tools (download link⁠) here are some samples, you can refer to the aws cli tools docs⁠ for further information.

    {
        "QueueUrl": "http://localhost:4100/test1"
    }
    {
        "QueueUrls": [
            "http://localhost:4100/test1"
        ]
    }
    {
        "MD5OfMessageBody": "9d3f5eaac3b1b4dd509f39e71e25f954", 
        "MD5OfMessageAttributes": "b095c6d16871105acb75d59332513337", 
        "MessageId": "66a1b4f5-cecf-473e-92b6-810156d41bbe"
    }
    {
        "Messages": [
            {
                "Body": "this is a test of the GoAws Queue messaging", 
                "MD5OfMessageAttributes": "b095c6d16871105acb75d59332513337", 
                "ReceiptHandle": "66a1b4f5-cecf-473e-92b6-810156d41bbe#f1fc455c-698e-442e-9747-f415bee5b461", 
                "MD5OfBody": "9d3f5eaac3b1b4dd509f39e71e25f954", 
                "MessageId": "66a1b4f5-cecf-473e-92b6-810156d41bbe"
            }
        ]
    }
    No output
    No output (No messages in Q)
    No output
    No output (There are no Queues left)
    {
        "Topics": [
            {
                "TopicArn": "arn:aws:sns:local:000000000000:topic1"
            }, 
            {
                "TopicArn": "arn:aws:sns:local:000000000000:topic2"
            }
        ]
    }

Tag summary

Content type

Image

Digest

Size

136 MB

Last updated

over 9 years ago

docker pull kununu/goaws