lambda_otel_lite

Function register_extension

Source
pub async fn register_extension(
    tracer_provider: Arc<TracerProvider>,
    processor_mode: ProcessorMode,
) -> Result<UnboundedSender<()>, Error>
Expand description

Register an internal extension for handling OpenTelemetry span processing.

Note: This function is called automatically by init_telemetry and should not be called directly in your code. Use init_telemetry instead to set up telemetry for your Lambda function.

This function:

  • Creates an internal extension that listens for Lambda events
  • Sets up a SIGTERM signal handler for graceful shutdown
  • Returns a sender for signaling handler completion

The extension’s behavior depends on the processor mode:

  • In Async mode: Registers for INVOKE events and flushes after each invocation
  • In other modes: Registers for no events, letting the processor handle exports

§Arguments

  • tracer_provider - The TracerProvider to use for span management
  • processor_mode - The mode determining how spans are processed

§Returns

Returns a channel sender for signaling completion, or an Error if registration fails

§Example

Instead of calling this function directly, use init_telemetry:

use lambda_otel_lite::{init_telemetry, TelemetryConfig};
use lambda_extension::Error;

#[tokio::main]
async fn main() -> Result<(), Error> {
    let completion_handler = init_telemetry(TelemetryConfig::default()).await?;
    Ok(())
}