Skip to content

tomasbartkus/GoAws

 
 

Repository files navigation

GoAws Join the chat at https://gitter.im/p4tin/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.

Current SQS APIs implemented:

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

Current SQS APIs implemented:

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

Yaml Configuration Implemented

  • Read config file
  • Implement flag to chose configuration type
  • Process Queue Creations
  • Process Topic Creations
  • Process Create Subscriptions

Note: The system does not authenticate or presently use https

Installation

go get github.com/p4tin/GoAws
go get github.com/tools/godep

Build and Run (Standalone)

Build
    cd to GoAws directory
    godep restore
    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)
    
Test

    go test -cover -race `go list ./... | grep -v /vendor/`

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 are created hard coded (until create-topic is implemented)

    {
        "Topics": [
            {
                "TopicArn": "arn:aws:sns:local:000000000000:topic1"
            }, 
            {
                "TopicArn": "arn:aws:sns:local:000000000000:topic2"
            }
        ]
    }

About

AWS (SQS/SNS) Clone for Development testing

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%