()
| 76 | |
| 77 | #[tokio::main] |
| 78 | async fn main() -> Result<(), Error> { |
| 79 | // Set up OpenTelemetry tracer provider that writes spans to stdout for |
| 80 | // debugging purposes |
| 81 | let exporter = opentelemetry_stdout::SpanExporter::default(); |
| 82 | let tracer_provider = trace::SdkTracerProvider::builder() |
| 83 | .with_batch_exporter(exporter) |
| 84 | .build(); |
| 85 | |
| 86 | // Set up link between OpenTelemetry and tracing crate |
| 87 | tracing_subscriber::registry() |
| 88 | .with(tracing_opentelemetry::OpenTelemetryLayer::new( |
| 89 | tracer_provider.tracer("my-streaming-app"), |
| 90 | )) |
| 91 | .init(); |
| 92 | |
| 93 | let svc = Router::new().route("/", get(stream_words)); |
| 94 | |
| 95 | // Initialize the Lambda runtime and add OpenTelemetry tracing |
| 96 | let runtime = Runtime::new(StreamAdapter::from(svc)).layer( |
| 97 | OtelLayer::new(|| { |
| 98 | if let Err(err) = tracer_provider.force_flush() { |
| 99 | eprintln!("Error flushing traces: {err:#?}"); |
| 100 | } |
| 101 | }) |
| 102 | .with_trigger(OpenTelemetryFaasTrigger::Http), |
| 103 | ); |
| 104 | |
| 105 | runtime.run().await |
| 106 | } |
nothing calls this directly
no test coverage detected