pub struct HttpOtelLayer<F> { /* private fields */ }Expand description
A Tower layer that adds OpenTelemetry tracing to AWS Lambda functions handling HTTP events.
This layer creates spans for incoming HTTP requests and ensures proper context propagation. It also manages span lifecycle to ensure all telemetry is properly flushed within the same Lambda invocation.
§Examples
use lambda_runtime::{service_fn, Error, LambdaEvent};
use aws_lambda_events::event::apigw::ApiGatewayProxyRequest;
use lambda_runtime::tower::ServiceBuilder;
use opentelemetry::global;
use opentelemetry_sdk::trace::TracerProvider;
use lambda_otel_utils::http_otel_layer::HttpOtelLayer;
let tracer_provider = TracerProvider::builder().build();
let provider_clone = tracer_provider.clone();
let func = ServiceBuilder::new()
.layer(HttpOtelLayer::new(move || {
provider_clone.force_flush();
}))
.service(service_fn(handler));Implementations§
Trait Implementations§
Source§impl<F: Clone> Clone for HttpOtelLayer<F>
impl<F: Clone> Clone for HttpOtelLayer<F>
Source§fn clone(&self) -> HttpOtelLayer<F>
fn clone(&self) -> HttpOtelLayer<F>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl<F> Freeze for HttpOtelLayer<F>where
F: Freeze,
impl<F> RefUnwindSafe for HttpOtelLayer<F>where
F: RefUnwindSafe,
impl<F> Send for HttpOtelLayer<F>where
F: Send,
impl<F> Sync for HttpOtelLayer<F>where
F: Sync,
impl<F> Unpin for HttpOtelLayer<F>where
F: Unpin,
impl<F> UnwindSafe for HttpOtelLayer<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request