.claude/skills/ts-aws-sns/SKILL.md
Use Amazon SNS for pub/sub messaging and notifications. Create topics and manage subscriptions across protocols (SQS, Lambda, HTTP, email, SMS). Configure message filtering, mobile push notifications, and fan-out architectures.
npx skillsauth add eliferjunior/Claude aws-snsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Amazon Simple Notification Service (SNS) is a fully managed pub/sub messaging service. Publishers send messages to topics, and subscribers receive them via SQS, Lambda, HTTP/S, email, SMS, or mobile push. It's the glue for fan-out architectures.
# Create a standard topic
aws sns create-topic --name order-events
# Create a FIFO topic
aws sns create-topic \
--name order-events.fifo \
--attributes FifoTopic=true,ContentBasedDeduplication=true
# List topics
aws sns list-topics --query 'Topics[].TopicArn' --output table
# Subscribe an SQS queue to a topic
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:123456789:order-events \
--protocol sqs \
--notification-endpoint arn:aws:sqs:us-east-1:123456789:order-processing
# Subscribe a Lambda function
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:123456789:order-events \
--protocol lambda \
--notification-endpoint arn:aws:lambda:us-east-1:123456789:function:process-order
# Subscribe an HTTP endpoint
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:123456789:order-events \
--protocol https \
--notification-endpoint https://api.myapp.com/webhooks/orders
# Subscribe email (requires confirmation)
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:123456789:order-events \
--protocol email \
--notification-endpoint [email protected]
# List subscriptions for a topic
aws sns list-subscriptions-by-topic \
--topic-arn arn:aws:sns:us-east-1:123456789:order-events
# Publish a message to a topic
aws sns publish \
--topic-arn arn:aws:sns:us-east-1:123456789:order-events \
--message '{"orderId":"12345","status":"completed","amount":99.99}' \
--message-attributes '{
"event_type": {"DataType":"String","StringValue":"order.completed"},
"priority": {"DataType":"String","StringValue":"high"}
}'
# Publish to FIFO topic
aws sns publish \
--topic-arn arn:aws:sns:us-east-1:123456789:order-events.fifo \
--message '{"orderId":"12345","status":"completed"}' \
--message-group-id "customer-789" \
--message-deduplication-id "order-12345-completed"
# Publish with different payloads per protocol
aws sns publish \
--topic-arn arn:aws:sns:us-east-1:123456789:alerts \
--message-structure json \
--message '{
"default": "Order 12345 completed",
"email": "Your order #12345 has been completed. Thank you!",
"sqs": "{\"orderId\":\"12345\",\"status\":\"completed\"}"
}'
# Set filter policy — subscriber only gets "order.completed" events
aws sns set-subscription-attributes \
--subscription-arn arn:aws:sns:us-east-1:123456789:order-events:abc-123 \
--attribute-name FilterPolicy \
--attribute-value '{
"event_type": ["order.completed"],
"priority": ["high", "critical"]
}'
# Filter on message body (not just attributes)
aws sns set-subscription-attributes \
--subscription-arn arn:aws:sns:us-east-1:123456789:order-events:abc-123 \
--attribute-name FilterPolicyScope \
--attribute-value MessageBody
aws sns set-subscription-attributes \
--subscription-arn arn:aws:sns:us-east-1:123456789:order-events:abc-123 \
--attribute-name FilterPolicy \
--attribute-value '{"status": ["completed"], "amount": [{"numeric": [">=", 100]}]}'
# Fan-out setup: one SNS topic publishing to multiple SQS queues
import boto3
import json
sns = boto3.client('sns')
sqs = boto3.client('sqs')
# Create topic
topic = sns.create_topic(Name='order-events')
topic_arn = topic['TopicArn']
# Create queues for different consumers
queues = ['order-fulfillment', 'order-analytics', 'order-notifications']
for queue_name in queues:
queue = sqs.create_queue(QueueName=queue_name)
queue_url = queue['QueueUrl']
attrs = sqs.get_queue_attributes(QueueUrl=queue_url, AttributeNames=['QueueArn'])
queue_arn = attrs['Attributes']['QueueArn']
# Allow SNS to send to SQS
policy = {
"Statement": [{
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "sqs:SendMessage",
"Resource": queue_arn,
"Condition": {"ArnEquals": {"aws:SourceArn": topic_arn}}
}]
}
sqs.set_queue_attributes(QueueUrl=queue_url, Attributes={"Policy": json.dumps(policy)})
# Subscribe
sns.subscribe(TopicArn=topic_arn, Protocol='sqs', Endpoint=queue_arn)
# Create platform application for FCM (Android)
aws sns create-platform-application \
--name my-app-android \
--platform GCM \
--attributes PlatformCredential="YOUR_FCM_SERVER_KEY"
# Register a device token
aws sns create-platform-endpoint \
--platform-application-arn arn:aws:sns:us-east-1:123456789:app/GCM/my-app-android \
--token "device-token-from-fcm"
# Send push notification to a device
aws sns publish \
--target-arn arn:aws:sns:us-east-1:123456789:endpoint/GCM/my-app-android/abc123 \
--message '{"GCM":"{\"notification\":{\"title\":\"Order Shipped\",\"body\":\"Your order is on the way\"}}"}' \
--message-structure json
development
Expert guidance for Fireworks AI, the platform for running open-source LLMs (Llama, Mixtral, Qwen, etc.) with enterprise-grade speed and reliability. Helps developers integrate Fireworks' inference API, fine-tune models, and deploy custom model endpoints with function calling and structured output support.
development
Convert any website into clean, structured data with Firecrawl — API-first web scraping service. Use when someone asks to "turn a website into markdown", "scrape website for LLM", "Firecrawl", "extract website content as clean text", "crawl and convert to structured data", or "scrape website for RAG". Covers single-page scraping, full-site crawling, structured extraction, and LLM-ready output.
tools
Expert guidance for Firebase, Google's platform for building and scaling web and mobile applications. Helps developers set up authentication, Firestore/Realtime Database, Cloud Functions, hosting, storage, and analytics using Firebase's SDK and CLI.
development
When the user needs to build file upload functionality for a web application. Use when the user mentions "file upload," "image upload," "upload endpoint," "multipart upload," "presigned URL," "S3 upload," "file validation," "upload to cloud storage," or "accept user files." Handles upload endpoints, file validation (type, size, magic bytes), cloud storage integration, and upload status tracking. For image/video processing after upload, see media-transcoder.