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.
All SNS/SQS APIs have been implemented except:
Here is a list of the APIs:
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
git clone git@github.com:Admiral-Piett/goaws.git
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)
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
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.
aws --endpoint-url http://localhost:4100 sqs create-queue --queue-name test1
{
"QueueUrl": "http://localhost:4100/test1"
}
aws --endpoint-url http://localhost:4100 sqs list-queues
{
"QueueUrls": [
"http://localhost:4100/test1"
]
}
aws --endpoint-url http://localhost:4100 sqs send-message --queue-url http://localhost:4100/test1 --message-body "this is a test of the GoAws Queue messaging"
{
"MD5OfMessageBody": "9d3f5eaac3b1b4dd509f39e71e25f954",
"MD5OfMessageAttributes": "b095c6d16871105acb75d59332513337",
"MessageId": "66a1b4f5-cecf-473e-92b6-810156d41bbe"
}
aws --endpoint-url http://localhost:4100 sqs receive-message --queue-url http://localhost:4100/test1
{
"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"
}
]
}
aws --endpoint-url http://localhost:4100 sqs delete-message --queue-url http://localhost:4100/test1 --receipt-handle 66a1b4f5-cecf-473e-92b6-810156d41bbe#f1fc455c-698e-442e-9747-f415bee5b461
No output
aws --endpoint-url http://localhost:4100 sqs receive-message --queue-url http://localhost:4100/test1
No output (No messages in Q)
aws --endpoint-url http://localhost:4100 sqs delete-queue --queue-url http://localhost:4100/test1
No output
aws --endpoint-url http://localhost:4100 sqs list-queues
No output (There are no Queues left)
aws --endpoint-url http://localhost:4100 sns list-topics (Example Response from list-topics)
{
"Topics": [
{
"TopicArn": "arn:aws:sns:local:000000000000:topic1"
},
{
"TopicArn": "arn:aws:sns:local:000000000000:topic2"
}
]
}