DEV Community

Aisalkyn Aidarova
Aisalkyn Aidarova

Posted on • Edited on

AWS Integration & Messaging using SNS + SQS

Lab: SNS → SQS Fanout

Part A — Create SNS Topic (Standard)

1) Open SNS

  1. AWS Console search bar → type SNS
  2. Click Simple Notification Service

2) Create Topic

  1. Left menu → Topics
  2. Click Create topic

3) Configure Topic

  1. Type → select Standard
  2. Namedevops-sns-topic
  3. Leave everything else default
  4. Click Create topic

4) Copy Topic ARN

  1. On topic page → copy ARN
  2. Save it:
  • SNS_TOPIC_ARN = arn:aws:sns:us-east-2:021399177326:devops-sns-topic

Part B — Create SQS Queue (Standard)

5) Open SQS

  1. AWS Console search bar → type SQS
  2. Click Simple Queue Service

6) Create Queue

  1. Click Create queue

7) Configure Queue

  1. Type → select Standard
  2. Namedevops-sqs-queue
  3. Keep defaults for all Configuration fields
  4. Encryption → leave default (your queue shows SSE-SQS enabled by AWS-managed key — that’s fine)
  5. Access policy → leave default (owner-only)
  6. DLQ / Redrive → leave disabled
  7. Click Create queue

8) Copy Queue ARN + URL

  1. Open the queue: click devops-sqs-queue
  2. Copy ARN and URL
  3. Save them:
  • SQS_QUEUE_ARN = arn:aws:sqs:us-east-2:021399177326:devops-sqs-queue
  • SQS_QUEUE_URL = https://sqs.us-east-2.amazonaws.com/021399177326/devops-sqs-queue

Part C — Subscribe SQS to SNS

9) Go to SNS Topic

  1. Go back to SNS
  2. Click Topics
  3. Click devops-sns-topic

10) Create Subscription

  1. Scroll to Subscriptions
  2. Click Create subscription

11) Subscription Settings

  1. Topic ARN should already be filled
  2. Protocol → select Amazon SQS
  3. Endpoint → paste your queue ARN:
  • arn:aws:sqs:us-east-2:021399177326:devops-sqs-queue
  1. Click Create subscription

✅ After this you should see:

  • Subscriptions (1)
  • Protocol: Amazon SQS
  • Status: usually Confirmed

Part D — Allow SNS to Send Messages into SQS (Required)

If you skip this, messages often do not arrive.

12) Open SQS Queue Permissions

  1. Go to SQS
  2. Click Queues
  3. Click devops-sqs-queue

13) Edit Access Policy

  1. Scroll to Access policy
  2. Click Edit
  3. Choose Advanced (JSON)

14) Paste Policy (Use your real ARNs)

  1. Replace the policy with this (exact values you have):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Allow-SNS-SendMessage",
      "Effect": "Allow",
      "Principal": { "Service": "sns.amazonaws.com" },
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:us-east-2:021399177326:devops-sqs-queue",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:sns:us-east-2:021399177326:devops-sns-topic"
        }
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode
  1. Click Save changes

Part E — Publish Message to SNS

15) Open SNS Topic Again

  1. Go to SNS → Topics
  2. Click devops-sns-topic

16) Publish Message

  1. Click Publish message
  2. Subject (optional): test-message
  3. Message body:
Hello students!
SNS published this message.
SQS will store it until consumer reads it.
Enter fullscreen mode Exit fullscreen mode
  1. Click Publish message

Part F — Receive Message from SQS

17) Open Queue to Read Messages

  1. Go to SQS → Queues
  2. Click devops-sqs-queue

18) Poll for Messages

  1. Click Send and receive messages
  2. Click Poll for messages
  3. You should see the message appear

19) View Message Body

  1. Click the message
  2. Expand details
  3. You will see SNS wraps the message in JSON (this is normal)

20) Delete Message

  1. Select the message checkbox
  2. Click Delete
  3. Confirm Delete

What Students Must Learn (Short)

SNS (Topic)

  • “I publish 1 message”
  • “Many systems can receive it” (fanout)

SQS (Queue)

  • “I store messages safely”
  • “Consumer can read later”
  • Prevents loss if consumer is down

Together

  • Producer and consumer are decoupled
  • More reliable and scalable systems

Quick Troubleshooting (Fast Checks)

  1. No messages in SQS
  • Confirm you added SQS Access policy allowing SNS
  • Confirm topic ARN in policy matches exactly
  • Confirm SNS + SQS are in same region (us-east-2)
  1. Subscription exists but still nothing
  • Open subscription → verify it points to correct queue ARN
  • Republish message
  • Poll again

Cleanup (Optional)

  • SNS Topic → Subscriptions → delete subscription
  • Delete SNS topic
  • Delete SQS queue

Top comments (0)