{"id":27418,"library":"sqs-extended-client","title":"sqs-extended-client","description":"Python port of the Amazon SQS Extended Client Library. Handles sending and receiving large SQS messages (>256KB) by storing the message payload in S3 and sending a reference pointer via SQS. Current version: 0.0.11. Low activity, infrequent releases.","status":"active","version":"0.0.11","language":"python","source_language":"en","source_url":"https://github.com/QuiNovas/sqs-extended-client","tags":["aws","sqs","s3","large-messages","extended-client"],"install":[{"cmd":"pip install sqs-extended-client","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"AWS SDK for Python, required for SQS and S3 interactions","package":"boto3","optional":false},{"reason":"Required by boto3","package":"botocore","optional":false}],"imports":[{"note":"Old import path used in earlier docs, now broken","wrong":"from sqs_extended_client.core import SQSExtendedClient","symbol":"SQSExtendedClient","correct":"from sqs_extended_client import SQSExtendedClient"},{"note":null,"wrong":null,"symbol":"S3BackedQueue","correct":"from sqs_extended_client import S3BackedQueue"}],"quickstart":{"code":"import boto3\nfrom sqs_extended_client import SQSExtendedClient\n\nsession = boto3.Session()\nsqs_client = session.client('sqs')\ns3_client = session.client('s3')\n\n# Initialize extended client\n# Use environment variables for credentials in production\nextended = SQSExtendedClient(\n    sqs_client=sqs_client,\n    s3_client=s3_client,\n    s3_bucket_name='my-large-messages-bucket',  # Replace with your bucket\n    always_through_s3=False  # Only use S3 when size > 256KB\n)\n\n# Send a message\nqueue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue'\nmessage_body = 'a' * 300000  # Large message\nresponse = extended.send_message(\n    QueueUrl=queue_url,\n    MessageBody=message_body\n)\nprint('Message sent with SQS message ID:', response['MessageId'])\n\n# Receive and process messages\nmessages = extended.receive_message(\n    QueueUrl=queue_url,\n    MaxNumberOfMessages=5\n)\nfor msg in messages:\n    body = msg['Body']\n    print('Received message body length:', len(body))\n    extended.delete_message(QueueUrl=queue_url, ReceiptHandle=msg['ReceiptHandle'])","lang":"python","description":"Install and send/receive large SQS messages with S3 backing."},"warnings":[{"fix":"Check changelog and source code for missing features before migrating from Java.","message":"The library is a port of the Java Extended Client Library, but not all features are implemented. Notably, batch operations and message attributes handling may differ.","severity":"breaking","affected_versions":">=0.0.2"},{"fix":"Set always_through_s3=True if you want all messages stored in S3. The default is False.","message":"When always_through_s3 is False, the client automatically decides to store in S3 only if the message size exceeds 256KB. However, the maximum message size in SQS is 256KB; messages larger than this must use S3. If always_through_s3 is True, all messages are stored in S3 regardless of size.","severity":"gotcha","affected_versions":">=0.0.2"},{"fix":"Configure your bucket to allow access for the SQS service, and consider using S3 lifecycle rules to expire objects after a certain period.","message":"The client does not handle S3 bucket policy or lifecycle automatically. You must ensure the S3 bucket is configured to allow the SQS service to retrieve objects, and that you handle cleanup of old S3 objects.","severity":"gotcha","affected_versions":">=0.0.2"},{"fix":"Evaluate if the library meets your long-term requirements. Check for newer alternatives or contribute to maintenance.","message":"The library has not seen updates since 2020; rely on it at your own risk. Consider using AWS Lambda functions or Step Functions for large message processing as an alternative.","severity":"deprecated","affected_versions":">=0.0.2"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'pip install sqs-extended-client' to install from PyPI.","cause":"The library is not installed or was installed from a different source.","error":"ModuleNotFoundError: No module named 'sqs_extended_client'"},{"fix":"Set up AWS credentials via environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) or configure via ~/.aws/credentials.","cause":"AWS credentials not configured properly for boto3 session.","error":"botocore.exceptions.NoCredentialsError: Unable to locate credentials"},{"fix":"Set always_through_s3=True or ensure the message body is correctly sized before sending. Verify the library's size check.","cause":"When always_through_s3=False, a message >256KB was sent without going through S3. This may happen if the library misidentifies the size or if the payload grows after the check.","error":"sqs_extended_client.exceptions.MessageTooLargeError: Message size ... exceeds max allowed size 262144"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}