Configuración y uso del registro en AWS SDK de Rust - AWS SDK para Rust

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración y uso del registro en AWS SDK de Rust

AWS SDK para Rust utiliza el marco de rastreo para el registro. Para habilitar el registro, agregue la caja tracing-subscriber e inicialícela en su aplicación Rust. Los registros incluyen marcas de tiempo, niveles de registro y rutas de módulos, lo que contribuye a depurar las solicitudes de la API y el comportamiento del SDK. Use la variable de entorno RUST_LOG para controlar el detalle de los registros y filtre por módulo si es necesario.

Cómo habilitar el registro en AWS SDK para Rust

  1. En la línea de comandos del directorio del proyecto, agregue la caja tracing-subscriber como dependencia:

    $ cargo add tracing-subscriber --features tracing-subscriber/env-filter

    De esta forma, se agrega la caja a la sección [dependencies] del archivo Cargo.toml.

  2. Inicialización del suscriptor. Por lo general, esto se hace al principio de la función main antes de llamar a cualquier operación de SDK para Rust:

    use aws_config::BehaviorVersion; type BoxError = Box<dyn Error + Send + Sync>; #[tokio::main] async fn main() -> Result<(), BoxError> { tracing_subscriber::fmt::init(); // Initialize the subscriber. let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; let s3 = aws_sdk_s3::Client::new(&config); let _resp = s3.list_buckets() .send() .await?; Ok(()) }
  3. Active el registro mediante la variable de entorno RUST_LOG. Para habilitar la visualización de la información de registro, en una línea de comandos, defina la variable de entorno RUST_LOG en el nivel en el que desea registrar. En el siguiente ejemplo, el nivel de registro se establece en debug.

    Linux/macOS
    $ RUST_LOG=debug
    Windows

    Si utiliza VSCode, la ventana de terminal suele tener el valor predeterminado de PowerShell. Compruebe el tipo de petición que está utilizando.

    C:\> set RUST_LOG=debug
    PowerShell
    PS C:\> $ENV:RUST_LOG="debug"
  4. Ejecute el programa:

    $ cargo run

    Debería ver un información adicional en la ventana de la consola o del terminal.

Para obtener más información, consulte el filtrado de eventos con variables de entorno en la documentación de tracing-subscriber.

Interpretación del resultado del registro

Una vez que haya activado el registro siguiendo los pasos de la sección anterior, la información adicional del registro se imprimirá en la salida estándar de forma predeterminada.

Si utiliza el formato de salida del registro predeterminado (denominado «completo» por el módulo de rastreo), la información que aparece en la salida del registro es similar a la siguiente:

2024-06-25T16:10:12.367482Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt:lazy_load_identity: aws_smithy_runtime::client::identity::cache::lazy: identity cache miss occurred; added new identity (took 480.892ms) new_expiration=2024-06-25T23:07:59Z valid_for=25066.632521s partition=IdentityCachePartition(7) 2024-06-25T16:10:12.367602Z DEBUG invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::identity::cache::lazy: loaded identity 2024-06-25T16:10:12.367643Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: resolved identity identity=Identity { data: Credentials {... }, expiration: Some(SystemTime { tv_sec: 1719356879, tv_nsec: 0 }) } 2024-06-25T16:10:12.367695Z TRACE invoke{service=s3 operation=ListBuckets sdk_invocation_id=3434933}:try_op:try_attempt: aws_smithy_runtime::client::orchestrator::auth: signing request

Cada entrada incluye lo siguiente:

  • La marca de tiempo de la entrada del registro.

  • El nivel de registro de la entrada. Se trata de una palabra como INFO, DEBUG o TRACE.

  • El conjunto anidado de intervalos a partir del cual se generó la entrada de registro, separados por dos puntos («:»). Esto le ayuda a identificar el origen de la entrada de registro.

  • La ruta del módulo de Rust que contiene el código que generó la entrada de registro.

  • El texto del mensaje de registro.

Los formatos de salida estándar del módulo de rastreo utilizan códigos de escape ANSI para colorear la salida. Tenga en cuenta estas secuencias de escape al filtrar o buscar la salida.

nota

El sdk_invocation_id que aparece dentro del conjunto anidado de intervalos es un ID único generado por el SDK en el lado del cliente para correlacionar los mensajes de registro. No está relacionado con el ID de solicitud que se encuentra en la respuesta de un Servicio de AWS.

Refinamiento de niveles de registro

Si utiliza una caja que admite el filtrado de entornos, como tracing_subscriber, puede controlar el detalle de los registros por módulo.

Puede activar el mismo nivel de registro para todos los módulos. A continuación, se establece el nivel de registro en trace para todos los módulos:

$ RUST_LOG=trace cargo run

Puede activar el registro a nivel de rastreo para un módulo específico. En el siguiente ejemplo, solo los registros de aws_smithy_runtime entrarán en el nivel trace.

$ RUST_LOG=aws_smithy_runtime=trace

Puede especificar un nivel de registro diferente para varios módulos separándolos con comas. El siguiente ejemplo establece el módulo aws_config en el nivel de registro de trace y el módulo aws_smithy_runtime en el nivel de registro debug.

$ RUST_LOG=aws_config=trace,aws_smithy_runtime=debug cargo run

En la tabla siguiente se describen algunos de los módulos que puede usar para filtrar los mensajes de registro:

Prefix Descripción

aws_smithy_runtime

Registro de solicitudes y respuestas

aws_config

Carga de credenciales

aws_sigv4

Solicitudes de firma y solicitudes canónicas

Una forma de averiguar qué módulos debe incluir en la salida del registro es registrarlo todo primero y, a continuación, buscar el nombre de la caja en la salida del registro para obtener la información que necesita. A continuación, puede configurar la variable de entorno según corresponda y volver a ejecutar el programa.