{"library":"opentelemetry-propagator-aws-xray","title":"AWS X-Ray Propagator for OpenTelemetry","description":"The `opentelemetry-propagator-aws-xray` library provides an OpenTelemetry `TextMapPropagator` that enables propagation of trace context in AWS X-Ray compatible headers. It allows OpenTelemetry Python applications to integrate with existing AWS X-Ray traces by injecting and extracting the `X-Amzn-Trace-Id` header. The current version is 1.0.2, and it follows the release cadence of the broader `opentelemetry-python-contrib` project, which typically sees updates aligned with core OpenTelemetry Python releases.","language":"python","status":"active","last_verified":"Wed May 13","install":{"commands":["pip install opentelemetry-propagator-aws-xray"],"cli":null},"imports":["from opentelemetry.propagators.aws.xray import AWSXRayPropagator","from opentelemetry.sdk.trace.id_generator import AwsXRayIdGenerator"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor\nfrom opentelemetry.sdk.trace.id_generator import AwsXRayIdGenerator\nfrom opentelemetry.propagators.aws.xray import AWSXRayPropagator\nfrom opentelemetry.propagate import set_global_textmap_propagator\nfrom opentelemetry.trace import get_tracer_provider, set_tracer_provider, get_tracer, get_current_span\n\n# 1. Configure TracerProvider with AwsXRayIdGenerator\n# This ensures new traces generated by this application use AWS X-Ray compatible IDs.\nprovider = TracerProvider(id_generator=AwsXRayIdGenerator())\n\n# For demonstration, we'll use a ConsoleSpanExporter.\n# In a real application, you'd use an OTLPSpanExporter or similar.\nprocessor = SimpleSpanProcessor(ConsoleSpanExporter())\nprovider.add_span_processor(processor)\nset_tracer_provider(provider)\n\n# 2. Set the global propagator to AWSXRayPropagator\n# This enables automatic injection/extraction of X-Ray headers.\nset_global_textmap_propagator(AWSXRayPropagator())\n\n# 3. Obtain a tracer and create spans\ntracer = get_tracer(__name__)\n\nprint(\"\\n--- Creating an initial span and injecting context ---\")\nwith tracer.start_as_current_span(\"my-xray-root-span\") as root_span:\n    print(f\"Root Span ID: {root_span.context.span_id:x}\")\n    print(f\"Root Trace ID: {root_span.context.trace_id:x}\")\n\n    # Simulate injecting trace context into outgoing headers\n    carrier = {}\n    AWSXRayPropagator().inject(carrier)\n    print(\"Injected headers (simulating HTTP request outgoing):\", carrier)\n\nprint(\"\\n--- Simulating a new request receiving injected headers ---\")\n# Simulate receiving injected headers in a new context\n# We start a new span, but its context will be derived from the extracted headers.\n\n# Let's assume 'carrier' contains the headers from the previous step\nreceived_carrier = carrier.copy()\n\n# When a new span is started, OpenTelemetry automatically extracts context\n# from the global propagator if it's available in the current context (e.g., from a request).\n# For this example, we manually extract and then demonstrate a child span.\n\n# Manually extract context for clarity, though it's often done automatically by instrumentations.\nextracted_context = AWSXRayPropagator().extract(received_carrier)\n\nwith tracer.start_as_current_span(\"my-xray-child-span\", context=extracted_context) as child_span:\n    print(f\"Child Span ID: {child_span.context.span_id:x}\")\n    print(f\"Child Trace ID: {child_span.context.trace_id:x}\")\n    print(f\"Is child span linked to root? {root_span.context.trace_id == child_span.context.trace_id}\")\n\n    # Further nested span\n    with tracer.start_as_current_span(\"nested-operation\"):\n        print(\"  Inside nested operation.\")\n\nprint(\"\\n--- End of quickstart ---\")","lang":"python","description":"This quickstart demonstrates how to configure OpenTelemetry to use the AWS X-Ray Propagator and `AwsXRayIdGenerator`. It shows how to initialize the `TracerProvider` for X-Ray compatible trace IDs, set the global `AWSXRayPropagator`, and simulate injecting and extracting X-Ray trace context for distributed tracing.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-13","installed_version":"1.0.2","pypi_latest":"1.0.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":1.8,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"19.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.8,"import_time_s":null,"mem_mb":null,"disk_size":"20M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"21.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.8,"import_time_s":null,"mem_mb":null,"disk_size":"22M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"13.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"12.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.7,"import_time_s":null,"mem_mb":null,"disk_size":"13M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"18.7M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2.1,"import_time_s":null,"mem_mb":null,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"opentelemetry-propagator-aws-xray","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}