[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-messaging":3,"mdc--u7j2ed-key":39,"related-repo-aws-labs-messaging":2685,"related-org-aws-labs-messaging":2784},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":28,"repoUrl":29,"updatedAt":30,"license":31,"forks":32,"topics":33,"repo":34,"sourceUrl":37,"mdContent":38},"messaging","design event-driven architectures with AWS messaging","Deep-dive into AWS messaging services including SQS, SNS, and EventBridge. Use when designing event-driven architectures, choosing between messaging services, configuring queues and topics, implementing fan-out patterns, setting up dead-letter queues, or troubleshooting message delivery issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20,22,25],{"name":14,"slug":15,"type":16},"Architecture","architecture","tag",{"name":18,"slug":19,"type":16},"Service Bus","service-bus",{"name":21,"slug":4,"type":16},"Messaging",{"name":23,"slug":24,"type":16},"Event Hubs","event-hubs",{"name":26,"slug":27,"type":16},"AWS","aws",14,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups","2026-07-12T08:40:38.935102",null,15,[],{"repoUrl":29,"stars":28,"forks":32,"topics":35,"description":36},[],"Official AWS Startups repository that hosts plugins, skills, tools and resources to support startup builders on AWS","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fstartups\u002Ftree\u002FHEAD\u002Fsolution-architecture\u002Fplugins\u002Faws-dev-toolkit\u002Fskills\u002Fmessaging","---\nname: messaging\ndescription: Deep-dive into AWS messaging services including SQS, SNS, and EventBridge. Use when designing event-driven architectures, choosing between messaging services, configuring queues and topics, implementing fan-out patterns, setting up dead-letter queues, or troubleshooting message delivery issues.\n---\n\nYou are an AWS messaging specialist. Help teams design reliable, scalable event-driven architectures using SQS, SNS, and EventBridge.\n\n## Process\n\n1. Identify the communication pattern (point-to-point, fan-out, event bus, request-reply)\n2. Use the `awsknowledge` MCP tools (`mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation`, `mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend`) to verify current service limits and features\n3. Select the right service(s) for the pattern\n4. Design for failure: DLQs, retries, idempotency\n5. Recommend monitoring and alerting\n\n## Service Selection Guide\n\n| Requirement                             | Use                          |\n| --------------------------------------- | ---------------------------- |\n| Decouple producer from consumer, 1-to-1 | SQS                          |\n| One message, multiple subscribers       | SNS + SQS (fan-out)          |\n| Ordered, exactly-once processing        | SQS FIFO                     |\n| Event routing based on content          | EventBridge                  |\n| Cross-account\u002Fcross-region events       | EventBridge                  |\n| Schema registry and discovery           | EventBridge                  |\n| Simple mobile\u002Femail push notifications  | SNS                          |\n| Replay past events                      | EventBridge Archive + Replay |\n\n**Opinionated guidance:**\n\n- Default to **EventBridge** for new event-driven architectures — it's more flexible than SNS for routing and filtering\n- Use **SNS + SQS fan-out** for high-throughput workloads where EventBridge's throughput limits are a concern\n- Use **SQS** directly when you just need a simple work queue with no fan-out\n\n## Amazon SQS\n\n### Standard vs FIFO\n\n| Feature       | Standard                        | FIFO                                                                |\n| ------------- | ------------------------------- | ------------------------------------------------------------------- |\n| Throughput    | Unlimited                       | 300 msg\u002Fs (3,000 with batching, or high-throughput mode for higher) |\n| Ordering      | Best-effort                     | Strict within message group                                         |\n| Delivery      | At-least-once (rare duplicates) | Exactly-once                                                        |\n| Deduplication | None                            | 5-minute dedup window (content or ID based)                         |\n\n**Use Standard unless you need ordering or exactly-once.** The throughput difference is significant.\n\n### Visibility Timeout\n\n- Default: 30 seconds. Set it to at least 6x your average processing time.\n- If processing takes longer, call `ChangeMessageVisibility` to extend it before timeout expires.\n- If messages reappear in the queue, your visibility timeout is too short.\n- Maximum: 12 hours.\n\n### Dead-Letter Queues (DLQs)\n\n- **Always configure a DLQ.** Messages that fail processing silently retry forever without one.\n- Set `maxReceiveCount` to 3-5 for most workloads (how many times a message is retried before going to DLQ).\n- DLQ must be the same type as the source queue (Standard DLQ for Standard queue, FIFO DLQ for FIFO queue).\n- Set up a CloudWatch alarm on `ApproximateNumberOfMessagesVisible` on your DLQ — it should normally be 0.\n- Use DLQ redrive to move messages back to the source queue after fixing the bug.\n\n### Polling Best Practices\n\n- **Always use long polling** (`WaitTimeSeconds=20`). Short polling queries a subset of SQS servers and returns immediately — most responses are empty. At 4 polls\u002Fsecond that is ~345,600 empty API calls\u002Fday per consumer, each billed at the standard SQS rate. Long polling holds the connection open for up to 20 seconds and queries all servers, reducing empty responses by ~90% and cutting SQS API costs proportionally.\n- Use batch operations: `ReceiveMessage` with `MaxNumberOfMessages=10` and `SendMessageBatch` for up to 10 messages.\n- Delete messages immediately after successful processing.\n\n### Message Size\n\n- Maximum message size: 256 KB.\n- For larger payloads, use the **SQS Extended Client Library** — it stores the payload in S3 and puts a pointer in the message.\n\n## Amazon SNS\n\n### Topics\n\n- Standard topics: best-effort ordering, at-least-once delivery\n- FIFO topics: strict ordering, exactly-once delivery (only SQS FIFO subscribers)\n- Maximum 12.5 million subscriptions per topic (Standard)\n- Maximum 100,000 topics per account\n\n### Subscription Types\n\n- **SQS** — Most common. Use for decoupled processing.\n- **Lambda** — Direct invocation. Good for lightweight processing.\n- **HTTP\u002FHTTPS** — Webhooks. Must handle retries and confirmations.\n- **Email\u002FSMS** — Notifications to humans. Not for machine-to-machine.\n- **Kinesis Data Firehose** — Stream to S3, Redshift, OpenSearch.\n\n### Message Filtering\n\n- Apply filter policies on subscriptions to route messages without code\n- Filter on message attributes (default) or message body\n- Reduces cost — filtered messages don't invoke subscribers\n- Use `prefix`, `anything-but`, `numeric`, `exists` operators for flexible matching\n\n```json\n{\n  \"order_type\": [\"premium\"],\n  \"amount\": [{ \"numeric\": [\">\", 100] }],\n  \"region\": [{ \"prefix\": \"us-\" }]\n}\n```\n\n### Fan-Out Pattern (SNS + SQS)\n\n- Publish once to an SNS topic, deliver to multiple SQS queues\n- Each queue processes independently and at its own pace\n- Apply different filter policies per subscription for content-based routing\n- This is the standard pattern for 1-to-many async communication on AWS\n\n## Amazon EventBridge\n\n### When to Choose EventBridge\n\n- Content-based routing with complex rules\n- Events from AWS services, SaaS integrations, or custom apps\n- Schema discovery and registry for event contracts\n- Cross-account or cross-region event delivery\n- Event replay from archive\n\n### Event Rules\n\n- Match events with JSON patterns (event patterns)\n- Up to 300 rules per event bus (soft limit)\n- Each rule can have up to 5 targets\n- Use input transformers to reshape events before delivery\n\n```json\n{\n  \"source\": [\"my.application\"],\n  \"detail-type\": [\"OrderPlaced\"],\n  \"detail\": {\n    \"amount\": [{ \"numeric\": [\">\", 100] }],\n    \"status\": [\"CONFIRMED\"]\n  }\n}\n```\n\n### EventBridge Pipes\n\n- Point-to-point integration: source -> filter -> enrich -> target\n- Sources: SQS, DynamoDB Streams, Kinesis, Kafka\n- Reduces Lambda glue code for simple transformations\n- Use filtering to process only relevant events from the source\n\n### EventBridge Scheduler\n\n- Cron and rate-based scheduling with one-time schedules\n- Replaces CloudWatch Events scheduled rules\n- Supports time zones and flexible time windows\n- Can target any EventBridge target (Lambda, SQS, Step Functions, etc.)\n\n### Throughput\n\n- Default: 10,000 PutEvents per second per account per region (soft limit)\n- For higher throughput, use custom event buses and request limit increases\n- If you need >100K events\u002Fsec, consider SNS + SQS fan-out instead\n\n## Common Patterns\n\n### Saga \u002F Choreography\n\n```\nService A --event--> EventBridge --rule--> Service B --event--> EventBridge --rule--> Service C\n```\n\nEach service publishes events and reacts to events. Use DLQs on every consumer.\n\n### Queue-Based Load Leveling\n\n```\nAPI Gateway --> SQS --> Lambda (batch processing)\n```\n\nSQS absorbs traffic spikes. Lambda processes at a controlled concurrency.\n\n### Fan-Out with Filtering\n\n```\nProducer --> SNS Topic --> SQS Queue A (filter: premium)\n                      --> SQS Queue B (filter: standard)\n                      --> Lambda (filter: all, for analytics)\n```\n\n## Common CLI Commands\n\n```bash\n# SQS: Create standard queue with DLQ\naws sqs create-queue --queue-name my-dlq\naws sqs create-queue --queue-name my-queue \\\n  --attributes '{\n    \"RedrivePolicy\": \"{\\\"deadLetterTargetArn\\\":\\\"arn:aws:sqs:us-east-1:123456789012:my-dlq\\\",\\\"maxReceiveCount\\\":\\\"3\\\"}\",\n    \"VisibilityTimeout\": \"300\",\n    \"ReceiveMessageWaitTimeSeconds\": \"20\"\n  }'\n\n# SQS: Send and receive\naws sqs send-message --queue-url \u003Curl> --message-body '{\"key\":\"value\"}'\naws sqs receive-message --queue-url \u003Curl> --wait-time-seconds 20 --max-number-of-messages 10\n\n# SQS: Check queue depth\naws sqs get-queue-attributes --queue-url \u003Curl> \\\n  --attribute-names ApproximateNumberOfMessages ApproximateNumberOfMessagesNotVisible\n\n# SQS: Purge queue (deletes all messages)\naws sqs purge-queue --queue-url \u003Curl>\n\n# SNS: Create topic and subscribe SQS\naws sns create-topic --name my-topic\naws sns subscribe --topic-arn \u003Ctopic-arn> --protocol sqs --notification-endpoint \u003Cqueue-arn>\n\n# SNS: Publish with attributes (for filtering)\naws sns publish --topic-arn \u003Ctopic-arn> \\\n  --message '{\"order\":\"123\"}' \\\n  --message-attributes '{\"order_type\":{\"DataType\":\"String\",\"StringValue\":\"premium\"}}'\n\n# SNS: Set filter policy on subscription\naws sns set-subscription-attributes \\\n  --subscription-arn \u003Csub-arn> \\\n  --attribute-name FilterPolicy \\\n  --attribute-value '{\"order_type\":[\"premium\"]}'\n\n# EventBridge: Put custom event\naws events put-events --entries '[{\n  \"Source\": \"my.application\",\n  \"DetailType\": \"OrderPlaced\",\n  \"Detail\": \"{\\\"orderId\\\":\\\"123\\\",\\\"amount\\\":150}\",\n  \"EventBusName\": \"default\"\n}]'\n\n# EventBridge: Create rule\naws events put-rule --name my-rule \\\n  --event-pattern '{\"source\":[\"my.application\"],\"detail-type\":[\"OrderPlaced\"]}'\n\n# EventBridge: Add target to rule\naws events put-targets --rule my-rule \\\n  --targets '[{\"Id\":\"1\",\"Arn\":\"arn:aws:sqs:us-east-1:123456789012:my-queue\"}]'\n\n# EventBridge: List rules\naws events list-rules --event-bus-name default\n```\n\n## Anti-Patterns\n\n- **No DLQ on SQS queues.** Failed messages retry silently until they expire. You lose visibility into failures and potentially lose data.\n- **Short polling SQS.** Short polling queries a subset of SQS servers and returns immediately — at 4 polls\u002Fsecond, that is ~345,600 empty API calls\u002Fday per consumer, each billed at standard SQS rate. Long polling (`WaitTimeSeconds=20`) queries all servers and holds the connection, reducing empty responses by ~90%.\n- **Using SNS for point-to-point.** If there's only one subscriber, use SQS directly. SNS adds latency and cost for no benefit.\n- **Giant messages in SQS\u002FSNS.** Don't push large payloads through messaging. Store in S3, send a reference. The 256 KB limit exists for a reason.\n- **Not designing for idempotency.** SQS Standard delivers at-least-once. SNS retries. EventBridge can replay. Every consumer must handle duplicate messages safely.\n- **Tight coupling via message schemas.** If changing a message format breaks consumers, you've traded one form of coupling for another. Use EventBridge Schema Registry or version your message formats.\n- **Using EventBridge for high-throughput streaming.** EventBridge is for event routing, not high-volume data streaming. Use Kinesis or MSK for >10K events\u002Fsec sustained.\n- **Polling SQS from multiple consumers without proper visibility timeout.** If visibility timeout is too short, multiple consumers process the same message. Set timeout to 6x processing time.\n- **No monitoring on DLQs.** A DLQ without an alarm is just a message graveyard. Alert on `ApproximateNumberOfMessagesVisible > 0`.\n\n## Reference Files\n\n- `references\u002Fintegration-patterns.md` — Architectural patterns (fan-out, saga choreography\u002Forchestration, CQRS, queue-based load leveling, event sourcing, claim-check, competing consumers) with diagrams and service mappings\n\n## Related Skills\n\n- `lambda` — Lambda as SQS\u002FSNS\u002FEventBridge consumer, event source mappings\n- `step-functions` — Orchestrated saga pattern, workflow coordination\n- `dynamodb` — DynamoDB Streams as event source, event sourcing store\n- `observability` — Queue depth alarms, DLQ monitoring, message age alerts\n- `api-gateway` — API Gateway to SQS\u002FSNS integration for async APIs\n",{"data":40,"body":41},{"name":4,"description":6},{"type":42,"children":43},"root",[44,52,59,121,127,257,266,303,309,316,415,425,431,462,468,517,523,578,584,604,610,616,639,645,697,703,754,976,982,1005,1011,1017,1045,1051,1074,1327,1333,1356,1362,1385,1390,1408,1414,1420,1430,1435,1441,1450,1455,1461,1470,1476,2481,2487,2595,2601,2615,2621,2679],{"type":45,"tag":46,"props":47,"children":48},"element","p",{},[49],{"type":50,"value":51},"text","You are an AWS messaging specialist. Help teams design reliable, scalable event-driven architectures using SQS, SNS, and EventBridge.",{"type":45,"tag":53,"props":54,"children":56},"h2",{"id":55},"process",[57],{"type":50,"value":58},"Process",{"type":45,"tag":60,"props":61,"children":62},"ol",{},[63,69,106,111,116],{"type":45,"tag":64,"props":65,"children":66},"li",{},[67],{"type":50,"value":68},"Identify the communication pattern (point-to-point, fan-out, event bus, request-reply)",{"type":45,"tag":64,"props":70,"children":71},{},[72,74,81,83,89,91,97,98,104],{"type":50,"value":73},"Use the ",{"type":45,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":50,"value":80},"awsknowledge",{"type":50,"value":82}," MCP tools (",{"type":45,"tag":75,"props":84,"children":86},{"className":85},[],[87],{"type":50,"value":88},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___search_documentation",{"type":50,"value":90},", ",{"type":45,"tag":75,"props":92,"children":94},{"className":93},[],[95],{"type":50,"value":96},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___read_documentation",{"type":50,"value":90},{"type":45,"tag":75,"props":99,"children":101},{"className":100},[],[102],{"type":50,"value":103},"mcp__plugin_aws-dev-toolkit_awsknowledge__aws___recommend",{"type":50,"value":105},") to verify current service limits and features",{"type":45,"tag":64,"props":107,"children":108},{},[109],{"type":50,"value":110},"Select the right service(s) for the pattern",{"type":45,"tag":64,"props":112,"children":113},{},[114],{"type":50,"value":115},"Design for failure: DLQs, retries, idempotency",{"type":45,"tag":64,"props":117,"children":118},{},[119],{"type":50,"value":120},"Recommend monitoring and alerting",{"type":45,"tag":53,"props":122,"children":124},{"id":123},"service-selection-guide",[125],{"type":50,"value":126},"Service Selection Guide",{"type":45,"tag":128,"props":129,"children":130},"table",{},[131,150],{"type":45,"tag":132,"props":133,"children":134},"thead",{},[135],{"type":45,"tag":136,"props":137,"children":138},"tr",{},[139,145],{"type":45,"tag":140,"props":141,"children":142},"th",{},[143],{"type":50,"value":144},"Requirement",{"type":45,"tag":140,"props":146,"children":147},{},[148],{"type":50,"value":149},"Use",{"type":45,"tag":151,"props":152,"children":153},"tbody",{},[154,168,181,194,207,219,231,244],{"type":45,"tag":136,"props":155,"children":156},{},[157,163],{"type":45,"tag":158,"props":159,"children":160},"td",{},[161],{"type":50,"value":162},"Decouple producer from consumer, 1-to-1",{"type":45,"tag":158,"props":164,"children":165},{},[166],{"type":50,"value":167},"SQS",{"type":45,"tag":136,"props":169,"children":170},{},[171,176],{"type":45,"tag":158,"props":172,"children":173},{},[174],{"type":50,"value":175},"One message, multiple subscribers",{"type":45,"tag":158,"props":177,"children":178},{},[179],{"type":50,"value":180},"SNS + SQS (fan-out)",{"type":45,"tag":136,"props":182,"children":183},{},[184,189],{"type":45,"tag":158,"props":185,"children":186},{},[187],{"type":50,"value":188},"Ordered, exactly-once processing",{"type":45,"tag":158,"props":190,"children":191},{},[192],{"type":50,"value":193},"SQS FIFO",{"type":45,"tag":136,"props":195,"children":196},{},[197,202],{"type":45,"tag":158,"props":198,"children":199},{},[200],{"type":50,"value":201},"Event routing based on content",{"type":45,"tag":158,"props":203,"children":204},{},[205],{"type":50,"value":206},"EventBridge",{"type":45,"tag":136,"props":208,"children":209},{},[210,215],{"type":45,"tag":158,"props":211,"children":212},{},[213],{"type":50,"value":214},"Cross-account\u002Fcross-region events",{"type":45,"tag":158,"props":216,"children":217},{},[218],{"type":50,"value":206},{"type":45,"tag":136,"props":220,"children":221},{},[222,227],{"type":45,"tag":158,"props":223,"children":224},{},[225],{"type":50,"value":226},"Schema registry and discovery",{"type":45,"tag":158,"props":228,"children":229},{},[230],{"type":50,"value":206},{"type":45,"tag":136,"props":232,"children":233},{},[234,239],{"type":45,"tag":158,"props":235,"children":236},{},[237],{"type":50,"value":238},"Simple mobile\u002Femail push notifications",{"type":45,"tag":158,"props":240,"children":241},{},[242],{"type":50,"value":243},"SNS",{"type":45,"tag":136,"props":245,"children":246},{},[247,252],{"type":45,"tag":158,"props":248,"children":249},{},[250],{"type":50,"value":251},"Replay past events",{"type":45,"tag":158,"props":253,"children":254},{},[255],{"type":50,"value":256},"EventBridge Archive + Replay",{"type":45,"tag":46,"props":258,"children":259},{},[260],{"type":45,"tag":261,"props":262,"children":263},"strong",{},[264],{"type":50,"value":265},"Opinionated guidance:",{"type":45,"tag":267,"props":268,"children":269},"ul",{},[270,281,293],{"type":45,"tag":64,"props":271,"children":272},{},[273,275,279],{"type":50,"value":274},"Default to ",{"type":45,"tag":261,"props":276,"children":277},{},[278],{"type":50,"value":206},{"type":50,"value":280}," for new event-driven architectures — it's more flexible than SNS for routing and filtering",{"type":45,"tag":64,"props":282,"children":283},{},[284,286,291],{"type":50,"value":285},"Use ",{"type":45,"tag":261,"props":287,"children":288},{},[289],{"type":50,"value":290},"SNS + SQS fan-out",{"type":50,"value":292}," for high-throughput workloads where EventBridge's throughput limits are a concern",{"type":45,"tag":64,"props":294,"children":295},{},[296,297,301],{"type":50,"value":285},{"type":45,"tag":261,"props":298,"children":299},{},[300],{"type":50,"value":167},{"type":50,"value":302}," directly when you just need a simple work queue with no fan-out",{"type":45,"tag":53,"props":304,"children":306},{"id":305},"amazon-sqs",[307],{"type":50,"value":308},"Amazon SQS",{"type":45,"tag":310,"props":311,"children":313},"h3",{"id":312},"standard-vs-fifo",[314],{"type":50,"value":315},"Standard vs FIFO",{"type":45,"tag":128,"props":317,"children":318},{},[319,340],{"type":45,"tag":132,"props":320,"children":321},{},[322],{"type":45,"tag":136,"props":323,"children":324},{},[325,330,335],{"type":45,"tag":140,"props":326,"children":327},{},[328],{"type":50,"value":329},"Feature",{"type":45,"tag":140,"props":331,"children":332},{},[333],{"type":50,"value":334},"Standard",{"type":45,"tag":140,"props":336,"children":337},{},[338],{"type":50,"value":339},"FIFO",{"type":45,"tag":151,"props":341,"children":342},{},[343,361,379,397],{"type":45,"tag":136,"props":344,"children":345},{},[346,351,356],{"type":45,"tag":158,"props":347,"children":348},{},[349],{"type":50,"value":350},"Throughput",{"type":45,"tag":158,"props":352,"children":353},{},[354],{"type":50,"value":355},"Unlimited",{"type":45,"tag":158,"props":357,"children":358},{},[359],{"type":50,"value":360},"300 msg\u002Fs (3,000 with batching, or high-throughput mode for higher)",{"type":45,"tag":136,"props":362,"children":363},{},[364,369,374],{"type":45,"tag":158,"props":365,"children":366},{},[367],{"type":50,"value":368},"Ordering",{"type":45,"tag":158,"props":370,"children":371},{},[372],{"type":50,"value":373},"Best-effort",{"type":45,"tag":158,"props":375,"children":376},{},[377],{"type":50,"value":378},"Strict within message group",{"type":45,"tag":136,"props":380,"children":381},{},[382,387,392],{"type":45,"tag":158,"props":383,"children":384},{},[385],{"type":50,"value":386},"Delivery",{"type":45,"tag":158,"props":388,"children":389},{},[390],{"type":50,"value":391},"At-least-once (rare duplicates)",{"type":45,"tag":158,"props":393,"children":394},{},[395],{"type":50,"value":396},"Exactly-once",{"type":45,"tag":136,"props":398,"children":399},{},[400,405,410],{"type":45,"tag":158,"props":401,"children":402},{},[403],{"type":50,"value":404},"Deduplication",{"type":45,"tag":158,"props":406,"children":407},{},[408],{"type":50,"value":409},"None",{"type":45,"tag":158,"props":411,"children":412},{},[413],{"type":50,"value":414},"5-minute dedup window (content or ID based)",{"type":45,"tag":46,"props":416,"children":417},{},[418,423],{"type":45,"tag":261,"props":419,"children":420},{},[421],{"type":50,"value":422},"Use Standard unless you need ordering or exactly-once.",{"type":50,"value":424}," The throughput difference is significant.",{"type":45,"tag":310,"props":426,"children":428},{"id":427},"visibility-timeout",[429],{"type":50,"value":430},"Visibility Timeout",{"type":45,"tag":267,"props":432,"children":433},{},[434,439,452,457],{"type":45,"tag":64,"props":435,"children":436},{},[437],{"type":50,"value":438},"Default: 30 seconds. Set it to at least 6x your average processing time.",{"type":45,"tag":64,"props":440,"children":441},{},[442,444,450],{"type":50,"value":443},"If processing takes longer, call ",{"type":45,"tag":75,"props":445,"children":447},{"className":446},[],[448],{"type":50,"value":449},"ChangeMessageVisibility",{"type":50,"value":451}," to extend it before timeout expires.",{"type":45,"tag":64,"props":453,"children":454},{},[455],{"type":50,"value":456},"If messages reappear in the queue, your visibility timeout is too short.",{"type":45,"tag":64,"props":458,"children":459},{},[460],{"type":50,"value":461},"Maximum: 12 hours.",{"type":45,"tag":310,"props":463,"children":465},{"id":464},"dead-letter-queues-dlqs",[466],{"type":50,"value":467},"Dead-Letter Queues (DLQs)",{"type":45,"tag":267,"props":469,"children":470},{},[471,481,494,499,512],{"type":45,"tag":64,"props":472,"children":473},{},[474,479],{"type":45,"tag":261,"props":475,"children":476},{},[477],{"type":50,"value":478},"Always configure a DLQ.",{"type":50,"value":480}," Messages that fail processing silently retry forever without one.",{"type":45,"tag":64,"props":482,"children":483},{},[484,486,492],{"type":50,"value":485},"Set ",{"type":45,"tag":75,"props":487,"children":489},{"className":488},[],[490],{"type":50,"value":491},"maxReceiveCount",{"type":50,"value":493}," to 3-5 for most workloads (how many times a message is retried before going to DLQ).",{"type":45,"tag":64,"props":495,"children":496},{},[497],{"type":50,"value":498},"DLQ must be the same type as the source queue (Standard DLQ for Standard queue, FIFO DLQ for FIFO queue).",{"type":45,"tag":64,"props":500,"children":501},{},[502,504,510],{"type":50,"value":503},"Set up a CloudWatch alarm on ",{"type":45,"tag":75,"props":505,"children":507},{"className":506},[],[508],{"type":50,"value":509},"ApproximateNumberOfMessagesVisible",{"type":50,"value":511}," on your DLQ — it should normally be 0.",{"type":45,"tag":64,"props":513,"children":514},{},[515],{"type":50,"value":516},"Use DLQ redrive to move messages back to the source queue after fixing the bug.",{"type":45,"tag":310,"props":518,"children":520},{"id":519},"polling-best-practices",[521],{"type":50,"value":522},"Polling Best Practices",{"type":45,"tag":267,"props":524,"children":525},{},[526,544,573],{"type":45,"tag":64,"props":527,"children":528},{},[529,534,536,542],{"type":45,"tag":261,"props":530,"children":531},{},[532],{"type":50,"value":533},"Always use long polling",{"type":50,"value":535}," (",{"type":45,"tag":75,"props":537,"children":539},{"className":538},[],[540],{"type":50,"value":541},"WaitTimeSeconds=20",{"type":50,"value":543},"). Short polling queries a subset of SQS servers and returns immediately — most responses are empty. At 4 polls\u002Fsecond that is ~345,600 empty API calls\u002Fday per consumer, each billed at the standard SQS rate. Long polling holds the connection open for up to 20 seconds and queries all servers, reducing empty responses by ~90% and cutting SQS API costs proportionally.",{"type":45,"tag":64,"props":545,"children":546},{},[547,549,555,557,563,565,571],{"type":50,"value":548},"Use batch operations: ",{"type":45,"tag":75,"props":550,"children":552},{"className":551},[],[553],{"type":50,"value":554},"ReceiveMessage",{"type":50,"value":556}," with ",{"type":45,"tag":75,"props":558,"children":560},{"className":559},[],[561],{"type":50,"value":562},"MaxNumberOfMessages=10",{"type":50,"value":564}," and ",{"type":45,"tag":75,"props":566,"children":568},{"className":567},[],[569],{"type":50,"value":570},"SendMessageBatch",{"type":50,"value":572}," for up to 10 messages.",{"type":45,"tag":64,"props":574,"children":575},{},[576],{"type":50,"value":577},"Delete messages immediately after successful processing.",{"type":45,"tag":310,"props":579,"children":581},{"id":580},"message-size",[582],{"type":50,"value":583},"Message Size",{"type":45,"tag":267,"props":585,"children":586},{},[587,592],{"type":45,"tag":64,"props":588,"children":589},{},[590],{"type":50,"value":591},"Maximum message size: 256 KB.",{"type":45,"tag":64,"props":593,"children":594},{},[595,597,602],{"type":50,"value":596},"For larger payloads, use the ",{"type":45,"tag":261,"props":598,"children":599},{},[600],{"type":50,"value":601},"SQS Extended Client Library",{"type":50,"value":603}," — it stores the payload in S3 and puts a pointer in the message.",{"type":45,"tag":53,"props":605,"children":607},{"id":606},"amazon-sns",[608],{"type":50,"value":609},"Amazon SNS",{"type":45,"tag":310,"props":611,"children":613},{"id":612},"topics",[614],{"type":50,"value":615},"Topics",{"type":45,"tag":267,"props":617,"children":618},{},[619,624,629,634],{"type":45,"tag":64,"props":620,"children":621},{},[622],{"type":50,"value":623},"Standard topics: best-effort ordering, at-least-once delivery",{"type":45,"tag":64,"props":625,"children":626},{},[627],{"type":50,"value":628},"FIFO topics: strict ordering, exactly-once delivery (only SQS FIFO subscribers)",{"type":45,"tag":64,"props":630,"children":631},{},[632],{"type":50,"value":633},"Maximum 12.5 million subscriptions per topic (Standard)",{"type":45,"tag":64,"props":635,"children":636},{},[637],{"type":50,"value":638},"Maximum 100,000 topics per account",{"type":45,"tag":310,"props":640,"children":642},{"id":641},"subscription-types",[643],{"type":50,"value":644},"Subscription Types",{"type":45,"tag":267,"props":646,"children":647},{},[648,657,667,677,687],{"type":45,"tag":64,"props":649,"children":650},{},[651,655],{"type":45,"tag":261,"props":652,"children":653},{},[654],{"type":50,"value":167},{"type":50,"value":656}," — Most common. Use for decoupled processing.",{"type":45,"tag":64,"props":658,"children":659},{},[660,665],{"type":45,"tag":261,"props":661,"children":662},{},[663],{"type":50,"value":664},"Lambda",{"type":50,"value":666}," — Direct invocation. Good for lightweight processing.",{"type":45,"tag":64,"props":668,"children":669},{},[670,675],{"type":45,"tag":261,"props":671,"children":672},{},[673],{"type":50,"value":674},"HTTP\u002FHTTPS",{"type":50,"value":676}," — Webhooks. Must handle retries and confirmations.",{"type":45,"tag":64,"props":678,"children":679},{},[680,685],{"type":45,"tag":261,"props":681,"children":682},{},[683],{"type":50,"value":684},"Email\u002FSMS",{"type":50,"value":686}," — Notifications to humans. Not for machine-to-machine.",{"type":45,"tag":64,"props":688,"children":689},{},[690,695],{"type":45,"tag":261,"props":691,"children":692},{},[693],{"type":50,"value":694},"Kinesis Data Firehose",{"type":50,"value":696}," — Stream to S3, Redshift, OpenSearch.",{"type":45,"tag":310,"props":698,"children":700},{"id":699},"message-filtering",[701],{"type":50,"value":702},"Message Filtering",{"type":45,"tag":267,"props":704,"children":705},{},[706,711,716,721],{"type":45,"tag":64,"props":707,"children":708},{},[709],{"type":50,"value":710},"Apply filter policies on subscriptions to route messages without code",{"type":45,"tag":64,"props":712,"children":713},{},[714],{"type":50,"value":715},"Filter on message attributes (default) or message body",{"type":45,"tag":64,"props":717,"children":718},{},[719],{"type":50,"value":720},"Reduces cost — filtered messages don't invoke subscribers",{"type":45,"tag":64,"props":722,"children":723},{},[724,725,731,732,738,739,745,746,752],{"type":50,"value":285},{"type":45,"tag":75,"props":726,"children":728},{"className":727},[],[729],{"type":50,"value":730},"prefix",{"type":50,"value":90},{"type":45,"tag":75,"props":733,"children":735},{"className":734},[],[736],{"type":50,"value":737},"anything-but",{"type":50,"value":90},{"type":45,"tag":75,"props":740,"children":742},{"className":741},[],[743],{"type":50,"value":744},"numeric",{"type":50,"value":90},{"type":45,"tag":75,"props":747,"children":749},{"className":748},[],[750],{"type":50,"value":751},"exists",{"type":50,"value":753}," operators for flexible matching",{"type":45,"tag":755,"props":756,"children":761},"pre",{"className":757,"code":758,"language":759,"meta":760,"style":760},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"order_type\": [\"premium\"],\n  \"amount\": [{ \"numeric\": [\">\", 100] }],\n  \"region\": [{ \"prefix\": \"us-\" }]\n}\n","json","",[762],{"type":45,"tag":75,"props":763,"children":764},{"__ignoreMap":760},[765,777,826,908,967],{"type":45,"tag":766,"props":767,"children":770},"span",{"class":768,"line":769},"line",1,[771],{"type":45,"tag":766,"props":772,"children":774},{"style":773},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[775],{"type":50,"value":776},"{\n",{"type":45,"tag":766,"props":778,"children":780},{"class":768,"line":779},2,[781,786,792,797,802,807,811,817,821],{"type":45,"tag":766,"props":782,"children":783},{"style":773},[784],{"type":50,"value":785},"  \"",{"type":45,"tag":766,"props":787,"children":789},{"style":788},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[790],{"type":50,"value":791},"order_type",{"type":45,"tag":766,"props":793,"children":794},{"style":773},[795],{"type":50,"value":796},"\"",{"type":45,"tag":766,"props":798,"children":799},{"style":773},[800],{"type":50,"value":801},":",{"type":45,"tag":766,"props":803,"children":804},{"style":773},[805],{"type":50,"value":806}," [",{"type":45,"tag":766,"props":808,"children":809},{"style":773},[810],{"type":50,"value":796},{"type":45,"tag":766,"props":812,"children":814},{"style":813},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[815],{"type":50,"value":816},"premium",{"type":45,"tag":766,"props":818,"children":819},{"style":773},[820],{"type":50,"value":796},{"type":45,"tag":766,"props":822,"children":823},{"style":773},[824],{"type":50,"value":825},"],\n",{"type":45,"tag":766,"props":827,"children":829},{"class":768,"line":828},3,[830,834,839,843,847,852,857,862,866,870,874,878,883,887,892,898,903],{"type":45,"tag":766,"props":831,"children":832},{"style":773},[833],{"type":50,"value":785},{"type":45,"tag":766,"props":835,"children":836},{"style":788},[837],{"type":50,"value":838},"amount",{"type":45,"tag":766,"props":840,"children":841},{"style":773},[842],{"type":50,"value":796},{"type":45,"tag":766,"props":844,"children":845},{"style":773},[846],{"type":50,"value":801},{"type":45,"tag":766,"props":848,"children":849},{"style":773},[850],{"type":50,"value":851}," [{",{"type":45,"tag":766,"props":853,"children":854},{"style":773},[855],{"type":50,"value":856}," \"",{"type":45,"tag":766,"props":858,"children":860},{"style":859},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[861],{"type":50,"value":744},{"type":45,"tag":766,"props":863,"children":864},{"style":773},[865],{"type":50,"value":796},{"type":45,"tag":766,"props":867,"children":868},{"style":773},[869],{"type":50,"value":801},{"type":45,"tag":766,"props":871,"children":872},{"style":773},[873],{"type":50,"value":806},{"type":45,"tag":766,"props":875,"children":876},{"style":773},[877],{"type":50,"value":796},{"type":45,"tag":766,"props":879,"children":880},{"style":813},[881],{"type":50,"value":882},">",{"type":45,"tag":766,"props":884,"children":885},{"style":773},[886],{"type":50,"value":796},{"type":45,"tag":766,"props":888,"children":889},{"style":773},[890],{"type":50,"value":891},",",{"type":45,"tag":766,"props":893,"children":895},{"style":894},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[896],{"type":50,"value":897}," 100",{"type":45,"tag":766,"props":899,"children":900},{"style":773},[901],{"type":50,"value":902},"]",{"type":45,"tag":766,"props":904,"children":905},{"style":773},[906],{"type":50,"value":907}," }],\n",{"type":45,"tag":766,"props":909,"children":911},{"class":768,"line":910},4,[912,916,921,925,929,933,937,941,945,949,953,958,962],{"type":45,"tag":766,"props":913,"children":914},{"style":773},[915],{"type":50,"value":785},{"type":45,"tag":766,"props":917,"children":918},{"style":788},[919],{"type":50,"value":920},"region",{"type":45,"tag":766,"props":922,"children":923},{"style":773},[924],{"type":50,"value":796},{"type":45,"tag":766,"props":926,"children":927},{"style":773},[928],{"type":50,"value":801},{"type":45,"tag":766,"props":930,"children":931},{"style":773},[932],{"type":50,"value":851},{"type":45,"tag":766,"props":934,"children":935},{"style":773},[936],{"type":50,"value":856},{"type":45,"tag":766,"props":938,"children":939},{"style":859},[940],{"type":50,"value":730},{"type":45,"tag":766,"props":942,"children":943},{"style":773},[944],{"type":50,"value":796},{"type":45,"tag":766,"props":946,"children":947},{"style":773},[948],{"type":50,"value":801},{"type":45,"tag":766,"props":950,"children":951},{"style":773},[952],{"type":50,"value":856},{"type":45,"tag":766,"props":954,"children":955},{"style":813},[956],{"type":50,"value":957},"us-",{"type":45,"tag":766,"props":959,"children":960},{"style":773},[961],{"type":50,"value":796},{"type":45,"tag":766,"props":963,"children":964},{"style":773},[965],{"type":50,"value":966}," }]\n",{"type":45,"tag":766,"props":968,"children":970},{"class":768,"line":969},5,[971],{"type":45,"tag":766,"props":972,"children":973},{"style":773},[974],{"type":50,"value":975},"}\n",{"type":45,"tag":310,"props":977,"children":979},{"id":978},"fan-out-pattern-sns-sqs",[980],{"type":50,"value":981},"Fan-Out Pattern (SNS + SQS)",{"type":45,"tag":267,"props":983,"children":984},{},[985,990,995,1000],{"type":45,"tag":64,"props":986,"children":987},{},[988],{"type":50,"value":989},"Publish once to an SNS topic, deliver to multiple SQS queues",{"type":45,"tag":64,"props":991,"children":992},{},[993],{"type":50,"value":994},"Each queue processes independently and at its own pace",{"type":45,"tag":64,"props":996,"children":997},{},[998],{"type":50,"value":999},"Apply different filter policies per subscription for content-based routing",{"type":45,"tag":64,"props":1001,"children":1002},{},[1003],{"type":50,"value":1004},"This is the standard pattern for 1-to-many async communication on AWS",{"type":45,"tag":53,"props":1006,"children":1008},{"id":1007},"amazon-eventbridge",[1009],{"type":50,"value":1010},"Amazon EventBridge",{"type":45,"tag":310,"props":1012,"children":1014},{"id":1013},"when-to-choose-eventbridge",[1015],{"type":50,"value":1016},"When to Choose EventBridge",{"type":45,"tag":267,"props":1018,"children":1019},{},[1020,1025,1030,1035,1040],{"type":45,"tag":64,"props":1021,"children":1022},{},[1023],{"type":50,"value":1024},"Content-based routing with complex rules",{"type":45,"tag":64,"props":1026,"children":1027},{},[1028],{"type":50,"value":1029},"Events from AWS services, SaaS integrations, or custom apps",{"type":45,"tag":64,"props":1031,"children":1032},{},[1033],{"type":50,"value":1034},"Schema discovery and registry for event contracts",{"type":45,"tag":64,"props":1036,"children":1037},{},[1038],{"type":50,"value":1039},"Cross-account or cross-region event delivery",{"type":45,"tag":64,"props":1041,"children":1042},{},[1043],{"type":50,"value":1044},"Event replay from archive",{"type":45,"tag":310,"props":1046,"children":1048},{"id":1047},"event-rules",[1049],{"type":50,"value":1050},"Event Rules",{"type":45,"tag":267,"props":1052,"children":1053},{},[1054,1059,1064,1069],{"type":45,"tag":64,"props":1055,"children":1056},{},[1057],{"type":50,"value":1058},"Match events with JSON patterns (event patterns)",{"type":45,"tag":64,"props":1060,"children":1061},{},[1062],{"type":50,"value":1063},"Up to 300 rules per event bus (soft limit)",{"type":45,"tag":64,"props":1065,"children":1066},{},[1067],{"type":50,"value":1068},"Each rule can have up to 5 targets",{"type":45,"tag":64,"props":1070,"children":1071},{},[1072],{"type":50,"value":1073},"Use input transformers to reshape events before delivery",{"type":45,"tag":755,"props":1075,"children":1077},{"className":757,"code":1076,"language":759,"meta":760,"style":760},"{\n  \"source\": [\"my.application\"],\n  \"detail-type\": [\"OrderPlaced\"],\n  \"detail\": {\n    \"amount\": [{ \"numeric\": [\">\", 100] }],\n    \"status\": [\"CONFIRMED\"]\n  }\n}\n",[1078],{"type":45,"tag":75,"props":1079,"children":1080},{"__ignoreMap":760},[1081,1088,1129,1170,1195,1267,1310,1319],{"type":45,"tag":766,"props":1082,"children":1083},{"class":768,"line":769},[1084],{"type":45,"tag":766,"props":1085,"children":1086},{"style":773},[1087],{"type":50,"value":776},{"type":45,"tag":766,"props":1089,"children":1090},{"class":768,"line":779},[1091,1095,1100,1104,1108,1112,1116,1121,1125],{"type":45,"tag":766,"props":1092,"children":1093},{"style":773},[1094],{"type":50,"value":785},{"type":45,"tag":766,"props":1096,"children":1097},{"style":788},[1098],{"type":50,"value":1099},"source",{"type":45,"tag":766,"props":1101,"children":1102},{"style":773},[1103],{"type":50,"value":796},{"type":45,"tag":766,"props":1105,"children":1106},{"style":773},[1107],{"type":50,"value":801},{"type":45,"tag":766,"props":1109,"children":1110},{"style":773},[1111],{"type":50,"value":806},{"type":45,"tag":766,"props":1113,"children":1114},{"style":773},[1115],{"type":50,"value":796},{"type":45,"tag":766,"props":1117,"children":1118},{"style":813},[1119],{"type":50,"value":1120},"my.application",{"type":45,"tag":766,"props":1122,"children":1123},{"style":773},[1124],{"type":50,"value":796},{"type":45,"tag":766,"props":1126,"children":1127},{"style":773},[1128],{"type":50,"value":825},{"type":45,"tag":766,"props":1130,"children":1131},{"class":768,"line":828},[1132,1136,1141,1145,1149,1153,1157,1162,1166],{"type":45,"tag":766,"props":1133,"children":1134},{"style":773},[1135],{"type":50,"value":785},{"type":45,"tag":766,"props":1137,"children":1138},{"style":788},[1139],{"type":50,"value":1140},"detail-type",{"type":45,"tag":766,"props":1142,"children":1143},{"style":773},[1144],{"type":50,"value":796},{"type":45,"tag":766,"props":1146,"children":1147},{"style":773},[1148],{"type":50,"value":801},{"type":45,"tag":766,"props":1150,"children":1151},{"style":773},[1152],{"type":50,"value":806},{"type":45,"tag":766,"props":1154,"children":1155},{"style":773},[1156],{"type":50,"value":796},{"type":45,"tag":766,"props":1158,"children":1159},{"style":813},[1160],{"type":50,"value":1161},"OrderPlaced",{"type":45,"tag":766,"props":1163,"children":1164},{"style":773},[1165],{"type":50,"value":796},{"type":45,"tag":766,"props":1167,"children":1168},{"style":773},[1169],{"type":50,"value":825},{"type":45,"tag":766,"props":1171,"children":1172},{"class":768,"line":910},[1173,1177,1182,1186,1190],{"type":45,"tag":766,"props":1174,"children":1175},{"style":773},[1176],{"type":50,"value":785},{"type":45,"tag":766,"props":1178,"children":1179},{"style":788},[1180],{"type":50,"value":1181},"detail",{"type":45,"tag":766,"props":1183,"children":1184},{"style":773},[1185],{"type":50,"value":796},{"type":45,"tag":766,"props":1187,"children":1188},{"style":773},[1189],{"type":50,"value":801},{"type":45,"tag":766,"props":1191,"children":1192},{"style":773},[1193],{"type":50,"value":1194}," {\n",{"type":45,"tag":766,"props":1196,"children":1197},{"class":768,"line":969},[1198,1203,1207,1211,1215,1219,1223,1227,1231,1235,1239,1243,1247,1251,1255,1259,1263],{"type":45,"tag":766,"props":1199,"children":1200},{"style":773},[1201],{"type":50,"value":1202},"    \"",{"type":45,"tag":766,"props":1204,"children":1205},{"style":859},[1206],{"type":50,"value":838},{"type":45,"tag":766,"props":1208,"children":1209},{"style":773},[1210],{"type":50,"value":796},{"type":45,"tag":766,"props":1212,"children":1213},{"style":773},[1214],{"type":50,"value":801},{"type":45,"tag":766,"props":1216,"children":1217},{"style":773},[1218],{"type":50,"value":851},{"type":45,"tag":766,"props":1220,"children":1221},{"style":773},[1222],{"type":50,"value":856},{"type":45,"tag":766,"props":1224,"children":1225},{"style":894},[1226],{"type":50,"value":744},{"type":45,"tag":766,"props":1228,"children":1229},{"style":773},[1230],{"type":50,"value":796},{"type":45,"tag":766,"props":1232,"children":1233},{"style":773},[1234],{"type":50,"value":801},{"type":45,"tag":766,"props":1236,"children":1237},{"style":773},[1238],{"type":50,"value":806},{"type":45,"tag":766,"props":1240,"children":1241},{"style":773},[1242],{"type":50,"value":796},{"type":45,"tag":766,"props":1244,"children":1245},{"style":813},[1246],{"type":50,"value":882},{"type":45,"tag":766,"props":1248,"children":1249},{"style":773},[1250],{"type":50,"value":796},{"type":45,"tag":766,"props":1252,"children":1253},{"style":773},[1254],{"type":50,"value":891},{"type":45,"tag":766,"props":1256,"children":1257},{"style":894},[1258],{"type":50,"value":897},{"type":45,"tag":766,"props":1260,"children":1261},{"style":773},[1262],{"type":50,"value":902},{"type":45,"tag":766,"props":1264,"children":1265},{"style":773},[1266],{"type":50,"value":907},{"type":45,"tag":766,"props":1268,"children":1270},{"class":768,"line":1269},6,[1271,1275,1280,1284,1288,1292,1296,1301,1305],{"type":45,"tag":766,"props":1272,"children":1273},{"style":773},[1274],{"type":50,"value":1202},{"type":45,"tag":766,"props":1276,"children":1277},{"style":859},[1278],{"type":50,"value":1279},"status",{"type":45,"tag":766,"props":1281,"children":1282},{"style":773},[1283],{"type":50,"value":796},{"type":45,"tag":766,"props":1285,"children":1286},{"style":773},[1287],{"type":50,"value":801},{"type":45,"tag":766,"props":1289,"children":1290},{"style":773},[1291],{"type":50,"value":806},{"type":45,"tag":766,"props":1293,"children":1294},{"style":773},[1295],{"type":50,"value":796},{"type":45,"tag":766,"props":1297,"children":1298},{"style":813},[1299],{"type":50,"value":1300},"CONFIRMED",{"type":45,"tag":766,"props":1302,"children":1303},{"style":773},[1304],{"type":50,"value":796},{"type":45,"tag":766,"props":1306,"children":1307},{"style":773},[1308],{"type":50,"value":1309},"]\n",{"type":45,"tag":766,"props":1311,"children":1313},{"class":768,"line":1312},7,[1314],{"type":45,"tag":766,"props":1315,"children":1316},{"style":773},[1317],{"type":50,"value":1318},"  }\n",{"type":45,"tag":766,"props":1320,"children":1322},{"class":768,"line":1321},8,[1323],{"type":45,"tag":766,"props":1324,"children":1325},{"style":773},[1326],{"type":50,"value":975},{"type":45,"tag":310,"props":1328,"children":1330},{"id":1329},"eventbridge-pipes",[1331],{"type":50,"value":1332},"EventBridge Pipes",{"type":45,"tag":267,"props":1334,"children":1335},{},[1336,1341,1346,1351],{"type":45,"tag":64,"props":1337,"children":1338},{},[1339],{"type":50,"value":1340},"Point-to-point integration: source -> filter -> enrich -> target",{"type":45,"tag":64,"props":1342,"children":1343},{},[1344],{"type":50,"value":1345},"Sources: SQS, DynamoDB Streams, Kinesis, Kafka",{"type":45,"tag":64,"props":1347,"children":1348},{},[1349],{"type":50,"value":1350},"Reduces Lambda glue code for simple transformations",{"type":45,"tag":64,"props":1352,"children":1353},{},[1354],{"type":50,"value":1355},"Use filtering to process only relevant events from the source",{"type":45,"tag":310,"props":1357,"children":1359},{"id":1358},"eventbridge-scheduler",[1360],{"type":50,"value":1361},"EventBridge Scheduler",{"type":45,"tag":267,"props":1363,"children":1364},{},[1365,1370,1375,1380],{"type":45,"tag":64,"props":1366,"children":1367},{},[1368],{"type":50,"value":1369},"Cron and rate-based scheduling with one-time schedules",{"type":45,"tag":64,"props":1371,"children":1372},{},[1373],{"type":50,"value":1374},"Replaces CloudWatch Events scheduled rules",{"type":45,"tag":64,"props":1376,"children":1377},{},[1378],{"type":50,"value":1379},"Supports time zones and flexible time windows",{"type":45,"tag":64,"props":1381,"children":1382},{},[1383],{"type":50,"value":1384},"Can target any EventBridge target (Lambda, SQS, Step Functions, etc.)",{"type":45,"tag":310,"props":1386,"children":1388},{"id":1387},"throughput",[1389],{"type":50,"value":350},{"type":45,"tag":267,"props":1391,"children":1392},{},[1393,1398,1403],{"type":45,"tag":64,"props":1394,"children":1395},{},[1396],{"type":50,"value":1397},"Default: 10,000 PutEvents per second per account per region (soft limit)",{"type":45,"tag":64,"props":1399,"children":1400},{},[1401],{"type":50,"value":1402},"For higher throughput, use custom event buses and request limit increases",{"type":45,"tag":64,"props":1404,"children":1405},{},[1406],{"type":50,"value":1407},"If you need >100K events\u002Fsec, consider SNS + SQS fan-out instead",{"type":45,"tag":53,"props":1409,"children":1411},{"id":1410},"common-patterns",[1412],{"type":50,"value":1413},"Common Patterns",{"type":45,"tag":310,"props":1415,"children":1417},{"id":1416},"saga-choreography",[1418],{"type":50,"value":1419},"Saga \u002F Choreography",{"type":45,"tag":755,"props":1421,"children":1425},{"className":1422,"code":1424,"language":50},[1423],"language-text","Service A --event--> EventBridge --rule--> Service B --event--> EventBridge --rule--> Service C\n",[1426],{"type":45,"tag":75,"props":1427,"children":1428},{"__ignoreMap":760},[1429],{"type":50,"value":1424},{"type":45,"tag":46,"props":1431,"children":1432},{},[1433],{"type":50,"value":1434},"Each service publishes events and reacts to events. Use DLQs on every consumer.",{"type":45,"tag":310,"props":1436,"children":1438},{"id":1437},"queue-based-load-leveling",[1439],{"type":50,"value":1440},"Queue-Based Load Leveling",{"type":45,"tag":755,"props":1442,"children":1445},{"className":1443,"code":1444,"language":50},[1423],"API Gateway --> SQS --> Lambda (batch processing)\n",[1446],{"type":45,"tag":75,"props":1447,"children":1448},{"__ignoreMap":760},[1449],{"type":50,"value":1444},{"type":45,"tag":46,"props":1451,"children":1452},{},[1453],{"type":50,"value":1454},"SQS absorbs traffic spikes. Lambda processes at a controlled concurrency.",{"type":45,"tag":310,"props":1456,"children":1458},{"id":1457},"fan-out-with-filtering",[1459],{"type":50,"value":1460},"Fan-Out with Filtering",{"type":45,"tag":755,"props":1462,"children":1465},{"className":1463,"code":1464,"language":50},[1423],"Producer --> SNS Topic --> SQS Queue A (filter: premium)\n                      --> SQS Queue B (filter: standard)\n                      --> Lambda (filter: all, for analytics)\n",[1466],{"type":45,"tag":75,"props":1467,"children":1468},{"__ignoreMap":760},[1469],{"type":50,"value":1464},{"type":45,"tag":53,"props":1471,"children":1473},{"id":1472},"common-cli-commands",[1474],{"type":50,"value":1475},"Common CLI Commands",{"type":45,"tag":755,"props":1477,"children":1481},{"className":1478,"code":1479,"language":1480,"meta":760,"style":760},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# SQS: Create standard queue with DLQ\naws sqs create-queue --queue-name my-dlq\naws sqs create-queue --queue-name my-queue \\\n  --attributes '{\n    \"RedrivePolicy\": \"{\\\"deadLetterTargetArn\\\":\\\"arn:aws:sqs:us-east-1:123456789012:my-dlq\\\",\\\"maxReceiveCount\\\":\\\"3\\\"}\",\n    \"VisibilityTimeout\": \"300\",\n    \"ReceiveMessageWaitTimeSeconds\": \"20\"\n  }'\n\n# SQS: Send and receive\naws sqs send-message --queue-url \u003Curl> --message-body '{\"key\":\"value\"}'\naws sqs receive-message --queue-url \u003Curl> --wait-time-seconds 20 --max-number-of-messages 10\n\n# SQS: Check queue depth\naws sqs get-queue-attributes --queue-url \u003Curl> \\\n  --attribute-names ApproximateNumberOfMessages ApproximateNumberOfMessagesNotVisible\n\n# SQS: Purge queue (deletes all messages)\naws sqs purge-queue --queue-url \u003Curl>\n\n# SNS: Create topic and subscribe SQS\naws sns create-topic --name my-topic\naws sns subscribe --topic-arn \u003Ctopic-arn> --protocol sqs --notification-endpoint \u003Cqueue-arn>\n\n# SNS: Publish with attributes (for filtering)\naws sns publish --topic-arn \u003Ctopic-arn> \\\n  --message '{\"order\":\"123\"}' \\\n  --message-attributes '{\"order_type\":{\"DataType\":\"String\",\"StringValue\":\"premium\"}}'\n\n# SNS: Set filter policy on subscription\naws sns set-subscription-attributes \\\n  --subscription-arn \u003Csub-arn> \\\n  --attribute-name FilterPolicy \\\n  --attribute-value '{\"order_type\":[\"premium\"]}'\n\n# EventBridge: Put custom event\naws events put-events --entries '[{\n  \"Source\": \"my.application\",\n  \"DetailType\": \"OrderPlaced\",\n  \"Detail\": \"{\\\"orderId\\\":\\\"123\\\",\\\"amount\\\":150}\",\n  \"EventBusName\": \"default\"\n}]'\n\n# EventBridge: Create rule\naws events put-rule --name my-rule \\\n  --event-pattern '{\"source\":[\"my.application\"],\"detail-type\":[\"OrderPlaced\"]}'\n\n# EventBridge: Add target to rule\naws events put-targets --rule my-rule \\\n  --targets '[{\"Id\":\"1\",\"Arn\":\"arn:aws:sqs:us-east-1:123456789012:my-queue\"}]'\n\n# EventBridge: List rules\naws events list-rules --event-bus-name default\n","bash",[1482],{"type":45,"tag":75,"props":1483,"children":1484},{"__ignoreMap":760},[1485,1494,1521,1551,1568,1576,1584,1592,1605,1615,1624,1683,1740,1748,1756,1796,1815,1823,1832,1870,1878,1887,1915,1986,1994,2003,2044,2071,2093,2101,2110,2131,2161,2179,2201,2209,2218,2250,2259,2268,2277,2286,2299,2307,2316,2346,2368,2376,2385,2415,2437,2445,2454],{"type":45,"tag":766,"props":1486,"children":1487},{"class":768,"line":769},[1488],{"type":45,"tag":766,"props":1489,"children":1491},{"style":1490},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1492],{"type":50,"value":1493},"# SQS: Create standard queue with DLQ\n",{"type":45,"tag":766,"props":1495,"children":1496},{"class":768,"line":779},[1497,1501,1506,1511,1516],{"type":45,"tag":766,"props":1498,"children":1499},{"style":859},[1500],{"type":50,"value":27},{"type":45,"tag":766,"props":1502,"children":1503},{"style":813},[1504],{"type":50,"value":1505}," sqs",{"type":45,"tag":766,"props":1507,"children":1508},{"style":813},[1509],{"type":50,"value":1510}," create-queue",{"type":45,"tag":766,"props":1512,"children":1513},{"style":813},[1514],{"type":50,"value":1515}," --queue-name",{"type":45,"tag":766,"props":1517,"children":1518},{"style":813},[1519],{"type":50,"value":1520}," my-dlq\n",{"type":45,"tag":766,"props":1522,"children":1523},{"class":768,"line":828},[1524,1528,1532,1536,1540,1545],{"type":45,"tag":766,"props":1525,"children":1526},{"style":859},[1527],{"type":50,"value":27},{"type":45,"tag":766,"props":1529,"children":1530},{"style":813},[1531],{"type":50,"value":1505},{"type":45,"tag":766,"props":1533,"children":1534},{"style":813},[1535],{"type":50,"value":1510},{"type":45,"tag":766,"props":1537,"children":1538},{"style":813},[1539],{"type":50,"value":1515},{"type":45,"tag":766,"props":1541,"children":1542},{"style":813},[1543],{"type":50,"value":1544}," my-queue",{"type":45,"tag":766,"props":1546,"children":1548},{"style":1547},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1549],{"type":50,"value":1550}," \\\n",{"type":45,"tag":766,"props":1552,"children":1553},{"class":768,"line":910},[1554,1559,1564],{"type":45,"tag":766,"props":1555,"children":1556},{"style":813},[1557],{"type":50,"value":1558},"  --attributes",{"type":45,"tag":766,"props":1560,"children":1561},{"style":773},[1562],{"type":50,"value":1563}," '",{"type":45,"tag":766,"props":1565,"children":1566},{"style":813},[1567],{"type":50,"value":776},{"type":45,"tag":766,"props":1569,"children":1570},{"class":768,"line":969},[1571],{"type":45,"tag":766,"props":1572,"children":1573},{"style":813},[1574],{"type":50,"value":1575},"    \"RedrivePolicy\": \"{\\\"deadLetterTargetArn\\\":\\\"arn:aws:sqs:us-east-1:123456789012:my-dlq\\\",\\\"maxReceiveCount\\\":\\\"3\\\"}\",\n",{"type":45,"tag":766,"props":1577,"children":1578},{"class":768,"line":1269},[1579],{"type":45,"tag":766,"props":1580,"children":1581},{"style":813},[1582],{"type":50,"value":1583},"    \"VisibilityTimeout\": \"300\",\n",{"type":45,"tag":766,"props":1585,"children":1586},{"class":768,"line":1312},[1587],{"type":45,"tag":766,"props":1588,"children":1589},{"style":813},[1590],{"type":50,"value":1591},"    \"ReceiveMessageWaitTimeSeconds\": \"20\"\n",{"type":45,"tag":766,"props":1593,"children":1594},{"class":768,"line":1321},[1595,1600],{"type":45,"tag":766,"props":1596,"children":1597},{"style":813},[1598],{"type":50,"value":1599},"  }",{"type":45,"tag":766,"props":1601,"children":1602},{"style":773},[1603],{"type":50,"value":1604},"'\n",{"type":45,"tag":766,"props":1606,"children":1608},{"class":768,"line":1607},9,[1609],{"type":45,"tag":766,"props":1610,"children":1612},{"emptyLinePlaceholder":1611},true,[1613],{"type":50,"value":1614},"\n",{"type":45,"tag":766,"props":1616,"children":1618},{"class":768,"line":1617},10,[1619],{"type":45,"tag":766,"props":1620,"children":1621},{"style":1490},[1622],{"type":50,"value":1623},"# SQS: Send and receive\n",{"type":45,"tag":766,"props":1625,"children":1627},{"class":768,"line":1626},11,[1628,1632,1636,1641,1646,1651,1656,1661,1665,1670,1674,1679],{"type":45,"tag":766,"props":1629,"children":1630},{"style":859},[1631],{"type":50,"value":27},{"type":45,"tag":766,"props":1633,"children":1634},{"style":813},[1635],{"type":50,"value":1505},{"type":45,"tag":766,"props":1637,"children":1638},{"style":813},[1639],{"type":50,"value":1640}," send-message",{"type":45,"tag":766,"props":1642,"children":1643},{"style":813},[1644],{"type":50,"value":1645}," --queue-url",{"type":45,"tag":766,"props":1647,"children":1648},{"style":773},[1649],{"type":50,"value":1650}," \u003C",{"type":45,"tag":766,"props":1652,"children":1653},{"style":813},[1654],{"type":50,"value":1655},"ur",{"type":45,"tag":766,"props":1657,"children":1658},{"style":1547},[1659],{"type":50,"value":1660},"l",{"type":45,"tag":766,"props":1662,"children":1663},{"style":773},[1664],{"type":50,"value":882},{"type":45,"tag":766,"props":1666,"children":1667},{"style":813},[1668],{"type":50,"value":1669}," --message-body",{"type":45,"tag":766,"props":1671,"children":1672},{"style":773},[1673],{"type":50,"value":1563},{"type":45,"tag":766,"props":1675,"children":1676},{"style":813},[1677],{"type":50,"value":1678},"{\"key\":\"value\"}",{"type":45,"tag":766,"props":1680,"children":1681},{"style":773},[1682],{"type":50,"value":1604},{"type":45,"tag":766,"props":1684,"children":1686},{"class":768,"line":1685},12,[1687,1691,1695,1700,1704,1708,1712,1716,1720,1725,1730,1735],{"type":45,"tag":766,"props":1688,"children":1689},{"style":859},[1690],{"type":50,"value":27},{"type":45,"tag":766,"props":1692,"children":1693},{"style":813},[1694],{"type":50,"value":1505},{"type":45,"tag":766,"props":1696,"children":1697},{"style":813},[1698],{"type":50,"value":1699}," receive-message",{"type":45,"tag":766,"props":1701,"children":1702},{"style":813},[1703],{"type":50,"value":1645},{"type":45,"tag":766,"props":1705,"children":1706},{"style":773},[1707],{"type":50,"value":1650},{"type":45,"tag":766,"props":1709,"children":1710},{"style":813},[1711],{"type":50,"value":1655},{"type":45,"tag":766,"props":1713,"children":1714},{"style":1547},[1715],{"type":50,"value":1660},{"type":45,"tag":766,"props":1717,"children":1718},{"style":773},[1719],{"type":50,"value":882},{"type":45,"tag":766,"props":1721,"children":1722},{"style":813},[1723],{"type":50,"value":1724}," --wait-time-seconds",{"type":45,"tag":766,"props":1726,"children":1727},{"style":894},[1728],{"type":50,"value":1729}," 20",{"type":45,"tag":766,"props":1731,"children":1732},{"style":813},[1733],{"type":50,"value":1734}," --max-number-of-messages",{"type":45,"tag":766,"props":1736,"children":1737},{"style":894},[1738],{"type":50,"value":1739}," 10\n",{"type":45,"tag":766,"props":1741,"children":1743},{"class":768,"line":1742},13,[1744],{"type":45,"tag":766,"props":1745,"children":1746},{"emptyLinePlaceholder":1611},[1747],{"type":50,"value":1614},{"type":45,"tag":766,"props":1749,"children":1750},{"class":768,"line":28},[1751],{"type":45,"tag":766,"props":1752,"children":1753},{"style":1490},[1754],{"type":50,"value":1755},"# SQS: Check queue depth\n",{"type":45,"tag":766,"props":1757,"children":1758},{"class":768,"line":32},[1759,1763,1767,1772,1776,1780,1784,1788,1792],{"type":45,"tag":766,"props":1760,"children":1761},{"style":859},[1762],{"type":50,"value":27},{"type":45,"tag":766,"props":1764,"children":1765},{"style":813},[1766],{"type":50,"value":1505},{"type":45,"tag":766,"props":1768,"children":1769},{"style":813},[1770],{"type":50,"value":1771}," get-queue-attributes",{"type":45,"tag":766,"props":1773,"children":1774},{"style":813},[1775],{"type":50,"value":1645},{"type":45,"tag":766,"props":1777,"children":1778},{"style":773},[1779],{"type":50,"value":1650},{"type":45,"tag":766,"props":1781,"children":1782},{"style":813},[1783],{"type":50,"value":1655},{"type":45,"tag":766,"props":1785,"children":1786},{"style":1547},[1787],{"type":50,"value":1660},{"type":45,"tag":766,"props":1789,"children":1790},{"style":773},[1791],{"type":50,"value":882},{"type":45,"tag":766,"props":1793,"children":1794},{"style":1547},[1795],{"type":50,"value":1550},{"type":45,"tag":766,"props":1797,"children":1799},{"class":768,"line":1798},16,[1800,1805,1810],{"type":45,"tag":766,"props":1801,"children":1802},{"style":813},[1803],{"type":50,"value":1804},"  --attribute-names",{"type":45,"tag":766,"props":1806,"children":1807},{"style":813},[1808],{"type":50,"value":1809}," ApproximateNumberOfMessages",{"type":45,"tag":766,"props":1811,"children":1812},{"style":813},[1813],{"type":50,"value":1814}," ApproximateNumberOfMessagesNotVisible\n",{"type":45,"tag":766,"props":1816,"children":1818},{"class":768,"line":1817},17,[1819],{"type":45,"tag":766,"props":1820,"children":1821},{"emptyLinePlaceholder":1611},[1822],{"type":50,"value":1614},{"type":45,"tag":766,"props":1824,"children":1826},{"class":768,"line":1825},18,[1827],{"type":45,"tag":766,"props":1828,"children":1829},{"style":1490},[1830],{"type":50,"value":1831},"# SQS: Purge queue (deletes all messages)\n",{"type":45,"tag":766,"props":1833,"children":1835},{"class":768,"line":1834},19,[1836,1840,1844,1849,1853,1857,1861,1865],{"type":45,"tag":766,"props":1837,"children":1838},{"style":859},[1839],{"type":50,"value":27},{"type":45,"tag":766,"props":1841,"children":1842},{"style":813},[1843],{"type":50,"value":1505},{"type":45,"tag":766,"props":1845,"children":1846},{"style":813},[1847],{"type":50,"value":1848}," purge-queue",{"type":45,"tag":766,"props":1850,"children":1851},{"style":813},[1852],{"type":50,"value":1645},{"type":45,"tag":766,"props":1854,"children":1855},{"style":773},[1856],{"type":50,"value":1650},{"type":45,"tag":766,"props":1858,"children":1859},{"style":813},[1860],{"type":50,"value":1655},{"type":45,"tag":766,"props":1862,"children":1863},{"style":1547},[1864],{"type":50,"value":1660},{"type":45,"tag":766,"props":1866,"children":1867},{"style":773},[1868],{"type":50,"value":1869},">\n",{"type":45,"tag":766,"props":1871,"children":1873},{"class":768,"line":1872},20,[1874],{"type":45,"tag":766,"props":1875,"children":1876},{"emptyLinePlaceholder":1611},[1877],{"type":50,"value":1614},{"type":45,"tag":766,"props":1879,"children":1881},{"class":768,"line":1880},21,[1882],{"type":45,"tag":766,"props":1883,"children":1884},{"style":1490},[1885],{"type":50,"value":1886},"# SNS: Create topic and subscribe SQS\n",{"type":45,"tag":766,"props":1888,"children":1890},{"class":768,"line":1889},22,[1891,1895,1900,1905,1910],{"type":45,"tag":766,"props":1892,"children":1893},{"style":859},[1894],{"type":50,"value":27},{"type":45,"tag":766,"props":1896,"children":1897},{"style":813},[1898],{"type":50,"value":1899}," sns",{"type":45,"tag":766,"props":1901,"children":1902},{"style":813},[1903],{"type":50,"value":1904}," create-topic",{"type":45,"tag":766,"props":1906,"children":1907},{"style":813},[1908],{"type":50,"value":1909}," --name",{"type":45,"tag":766,"props":1911,"children":1912},{"style":813},[1913],{"type":50,"value":1914}," my-topic\n",{"type":45,"tag":766,"props":1916,"children":1918},{"class":768,"line":1917},23,[1919,1923,1927,1932,1937,1941,1946,1951,1955,1960,1964,1969,1973,1978,1982],{"type":45,"tag":766,"props":1920,"children":1921},{"style":859},[1922],{"type":50,"value":27},{"type":45,"tag":766,"props":1924,"children":1925},{"style":813},[1926],{"type":50,"value":1899},{"type":45,"tag":766,"props":1928,"children":1929},{"style":813},[1930],{"type":50,"value":1931}," subscribe",{"type":45,"tag":766,"props":1933,"children":1934},{"style":813},[1935],{"type":50,"value":1936}," --topic-arn",{"type":45,"tag":766,"props":1938,"children":1939},{"style":773},[1940],{"type":50,"value":1650},{"type":45,"tag":766,"props":1942,"children":1943},{"style":813},[1944],{"type":50,"value":1945},"topic-ar",{"type":45,"tag":766,"props":1947,"children":1948},{"style":1547},[1949],{"type":50,"value":1950},"n",{"type":45,"tag":766,"props":1952,"children":1953},{"style":773},[1954],{"type":50,"value":882},{"type":45,"tag":766,"props":1956,"children":1957},{"style":813},[1958],{"type":50,"value":1959}," --protocol",{"type":45,"tag":766,"props":1961,"children":1962},{"style":813},[1963],{"type":50,"value":1505},{"type":45,"tag":766,"props":1965,"children":1966},{"style":813},[1967],{"type":50,"value":1968}," --notification-endpoint",{"type":45,"tag":766,"props":1970,"children":1971},{"style":773},[1972],{"type":50,"value":1650},{"type":45,"tag":766,"props":1974,"children":1975},{"style":813},[1976],{"type":50,"value":1977},"queue-ar",{"type":45,"tag":766,"props":1979,"children":1980},{"style":1547},[1981],{"type":50,"value":1950},{"type":45,"tag":766,"props":1983,"children":1984},{"style":773},[1985],{"type":50,"value":1869},{"type":45,"tag":766,"props":1987,"children":1989},{"class":768,"line":1988},24,[1990],{"type":45,"tag":766,"props":1991,"children":1992},{"emptyLinePlaceholder":1611},[1993],{"type":50,"value":1614},{"type":45,"tag":766,"props":1995,"children":1997},{"class":768,"line":1996},25,[1998],{"type":45,"tag":766,"props":1999,"children":2000},{"style":1490},[2001],{"type":50,"value":2002},"# SNS: Publish with attributes (for filtering)\n",{"type":45,"tag":766,"props":2004,"children":2006},{"class":768,"line":2005},26,[2007,2011,2015,2020,2024,2028,2032,2036,2040],{"type":45,"tag":766,"props":2008,"children":2009},{"style":859},[2010],{"type":50,"value":27},{"type":45,"tag":766,"props":2012,"children":2013},{"style":813},[2014],{"type":50,"value":1899},{"type":45,"tag":766,"props":2016,"children":2017},{"style":813},[2018],{"type":50,"value":2019}," publish",{"type":45,"tag":766,"props":2021,"children":2022},{"style":813},[2023],{"type":50,"value":1936},{"type":45,"tag":766,"props":2025,"children":2026},{"style":773},[2027],{"type":50,"value":1650},{"type":45,"tag":766,"props":2029,"children":2030},{"style":813},[2031],{"type":50,"value":1945},{"type":45,"tag":766,"props":2033,"children":2034},{"style":1547},[2035],{"type":50,"value":1950},{"type":45,"tag":766,"props":2037,"children":2038},{"style":773},[2039],{"type":50,"value":882},{"type":45,"tag":766,"props":2041,"children":2042},{"style":1547},[2043],{"type":50,"value":1550},{"type":45,"tag":766,"props":2045,"children":2047},{"class":768,"line":2046},27,[2048,2053,2057,2062,2067],{"type":45,"tag":766,"props":2049,"children":2050},{"style":813},[2051],{"type":50,"value":2052},"  --message",{"type":45,"tag":766,"props":2054,"children":2055},{"style":773},[2056],{"type":50,"value":1563},{"type":45,"tag":766,"props":2058,"children":2059},{"style":813},[2060],{"type":50,"value":2061},"{\"order\":\"123\"}",{"type":45,"tag":766,"props":2063,"children":2064},{"style":773},[2065],{"type":50,"value":2066},"'",{"type":45,"tag":766,"props":2068,"children":2069},{"style":1547},[2070],{"type":50,"value":1550},{"type":45,"tag":766,"props":2072,"children":2074},{"class":768,"line":2073},28,[2075,2080,2084,2089],{"type":45,"tag":766,"props":2076,"children":2077},{"style":813},[2078],{"type":50,"value":2079},"  --message-attributes",{"type":45,"tag":766,"props":2081,"children":2082},{"style":773},[2083],{"type":50,"value":1563},{"type":45,"tag":766,"props":2085,"children":2086},{"style":813},[2087],{"type":50,"value":2088},"{\"order_type\":{\"DataType\":\"String\",\"StringValue\":\"premium\"}}",{"type":45,"tag":766,"props":2090,"children":2091},{"style":773},[2092],{"type":50,"value":1604},{"type":45,"tag":766,"props":2094,"children":2096},{"class":768,"line":2095},29,[2097],{"type":45,"tag":766,"props":2098,"children":2099},{"emptyLinePlaceholder":1611},[2100],{"type":50,"value":1614},{"type":45,"tag":766,"props":2102,"children":2104},{"class":768,"line":2103},30,[2105],{"type":45,"tag":766,"props":2106,"children":2107},{"style":1490},[2108],{"type":50,"value":2109},"# SNS: Set filter policy on subscription\n",{"type":45,"tag":766,"props":2111,"children":2113},{"class":768,"line":2112},31,[2114,2118,2122,2127],{"type":45,"tag":766,"props":2115,"children":2116},{"style":859},[2117],{"type":50,"value":27},{"type":45,"tag":766,"props":2119,"children":2120},{"style":813},[2121],{"type":50,"value":1899},{"type":45,"tag":766,"props":2123,"children":2124},{"style":813},[2125],{"type":50,"value":2126}," set-subscription-attributes",{"type":45,"tag":766,"props":2128,"children":2129},{"style":1547},[2130],{"type":50,"value":1550},{"type":45,"tag":766,"props":2132,"children":2134},{"class":768,"line":2133},32,[2135,2140,2144,2149,2153,2157],{"type":45,"tag":766,"props":2136,"children":2137},{"style":813},[2138],{"type":50,"value":2139},"  --subscription-arn",{"type":45,"tag":766,"props":2141,"children":2142},{"style":773},[2143],{"type":50,"value":1650},{"type":45,"tag":766,"props":2145,"children":2146},{"style":813},[2147],{"type":50,"value":2148},"sub-ar",{"type":45,"tag":766,"props":2150,"children":2151},{"style":1547},[2152],{"type":50,"value":1950},{"type":45,"tag":766,"props":2154,"children":2155},{"style":773},[2156],{"type":50,"value":882},{"type":45,"tag":766,"props":2158,"children":2159},{"style":1547},[2160],{"type":50,"value":1550},{"type":45,"tag":766,"props":2162,"children":2164},{"class":768,"line":2163},33,[2165,2170,2175],{"type":45,"tag":766,"props":2166,"children":2167},{"style":813},[2168],{"type":50,"value":2169},"  --attribute-name",{"type":45,"tag":766,"props":2171,"children":2172},{"style":813},[2173],{"type":50,"value":2174}," FilterPolicy",{"type":45,"tag":766,"props":2176,"children":2177},{"style":1547},[2178],{"type":50,"value":1550},{"type":45,"tag":766,"props":2180,"children":2182},{"class":768,"line":2181},34,[2183,2188,2192,2197],{"type":45,"tag":766,"props":2184,"children":2185},{"style":813},[2186],{"type":50,"value":2187},"  --attribute-value",{"type":45,"tag":766,"props":2189,"children":2190},{"style":773},[2191],{"type":50,"value":1563},{"type":45,"tag":766,"props":2193,"children":2194},{"style":813},[2195],{"type":50,"value":2196},"{\"order_type\":[\"premium\"]}",{"type":45,"tag":766,"props":2198,"children":2199},{"style":773},[2200],{"type":50,"value":1604},{"type":45,"tag":766,"props":2202,"children":2204},{"class":768,"line":2203},35,[2205],{"type":45,"tag":766,"props":2206,"children":2207},{"emptyLinePlaceholder":1611},[2208],{"type":50,"value":1614},{"type":45,"tag":766,"props":2210,"children":2212},{"class":768,"line":2211},36,[2213],{"type":45,"tag":766,"props":2214,"children":2215},{"style":1490},[2216],{"type":50,"value":2217},"# EventBridge: Put custom event\n",{"type":45,"tag":766,"props":2219,"children":2221},{"class":768,"line":2220},37,[2222,2226,2231,2236,2241,2245],{"type":45,"tag":766,"props":2223,"children":2224},{"style":859},[2225],{"type":50,"value":27},{"type":45,"tag":766,"props":2227,"children":2228},{"style":813},[2229],{"type":50,"value":2230}," events",{"type":45,"tag":766,"props":2232,"children":2233},{"style":813},[2234],{"type":50,"value":2235}," put-events",{"type":45,"tag":766,"props":2237,"children":2238},{"style":813},[2239],{"type":50,"value":2240}," --entries",{"type":45,"tag":766,"props":2242,"children":2243},{"style":773},[2244],{"type":50,"value":1563},{"type":45,"tag":766,"props":2246,"children":2247},{"style":813},[2248],{"type":50,"value":2249},"[{\n",{"type":45,"tag":766,"props":2251,"children":2253},{"class":768,"line":2252},38,[2254],{"type":45,"tag":766,"props":2255,"children":2256},{"style":813},[2257],{"type":50,"value":2258},"  \"Source\": \"my.application\",\n",{"type":45,"tag":766,"props":2260,"children":2262},{"class":768,"line":2261},39,[2263],{"type":45,"tag":766,"props":2264,"children":2265},{"style":813},[2266],{"type":50,"value":2267},"  \"DetailType\": \"OrderPlaced\",\n",{"type":45,"tag":766,"props":2269,"children":2271},{"class":768,"line":2270},40,[2272],{"type":45,"tag":766,"props":2273,"children":2274},{"style":813},[2275],{"type":50,"value":2276},"  \"Detail\": \"{\\\"orderId\\\":\\\"123\\\",\\\"amount\\\":150}\",\n",{"type":45,"tag":766,"props":2278,"children":2280},{"class":768,"line":2279},41,[2281],{"type":45,"tag":766,"props":2282,"children":2283},{"style":813},[2284],{"type":50,"value":2285},"  \"EventBusName\": \"default\"\n",{"type":45,"tag":766,"props":2287,"children":2289},{"class":768,"line":2288},42,[2290,2295],{"type":45,"tag":766,"props":2291,"children":2292},{"style":813},[2293],{"type":50,"value":2294},"}]",{"type":45,"tag":766,"props":2296,"children":2297},{"style":773},[2298],{"type":50,"value":1604},{"type":45,"tag":766,"props":2300,"children":2302},{"class":768,"line":2301},43,[2303],{"type":45,"tag":766,"props":2304,"children":2305},{"emptyLinePlaceholder":1611},[2306],{"type":50,"value":1614},{"type":45,"tag":766,"props":2308,"children":2310},{"class":768,"line":2309},44,[2311],{"type":45,"tag":766,"props":2312,"children":2313},{"style":1490},[2314],{"type":50,"value":2315},"# EventBridge: Create rule\n",{"type":45,"tag":766,"props":2317,"children":2319},{"class":768,"line":2318},45,[2320,2324,2328,2333,2337,2342],{"type":45,"tag":766,"props":2321,"children":2322},{"style":859},[2323],{"type":50,"value":27},{"type":45,"tag":766,"props":2325,"children":2326},{"style":813},[2327],{"type":50,"value":2230},{"type":45,"tag":766,"props":2329,"children":2330},{"style":813},[2331],{"type":50,"value":2332}," put-rule",{"type":45,"tag":766,"props":2334,"children":2335},{"style":813},[2336],{"type":50,"value":1909},{"type":45,"tag":766,"props":2338,"children":2339},{"style":813},[2340],{"type":50,"value":2341}," my-rule",{"type":45,"tag":766,"props":2343,"children":2344},{"style":1547},[2345],{"type":50,"value":1550},{"type":45,"tag":766,"props":2347,"children":2349},{"class":768,"line":2348},46,[2350,2355,2359,2364],{"type":45,"tag":766,"props":2351,"children":2352},{"style":813},[2353],{"type":50,"value":2354},"  --event-pattern",{"type":45,"tag":766,"props":2356,"children":2357},{"style":773},[2358],{"type":50,"value":1563},{"type":45,"tag":766,"props":2360,"children":2361},{"style":813},[2362],{"type":50,"value":2363},"{\"source\":[\"my.application\"],\"detail-type\":[\"OrderPlaced\"]}",{"type":45,"tag":766,"props":2365,"children":2366},{"style":773},[2367],{"type":50,"value":1604},{"type":45,"tag":766,"props":2369,"children":2371},{"class":768,"line":2370},47,[2372],{"type":45,"tag":766,"props":2373,"children":2374},{"emptyLinePlaceholder":1611},[2375],{"type":50,"value":1614},{"type":45,"tag":766,"props":2377,"children":2379},{"class":768,"line":2378},48,[2380],{"type":45,"tag":766,"props":2381,"children":2382},{"style":1490},[2383],{"type":50,"value":2384},"# EventBridge: Add target to rule\n",{"type":45,"tag":766,"props":2386,"children":2388},{"class":768,"line":2387},49,[2389,2393,2397,2402,2407,2411],{"type":45,"tag":766,"props":2390,"children":2391},{"style":859},[2392],{"type":50,"value":27},{"type":45,"tag":766,"props":2394,"children":2395},{"style":813},[2396],{"type":50,"value":2230},{"type":45,"tag":766,"props":2398,"children":2399},{"style":813},[2400],{"type":50,"value":2401}," put-targets",{"type":45,"tag":766,"props":2403,"children":2404},{"style":813},[2405],{"type":50,"value":2406}," --rule",{"type":45,"tag":766,"props":2408,"children":2409},{"style":813},[2410],{"type":50,"value":2341},{"type":45,"tag":766,"props":2412,"children":2413},{"style":1547},[2414],{"type":50,"value":1550},{"type":45,"tag":766,"props":2416,"children":2418},{"class":768,"line":2417},50,[2419,2424,2428,2433],{"type":45,"tag":766,"props":2420,"children":2421},{"style":813},[2422],{"type":50,"value":2423},"  --targets",{"type":45,"tag":766,"props":2425,"children":2426},{"style":773},[2427],{"type":50,"value":1563},{"type":45,"tag":766,"props":2429,"children":2430},{"style":813},[2431],{"type":50,"value":2432},"[{\"Id\":\"1\",\"Arn\":\"arn:aws:sqs:us-east-1:123456789012:my-queue\"}]",{"type":45,"tag":766,"props":2434,"children":2435},{"style":773},[2436],{"type":50,"value":1604},{"type":45,"tag":766,"props":2438,"children":2440},{"class":768,"line":2439},51,[2441],{"type":45,"tag":766,"props":2442,"children":2443},{"emptyLinePlaceholder":1611},[2444],{"type":50,"value":1614},{"type":45,"tag":766,"props":2446,"children":2448},{"class":768,"line":2447},52,[2449],{"type":45,"tag":766,"props":2450,"children":2451},{"style":1490},[2452],{"type":50,"value":2453},"# EventBridge: List rules\n",{"type":45,"tag":766,"props":2455,"children":2457},{"class":768,"line":2456},53,[2458,2462,2466,2471,2476],{"type":45,"tag":766,"props":2459,"children":2460},{"style":859},[2461],{"type":50,"value":27},{"type":45,"tag":766,"props":2463,"children":2464},{"style":813},[2465],{"type":50,"value":2230},{"type":45,"tag":766,"props":2467,"children":2468},{"style":813},[2469],{"type":50,"value":2470}," list-rules",{"type":45,"tag":766,"props":2472,"children":2473},{"style":813},[2474],{"type":50,"value":2475}," --event-bus-name",{"type":45,"tag":766,"props":2477,"children":2478},{"style":813},[2479],{"type":50,"value":2480}," default\n",{"type":45,"tag":53,"props":2482,"children":2484},{"id":2483},"anti-patterns",[2485],{"type":50,"value":2486},"Anti-Patterns",{"type":45,"tag":267,"props":2488,"children":2489},{},[2490,2500,2517,2527,2537,2547,2557,2567,2577],{"type":45,"tag":64,"props":2491,"children":2492},{},[2493,2498],{"type":45,"tag":261,"props":2494,"children":2495},{},[2496],{"type":50,"value":2497},"No DLQ on SQS queues.",{"type":50,"value":2499}," Failed messages retry silently until they expire. You lose visibility into failures and potentially lose data.",{"type":45,"tag":64,"props":2501,"children":2502},{},[2503,2508,2510,2515],{"type":45,"tag":261,"props":2504,"children":2505},{},[2506],{"type":50,"value":2507},"Short polling SQS.",{"type":50,"value":2509}," Short polling queries a subset of SQS servers and returns immediately — at 4 polls\u002Fsecond, that is ~345,600 empty API calls\u002Fday per consumer, each billed at standard SQS rate. Long polling (",{"type":45,"tag":75,"props":2511,"children":2513},{"className":2512},[],[2514],{"type":50,"value":541},{"type":50,"value":2516},") queries all servers and holds the connection, reducing empty responses by ~90%.",{"type":45,"tag":64,"props":2518,"children":2519},{},[2520,2525],{"type":45,"tag":261,"props":2521,"children":2522},{},[2523],{"type":50,"value":2524},"Using SNS for point-to-point.",{"type":50,"value":2526}," If there's only one subscriber, use SQS directly. SNS adds latency and cost for no benefit.",{"type":45,"tag":64,"props":2528,"children":2529},{},[2530,2535],{"type":45,"tag":261,"props":2531,"children":2532},{},[2533],{"type":50,"value":2534},"Giant messages in SQS\u002FSNS.",{"type":50,"value":2536}," Don't push large payloads through messaging. Store in S3, send a reference. The 256 KB limit exists for a reason.",{"type":45,"tag":64,"props":2538,"children":2539},{},[2540,2545],{"type":45,"tag":261,"props":2541,"children":2542},{},[2543],{"type":50,"value":2544},"Not designing for idempotency.",{"type":50,"value":2546}," SQS Standard delivers at-least-once. SNS retries. EventBridge can replay. Every consumer must handle duplicate messages safely.",{"type":45,"tag":64,"props":2548,"children":2549},{},[2550,2555],{"type":45,"tag":261,"props":2551,"children":2552},{},[2553],{"type":50,"value":2554},"Tight coupling via message schemas.",{"type":50,"value":2556}," If changing a message format breaks consumers, you've traded one form of coupling for another. Use EventBridge Schema Registry or version your message formats.",{"type":45,"tag":64,"props":2558,"children":2559},{},[2560,2565],{"type":45,"tag":261,"props":2561,"children":2562},{},[2563],{"type":50,"value":2564},"Using EventBridge for high-throughput streaming.",{"type":50,"value":2566}," EventBridge is for event routing, not high-volume data streaming. Use Kinesis or MSK for >10K events\u002Fsec sustained.",{"type":45,"tag":64,"props":2568,"children":2569},{},[2570,2575],{"type":45,"tag":261,"props":2571,"children":2572},{},[2573],{"type":50,"value":2574},"Polling SQS from multiple consumers without proper visibility timeout.",{"type":50,"value":2576}," If visibility timeout is too short, multiple consumers process the same message. Set timeout to 6x processing time.",{"type":45,"tag":64,"props":2578,"children":2579},{},[2580,2585,2587,2593],{"type":45,"tag":261,"props":2581,"children":2582},{},[2583],{"type":50,"value":2584},"No monitoring on DLQs.",{"type":50,"value":2586}," A DLQ without an alarm is just a message graveyard. Alert on ",{"type":45,"tag":75,"props":2588,"children":2590},{"className":2589},[],[2591],{"type":50,"value":2592},"ApproximateNumberOfMessagesVisible > 0",{"type":50,"value":2594},".",{"type":45,"tag":53,"props":2596,"children":2598},{"id":2597},"reference-files",[2599],{"type":50,"value":2600},"Reference Files",{"type":45,"tag":267,"props":2602,"children":2603},{},[2604],{"type":45,"tag":64,"props":2605,"children":2606},{},[2607,2613],{"type":45,"tag":75,"props":2608,"children":2610},{"className":2609},[],[2611],{"type":50,"value":2612},"references\u002Fintegration-patterns.md",{"type":50,"value":2614}," — Architectural patterns (fan-out, saga choreography\u002Forchestration, CQRS, queue-based load leveling, event sourcing, claim-check, competing consumers) with diagrams and service mappings",{"type":45,"tag":53,"props":2616,"children":2618},{"id":2617},"related-skills",[2619],{"type":50,"value":2620},"Related Skills",{"type":45,"tag":267,"props":2622,"children":2623},{},[2624,2635,2646,2657,2668],{"type":45,"tag":64,"props":2625,"children":2626},{},[2627,2633],{"type":45,"tag":75,"props":2628,"children":2630},{"className":2629},[],[2631],{"type":50,"value":2632},"lambda",{"type":50,"value":2634}," — Lambda as SQS\u002FSNS\u002FEventBridge consumer, event source mappings",{"type":45,"tag":64,"props":2636,"children":2637},{},[2638,2644],{"type":45,"tag":75,"props":2639,"children":2641},{"className":2640},[],[2642],{"type":50,"value":2643},"step-functions",{"type":50,"value":2645}," — Orchestrated saga pattern, workflow coordination",{"type":45,"tag":64,"props":2647,"children":2648},{},[2649,2655],{"type":45,"tag":75,"props":2650,"children":2652},{"className":2651},[],[2653],{"type":50,"value":2654},"dynamodb",{"type":50,"value":2656}," — DynamoDB Streams as event source, event sourcing store",{"type":45,"tag":64,"props":2658,"children":2659},{},[2660,2666],{"type":45,"tag":75,"props":2661,"children":2663},{"className":2662},[],[2664],{"type":50,"value":2665},"observability",{"type":50,"value":2667}," — Queue depth alarms, DLQ monitoring, message age alerts",{"type":45,"tag":64,"props":2669,"children":2670},{},[2671,2677],{"type":45,"tag":75,"props":2672,"children":2674},{"className":2673},[],[2675],{"type":50,"value":2676},"api-gateway",{"type":50,"value":2678}," — API Gateway to SQS\u002FSNS integration for async APIs",{"type":45,"tag":2680,"props":2681,"children":2682},"style",{},[2683],{"type":50,"value":2684},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2686,"total":2288},[2687,2699,2714,2726,2738,2753,2769],{"slug":2688,"name":2688,"fn":2689,"description":2690,"org":2691,"tags":2692,"stars":28,"repoUrl":29,"updatedAt":2698},"agentcore","design Amazon Bedrock AgentCore architectures","Deep-dive into Amazon Bedrock AgentCore platform design, service selection, deployment, and production operations. This skill should be used when the user asks to \"design an AgentCore architecture\", \"deploy agents on AgentCore\", \"configure AgentCore Runtime\", \"set up AgentCore Memory\", \"use AgentCore Gateway\", \"configure AgentCore Identity\", \"set up AgentCore Policy\", \"plan agent observability\", \"evaluate agent quality\", \"move agent PoC to production\", or mentions AgentCore, AgentCore Runtime, AgentCore Memory, AgentCore Gateway, AgentCore Identity, AgentCore Policy, AgentCore Evaluations, AgentCore Code Interpreter, AgentCore Browser, A2A protocol, or multi-agent orchestration on AWS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2693,2696,2697],{"name":2694,"slug":2695,"type":16},"Agents","agents",{"name":14,"slug":15,"type":16},{"name":26,"slug":27,"type":16},"2026-07-12T08:40:11.108951",{"slug":2700,"name":2700,"fn":2701,"description":2702,"org":2703,"tags":2704,"stars":28,"repoUrl":29,"updatedAt":2713},"aidlc-lite","develop AI applications on AWS","Lightweight AI development lifecycle for building on AWS. A simplified take on the AI-DLC philosophy — think together, then build fast. Acts as a design partner that understands intent, proposes alternatives with trade-offs, and ships working code without the ceremony of full requirements\u002Fdesign\u002Fspec documents. Use when a founder says \"build X on AWS\", \"add Y to my stack\", \"scaffold an API\", or \"write the CDK for Z\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2705,2706,2709,2710],{"name":2694,"slug":2695,"type":16},{"name":2707,"slug":2708,"type":16},"AI Infrastructure","ai-infrastructure",{"name":26,"slug":27,"type":16},{"name":2711,"slug":2712,"type":16},"Engineering","engineering","2026-07-12T08:40:40.204103",{"slug":2715,"name":2715,"fn":2716,"description":2717,"org":2718,"tags":2719,"stars":28,"repoUrl":29,"updatedAt":2725},"architect-for-startups","advise on AWS architecture for startups","AWS architecture advisor tailored specifically for startups. Alters AWS architecture recommendations based on startup stage (pre-revenue through Series B+), team size, runway, and credits. ALWAYS use when asked about building on AWS, choosing services, planning infrastructure, managing costs with credits, or preparing architecture for fundraising.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2720,2721,2722],{"name":14,"slug":15,"type":16},{"name":26,"slug":27,"type":16},{"name":2723,"slug":2724,"type":16},"Strategy","strategy","2026-07-12T08:41:33.557354",{"slug":2727,"name":2727,"fn":2728,"description":2729,"org":2730,"tags":2731,"stars":28,"repoUrl":29,"updatedAt":2737},"aws-architect","design and review AWS architectures","Design and review AWS architectures following Well-Architected Framework principles. Use when planning new infrastructure, reviewing existing architectures, evaluating trade-offs between AWS services, or when asked about AWS best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2732,2733,2734],{"name":14,"slug":15,"type":16},{"name":26,"slug":27,"type":16},{"name":2735,"slug":2736,"type":16},"Infrastructure","infrastructure","2026-07-12T08:40:57.630086",{"slug":2739,"name":2739,"fn":2740,"description":2741,"org":2742,"tags":2743,"stars":28,"repoUrl":29,"updatedAt":2752},"aws-compare","compare AWS architecture options","Compare 2-3 AWS architecture options side-by-side across cost, complexity, performance, security, and operational burden. Use when evaluating trade-offs between approaches or when the user is deciding between options.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2744,2745,2746,2749],{"name":14,"slug":15,"type":16},{"name":26,"slug":27,"type":16},{"name":2747,"slug":2748,"type":16},"Cost Optimization","cost-optimization",{"name":2750,"slug":2751,"type":16},"Security","security","2026-07-12T08:40:23.960287",{"slug":2754,"name":2754,"fn":2755,"description":2756,"org":2757,"tags":2758,"stars":28,"repoUrl":29,"updatedAt":2768},"aws-debug","debug AWS infrastructure and deployment failures","Debug AWS infrastructure issues, deployment failures, and runtime errors. Use when troubleshooting CloudFormation stack failures, Lambda errors, ECS task failures, permission issues, networking problems, or any AWS service misbehavior.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2759,2760,2763,2766],{"name":26,"slug":27,"type":16},{"name":2761,"slug":2762,"type":16},"Debugging","debugging",{"name":2764,"slug":2765,"type":16},"Deployment","deployment",{"name":2767,"slug":2665,"type":16},"Observability","2026-07-12T08:40:16.767171",{"slug":2770,"name":2770,"fn":2771,"description":2772,"org":2773,"tags":2774,"stars":28,"repoUrl":29,"updatedAt":2783},"aws-diagram","generate AWS architecture diagrams","Generate AWS architecture diagrams in Mermaid or ASCII from a description, existing IaC, or conversation context. Use when the user wants to visualize an architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2775,2776,2777,2780],{"name":14,"slug":15,"type":16},{"name":26,"slug":27,"type":16},{"name":2778,"slug":2779,"type":16},"Diagrams","diagrams",{"name":2781,"slug":2782,"type":16},"Visualization","visualization","2026-07-12T08:40:43.26341",{"items":2785,"total":2957},[2786,2801,2822,2832,2845,2858,2868,2878,2897,2912,2927,2942],{"slug":2787,"name":2787,"fn":2788,"description":2789,"org":2790,"tags":2791,"stars":2798,"repoUrl":2799,"updatedAt":2800},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2792,2793,2794,2797],{"name":26,"slug":27,"type":16},{"name":2761,"slug":2762,"type":16},{"name":2795,"slug":2796,"type":16},"Logs","logs",{"name":2767,"slug":2665,"type":16},9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":2802,"name":2803,"fn":2804,"description":2805,"org":2806,"tags":2807,"stars":2798,"repoUrl":2799,"updatedAt":2821},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2808,2811,2812,2815,2818],{"name":2809,"slug":2810,"type":16},"Aurora","aurora",{"name":26,"slug":27,"type":16},{"name":2813,"slug":2814,"type":16},"Database","database",{"name":2816,"slug":2817,"type":16},"Serverless","serverless",{"name":2819,"slug":2820,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":2823,"name":2824,"fn":2804,"description":2805,"org":2825,"tags":2826,"stars":2798,"repoUrl":2799,"updatedAt":2831},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2827,2828,2829,2830],{"name":26,"slug":27,"type":16},{"name":2813,"slug":2814,"type":16},{"name":2816,"slug":2817,"type":16},{"name":2819,"slug":2820,"type":16},"2026-07-12T08:36:42.694299",{"slug":2833,"name":2834,"fn":2804,"description":2805,"org":2835,"tags":2836,"stars":2798,"repoUrl":2799,"updatedAt":2844},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2837,2838,2839,2842,2843],{"name":26,"slug":27,"type":16},{"name":2813,"slug":2814,"type":16},{"name":2840,"slug":2841,"type":16},"Migration","migration",{"name":2816,"slug":2817,"type":16},{"name":2819,"slug":2820,"type":16},"2026-07-12T08:36:38.584057",{"slug":2846,"name":2847,"fn":2804,"description":2805,"org":2848,"tags":2849,"stars":2798,"repoUrl":2799,"updatedAt":2857},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2850,2851,2852,2855,2856],{"name":26,"slug":27,"type":16},{"name":2813,"slug":2814,"type":16},{"name":2853,"slug":2854,"type":16},"PostgreSQL","postgresql",{"name":2816,"slug":2817,"type":16},{"name":2819,"slug":2820,"type":16},"2026-07-12T08:36:46.530743",{"slug":2859,"name":2860,"fn":2804,"description":2805,"org":2861,"tags":2862,"stars":2798,"repoUrl":2799,"updatedAt":2867},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2863,2864,2865,2866],{"name":26,"slug":27,"type":16},{"name":2813,"slug":2814,"type":16},{"name":2816,"slug":2817,"type":16},{"name":2819,"slug":2820,"type":16},"2026-07-12T08:36:48.104182",{"slug":2869,"name":2869,"fn":2804,"description":2805,"org":2870,"tags":2871,"stars":2798,"repoUrl":2799,"updatedAt":2877},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2872,2873,2874,2875,2876],{"name":26,"slug":27,"type":16},{"name":2813,"slug":2814,"type":16},{"name":2840,"slug":2841,"type":16},{"name":2816,"slug":2817,"type":16},{"name":2819,"slug":2820,"type":16},"2026-07-12T08:36:36.374512",{"slug":2879,"name":2879,"fn":2880,"description":2881,"org":2882,"tags":2883,"stars":2894,"repoUrl":2895,"updatedAt":2896},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2884,2887,2890,2891],{"name":2885,"slug":2886,"type":16},"Accounting","accounting",{"name":2888,"slug":2889,"type":16},"Analytics","analytics",{"name":2747,"slug":2748,"type":16},{"name":2892,"slug":2893,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":2898,"name":2898,"fn":2899,"description":2900,"org":2901,"tags":2902,"stars":2894,"repoUrl":2895,"updatedAt":2911},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2903,2904,2905,2908],{"name":26,"slug":27,"type":16},{"name":2892,"slug":2893,"type":16},{"name":2906,"slug":2907,"type":16},"Management","management",{"name":2909,"slug":2910,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":2913,"name":2913,"fn":2914,"description":2915,"org":2916,"tags":2917,"stars":2894,"repoUrl":2895,"updatedAt":2926},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2918,2919,2920,2923],{"name":2888,"slug":2889,"type":16},{"name":2892,"slug":2893,"type":16},{"name":2921,"slug":2922,"type":16},"Financial Statements","financial-statements",{"name":2924,"slug":2925,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":2928,"name":2928,"fn":2929,"description":2930,"org":2931,"tags":2932,"stars":2894,"repoUrl":2895,"updatedAt":2941},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2933,2936,2939],{"name":2934,"slug":2935,"type":16},"Automation","automation",{"name":2937,"slug":2938,"type":16},"Documents","documents",{"name":2940,"slug":2928,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":2943,"name":2943,"fn":2944,"description":2945,"org":2946,"tags":2947,"stars":2894,"repoUrl":2895,"updatedAt":2956},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2948,2949,2952,2953],{"name":2885,"slug":2886,"type":16},{"name":2950,"slug":2951,"type":16},"Data Analysis","data-analysis",{"name":2892,"slug":2893,"type":16},{"name":2954,"slug":2955,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150]