GoAws
Written in Go this is a clone of the AWS SQS/SNS systems. This system is designed to emulate SQS and SNS in a local environment so developers can test their interfaces without having to connect to 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:
Supported Queue Attributes
Current SNS APIs implemented:
Supported Subscription Attributes
Yaml Configuration Implemented
Example: Passing Configuration to Docker
docker run \
--rm \
--name=goaws \
-v /path/on/host/goaws-config.yaml:/path/in/container/goaws-config.yaml \
-p=4100:4100 \
admiralpiett/goaws:v0.4.4-arm64 -config /path/in/container/goaws-config.yaml
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
git clone git@github.com:Admiral-Piett/goaws.git
Build and Run (Standalone)
Build
cd to GoAws directory
go build -o goaws app/cmd/goaws.go (The goaws executable should be in the currect directory, move it somewhere in your $PATH)
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)
Version >= v0.3.2
docker pull admiralpiett/goaws
Version <= v0.3.1
docker pull pafortin/goaws
run
docker run -d --name goaws -p 4100:4100 admiralpiett/goaws
Testing your installation
Postman Environment: LINK
Postman Collection: LINK
You can test that your installation is working correctly in one of two ways:
-
Using 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/.
-
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"
}
]
}