opentelemetry-lambda-tower 0.1.5

OpenTelemetry Tower middleware for AWS Lambda
Documentation
[package]
name = "opentelemetry-lambda-tower"
version = "0.1.5"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors = ["Daniel Verrall"]
description = "OpenTelemetry Tower middleware for AWS Lambda"
repository = "https://github.com/djvcom/lambda-observability"
documentation = "https://docs.rs/opentelemetry-lambda-tower"
readme = "README.md"
keywords = ["lambda", "opentelemetry", "tracing", "aws", "serverless"]
categories = ["development-tools::profiling", "web-programming"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
# Tower middleware
tower = "0.5"
tower-service = "0.3"

# Async utilities
pin-project = "1"
futures-core = "0.3"
tokio.workspace = true

# Tracing (primary API)
tracing.workspace = true
tracing-opentelemetry.workspace = true

# OpenTelemetry (for context propagation and SDK types)
opentelemetry.workspace = true
opentelemetry_sdk.workspace = true

# Lambda runtime
lambda_runtime.workspace = true

# Lambda event types (feature-gated)
aws_lambda_events = { version = "1.0", default-features = false, features = [] }

# HTTP types
http = "1"
opentelemetry-semantic-conventions = { version = "0.31", features = ["semconv_experimental"] }
lambda_http = { version = "1.0.2", optional = true }
serde = { workspace = true, features = ["derive"] }

[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util", "macros"] }
tokio-test = "0.4"
opentelemetry-stdout = "0.31"
serde_json = "1"
temp-env = "0.3"
serial_test = "3.3"
aws_lambda_events = { version = "1.0", features = ["apigw", "sqs", "sns"] }
chrono.workspace = true
lambda_http = "1.0.2"
tracing-subscriber = { workspace = true, features = ["fmt"] }
serde = { workspace = true, features = ["derive"] }
mock-collector = "0.2.7"
opentelemetry-configuration.workspace = true

[[example]]
name = "http_handler"
required-features = ["lambda-http"]

[[example]]
name = "sqs_handler"
required-features = ["sqs"]

[features]
default = ["http", "sqs"]
# Event type extractors
http = ["aws_lambda_events/apigw"]
sqs = ["aws_lambda_events/sqs"]
sns = ["aws_lambda_events/sns"]
# lambda_http crate integration
lambda-http = ["dep:lambda_http", "aws_lambda_events/apigw", "aws_lambda_events/alb"]
# All extractors
full = ["http", "sqs", "sns", "lambda-http"]
# Expose internal parsing functions for fuzzing (not part of public API)
fuzz = ["http", "sqs", "sns"]