{"id":"fa710b44-8ca4-4c18-a24c-938442e26ac6","shortId":"ryZpdU","kind":"skill","title":"sns","tagline":"AWS SNS notification service for pub/sub messaging. Use when creating topics, managing subscriptions, configuring message filtering, sending notifications, or setting up mobile push.","description":"# AWS SNS\n\nAmazon Simple Notification Service (SNS) is a fully managed pub/sub messaging service for application-to-application (A2A) and application-to-person (A2P) communication.\n\n## Table of Contents\n\n- [Core Concepts](#core-concepts)\n- [Common Patterns](#common-patterns)\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n- [Troubleshooting](#troubleshooting)\n- [References](#references)\n\n## Core Concepts\n\n### Topics\n\nNamed channels for publishing messages. Publishers send to topics, subscribers receive from topics.\n\n### Topic Types\n\n| Type | Description | Use Case |\n|------|-------------|----------|\n| **Standard** | Best-effort ordering, at-least-once | Most use cases |\n| **FIFO** | Strict ordering, exactly-once | Order-sensitive |\n\n### Subscription Protocols\n\n| Protocol | Description |\n|----------|-------------|\n| **Lambda** | Invoke Lambda function |\n| **SQS** | Send to SQS queue |\n| **HTTP/HTTPS** | POST to endpoint |\n| **Email** | Send email |\n| **SMS** | Send text message |\n| **Application** | Mobile push notification |\n\n### Message Filtering\n\nRoute messages to specific subscribers based on message attributes.\n\n## Common Patterns\n\n### Create Topic and Subscribe\n\n**AWS CLI:**\n\n```bash\n# Create standard topic\naws sns create-topic --name my-topic\n\n# Create FIFO topic\naws sns create-topic \\\n  --name my-topic.fifo \\\n  --attributes FifoTopic=true\n\n# Subscribe Lambda\naws sns subscribe \\\n  --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic \\\n  --protocol lambda \\\n  --notification-endpoint arn:aws:lambda:us-east-1:123456789012:function:my-function\n\n# Subscribe SQS\naws sns subscribe \\\n  --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic \\\n  --protocol sqs \\\n  --notification-endpoint arn:aws:sqs:us-east-1:123456789012:my-queue\n\n# Subscribe email\naws sns subscribe \\\n  --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic \\\n  --protocol email \\\n  --notification-endpoint user@example.com\n```\n\n**boto3:**\n\n```python\nimport boto3\n\nsns = boto3.client('sns')\n\n# Create topic\nresponse = sns.create_topic(Name='my-topic')\ntopic_arn = response['TopicArn']\n\n# Subscribe Lambda\nsns.subscribe(\n    TopicArn=topic_arn,\n    Protocol='lambda',\n    Endpoint='arn:aws:lambda:us-east-1:123456789012:function:my-function'\n)\n\n# Subscribe SQS with filter\nsns.subscribe(\n    TopicArn=topic_arn,\n    Protocol='sqs',\n    Endpoint='arn:aws:sqs:us-east-1:123456789012:order-queue',\n    Attributes={\n        'FilterPolicy': '{\"event_type\": [\"order_created\", \"order_updated\"]}'\n    }\n)\n```\n\n### Publish Messages\n\n```python\nimport boto3\nimport json\n\nsns = boto3.client('sns')\ntopic_arn = 'arn:aws:sns:us-east-1:123456789012:my-topic'\n\n# Simple publish\nsns.publish(\n    TopicArn=topic_arn,\n    Message='Hello, World!',\n    Subject='Notification'\n)\n\n# Publish with attributes (for filtering)\nsns.publish(\n    TopicArn=topic_arn,\n    Message=json.dumps({'order_id': '12345', 'status': 'created'}),\n    MessageAttributes={\n        'event_type': {\n            'DataType': 'String',\n            'StringValue': 'order_created'\n        },\n        'priority': {\n            'DataType': 'Number',\n            'StringValue': '1'\n        }\n    }\n)\n\n# Publish to FIFO topic\nsns.publish(\n    TopicArn='arn:aws:sns:us-east-1:123456789012:my-topic.fifo',\n    Message=json.dumps({'order_id': '12345'}),\n    MessageGroupId='order-12345',\n    MessageDeduplicationId='unique-id'\n)\n```\n\n### Message Filtering\n\n```bash\n# Add filter policy to subscription\naws sns set-subscription-attributes \\\n  --subscription-arn arn:aws:sns:us-east-1:123456789012:my-topic:abc123 \\\n  --attribute-name FilterPolicy \\\n  --attribute-value '{\n    \"event_type\": [\"order_created\"],\n    \"priority\": [{\"numeric\": [\">=\", 1]}]\n  }'\n```\n\nFilter policy examples:\n\n```json\n// Exact match\n{\"event_type\": [\"order_created\", \"order_updated\"]}\n\n// Prefix match\n{\"customer_id\": [{\"prefix\": \"PREMIUM-\"}]}\n\n// Numeric comparison\n{\"price\": [{\"numeric\": [\">=\", 100, \"<=\", 500]}]}\n\n// Exists check\n{\"customer_id\": [{\"exists\": true}]}\n\n// Anything but\n{\"event_type\": [{\"anything-but\": [\"deleted\"]}]}\n\n// Combined\n{\n  \"event_type\": [\"order_created\"],\n  \"region\": [\"us-east\", \"us-west\"],\n  \"priority\": [{\"numeric\": [\">=\", 1]}]\n}\n```\n\n### Fan-Out Pattern (SNS to Multiple SQS)\n\n```python\nimport boto3\nimport json\n\nsns = boto3.client('sns')\nsqs = boto3.client('sqs')\n\n# Create topic\ntopic = sns.create_topic(Name='orders-topic')\ntopic_arn = topic['TopicArn']\n\n# Create queues for different processors\nqueues = {\n    'analytics': sqs.create_queue(QueueName='order-analytics')['QueueUrl'],\n    'fulfillment': sqs.create_queue(QueueName='order-fulfillment')['QueueUrl'],\n    'notification': sqs.create_queue(QueueName='order-notification')['QueueUrl']\n}\n\n# Subscribe each queue\nfor name, queue_url in queues.items():\n    queue_arn = sqs.get_queue_attributes(\n        QueueUrl=queue_url,\n        AttributeNames=['QueueArn']\n    )['Attributes']['QueueArn']\n\n    sns.subscribe(\n        TopicArn=topic_arn,\n        Protocol='sqs',\n        Endpoint=queue_arn\n    )\n\n# One publish reaches all queues\nsns.publish(\n    TopicArn=topic_arn,\n    Message=json.dumps({'order_id': '12345', 'total': 99.99})\n)\n```\n\n### Lambda Permission for SNS\n\n```bash\naws lambda add-permission \\\n  --function-name my-function \\\n  --statement-id sns-trigger \\\n  --action lambda:InvokeFunction \\\n  --principal sns.amazonaws.com \\\n  --source-arn arn:aws:sns:us-east-1:123456789012:my-topic\n```\n\n## CLI Reference\n\n### Topic Management\n\n| Command | Description |\n|---------|-------------|\n| `aws sns create-topic` | Create topic |\n| `aws sns delete-topic` | Delete topic |\n| `aws sns list-topics` | List topics |\n| `aws sns get-topic-attributes` | Get topic settings |\n| `aws sns set-topic-attributes` | Update topic settings |\n\n### Subscriptions\n\n| Command | Description |\n|---------|-------------|\n| `aws sns subscribe` | Create subscription |\n| `aws sns unsubscribe` | Remove subscription |\n| `aws sns list-subscriptions` | List all subscriptions |\n| `aws sns list-subscriptions-by-topic` | List topic subscriptions |\n| `aws sns confirm-subscription` | Confirm pending subscription |\n\n### Publishing\n\n| Command | Description |\n|---------|-------------|\n| `aws sns publish` | Publish message |\n\n## Best Practices\n\n### Reliability\n\n- **Use SQS for durability** — SNS is push-based, SQS queues messages\n- **Implement retries** for HTTP/HTTPS endpoints\n- **Configure DLQ** for failed deliveries\n- **Use FIFO topics** for ordering requirements\n\n### Security\n\n- **Use topic policies** to control access\n- **Enable encryption** with SSE\n- **Use VPC endpoints** for private access\n\n```bash\n# Enable SSE\naws sns set-topic-attributes \\\n  --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic \\\n  --attribute-name KmsMasterKeyId \\\n  --attribute-value alias/my-key\n```\n\n### Cost Optimization\n\n- **Use message filtering** to reduce unnecessary deliveries\n- **Batch operations** where possible\n- **Monitor and clean up** unused topics/subscriptions\n\n### Message Design\n\n- **Keep messages small** (256 KB limit)\n- **Use message attributes** for routing\n- **Include correlation IDs** for tracing\n\n## Troubleshooting\n\n### Subscription Not Receiving Messages\n\n**Check:**\n1. Subscription is confirmed (not pending)\n2. Filter policy matches message attributes\n3. Target permissions (Lambda, SQS)\n\n```bash\n# Check subscription status\naws sns list-subscriptions-by-topic \\\n  --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic\n\n# Check subscription attributes\naws sns get-subscription-attributes \\\n  --subscription-arn arn:aws:sns:us-east-1:123456789012:my-topic:abc123\n```\n\n### HTTP Endpoint Not Working\n\n**Debug:**\n\n```bash\n# Check delivery status logging\naws sns set-topic-attributes \\\n  --topic-arn arn:aws:sns:us-east-1:123456789012:my-topic \\\n  --attribute-name DeliveryPolicy \\\n  --attribute-value '{\n    \"http\": {\n      \"defaultHealthyRetryPolicy\": {\n        \"minDelayTarget\": 20,\n        \"maxDelayTarget\": 20,\n        \"numRetries\": 3,\n        \"numMaxDelayRetries\": 0,\n        \"numNoDelayRetries\": 0,\n        \"numMinDelayRetries\": 0,\n        \"backoffFunction\": \"linear\"\n      }\n    }\n  }'\n```\n\n### Messages Not Matching Filter\n\n**Verify:**\n- Message attributes are set (not in body)\n- Attribute types match (String vs Number)\n- Filter policy syntax is correct\n\n```python\n# Correct: attributes must be message attributes\nsns.publish(\n    TopicArn=topic_arn,\n    Message='body content',\n    MessageAttributes={\n        'event_type': {\n            'DataType': 'String',\n            'StringValue': 'order_created'  # This is filtered\n        }\n    }\n)\n\n# Wrong: this won't be filtered\nsns.publish(\n    TopicArn=topic_arn,\n    Message=json.dumps({'event_type': 'order_created'})  # Not filtered\n)\n```\n\n### SQS Not Receiving from SNS\n\n**Check SQS queue policy:**\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Principal\": {\"Service\": \"sns.amazonaws.com\"},\n      \"Action\": \"sqs:SendMessage\",\n      \"Resource\": \"arn:aws:sqs:us-east-1:123456789012:my-queue\",\n      \"Condition\": {\n        \"ArnEquals\": {\n          \"aws:SourceArn\": \"arn:aws:sns:us-east-1:123456789012:my-topic\"\n        }\n      }\n    }\n  ]\n}\n```\n\n## References\n\n- [SNS Developer Guide](https://docs.aws.amazon.com/sns/latest/dg/)\n- [SNS API Reference](https://docs.aws.amazon.com/sns/latest/api/)\n- [SNS CLI Reference](https://docs.aws.amazon.com/cli/latest/reference/sns/)\n- [boto3 SNS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html)","tags":["sns","aws","agent","skills","itsmostafa","agent-skills","agentic-ai","claude-code","claude-skills","codex","coding-agents"],"capabilities":["skill","source-itsmostafa","skill-sns","topic-agent-skills","topic-agentic-ai","topic-aws","topic-claude-code","topic-claude-skills","topic-codex","topic-coding-agents"],"categories":["aws-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/itsmostafa/aws-agent-skills/sns","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add itsmostafa/aws-agent-skills","source_repo":"https://github.com/itsmostafa/aws-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1085 github stars · SKILL.md body (9,496 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:59.113Z","embedding":null,"createdAt":"2026-04-18T21:55:47.068Z","updatedAt":"2026-05-03T00:52:59.113Z","lastSeenAt":"2026-05-03T00:52:59.113Z","tsv":"'-10':1108 '-12345':447 '-17':1109 '/cli/latest/reference/sns/)':1164 '/sns/latest/api/)':1158 '/sns/latest/dg/)':1152 '/v1/documentation/api/latest/reference/services/sns.html)':1169 '0':1023,1025,1027 '1':209,225,245,261,280,326,349,380,424,437,475,494,547,692,855,911,948,971,1002,1126,1141 '100':517 '12345':409,444,653 '123456789012':210,226,246,262,281,327,350,381,438,476,693,856,949,972,1003,1127,1142 '2':917 '20':1017,1019 '2012':1107 '256':892 '3':923,1021 '500':518 '99.99':655 'a2a':44 'a2p':50 'abc123':480,976 'access':826,836 'action':678,1116 'add':455,664 'add-permiss':663 'alias/my-key':867 'allow':1112 'amazon':27 'analyt':586,592 'anyth':525,530 'anything-but':529 'api':1154 'applic':41,43,47,146 'application-to-appl':40 'application-to-person':46 'arn':202,203,219,238,239,255,273,274,308,316,320,339,343,373,374,390,404,431,468,469,577,620,634,639,648,685,686,848,849,941,942,964,965,995,996,1063,1087,1120,1135 'arnequ':1132 'at-least-onc':106 'attribut':160,192,354,398,465,482,486,623,629,729,738,845,861,865,897,922,955,961,992,1008,1012,1036,1042,1055,1059 'attribute-nam':481,860,1007 'attribute-valu':485,864,1011 'attributenam':627 'aw':2,25,167,173,185,197,204,220,233,240,256,268,275,321,344,375,432,460,470,661,687,703,710,717,724,733,745,750,755,763,773,784,840,850,932,943,956,966,987,997,1121,1133,1136 'backofffunct':1028 'base':157,800 'bash':169,454,660,837,928,982 'batch':877 'best':70,73,103,789 'best-effort':102 'best-practic':72 'bodi':1041,1065 'boto3':291,294,366,558,1165 'boto3.amazonaws.com':1168 'boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html)':1167 'boto3.client':296,370,562,565 'case':100,112 'channel':83 'check':520,910,929,953,983,1101 'clean':883 'cli':65,68,168,697,1160 'cli-refer':67 'combin':533 'command':701,743,782 'common':60,63,161 'common-pattern':62 'communic':51 'comparison':514 'concept':56,59,80 'condit':1131 'configur':15,809 'confirm':776,778,914 'confirm-subscript':775 'content':54,1066 'control':825 'core':55,58,79 'core-concept':57 'correct':1052,1054 'correl':901 'cost':868 'creat':11,163,170,176,182,188,298,359,411,419,491,504,537,567,580,706,708,748,1074,1093 'create-top':175,187,705 'custom':509,521 'datatyp':415,421,1070 'debug':981 'defaulthealthyretrypolici':1015 'delet':532,713,715 'delete-top':712 'deliveri':813,876,984 'deliverypolici':1010 'descript':98,125,702,744,783 'design':888 'develop':1148 'differ':583 'dlq':810 'docs.aws.amazon.com':1151,1157,1163 'docs.aws.amazon.com/cli/latest/reference/sns/)':1162 'docs.aws.amazon.com/sns/latest/api/)':1156 'docs.aws.amazon.com/sns/latest/dg/)':1150 'durabl':795 'east':208,224,244,260,279,325,348,379,436,474,541,691,854,947,970,1001,1125,1140 'effect':1111 'effort':104 'email':139,141,267,286 'enabl':827,838 'encrypt':828 'endpoint':138,218,254,289,319,342,637,808,833,978 'event':356,413,488,501,527,534,1068,1090 'exact':117,499 'exactly-onc':116 'exampl':497 'exist':519,523 'fail':812 'fan':549 'fan-out':548 'fifo':113,183,427,815 'fifotop':193 'filter':17,151,335,400,453,456,495,872,918,1033,1048,1077,1083,1095 'filterpolici':355,484 'fulfil':594,600 'fulli':34 'function':129,227,230,328,331,667,671 'function-nam':666 'get':727,730,959 'get-subscription-attribut':958 'get-topic-attribut':726 'guid':1149 'hello':392 'http':977,1014 'http/https':135,807 'id':408,443,451,510,522,652,674,902 'implement':804 'import':293,365,367,557,559 'includ':900 'invok':127 'invokefunct':680 'json':368,498,560,1105 'json.dumps':406,441,650,1089 'kb':893 'keep':889 'kmsmasterkeyid':863 'lambda':126,128,196,215,221,312,318,322,656,662,679,926 'least':108 'limit':894 'linear':1029 'list':720,722,758,760,766,770,935 'list-subscript':757 'list-subscriptions-by-top':765,934 'list-top':719 'log':986 'manag':13,35,700 'match':500,508,920,1032,1044 'maxdelaytarget':1018 'messag':8,16,37,86,145,150,153,159,363,391,405,440,452,649,788,803,871,887,890,896,909,921,1030,1035,1058,1064,1088 'messageattribut':412,1067 'messagededuplicationid':448 'messagegroupid':445 'mindelaytarget':1016 'mobil':23,147 'monitor':881 'multipl':554 'must':1056 'my-funct':228,329,669 'my-queu':263,1128 'my-top':179,211,247,282,304,382,477,694,857,950,973,1004,1143 'my-topic.fifo':191,439 'name':82,178,190,303,483,572,614,668,862,1009 'notif':4,19,29,149,217,253,288,395,602,608 'notification-endpoint':216,252,287 'number':422,1047 'numer':493,513,516,546 'nummaxdelayretri':1022 'nummindelayretri':1026 'numnodelayretri':1024 'numretri':1020 'one':640 'oper':878 'optim':869 'order':105,115,120,352,358,360,407,418,442,446,490,503,505,536,574,591,599,607,651,818,1073,1092 'order-analyt':590 'order-fulfil':598 'order-notif':606 'order-queu':351 'order-sensit':119 'orders-top':573 'pattern':61,64,162,551 'pend':779,916 'permiss':657,665,925 'person':49 'polici':457,496,823,919,1049,1104 'possibl':880 'post':136 'practic':71,74,790 'prefix':507,511 'premium':512 'price':515 'princip':681,1113 'prioriti':420,492,545 'privat':835 'processor':584 'protocol':123,124,214,250,285,317,340,635 'pub/sub':7,36 'publish':85,87,362,386,396,425,641,781,786,787 'push':24,148,799 'push-bas':798 'python':292,364,556,1053 'queue':134,265,353,581,585,588,596,604,612,615,619,622,625,638,644,802,1103,1130 'queuearn':628,630 'queuenam':589,597,605 'queues.items':618 'queueurl':593,601,609,624 'reach':642 'receiv':92,908,1098 'reduc':874 'refer':66,69,77,78,698,1146,1155,1161 'region':538 'reliabl':791 'remov':753 'requir':819 'resourc':1119 'respons':300,309 'retri':805 'rout':152,899 'secur':820 'send':18,88,131,140,143 'sendmessag':1118 'sensit':121 'servic':5,30,38,1114 'set':21,463,732,736,741,843,990,1038 'set-subscription-attribut':462 'set-topic-attribut':735,842,989 'simpl':28,385 'skill' 'skill-sns' 'small':891 'sms':142 'sns':1,3,26,31,174,186,198,205,234,241,269,276,295,297,369,371,376,433,461,471,552,561,563,659,676,688,704,711,718,725,734,746,751,756,764,774,785,796,841,851,933,944,957,967,988,998,1100,1137,1147,1153,1159,1166 'sns-trigger':675 'sns.amazonaws.com':682,1115 'sns.create':301,570 'sns.publish':387,401,429,645,1060,1084 'sns.subscribe':313,336,631 'sourc':684 'source-arn':683 'source-itsmostafa' 'sourcearn':1134 'specif':155 'sqs':130,133,232,251,257,333,341,345,555,564,566,636,793,801,927,1096,1102,1117,1122 'sqs.create':587,595,603 'sqs.get':621 'sse':830,839 'standard':101,171 'statement':673,1110 'statement-id':672 'status':410,931,985 'strict':114 'string':416,1045,1071 'stringvalu':417,423,1072 'subject':394 'subscrib':91,156,166,195,199,231,235,266,270,311,332,610,747 'subscript':14,122,459,464,467,742,749,754,759,762,767,772,777,780,906,912,930,936,954,960,963 'subscription-arn':466,962 'syntax':1050 'tabl':52 'target':924 'text':144 'topic':12,81,90,94,95,164,172,177,181,184,189,201,213,237,249,272,284,299,302,306,307,315,338,372,384,389,403,428,479,568,569,571,575,576,578,633,647,696,699,707,709,714,716,721,723,728,731,737,740,769,771,816,822,844,847,859,938,940,952,975,991,994,1006,1062,1086,1145 'topic-agent-skills' 'topic-agentic-ai' 'topic-arn':200,236,271,846,939,993 'topic-aws' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-coding-agents' 'topicarn':310,314,337,388,402,430,579,632,646,1061,1085 'topics/subscriptions':886 'total':654 'trace':904 'trigger':677 'troubleshoot':75,76,905 'true':194,524 'type':96,97,357,414,489,502,528,535,1043,1069,1091 'uniqu':450 'unique-id':449 'unnecessari':875 'unsubscrib':752 'unus':885 'updat':361,506,739 'url':616,626 'us':207,223,243,259,278,324,347,378,435,473,540,543,690,853,946,969,1000,1124,1139 'us-east':206,222,242,258,277,323,346,377,434,472,539,689,852,945,968,999,1123,1138 'us-west':542 'use':9,99,111,792,814,821,831,870,895 'user@example.com':290 'valu':487,866,1013 'verifi':1034 'version':1106 'vpc':832 'vs':1046 'west':544 'won':1080 'work':980 'world':393 'wrong':1078","prices":[{"id":"63b469b0-ce6a-4c37-82c6-e7d8444e5b5c","listingId":"fa710b44-8ca4-4c18-a24c-938442e26ac6","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"itsmostafa","category":"aws-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:55:47.068Z"}],"sources":[{"listingId":"fa710b44-8ca4-4c18-a24c-938442e26ac6","source":"github","sourceId":"itsmostafa/aws-agent-skills/sns","sourceUrl":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/sns","isPrimary":false,"firstSeenAt":"2026-04-18T21:55:47.068Z","lastSeenAt":"2026-05-03T00:52:59.113Z"}],"details":{"listingId":"fa710b44-8ca4-4c18-a24c-938442e26ac6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itsmostafa","slug":"sns","github":{"repo":"itsmostafa/aws-agent-skills","stars":1085,"topics":["agent-skills","agentic-ai","aws","claude-code","claude-skills","codex","coding-agents"],"license":"mit","html_url":"https://github.com/itsmostafa/aws-agent-skills","pushed_at":"2026-04-27T09:45:24Z","description":"AWS Skills for Agents","skill_md_sha":"9f55e86683f79c6039c0bca2a22d796f8c1763bb","skill_md_path":"skills/sns/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/sns"},"layout":"multi","source":"github","category":"aws-agent-skills","frontmatter":{"name":"sns","description":"AWS SNS notification service for pub/sub messaging. Use when creating topics, managing subscriptions, configuring message filtering, sending notifications, or setting up mobile push."},"skills_sh_url":"https://skills.sh/itsmostafa/aws-agent-skills/sns"},"updatedAt":"2026-05-03T00:52:59.113Z"}}