Trait AwsBuilderInstrument

Source
pub trait AwsBuilderInstrument<'a>
where Self: Sized,
{ // Required method fn build_aws_span(&self) -> AwsSpanBuilder<'a>; // Provided method fn instrument(self) -> InstrumentedFluentBuilder<'a, Self> { ... } }
Expand description

A trait for AWS service clients that can be instrumented with OpenTelemetry tracing.

This trait provides methods to build spans for AWS operations and instrument the fluent builders returned by AWS SDK operations. The instrumentation automatically extracts both input attributes (from the fluent builder configuration) and output attributes (from the operation response) following OpenTelemetry semantic conventions.

§Example

use aws_sdk_dynamodb::{Client as DynamoClient, types::AttributeValue};
use telemetry_rust::middleware::aws::AwsBuilderInstrument;

async fn query_table() -> Result<i32, Box<dyn std::error::Error>> {
    let config = aws_config::load_from_env().await;
    let dynamo_client = DynamoClient::new(&config);

    let resp = dynamo_client
        .query()
        .table_name("table_name")
        .index_name("my_index")
        .key_condition_expression("PK = :pk")
        .expression_attribute_values(":pk", AttributeValue::S("Test".to_string()))
        .consistent_read(true)
        .projection_expression("id,name")
        .instrument()
        .send()
        .await?;

    // Automatically extracts span attributes from the builder:
    // - aws.dynamodb.table_name: "table_name"
    // - aws.dynamodb.index_name: "my_index"
    // - aws.dynamodb.consistent_read: true
    // - aws.dynamodb.projection: "id,name"
    //
    // And from the AWS output:
    // - aws.dynamodb.count: number of items returned
    // - aws.dynamodb.scanned_count: number of items scanned

    println!("DynamoDB items: {:#?}", resp.items());
    Ok(resp.count())
}

§Comparison with Manual Instrumentation

This trait provides automatic instrumentation as an alternative to manual instrumentation using AwsInstrument. The automatic approach extracts attributes based on OpenTelemetry semantic conventions without requiring explicit attribute specification:

// Automatic instrumentation (recommended)
let _ = dynamo_client
    .get_item()
    .table_name("table")
    .instrument() // All attributes extracted automatically
    .send()
    .await?;

// Manual instrumentation (more control, more verbose)
let _ = dynamo_client
    .get_item()
    .table_name("table")
    .send()
    .instrument(DynamodbSpanBuilder::get_item("table"))
    .await?;

Required Methods§

Source

fn build_aws_span(&self) -> AwsSpanBuilder<'a>

Builds an AWS span for the specific operation represented by this builder.

Returns an AwsSpanBuilder that contains the necessary span attributes and metadata for the AWS operation.

Provided Methods§

Source

fn instrument(self) -> InstrumentedFluentBuilder<'a, Self>

Instruments this fluent builder with OpenTelemetry tracing.

Returns an InstrumentedFluentBuilder that will automatically create and manage spans when the operation is executed.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'a> AwsBuilderInstrument<'a> for BatchExecuteStatementFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for BatchGetItemFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for BatchWriteItemFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreateBackupFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreateGlobalTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreateTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteBackupFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteItemFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteResourcePolicyFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeBackupFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeContinuousBackupsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeContributorInsightsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeEndpointsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeExportFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeGlobalTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeGlobalTableSettingsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeImportFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeKinesisStreamingDestinationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeLimitsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeTableReplicaAutoScalingFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeTimeToLiveFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DisableKinesisStreamingDestinationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for EnableKinesisStreamingDestinationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ExecuteStatementFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ExecuteTransactionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ExportTableToPointInTimeFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetItemFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetResourcePolicyFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ImportTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListBackupsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListContributorInsightsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListExportsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListGlobalTablesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListImportsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListTablesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListTagsOfResourceFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PutItemFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PutResourcePolicyFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for QueryFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for RestoreTableFromBackupFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for RestoreTableToPointInTimeFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ScanFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for TagResourceFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for TransactGetItemsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for TransactWriteItemsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UntagResourceFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateContinuousBackupsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateContributorInsightsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateGlobalTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateGlobalTableSettingsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateItemFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateKinesisStreamingDestinationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateTableFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateTableReplicaAutoScalingFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateTimeToLiveFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreateDeliveryStreamFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteDeliveryStreamFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DescribeDeliveryStreamFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListDeliveryStreamsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListTagsForDeliveryStreamFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PutRecordFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PutRecordBatchFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for StartDeliveryStreamEncryptionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for StopDeliveryStreamEncryptionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for TagDeliveryStreamFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UntagDeliveryStreamFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UpdateDestinationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for AddPermissionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CheckIfPhoneNumberIsOptedOutFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ConfirmSubscriptionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreatePlatformApplicationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreatePlatformEndpointFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreateSMSSandboxPhoneNumberFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreateTopicFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteEndpointFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeletePlatformApplicationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteSMSSandboxPhoneNumberFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteTopicFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetDataProtectionPolicyFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetEndpointAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetPlatformApplicationAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetSMSAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetSMSSandboxAccountStatusFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetSubscriptionAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetTopicAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListEndpointsByPlatformApplicationFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListOriginationNumbersFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListPhoneNumbersOptedOutFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListPlatformApplicationsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListSMSSandboxPhoneNumbersFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListSubscriptionsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListSubscriptionsByTopicFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListTagsForResourceFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListTopicsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for OptInPhoneNumberFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PublishFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PublishBatchFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PutDataProtectionPolicyFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for RemovePermissionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SetEndpointAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SetPlatformApplicationAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SetSMSAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SetSubscriptionAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SetTopicAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SubscribeFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for TagResourceFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UnsubscribeFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UntagResourceFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for VerifySMSSandboxPhoneNumberFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for AddPermissionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CancelMessageMoveTaskFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ChangeMessageVisibilityFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ChangeMessageVisibilityBatchFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for CreateQueueFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteMessageFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteMessageBatchFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for DeleteQueueFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetQueueAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for GetQueueUrlFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListDeadLetterSourceQueuesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListMessageMoveTasksFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListQueueTagsFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ListQueuesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for PurgeQueueFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for ReceiveMessageFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for RemovePermissionFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SendMessageFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SendMessageBatchFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for SetQueueAttributesFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for StartMessageMoveTaskFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for TagQueueFluentBuilder

Source§

impl<'a> AwsBuilderInstrument<'a> for UntagQueueFluentBuilder

Implementors§