-
Notifications
You must be signed in to change notification settings - Fork 371
Closed
Description
Hi,
I'm trying to use the new opentelemtry feature with a shared dynamodb client :
use aws_config::BehaviorVersion;
use lambda_http::lambda_runtime::layers::{OpenTelemetryFaasTrigger, OpenTelemetryLayer};
use lambda_http::tower::ServiceBuilder;
use lambda_http::Request;
use lambdas::api::routes::users::get::api_user_list;
use lambdas::utils::telemetry::init_tracer;
#[tokio::main]
async fn main() -> Result<(), lambda_http::Error> {
let _guard = init_tracer();
let config = aws_config::load_defaults(BehaviorVersion::latest()).await;
let db_client = aws_sdk_dynamodb::Client::new(&config);
// Create a service from the layer and the handler
let service = ServiceBuilder::new()
.layer(
OpenTelemetryLayer::new(|| {
_guard.tracer_provider.force_flush();
})
.with_trigger(OpenTelemetryFaasTrigger::Http),
)
.service_fn(|event: Request| async { api_user_list(event, &db_client).await });
lambda_http::run(service).await?;
Ok(())
}
And I'm getting the following error :
error[E0277]: the trait bound `layers::otel::OpenTelemetryService<ServiceFn<{closure@packages/lambdas/src/bin/api_user_list.rs:25:21: 25:37}>, {closure@packages/lambdas/src/bin/api_user_list.rs:20:37: 20:39}>: Service<lambda_http::http::Request<lambda_http::Body>>` is not satisfied
--> packages/lambdas/src/bin/api_user_list.rs:27:5
|
27 | lambda_http::run(service).await?;
| ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Service<lambda_http::http::Request<lambda_http::Body>>` is not implemented for `OpenTelemetryService<ServiceFn<{closure@api_user_list.rs:25:21}>, {closure@api_user_list.rs:20:37}>`
|
= help: the trait `Service<LambdaInvocation>` is implemented for `layers::otel::OpenTelemetryService<S, F>`
note: required by a bound in `lambda_http::run`
--> /Users/guillaume/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lambda_http-0.13.0/src/lib.rs:194:8
I can't find a working example of this setup, is it the right way to do it ?
Thanks
Metadata
Metadata
Assignees
Labels
No labels