or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.mdresource-detectors.mdxray-id-generator.md
tile.json

tessl/pypi-opentelemetry-sdk-extension-aws

AWS SDK extension for OpenTelemetry providing X-Ray ID generation and AWS resource detection

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/opentelemetry-sdk-extension-aws@2.1.x

To install, run

npx @tessl/cli install tessl/pypi-opentelemetry-sdk-extension-aws@2.1.0

index.mddocs/

OpenTelemetry SDK Extension for AWS

A comprehensive OpenTelemetry SDK extension providing AWS X-Ray tracing compatibility and automatic resource attribute detection for AWS services. This package bridges OpenTelemetry distributed tracing with AWS X-Ray by generating compatible trace IDs and automatically populating resource attributes when running on AWS infrastructure.

Package Information

  • Package Name: opentelemetry-sdk-extension-aws
  • Language: Python
  • Installation: pip install opentelemetry-sdk-extension-aws

Core Imports

For X-Ray ID generation:

from opentelemetry.sdk.extension.aws.trace import AwsXRayIdGenerator

For AWS resource detection:

from opentelemetry.sdk.extension.aws.resource.ec2 import AwsEc2ResourceDetector
from opentelemetry.sdk.extension.aws.resource.ecs import AwsEcsResourceDetector
from opentelemetry.sdk.extension.aws.resource.eks import AwsEksResourceDetector  
from opentelemetry.sdk.extension.aws.resource.beanstalk import AwsBeanstalkResourceDetector
from opentelemetry.sdk.extension.aws.resource._lambda import AwsLambdaResourceDetector

Basic Usage

X-Ray Compatible Tracing

import opentelemetry.trace as trace
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdGenerator
from opentelemetry.sdk.trace import TracerProvider

# Configure TracerProvider with X-Ray compatible ID generator
trace.set_tracer_provider(
    TracerProvider(id_generator=AwsXRayIdGenerator())
)

# Use tracing as normal - IDs will be X-Ray compatible
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("operation"):
    # Your application code here
    pass

Automatic Resource Detection

import opentelemetry.trace as trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.extension.aws.resource.ec2 import AwsEc2ResourceDetector
from opentelemetry.sdk.resources import get_aggregated_resources

# Configure TracerProvider with automatic AWS resource detection
trace.set_tracer_provider(
    TracerProvider(
        resource=get_aggregated_resources([
            AwsEc2ResourceDetector(),
        ])
    )
)

Architecture

The extension consists of two main components:

  • X-Ray ID Generator: Produces trace and span IDs compatible with AWS X-Ray's format requirements, embedding Unix timestamps in trace IDs to ensure acceptance by X-Ray backend services
  • Resource Detectors: Automatically detect and populate OpenTelemetry resource attributes when running on various AWS services (EC2, ECS, EKS, Lambda, Beanstalk)

Both components integrate seamlessly with OpenTelemetry's standard TracerProvider configuration, enabling applications to benefit from X-Ray compatibility and automatic resource detection without code changes beyond initial setup.

Capabilities

X-Ray ID Generation

Generates OpenTelemetry trace and span IDs that are compatible with AWS X-Ray's format requirements. X-Ray requires trace IDs to embed Unix timestamps in the first 32 bits to ensure spans are not rejected by the service.

class AwsXRayIdGenerator:
    def generate_span_id(self) -> int: ...
    def generate_trace_id(self) -> int: ...

X-Ray ID Generation

AWS Resource Detection

Automatically detects and populates resource attributes when running on AWS services. Each detector focuses on a specific AWS service and extracts relevant metadata to enhance observability.

class AwsEc2ResourceDetector:
    def detect(self) -> Resource: ...

class AwsEcsResourceDetector:
    def detect(self) -> Resource: ...

class AwsEksResourceDetector:
    def detect(self) -> Resource: ...

class AwsBeanstalkResourceDetector:
    def detect(self) -> Resource: ...

class AwsLambdaResourceDetector:
    def detect(self) -> Resource: ...

AWS Resource Detection

Types

from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace.id_generator import IdGenerator

# All resource detectors extend this base class
class ResourceDetector:
    raise_on_error: bool
    def detect(self) -> Resource: ...

# ID generator base class
class IdGenerator:
    def generate_span_id(self) -> int: ...
    def generate_trace_id(self) -> int: ...