{"id":"2accf35a-c52c-4ae4-9255-65389be3fd7f","shortId":"zNNW9E","kind":"skill","title":"sqs","tagline":"AWS SQS message queue service for decoupled architectures. Use when creating queues, configuring dead-letter queues, managing visibility timeouts, implementing FIFO ordering, or integrating with Lambda.","description":"# AWS SQS\n\nAmazon Simple Queue Service (SQS) is a fully managed message queuing service for decoupling and scaling microservices, distributed systems, and serverless applications.\n\n## Table of Contents\n\n- [Core Concepts](#core-concepts)\n- [Common Patterns](#common-patterns)\n- [CLI Reference](#cli-reference)\n- [Best Practices](#best-practices)\n- [Troubleshooting](#troubleshooting)\n- [References](#references)\n\n## Core Concepts\n\n### Queue Types\n\n| Type | Description | Use Case |\n|------|-------------|----------|\n| **Standard** | At-least-once, best-effort ordering | High throughput |\n| **FIFO** | Exactly-once, strict ordering | Order-sensitive processing |\n\n### Key Settings\n\n| Setting | Description | Default |\n|---------|-------------|---------|\n| **Visibility Timeout** | Time message is hidden after receive | 30 seconds |\n| **Message Retention** | How long messages are kept | 4 days (max 14) |\n| **Delay Seconds** | Delay before message is available | 0 |\n| **Max Message Size** | Maximum message size | 256 KB |\n\n### Dead-Letter Queue (DLQ)\n\nQueue for messages that failed processing after maxReceiveCount attempts.\n\n## Common Patterns\n\n### Create a Standard Queue\n\n**AWS CLI:**\n\n```bash\naws sqs create-queue \\\n  --queue-name my-queue \\\n  --attributes '{\n    \"VisibilityTimeout\": \"60\",\n    \"MessageRetentionPeriod\": \"604800\",\n    \"ReceiveMessageWaitTimeSeconds\": \"20\"\n  }'\n```\n\n**boto3:**\n\n```python\nimport boto3\n\nsqs = boto3.client('sqs')\n\nresponse = sqs.create_queue(\n    QueueName='my-queue',\n    Attributes={\n        'VisibilityTimeout': '60',\n        'MessageRetentionPeriod': '604800',\n        'ReceiveMessageWaitTimeSeconds': '20'  # Long polling\n    }\n)\nqueue_url = response['QueueUrl']\n```\n\n### Create FIFO Queue\n\n```bash\naws sqs create-queue \\\n  --queue-name my-queue.fifo \\\n  --attributes '{\n    \"FifoQueue\": \"true\",\n    \"ContentBasedDeduplication\": \"true\"\n  }'\n```\n\n### Configure Dead-Letter Queue\n\n```bash\n# Create DLQ\naws sqs create-queue --queue-name my-queue-dlq\n\n# Get DLQ ARN\nDLQ_ARN=$(aws sqs get-queue-attributes \\\n  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue-dlq \\\n  --attribute-names QueueArn \\\n  --query 'Attributes.QueueArn' --output text)\n\n# Set redrive policy on main queue\naws sqs set-queue-attributes \\\n  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue \\\n  --attributes \"{\n    \\\"RedrivePolicy\\\": \\\"{\\\\\\\"deadLetterTargetArn\\\\\\\":\\\\\\\"${DLQ_ARN}\\\\\\\",\\\\\\\"maxReceiveCount\\\\\\\":\\\\\\\"3\\\\\\\"}\\\"\n  }\"\n```\n\n### Send Messages\n\n```python\nimport boto3\nimport json\n\nsqs = boto3.client('sqs')\nqueue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'\n\n# Send single message\nsqs.send_message(\n    QueueUrl=queue_url,\n    MessageBody=json.dumps({'order_id': '12345', 'action': 'process'}),\n    MessageAttributes={\n        'MessageType': {\n            'DataType': 'String',\n            'StringValue': 'Order'\n        }\n    }\n)\n\n# Send to FIFO queue\nsqs.send_message(\n    QueueUrl='https://sqs.us-east-1.amazonaws.com/123456789012/my-queue.fifo',\n    MessageBody=json.dumps({'order_id': '12345'}),\n    MessageGroupId='order-12345',\n    MessageDeduplicationId='unique-id-12345'\n)\n\n# Batch send (up to 10 messages)\nsqs.send_message_batch(\n    QueueUrl=queue_url,\n    Entries=[\n        {'Id': '1', 'MessageBody': json.dumps({'id': 1})},\n        {'Id': '2', 'MessageBody': json.dumps({'id': 2})},\n        {'Id': '3', 'MessageBody': json.dumps({'id': 3})}\n    ]\n)\n```\n\n### Receive and Process Messages\n\n```python\nimport boto3\nimport json\n\nsqs = boto3.client('sqs')\nqueue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'\n\nwhile True:\n    # Long polling (wait up to 20 seconds)\n    response = sqs.receive_message(\n        QueueUrl=queue_url,\n        MaxNumberOfMessages=10,\n        WaitTimeSeconds=20,\n        MessageAttributeNames=['All'],\n        AttributeNames=['All']\n    )\n\n    messages = response.get('Messages', [])\n\n    for message in messages:\n        try:\n            body = json.loads(message['Body'])\n            print(f\"Processing: {body}\")\n\n            # Process message...\n\n            # Delete on success\n            sqs.delete_message(\n                QueueUrl=queue_url,\n                ReceiptHandle=message['ReceiptHandle']\n            )\n        except Exception as e:\n            print(f\"Error processing message: {e}\")\n            # Message will become visible again after visibility timeout\n```\n\n### Lambda Integration\n\n```bash\n# Create event source mapping\naws lambda create-event-source-mapping \\\n  --function-name my-function \\\n  --event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \\\n  --batch-size 10 \\\n  --maximum-batching-window-in-seconds 5\n```\n\nLambda handler:\n\n```python\ndef handler(event, context):\n    for record in event['Records']:\n        body = json.loads(record['body'])\n        message_id = record['messageId']\n\n        try:\n            process_message(body)\n        except Exception as e:\n            # Raise to put message back in queue\n            raise\n\n    return {'batchItemFailures': []}\n```\n\n## CLI Reference\n\n### Queue Management\n\n| Command | Description |\n|---------|-------------|\n| `aws sqs create-queue` | Create queue |\n| `aws sqs delete-queue` | Delete queue |\n| `aws sqs list-queues` | List queues |\n| `aws sqs get-queue-url` | Get queue URL by name |\n| `aws sqs get-queue-attributes` | Get queue settings |\n| `aws sqs set-queue-attributes` | Update queue settings |\n\n### Messaging\n\n| Command | Description |\n|---------|-------------|\n| `aws sqs send-message` | Send single message |\n| `aws sqs send-message-batch` | Send up to 10 messages |\n| `aws sqs receive-message` | Receive messages |\n| `aws sqs delete-message` | Delete message |\n| `aws sqs delete-message-batch` | Delete up to 10 messages |\n| `aws sqs purge-queue` | Delete all messages |\n\n### Visibility\n\n| Command | Description |\n|---------|-------------|\n| `aws sqs change-message-visibility` | Change timeout |\n| `aws sqs change-message-visibility-batch` | Batch change |\n\n## Best Practices\n\n### Message Processing\n\n- **Use long polling** (WaitTimeSeconds=20) to reduce API calls\n- **Delete messages promptly** after successful processing\n- **Configure appropriate visibility timeout** (> processing time)\n- **Implement idempotent consumers** for at-least-once delivery\n\n### Dead-Letter Queues\n\n- **Always configure DLQ** for production queues\n- **Set appropriate maxReceiveCount** (usually 3-5)\n- **Monitor DLQ depth** with CloudWatch alarms\n- **Process DLQ messages** manually or with automation\n\n### FIFO Queues\n\n- **Use message group IDs** to partition ordering\n- **Enable content-based deduplication** or provide dedup IDs\n- **Throughput**: 300 msgs/sec without batching, 3000 with\n\n### Security\n\n- **Use queue policies** to control access\n- **Enable encryption** with SSE-SQS or SSE-KMS\n- **Use VPC endpoints** for private access\n\n## Troubleshooting\n\n### Messages Not Being Received\n\n**Causes:**\n- Short polling returning empty\n- All messages in flight (visibility timeout)\n- Messages delayed (DelaySeconds)\n\n**Debug:**\n\n```bash\n# Check queue attributes\naws sqs get-queue-attributes \\\n  --queue-url $QUEUE_URL \\\n  --attribute-names All\n\n# Check approximate message counts\naws sqs get-queue-attributes \\\n  --queue-url $QUEUE_URL \\\n  --attribute-names \\\n    ApproximateNumberOfMessages,\\\n    ApproximateNumberOfMessagesNotVisible,\\\n    ApproximateNumberOfMessagesDelayed\n```\n\n### Messages Going to DLQ\n\n**Causes:**\n- Processing errors\n- Visibility timeout too short\n- Consumer not deleting messages\n\n**Redrive from DLQ:**\n\n```bash\n# Enable redrive allow policy on source queue\naws sqs set-queue-attributes \\\n  --queue-url $MAIN_QUEUE_URL \\\n  --attributes '{\"RedriveAllowPolicy\": \"{\\\"redrivePermission\\\":\\\"allowAll\\\"}\"}'\n\n# Start redrive\naws sqs start-message-move-task \\\n  --source-arn arn:aws:sqs:us-east-1:123456789012:my-queue-dlq \\\n  --destination-arn arn:aws:sqs:us-east-1:123456789012:my-queue\n```\n\n### Duplicate Processing\n\n**Solutions:**\n- Use FIFO queues for exactly-once\n- Implement idempotency in consumer\n- Track processed message IDs in database\n\n### Lambda Not Processing\n\n```bash\n# Check event source mapping\naws lambda list-event-source-mappings \\\n  --function-name my-function\n\n# Check for errors\naws lambda get-event-source-mapping \\\n  --uuid <mapping-uuid>\n```\n\n## References\n\n- [SQS Developer Guide](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/)\n- [SQS API Reference](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/)\n- [SQS CLI Reference](https://docs.aws.amazon.com/cli/latest/reference/sqs/)\n- [boto3 SQS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html)","tags":["sqs","aws","agent","skills","itsmostafa","agent-skills","agentic-ai","claude-code","claude-skills","codex","coding-agents"],"capabilities":["skill","source-itsmostafa","skill-sqs","topic-agent-skills","topic-agentic-ai","topic-aws","topic-claude-code","topic-claude-skills","topic-codex","topic-coding-agents"],"categories":["aws-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/itsmostafa/aws-agent-skills/sqs","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add itsmostafa/aws-agent-skills","source_repo":"https://github.com/itsmostafa/aws-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1085 github stars · SKILL.md body (8,689 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:59.196Z","embedding":null,"createdAt":"2026-04-18T21:55:47.820Z","updatedAt":"2026-05-03T00:52:59.196Z","lastSeenAt":"2026-05-03T00:52:59.196Z","tsv":"'-12345':360 '-5':748 '/123456789012/my-queue':299 '/123456789012/my-queue''':321,413 '/123456789012/my-queue-dlq':273 '/123456789012/my-queue.fifo'',':352 '/awssimplequeueservice/latest/apireference/)':1014 '/awssimplequeueservice/latest/sqsdeveloperguide/)':1008 '/cli/latest/reference/sqs/)':1020 '/v1/documentation/api/latest/reference/services/sqs.html)':1025 '0':142 '1':380,384,514,930,945 '10':370,430,522,644,669 '12345':334,357,365 '123456789012':515,931,946 '14':134 '2':386,390 '20':191,212,421,432,707 '256':149 '3':306,392,396,747 '30':122 '300':781 '3000':785 '4':131 '5':529 '60':187,208 '604800':189,210 'access':793,809 'action':335 'alarm':754 'allow':891 'allowal':911 'alway':737 'amazon':31 'api':710,1010 'applic':52 'appropri':719,744 'approxim':850 'approximatenumberofmessag':867 'approximatenumberofmessagesdelay':869 'approximatenumberofmessagesnotvis':868 'architectur':9 'arn':259,261,304,507,508,923,924,938,939 'at-least-onc':89,728 'attempt':164 'attribut':185,206,232,267,275,293,300,611,620,833,839,846,858,865,901,908 'attribute-nam':274,845,864 'attributenam':435 'attributes.queuearn':279 'autom':761 'avail':141 'aw':2,29,171,174,223,245,262,288,491,509,574,581,588,595,606,615,627,635,646,653,660,671,682,690,834,853,896,914,925,940,978,994 'back':562 'base':774 'bash':173,222,242,486,830,888,973 'batch':366,374,520,525,640,665,696,697,784 'batch-siz':519 'batchitemfailur':567 'becom':478 'best':71,74,94,699 'best-effort':93 'best-practic':73 'bodi':445,448,452,542,545,553 'boto3':192,195,311,403,1021 'boto3.amazonaws.com':1024 'boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html)':1023 'boto3.client':197,315,407 'call':711 'case':87 'caus':815,874 'chang':685,688,693,698 'change-message-vis':684 'change-message-visibility-batch':692 'check':831,849,974,991 'cli':66,69,172,568,1016 'cli-refer':68 'cloudwatch':753 'command':572,625,680 'common':61,64,165 'common-pattern':63 'concept':57,60,81 'configur':14,237,718,738 'consum':726,881,963 'content':55,773 'content-bas':772 'contentbaseddedupl':235 'context':536 'control':792 'core':56,59,80 'core-concept':58 'count':852 'creat':12,167,177,219,226,243,248,487,494,577,579 'create-event-source-map':493 'create-queu':176,225,247,576 'databas':969 'datatyp':339 'day':132 'dead':16,152,239,734 'dead-lett':15,151,238,733 'deadlettertargetarn':302 'debug':829 'decoupl':8,44 'dedup':778 'dedupl':775 'def':533 'default':113 'delay':135,137,827 'delaysecond':828 'delet':455,584,586,656,658,663,666,676,712,883 'delete-messag':655 'delete-message-batch':662 'delete-queu':583 'deliveri':732 'depth':751 'descript':85,112,573,626,681 'destin':937 'destination-arn':936 'develop':1004 'distribut':48 'dlq':155,244,256,258,260,303,739,750,756,873,887,935 'docs.aws.amazon.com':1007,1013,1019 'docs.aws.amazon.com/awssimplequeueservice/latest/apireference/)':1012 'docs.aws.amazon.com/awssimplequeueservice/latest/sqsdeveloperguide/)':1006 'docs.aws.amazon.com/cli/latest/reference/sqs/)':1018 'duplic':950 'e':469,475,557 'east':513,929,944 'effort':95 'empti':819 'enabl':771,794,889 'encrypt':795 'endpoint':806 'entri':378 'error':472,876,993 'event':488,495,505,535,540,975,982,998 'event-source-arn':504 'exact':101,958 'exactly-onc':100,957 'except':466,467,554,555 'f':450,471 'fail':160 'fifo':23,99,220,345,762,954 'fifoqueu':233 'flight':823 'fulli':38 'function':499,503,986,990 'function-nam':498,985 'get':257,265,598,601,609,612,837,856,997 'get-event-source-map':996 'get-queue-attribut':264,608,836,855 'get-queue-url':597 'go':871 'group':766 'guid':1005 'handler':531,534 'hidden':119 'high':97 'id':333,356,364,379,383,385,389,391,395,547,767,779,967 'idempot':725,961 'implement':22,724,960 'import':194,310,312,402,404 'integr':26,485 'json':313,405 'json.dumps':331,354,382,388,394 'json.loads':446,543 'kb':150 'kept':130 'key':109 'kms':803 'lambda':28,484,492,530,970,979,995 'least':91,730 'letter':17,153,240,735 'list':591,593,981 'list-event-source-map':980 'list-queu':590 'long':127,213,416,704 'main':286,905 'manag':19,39,571 'manual':758 'map':490,497,977,984,1000 'max':133,143 'maximum':146,524 'maximum-batching-window-in-second':523 'maxnumberofmessag':429 'maxreceivecount':163,305,745 'messag':4,40,117,124,128,139,144,147,158,308,324,326,348,371,373,400,425,437,439,441,443,447,454,459,464,474,476,546,552,561,624,631,634,639,645,650,652,657,659,664,670,678,686,694,701,713,757,765,811,821,826,851,870,884,918,966 'messageattribut':337 'messageattributenam':433 'messagebodi':330,353,381,387,393 'messagededuplicationid':361 'messagegroupid':358 'messageid':549 'messageretentionperiod':188,209 'messagetyp':338 'microservic':47 'monitor':749 'move':919 'msgs/sec':782 'my-funct':501,988 'my-queu':182,203,516,947 'my-queue-dlq':253,932 'my-queue.fifo':231 'name':181,230,252,276,500,605,847,866,987 'order':24,96,104,106,332,342,355,359,770 'order-sensit':105 'output':280 'partit':769 'pattern':62,65,166 'polici':284,790,892 'poll':214,417,705,817 'practic':72,75,700 'print':449,470 'privat':808 'process':108,161,336,399,451,453,473,551,702,717,722,755,875,951,965,972 'product':741 'prompt':714 'provid':777 'purg':674 'purge-queu':673 'put':560 'python':193,309,401,532 'queri':278 'queu':41 'queue':5,13,18,33,82,154,156,170,178,180,184,201,205,215,221,227,229,241,249,251,255,266,269,287,292,295,317,328,346,376,409,427,461,518,564,570,578,580,585,587,592,594,599,602,610,613,619,622,675,736,742,763,789,832,838,841,843,857,860,862,895,900,903,906,934,949,955 'queue-nam':179,228,250 'queue-url':268,294,840,859,902 'queuearn':277 'queuenam':202 'queueurl':218,327,349,375,426,460 'rais':558,565 'receipthandl':463,465 'receiv':121,397,649,651,814 'receive-messag':648 'receivemessagewaittimesecond':190,211 'record':538,541,544,548 'redriv':283,885,890,913 'redriveallowpolici':909 'redrivepermiss':910 'redrivepolici':301 'reduc':709 'refer':67,70,78,79,569,1002,1011,1017 'respons':199,217,423 'response.get':438 'retent':125 'return':566,818 'scale':46 'second':123,136,422,528 'secur':787 'send':307,322,343,367,630,632,638,641 'send-messag':629 'send-message-batch':637 'sensit':107 'serverless':51 'servic':6,34,42 'set':110,111,282,291,614,618,623,743,899 'set-queue-attribut':290,617,898 'short':816,880 'simpl':32 'singl':323,633 'size':145,148,521 'skill' 'skill-sqs' 'solut':952 'sourc':489,496,506,894,922,976,983,999 'source-arn':921 'source-itsmostafa' 'sqs':1,3,30,35,175,196,198,224,246,263,289,314,316,406,408,510,575,582,589,596,607,616,628,636,647,654,661,672,683,691,799,835,854,897,915,926,941,1003,1009,1015,1022 'sqs.create':200 'sqs.delete':458 'sqs.receive':424 'sqs.send':325,347,372 'sqs.us-east-1.amazonaws.com':272,298,320,351,412 'sqs.us-east-1.amazonaws.com/123456789012/my-queue':297 'sqs.us-east-1.amazonaws.com/123456789012/my-queue''':319,411 'sqs.us-east-1.amazonaws.com/123456789012/my-queue-dlq':271 'sqs.us-east-1.amazonaws.com/123456789012/my-queue.fifo'',':350 'sse':798,802 'sse-km':801 'sse-sq':797 'standard':88,169 'start':912,917 'start-message-move-task':916 'strict':103 'string':340 'stringvalu':341 'success':457,716 'system':49 'tabl':53 'task':920 'text':281 'throughput':98,780 'time':116,723 'timeout':21,115,483,689,721,825,878 'topic-agent-skills' 'topic-agentic-ai' 'topic-aws' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-coding-agents' 'track':964 'tri':444,550 'troubleshoot':76,77,810 'true':234,236,415 'type':83,84 'uniqu':363 'unique-id':362 'updat':621 'url':216,270,296,318,329,377,410,428,462,600,603,842,844,861,863,904,907 'us':512,928,943 'us-east':511,927,942 'use':10,86,703,764,788,804,953 'usual':746 'uuid':1001 'visibilitytimeout':186,207 'visibl':20,114,479,482,679,687,695,720,824,877 'vpc':805 'wait':418 'waittimesecond':431,706 'window':526 'without':783","prices":[{"id":"7d6030a3-2216-4ecc-87ce-14ec95ab3251","listingId":"2accf35a-c52c-4ae4-9255-65389be3fd7f","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"itsmostafa","category":"aws-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:55:47.820Z"}],"sources":[{"listingId":"2accf35a-c52c-4ae4-9255-65389be3fd7f","source":"github","sourceId":"itsmostafa/aws-agent-skills/sqs","sourceUrl":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/sqs","isPrimary":false,"firstSeenAt":"2026-04-18T21:55:47.820Z","lastSeenAt":"2026-05-03T00:52:59.196Z"}],"details":{"listingId":"2accf35a-c52c-4ae4-9255-65389be3fd7f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"itsmostafa","slug":"sqs","github":{"repo":"itsmostafa/aws-agent-skills","stars":1085,"topics":["agent-skills","agentic-ai","aws","claude-code","claude-skills","codex","coding-agents"],"license":"mit","html_url":"https://github.com/itsmostafa/aws-agent-skills","pushed_at":"2026-04-27T09:45:24Z","description":"AWS Skills for Agents","skill_md_sha":"5e7455b6ab692b572668505545b4e61dd048f7a4","skill_md_path":"skills/sqs/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/itsmostafa/aws-agent-skills/tree/main/skills/sqs"},"layout":"multi","source":"github","category":"aws-agent-skills","frontmatter":{"name":"sqs","description":"AWS SQS message queue service for decoupled architectures. Use when creating queues, configuring dead-letter queues, managing visibility timeouts, implementing FIFO ordering, or integrating with Lambda."},"skills_sh_url":"https://skills.sh/itsmostafa/aws-agent-skills/sqs"},"updatedAt":"2026-05-03T00:52:59.196Z"}}