

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

# 使用 Rust 取得 Secrets Manager 秘密值
<a name="retrieving-secrets-rust"></a>

在應用程式中，您可以透過在任何 AWS SDKs `BatchGetSecretValue`中呼叫 `GetSecretValue`或 來擷取秘密。不過，建議您使用用戶端快取來快取您的秘密值。快取秘密可提高速度並降低成本。

**Topics**
+ [使用 Rust 搭配用戶端快取取得 Secrets Manager 秘密值](retrieving-secrets_cache-rust.md)
+ [使用 Rust AWS SDK 取得 Secrets Manager 秘密值](retrieving-secrets-rust-sdk.md)

# 使用 Rust 搭配用戶端快取取得 Secrets Manager 秘密值
<a name="retrieving-secrets_cache-rust"></a>

擷取秘密時，您可以使用 Secrets Manager Rust 型快取元件來快取秘密以供日後使用。擷取快取的秘密比從 Secrets Manager 中擷取要快。由於呼叫 Secrets Manager API 需要花費成本，因此使用快取可以降低成本。如需您可以擷取機密的所有方法，請參閱 [取得秘密](retrieving-secrets.md)。

快取政策是先進先出 (FIFO)，因此當快取必須捨棄秘密時，會捨棄最舊的秘密。預設情況下，快取每小時重新整理一次秘密。您可以設定下列項目：
+ `max_size` – 在移出最近未存取的秘密之前，要維護的快取秘密數目上限。
+ `ttl` – 在需要重新整理秘密狀態之前，快取項目視為有效的持續時間。

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

若要使用 元件，您必須具有具有 的 Rust 2021 開發環境`tokio`。如需詳細資訊，請參閱 Rust 程式設計語言網站上的[入門](https://www.rust-lang.org/learn/get-started)。

若要下載原始程式碼，請參閱 GitHub 上的 [Secrets Manager Rust 型快取用戶端元件](https://github.com/aws/aws-secretsmanager-agent/tree/main/aws_secretsmanager_caching)。

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

```
cargo add aws_secretsmanager_caching
```

**必要許可：**
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

如需詳細資訊，請參閱[許可參考](auth-and-access.md#reference_iam-permissions)。

**Example 擷取秘密**  
下列範例顯示如何取得名為 *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
```

**Example 使用自訂組態和自訂用戶端執行個體化快取**  
下列範例示範如何設定快取，然後取得名為 *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
```
```

# 使用 Rust AWS SDK 取得 Secrets Manager 秘密值
<a name="retrieving-secrets-rust-sdk"></a>

在應用程式中，您可以透過在任何 AWS SDKs `BatchGetSecretValue`中呼叫 `GetSecretValue`或 來擷取秘密。不過，建議您使用用戶端快取來快取您的秘密值。快取秘密可提高速度並降低成本。

對於 Rust 應用程式，請使用 [Secrets Manager Rust 型快取元件，](retrieving-secrets_cache-rust.md)或使用 GetSecretValue 或 BatchGetSecretValue [直接呼叫 SDK](https://docs.rs/releases/search?query=aws-sdk-secretsmanager)。

下列程式碼範例顯示如何取得 Secrets Manager 秘密值。

**必要許可：**`secretsmanager:GetSecretValue`

```
async fn show_secret(client: &Client, name: &str) -> Result<(), Error> {
    let resp = client.get_secret_value().secret_id(name).send().await?;

    println!("Value: {}", resp.secret_string().unwrap_or("No value!"));

    Ok(())
}
```