Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

HTTP

Mode de mise au point
HTTP - Kit AWS SDK pour Rust

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Kit AWS SDK pour Rust fournit une fonctionnalité HTTP intégrée qui est utilisée par les Service AWS clients que vous créez dans votre code.

Par défaut, le SDK pour Rust utilise un client HTTPS basé sur hyperrustls, etaws-lc-rs. Ce client devrait fonctionner correctement dans la plupart des cas d'utilisation sans configuration supplémentaire.

  • hyperest une bibliothèque HTTP de niveau inférieur pour Rust qui peut être utilisée avec le Kit AWS SDK pour Rust pour effectuer des appels de service d'API.

  • rustlsest une bibliothèque TLS moderne écrite en Rust qui possède des options intégrées pour les fournisseurs de cryptographie.

  • aws-lcest une bibliothèque cryptographique à usage général contenant les algorithmes nécessaires au TLS et aux applications courantes.

  • aws-lc-rsest un wrapper idiomatique autour de la aws-lc bibliothèque dans Rust.

La aws-smithy-http-client caisse fournit des options et une configuration supplémentaires si vous souhaitez choisir un autre fournisseur TLS ou cryptographique. Pour les cas d'utilisation plus avancés, nous vous encourageons à implémenter votre propre client HTTP ou à déposer une demande de fonctionnalité pour examen.

Choisir un autre fournisseur TLS

La aws-smithy-http-client caisse fournit quelques fournisseurs TLS alternatifs.

Les fournisseurs suivants sont disponibles :

rustls avec aws-lc

Un fournisseur TLS basé sur rustlsce type d'utilisation aws-lc-rspour la cryptographie.

Il s'agit du comportement HTTP par défaut du SDK pour Rust. Si vous souhaitez utiliser cette option, vous n'avez aucune action supplémentaire à effectuer dans votre code.

s2n-tls

Un fournisseur TLS basé sur. s2n-tls

rustls avec aws-lc-fips

Un fournisseur TLS basé sur rustlslequel utilise une version conforme à la norme FIPS de pour la cryptographie aws-lc-rs

rustls avec ring

Un fournisseur TLS basé sur rustlsce type d'utilisation ringpour la cryptographie.

Prérequis

Utiliser aws-lc-rs ou s2n-tls nécessite un compilateur C (Clang ou GCC) pour construire. Pour certaines plateformes, la compilation peut également nécessiter CMake. Construire avec la fonctionnalité « fips » sur n'importe quelle plateforme nécessite CMake et Go. Pour plus d'informations, consultez le référentiel AWS Libcrypto pour Rust (aws-lc-rs) et les instructions de compilation.

Comment utiliser un autre fournisseur TLS

La aws-smithy-http-client caisse fournit des options TLS supplémentaires. Pour que vos Service AWS clients utilisent un autre fournisseur TLS, remplacez l'http_clientutilisation du chargeur depuis la aws_config caisse. Le client HTTP est utilisé à la fois pour les fournisseurs Services AWS d'informations d'identification.

L'exemple suivant montre comment utiliser le fournisseur s2n-tls TLS. Cependant, une approche similaire fonctionne également pour d'autres fournisseurs.

Pour compiler l'exemple de code, exécutez la commande suivante pour ajouter des dépendances à votre projet :

cargo add aws-smithy-http-client -F s2n-tls

Exemple de code :

use aws_smithy_http_client::{tls, Builder}; #[tokio::main] async fn main() { let http_client = Builder::new() .tls_provider(tls::Provider::S2nTls) .build_https(); let sdk_config = aws_config::defaults( aws_config::BehaviorVersion::latest() ) .http_client(http_client) .load() .await; // create client(s) using sdk_config // e.g. aws_sdk_s3::Client::new(&sdk_config); }

Activation du support FIPS

La aws-smithy-http-client caisse fournit une option pour activer une implémentation cryptographique conforme à la norme FIPS. Pour que vos Service AWS clients puissent utiliser le fournisseur conforme à la norme FIPS, remplacez l'http_clientutilisation du chargeur depuis la caisse. aws_config Le client HTTP est utilisé à la fois pour les fournisseurs Services AWS d'informations d'identification.

Note

Le support FIPS nécessite des dépendances supplémentaires dans votre environnement de construction. Consultez les instructions de fabrication de la aws-lc caisse.

Pour compiler l'exemple de code, exécutez la commande suivante pour ajouter des dépendances à votre projet :

cargo add aws-smithy-http-client -F rustls-aws-lc-fips

