使用 Rust 與用戶端快取來取得秘 Secrets Manager 碼值 - AWS Secrets Manager

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

使用 Rust 與用戶端快取來取得秘 Secrets Manager 碼值

擷取密碼時,您可以使用 Secrets Manager 防鏽式快取元件快取元件,以便 future 使用。擷取快取的秘密比從 Secrets Manager 中擷取要快。由於呼叫 Secrets Manager 需要付費APIs,因此使用快取可以降低成本。如需您可以擷取機密的所有方法,請參閱 獲取秘密

快取政策是先進先出 (FIFO),因此當快取必須捨棄密碼時,會捨棄最舊的密碼。預設情況下,快取每小時重新整理一次秘密。您可以設定下列項目:

  • max_size— 收回最近未存取的密碼之前,要維護的快取密碼數目上限。

  • ttl— 在需要重新整理密碼狀態之前,快取項目的持續時間會被視為有效。

快取實作不包括快取失效。快取實作著重於快取本身,而不是強化或著重於安全性。如果您需要額外的安全性,例如加密快取中的項目,請使用提供的特徵來修改快取。

若要使用這個元件,您必須擁有一個 Rust 2021 開發環境tokio。如需詳細資訊,請參閱 Rust 程式設計語言網站的入門

若要下載原始程式碼,請參閱上的 Secrets Manager 防鏽式快取用戶端元件。 GitHub

若要安裝快取元件,請使用下列命令。

cargo add aws_secretsmanager_caching

必要許可:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

如需詳細資訊,請參閱許可參考

範例 擷取秘密

下列範例示範如何取得名為之密碼的密碼值 MyTest.

use aws_secretsmanager_caching::SecretsManagerCachingClient; use std::num::NonZeroUsize; use std::time::Duration; let client = match SecretsManagerCachingClient::default( NonZeroUsize::new(10).unwrap(), Duration::from_secs(60), ) .await { Ok(c) => c, Err(_) => panic!("Handle this error"), }; let secret_string = match client.get_secret_value("MyTest", None, None).await { Ok(s) => s.secret_string.unwrap(), Err(_) => panic!("Handle this error"), }; // Your code here
範例 使用自定義配置和自定義客戶端實例化緩存

下列範例會示範如何設定快取,然後取得名為之密碼的秘密值 MyTest.

let config = aws_config::load_defaults(BehaviorVersion::latest()) .await .into_builder() .region(Region::from_static("us-west-2")) .build(); let asm_builder = aws_sdk_secretsmanager::config::Builder::from(&config); let client = match SecretsManagerCachingClient::from_builder( asm_builder, NonZeroUsize::new(10).unwrap(), Duration::from_secs(60), ) .await { Ok(c) => c, Err(_) => panic!("Handle this error"), }; let secret_string = client .get_secret_value("MyTest", None, None) .await { Ok(c) => c.secret_string.unwrap(), Err(_) => panic!("Handle this error"), }; // Your code here ```