How to Test AWS SNS HTTP Endpoints
Confirm SNS subscriptions, capture notification payloads, and debug delivery issues — without a deployed server or AWS credentials.
TL;DR: AWS SNS sends HTTP/S notifications to any public URL. It first sends a SubscriptionConfirmation request that your endpoint must confirm by visiting the SubscribeURL. Requex captures both messages so you can inspect them before building your real handler.
How AWS SNS HTTP Delivery Works
Amazon Simple Notification Service (SNS) delivers messages to HTTP/HTTPS endpoints by sending POST requests with a JSON body. The delivery flow is two-phase: SNS first verifies that your endpoint is reachable and willing to accept notifications, then starts delivering actual messages.
Every SNS message has a Type field that tells you which phase you are in. The three types you will encounter are:
The SubscriptionConfirmation message contains a SubscribeURL field — a pre-signed AWS URL. Your endpoint must make a GET request to that URL to activate the subscription. Until this is done, SNS will not deliver any Notification messages, and the subscription will remain in a Pending confirmation state in the AWS Console.
Requex captures the SubscriptionConfirmation payload so you can copy the SubscribeURL and confirm manually — no code required.
SNS Message Types
| Type | When |
|---|---|
SubscriptionConfirmation | First message sent after creating the subscription |
Notification | Actual event message published to the topic |
UnsubscribeConfirmation | Sent after unsubscribing; can be re-confirmed |
Step 1: Generate a Requex Endpoint
Open requex.me. A unique HTTPS webhook URL is generated automatically. Copy it from the dashboard:
https://requex.me/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SNS requires a valid HTTPS endpoint — Requex satisfies this requirement out of the box. You do not need a running server, an AWS account, or any local setup.
Step 2: Subscribe to an SNS Topic
In the AWS Console, navigate to SNS and subscribe your Requex endpoint to a topic:
- Go to AWS Console → SNS → Topics.
- Select the topic you want to test (or create a new one).
- Click Create subscription.
- Set Protocol to HTTPS.
- Paste your Requex URL into the Endpoint field.
- Leave Enable raw message delivery off for now — the default JSON envelope is easier to inspect.
- Click Create subscription.
The subscription status will show Pending confirmation. SNS immediately sends the SubscriptionConfirmation message to your Requex URL — you should see it appear in the dashboard within a few seconds.
Step 3: Confirm the Subscription
In Requex, click the captured SubscriptionConfirmation request. Find the SubscribeURL field in the JSON body:
{
"Type": "SubscriptionConfirmation",
"MessageId": "165545c9-2a5c-4b4d-bc5c-a5caab18d4b0",
"Token": "2336412f37...",
"TopicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
"Message": "You have chosen to subscribe to the topic...",
"SubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-1:123456789012:MyTopic&Token=2336412f37...",
"Timestamp": "2026-04-05T10:00:00.000Z",
"SignatureVersion": "1",
"Signature": "EXAMPLEpH+DcEwjAPg8O...",
"SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-abc123.pem"
}Copy the entire SubscribeURL value and open it in your browser. AWS responds with an XML confirmation. Go back to the AWS Console — the subscription status should now show Confirmed.
Step 4: Publish a Test Message
Now that the subscription is confirmed, publish a message to the topic to see a real Notification delivery:
- In the AWS Console, go to SNS → Topics → [your topic].
- Click Publish message.
- Enter a subject and message body (e.g.,
{"event": "test", "value": 42}). - Click Publish message.
The notification appears in Requex within seconds. The Notification message looks like:
{
"Type": "Notification",
"MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
"TopicArn": "arn:aws:sns:us-east-1:123456789012:MyTopic",
"Subject": "Test notification",
"Message": "{"event": "test", "value": 42}",
"Timestamp": "2026-04-05T10:05:00.000Z",
"SignatureVersion": "1",
"Signature": "EXAMPLEpH+DcEwjAPg8O...",
"SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-abc123.pem",
"UnsubscribeURL": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&..."
}Note that the Message field is a JSON-encoded string by default. Your handler will need to JSON.parse(body.Message) to access the inner payload.
SNS Message Signing
AWS signs every SNS message to allow your endpoint to verify authenticity. The signature-related fields in each message are:
| Field | Purpose |
|---|---|
Signature | Base64-encoded RSA signature over specific message fields |
SignatureVersion | Signing algorithm version (currently 1 for SHA1withRSA) |
SigningCertURL | URL of the PEM certificate used to sign the message |
To verify the signature in production, use the official AWS SDK helper. Here is a Node.js example:
const { MessageValidator } = require('sns-validator');
const validator = new MessageValidator();
app.post('/webhooks/sns', express.json({ type: 'text/plain' }), (req, res) => {
validator.validate(req.body, (err, message) => {
if (err) {
console.error('SNS signature validation failed:', err);
return res.status(403).send('Invalid signature');
}
switch (message.Type) {
case 'SubscriptionConfirmation':
// Auto-confirm by visiting SubscribeURL
fetch(message.SubscribeURL).then(() => {
console.log('SNS subscription confirmed');
});
break;
case 'Notification':
const payload = JSON.parse(message.Message);
console.log('SNS notification:', payload);
break;
}
res.status(200).send('OK');
});
});During development with Requex, you can inspect the raw Signature and SigningCertURL values to confirm that SNS is signing messages correctly before wiring up signature verification in your production code.
Common SNS Webhook Issues
| Issue | Cause | Fix |
|---|---|---|
| Subscription stays Pending | SubscribeURL not visited | Copy the SubscribeURL from the confirmation payload in Requex and open it in a browser |
| No messages arriving after confirmation | HTTPS required by SNS | SNS requires a valid HTTPS certificate; Requex provides this automatically — do not use plain HTTP URLs |
| SignatureVerificationFailure in production | Message tampering or certificate issue | Validate using the AWS SDK sns-validator package; never implement signature verification manually |
Test Your SNS Endpoint Now
Get a valid HTTPS endpoint in seconds. Confirm subscriptions, inspect payloads, and debug SNS delivery — no server needed.
Open Requex →Related guides
Start Testing Webhooks Now
Generate your unique URL and test webhooks instantly. Free, no signup.
Open Webhook Tester →