L'exemple de code suivant active le support FIPS :

// file: main.rs use aws_smithy_http_client::{ tls::{self, rustls_provider::CryptoMode}, Builder, }; #[tokio::main] async fn main() { let http_client = Builder::new() .tls_provider(tls::Provider::Rustls(CryptoMode::AwsLcFips)) .build_https(); let sdk_config = aws_config::defaults( aws_config::BehaviorVersion::latest() ) .http_client(http_client) .load() .await; // create client(s) using sdk_config // e.g. aws_sdk_s3::Client::new(&sdk_config); }

Prioriser l'échange de clés post-quantique

Le fournisseur TLS par défaut est basé sur rustls l'utilisation de celui aws-lc-rs qui prend en charge l'algorithme d'échange de clés X25519MLKEM768 post-quantique. Pour créer X25519MLKEM768 l'algorithme ayant la priorité la plus élevée, vous devez ajouter le rustls package à votre caisse et activer l'indicateur de prefer-post-quantum fonctionnalité. Dans le cas contraire, il est disponible, mais ce n'est pas la priorité la plus élevée. Consultez la rustls documentation pour plus d'informations.

Note

Cela deviendra la valeur par défaut dans une future version.

Remplacer le résolveur DNS

Le résolveur DNS par défaut peut être remplacé en configurant le client HTTP manuellement.

Pour compiler l'exemple de code, exécutez les commandes suivantes pour ajouter des dépendances à votre projet :

cargo add aws-smithy-http-client -F rustls-aws-lc cargo add aws-smithy-runtime-api -F client

L'exemple de code suivant remplace le résolveur DNS :

use aws_smithy_http_client::{ tls::{self, rustls_provider::CryptoMode}, Builder }; use aws_smithy_runtime_api::client::dns::{DnsFuture, ResolveDns}; use std::net::{IpAddr, Ipv4Addr}; /// A DNS resolver that returns a static IP address (127.0.0.1) #[derive(Debug, Clone)] struct StaticResolver; impl ResolveDns for StaticResolver { fn resolve_dns<'a>(&'a self, _name: &'a str) -> DnsFuture<'a> { DnsFuture::ready(Ok(vec![IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))])) } } #[tokio::main] async fn main() { let http_client = Builder::new() .tls_provider(tls::Provider::Rustls(CryptoMode::AwsLc)) .build_with_resolver(StaticResolver); let sdk_config = aws_config::defaults( aws_config::BehaviorVersion::latest() ) .http_client(http_client) .load() .await; // create client(s) using sdk_config // e.g. aws_sdk_s3::Client::new(&sdk_config); }
Note

Par défaut, Amazon Linux 2023 (AL2023) ne met pas en cache le DNS au niveau du système d'exploitation.

Personnalisation des certificats de l'autorité de certification racine

Par défaut, le fournisseur TLS charge les certificats racines natifs du système pour la plate-forme donnée. Pour personnaliser ce comportement afin de charger un bundle CA personnalisé, vous pouvez en configurer un TlsContext avec le vôtreTrustStore.

Pour compiler l'exemple de code, exécutez les commandes suivantes pour ajouter des dépendances à votre projet :

cargo add aws-smithy-http-client -F rustls-aws-lc

L'exemple suivant utilise rustls avec aws-lc mais fonctionnera pour tous les fournisseurs TLS pris en charge :

use aws_smithy_http_client::{ tls::{self, rustls_provider::CryptoMode}, Builder }; use std::fs; /// read the PEM encoded root CA (bundle) and return a custom TLS context fn tls_context_from_pem(filename: &str) -> tls::TlsContext { let pem_contents = fs::read(filename).unwrap(); // Create a new empty trust store (this will not load platform native certificates) let trust_store = tls::TrustStore::empty() .with_pem_certificate(pem_contents.as_slice()); tls::TlsContext::builder() .with_trust_store(trust_store) .build() .expect("valid TLS config") } #[tokio::main] async fn main() { let http_client = Builder::new() .tls_provider(tls::Provider::Rustls(CryptoMode::AwsLc)) .tls_context(tls_context_from_pem("my-custom-ca.pem")) .build_https(); let sdk_config = aws_config::defaults( aws_config::BehaviorVersion::latest() ) .http_client(http_client) .load() .await; // create client(s) using sdk_config // e.g. aws_sdk_s3::Client::new(&sdk_config); }

Rubrique suivante :

Intercepteurs

Rubrique précédente :

Points de terminaison clients
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.