ronaldoalencar/sqs-handler

By ronaldoalencar

โ€ขUpdated 5 days ago

Web UI to manage Amazon SQS queues on LocalStack or real AWS โ€” send, inspect and purge messages

Image
Message queues
0

633

ronaldoalencar/sqs-handler repository overview

โ SQS Handler

Web UI to manage Amazon SQS queues โ€” against LocalStack (development) or real AWS (test/staging/production).

A single image bundling the frontend (React + Nginx) and the backend (Node.js + Express + AWS SDK v3), managed by supervisord. Nginx already proxies /api to the backend, so publishing port 80 is enough.


โ Features

  • ๐Ÿ“‹ List all available SQS queues
  • ๐Ÿ‘€ Inspect queue messages (up to 10 at a time), pretty-printed as JSON
  • ๐Ÿ“ค Send JSON messages with dynamic faker variables (faker.person.fullName, faker.internet.email, faker.finance.accountNumber, UUID, and more)
  • ๐Ÿ—‘๏ธ Delete individual messages
  • ๐Ÿงน Purge all messages from a queue
  • ๐Ÿ“Ž Copy a message's JSON to the clipboard
  • ๐Ÿ”€ Switch between LocalStack and real AWS with a single environment variable

โ Quick start

โ LocalStack (Linux)
docker run -d --name sqs-handler \
  -p 8080:80 \
  -e USE_LOCALSTACK=true \
  -e LOCALSTACK_ENDPOINT=http://172.17.0.1:4566 \
  -e AWS_REGION=us-east-1 \
  your-user/sqs-handler:latest

On Mac/Windows (Docker Desktop) use http://host.docker.internal:4566. If LocalStack runs in the same compose project, use http://localstack:4566.

โ Real AWS
docker run -d --name sqs-handler \
  -p 8080:80 \
  -e USE_LOCALSTACK=false \
  -e AWS_REGION=us-east-1 \
  -e AWS_ACCESS_KEY_ID=your-access-key \
  -e AWS_SECRET_ACCESS_KEY=your-secret-key \
  your-user/sqs-handler:latest

Then open http://localhost:8080โ .


โ Environment variables

VariableDescriptionDefault
PORTBackend port inside the container3001
USE_LOCALSTACKUse LocalStack (true) or real AWS (false)true
LOCALSTACK_ENDPOINTLocalStack endpointhttp://localhost:4566
AWS_REGIONAWS regionus-east-1
AWS_ENDPOINTCustom SQS endpoint (optional)โ€“
AWS_ACCESS_KEY_IDAWS access key IDโ€“
AWS_SECRET_ACCESS_KEYAWS secret access keyโ€“

If AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY are omitted, the AWS SDK falls back to its default credential chain (environment variables โ†’ ~/.aws/credentials โ†’ IAM role on EC2/ECS/Lambda).


โ Ports

PortService
80Frontend (Nginx) โ€” also serves the API under /api
3001Express backend (optional; publish it only if you want direct API access)

โ docker-compose

services:
  sqs-handler:
    image: your-user/sqs-handler:latest
    container_name: sqs-handler
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      - NODE_ENV=production
      - PORT=3001
      - USE_LOCALSTACK=false
      - AWS_REGION=us-east-1
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
    extra_hosts:
      - "host.docker.internal:host-gateway"
docker compose up -d

โ API

The backend exposes the following endpoints (also reachable under /api on port 80):

MethodRouteDescription
GET/api/queuesList queues
GET/api/queues/:queueName/urlGet the queue URL
GET/api/queues/:queueName/messagesReceive messages (up to 10)
POST/api/queues/:queueName/messagesSend a message
DELETE/api/queues/:queueName/messages/:receiptHandleDelete a message
POST/api/queues/:queueName/purgePurge the queue

โ Healthcheck

The image ships with a HEALTHCHECK that polls http://localhost:3001/api/queues every 30s.


โ Image details

  • Base: node:18-alpine
  • Build: multi-stage (Vite frontend โ†’ Nginx; backend with production-only dependencies)
  • Processes: supervisord running Nginx and the Node backend (the backend runs as the non-root user appuser)

โ Stack

React 18 ยท TypeScript ยท Vite ยท TailwindCSS ยท Node.js ยท Express ยท AWS SDK v3 ยท Nginx

Tag summary

Content type

Image

Digest

sha256:154c7d535โ€ฆ

Size

77.9 MB

Last updated

5 days ago

docker pull ronaldoalencar/sqs-handler