{"library":"opentelemetry-instrumentation-boto3sqs","title":"OpenTelemetry Boto3 SQS Instrumentation","description":"This library provides instrumentation for the `boto3` SQS client, enabling automatic tracing of Amazon SQS operations with OpenTelemetry. It generates spans for `send_message`, `receive_message`, `delete_message` and other SQS client calls, capturing relevant attributes like queue URLs and message IDs. It is part of the OpenTelemetry Python Contrib repository, currently at version `0.62b0`, following the OpenTelemetry release cadence.","language":"python","status":"active","last_verified":"Wed May 13","install":{"commands":["pip install opentelemetry-instrumentation-boto3sqs opentelemetry-sdk boto3"],"cli":null},"imports":["from opentelemetry.instrumentation.boto3sqs import Boto3SQSInstrumentor"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport boto3\nfrom opentelemetry import trace\nfrom opentelemetry.sdk.resources import Resource\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor\nfrom opentelemetry.instrumentation.boto3sqs import Boto3SQSInstrumentor\n\n# 1. Configure OpenTelemetry Tracer Provider and Exporter\nresource = Resource.create({\"service.name\": \"sqs-test-app\"})\nprovider = TracerProvider(resource=resource)\nprocessor = SimpleSpanProcessor(ConsoleSpanExporter())\nprovider.add_span_processor(processor)\ntrace.set_tracer_provider(provider)\n\n# 2. Instrument boto3 SQS\nBoto3SQSInstrumentor().instrument()\n\n# 3. Use boto3 SQS client, operations will be traced\nsession = boto3.Session(\n    aws_access_key_id=os.environ.get(\"AWS_ACCESS_KEY_ID\", \"TEST_ACCESS_KEY\"),\n    aws_secret_access_key=os.environ.get(\"AWS_SECRET_ACCESS_KEY\", \"TEST_SECRET_KEY\"),\n    region_name=os.environ.get(\"AWS_REGION\", \"us-east-1\")\n)\nsqs_client = session.client(\"sqs\")\n\nqueue_name = \"otel-test-queue\"\nqueue_url = None\n\ntry:\n    print(f\"Creating queue: {queue_name}\")\n    response = sqs_client.create_queue(QueueName=queue_name, Attributes={'DelaySeconds': '5'})\n    queue_url = response['QueueUrl']\n    print(f\"Queue URL: {queue_url}\")\n\n    print(\"Sending message...\")\n    sqs_client.send_message(QueueUrl=queue_url, MessageBody=\"Hello SQS from OpenTelemetry!\")\n\n    print(\"Receiving messages...\")\n    messages = sqs_client.receive_message(\n        QueueUrl=queue_url,\n        MaxNumberOfMessages=1,\n        WaitTimeSeconds=10 # Use long polling for testing\n    )\n    if messages and 'Messages' in messages:\n        for message in messages['Messages']:\n            print(f\"Received message: {message['Body']}\")\n            print(f\"Deleting message: {message['MessageId']}\")\n            sqs_client.delete_message(\n                QueueUrl=queue_url,\n                ReceiptHandle=message['ReceiptHandle']\n            )\n    else:\n        print(\"No messages received.\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\nfinally:\n    if queue_url:\n        print(f\"Deleting queue: {queue_name}\")\n        try:\n            sqs_client.delete_queue(QueueUrl=queue_url)\n            print(\"Queue deleted.\")\n        except Exception as e:\n            print(f\"Error deleting queue: {e}\")","lang":"python","description":"This quickstart demonstrates how to set up the OpenTelemetry SDK with a console exporter, instrument `boto3` for SQS, and then perform basic SQS operations (create, send, receive, delete queue/messages). This will output trace spans to the console.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-13","installed_version":"0.62b1","pypi_latest":"0.62b1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4.8,"avg_import_s":1,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.82,"mem_mb":18.4,"disk_size":"56.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.89,"mem_mb":18.4,"disk_size":"56.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.2,"import_time_s":0.63,"mem_mb":18.4,"disk_size":"57M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.82,"mem_mb":18.4,"disk_size":"57M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.15,"mem_mb":20.9,"disk_size":"60.5M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.5,"mem_mb":20.8,"disk_size":"60.4M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.8,"import_time_s":0.98,"mem_mb":20.9,"disk_size":"61M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.1,"mem_mb":20.8,"disk_size":"61M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.27,"mem_mb":22.5,"disk_size":"52.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.37,"mem_mb":21.9,"disk_size":"51.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.1,"import_time_s":1.17,"mem_mb":22.5,"disk_size":"53M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.34,"mem_mb":22.5,"disk_size":"52M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.91,"mem_mb":19.5,"disk_size":"51.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.05,"mem_mb":19.4,"disk_size":"51.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.8,"import_time_s":0.95,"mem_mb":19.5,"disk_size":"52M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.04,"mem_mb":19.4,"disk_size":"52M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.7,"mem_mb":18.1,"disk_size":"56.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.78,"mem_mb":18,"disk_size":"56.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.1,"import_time_s":0.65,"mem_mb":18.1,"disk_size":"57M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-instrumentation-boto3sqs","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.8,"mem_mb":18,"disk_size":"57M"}]}}