選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

HTTP

焦點模式
HTTP - 適用於 Rust 的 AWS SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

適用於 Rust 的 AWS SDK 提供內建 HTTP 功能,供您 AWS 服務 在程式碼中建立的用戶端使用。

根據預設,適用於 Rust 的 SDK 會使用基於 hyperrustls和 的 HTTPS 用戶端aws-lc-rs。此用戶端應適用於大多數使用案例,無需其他組態。

  • hyper 是適用於 Rust 的較低層級 HTTP 程式庫,可與 搭配使用 適用於 Rust 的 AWS SDK ,以進行 API 服務呼叫。

  • rustls 是以 Rust 編寫的現代 TLS 程式庫,具有密碼編譯提供者的內建選項。

  • aws-lc 是一般用途的密碼編譯程式庫,包含 TLS 和常見應用程式所需的演算法。

  • aws-lc-rs 是圍繞 Rust 中aws-lc程式庫的慣用包裝函式。

如果您想要選擇不同的 TLS 或密碼編譯提供者,aws-smithy-http-client則 條板箱會提供一些額外的選項和組態。如需更進階的使用案例,建議您自行實作 HTTP 用戶端或提出功能請求以供考量。

選擇替代的 TLS 提供者

aws-smithy-http-client 木箱提供一些替代的 TLS 提供者。

提供下列供應商:

rustls 取代為 aws-lc

以 為基礎的 TLS 提供者rustlsaws-lc-rs用於密碼編譯。

這是適用於 Rust 的 SDK 的預設 HTTP 行為。如果您想要使用此選項,您不需要在程式碼中採取任何其他動作。

s2n-tls

以 為基礎的 TLS 供應商s2n-tls

rustls 取代為 aws-lc-fips

以 為基礎的 TLS 提供者rustls,使用符合 FIPS 的 版本aws-lc-rs進行密碼編譯

rustls 取代為 ring

以 為基礎的 TLS 提供者rustlsring用於密碼編譯。

先決條件

使用 aws-lc-rss2n-tls需要 C 編譯器 (Clang 或 GCC) 才能建置。對於某些平台,建置可能還需要 CMake。在任何平台上使用「fips」功能建置 需要 CMake 和 Go。如需詳細資訊,請參閱 AWS Libcrypto for Rust (aws-lc-rs) 儲存庫和建置說明。

如何使用替代 TLS 提供者

aws-smithy-http-client 木箱提供額外的 TLS 選項。若要讓您的 AWS 服務 用戶端使用不同的 TLS 提供者,http_client請使用 條aws_config箱中的載入器覆寫 。HTTP 用戶端用於 AWS 服務 和 登入資料提供者。

下列範例示範如何使用 s2n-tls TLS 提供者。不過,類似的方法也適用於其他供應商。

若要編譯範例程式碼,請執行下列命令,將相依性新增至您的專案:

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

範例程式碼:

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); }

啟用 FIPS 支援

aws-smithy-http-client 木箱提供啟用 FIPS 相容加密實作的選項。若要讓您的 AWS 服務 用戶端使用符合 FIPS 規範的提供者,http_client請使用 條aws_config箱中的載入器覆寫 。HTTP 用戶端用於 AWS 服務 和 登入資料提供者。

注意

FIPS 支援需要您建置環境中的其他相依性。請參閱 aws-lc 木箱的建置說明。

若要編譯範例程式碼,請執行下列命令,將相依性新增至您的專案:

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

下列範例程式碼啟用 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); }

排定後量子金鑰交換的優先順序

預設 TLS 提供者是以 為基礎aws-lc-rsrustls其支援X25519MLKEM768後量子金鑰交換演算法。若要讓 成為X25519MLKEM768最高優先順序的演算法,您需要將rustls套件新增至您的木箱,並啟用prefer-post-quantum功能旗標。否則,它是可用的,但不是最高優先順序。如需詳細資訊,請參閱 rustls 文件

注意

這將成為未來版本的預設值。

覆寫 DNS 解析程式

手動設定 HTTP 用戶端可以覆寫預設 DNS 解析程式。

若要編譯範例程式碼,請執行下列命令,將相依性新增至您的專案:

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

下列範例程式碼會覆寫 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); }
注意

根據預設,Amazon Linux 2023 (AL2023) 不會在作業系統層級快取 DNS。

自訂根 CA 憑證

根據預設,TLS 提供者會載入指定平台的系統原生根憑證。若要自訂此行為以載入自訂 CA 套件,您可以使用TlsContext自己的 來設定 TrustStore

若要編譯範例程式碼,請執行下列命令,將相依性新增至您的專案:

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

下列範例使用 rustls搭配 ,aws-lc但適用於任何支援的 TLS 供應商:

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); }

下一個主題:

攔截器

上一個主題:

用戶端端點
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。