Megosztás a következőn keresztül:


Azure-szolgáltatások elérése az Azure SDK for Rust-ládák használatával

Az Azure SDK for Rust-ládák segítenek elérni az Azure-szolgáltatásokat a Rust-alkalmazásokból. Ez a cikk bemutatja, hogyan használhatja ezeket a ládákat, beleértve a hitelesítést, a támogatott szolgáltatásokat és az ajánlott eljárásokat.

Ládákat | API-referenciadokumentáció | Forráskód

A ládák használatával történő fejlesztés előfeltételei

Jótanács

A legjobb fejlesztési élmény érdekében győződjön meg arról, hogy telepítve van a Rust legújabb stabil verziója.

Hitelesítési hitelesítő adatok megadása

Az Azure-ládáknak hitelesítő adatokra van szükségük a Microsoft Entra-azonosító hitelesítéséhez. Az Azure-szolgáltatások különböző hitelesítési módszereket biztosítanak a kapcsolathoz. Javasoljuk, hogy használja a azure_identity láda hitelesítéshez. További információ az Azure SDK for Rust-ládák hitelesítéséről.

Ügyfélobjektumok

Ügyfélobjektumokkal kezelheti az Azure-szolgáltatásokat. A szolgáltatás láda minden ügyfélobjektuma egy adott Azure-szolgáltatásnak felel meg, és metódusokat biztosít az adott szolgáltatáson végzett műveletek végrehajtásához. Például azure_security_keyvault_secrets::SecretClient az Azure Key Vault titkos kulcsainak kezelésére szolgál.

Az ügyfélobjektumok létrehozásakor megadhat egy paramétert ClientOptions a szolgáltatással való interakciók testreszabásához. Időtúllépések, újrapróbálkozások és egyéb konfigurációk beállítására használható ClientOptions .

use azure_identity::AzureCliCredential;
use azure_security_keyvault_secrets::SecretClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {

    dotazure::load()?;

    let vault_url = std::env::var("AZURE_KEYVAULT_URL")
        .map_err(|_| "AZURE_KEYVAULT_URL environment variable is required")?;

    let credential = AzureCliCredential::new(None)?;

    let client = SecretClient::new(&vault_url, credential.clone(), None)?;

    Ok(())
}

Hibakezelés

Ha egy szolgáltatáshívás meghiúsul, a visszaadott válasz tartalmazza a status.

use azure_core::{error::ErrorKind, http::StatusCode};
use azure_identity::AzureCliCredential;
use azure_security_keyvault_secrets::SecretClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {

    dotazure::load()?;

    let credential = AzureCliCredential::new(None)?;

    let vault_url = std::env::var("AZURE_KEYVAULT_URL")
        .map_err(|_| "AZURE_KEYVAULT_URL environment variable is required")?;

    let client = SecretClient::new(&vault_url, credential.clone(), None)?;

    match client.get_secret("secret-0", None).await {
        Ok(secret) => println!("Secret value: {}", secret.into_body()?.value.unwrap_or_default()),
        Err(e) => match e.kind() {
            ErrorKind::HttpResponse { status, error_code, .. } if *status == StatusCode::NotFound => {

                if let Some(code) = error_code {
                    println!("ErrorCode: {}", code);
                } else {
                    println!("Secret not found, but no error code provided.");
                }
            },
            _ => println!("An error occurred: {e:?}"),
        },
    }

    Ok(())
}

Laperedmények

Ha egy szolgáltatáshívás több értéket ad vissza a lapokban, az a következőként Result<Pager<T>>Result tér visszaPager: .

use azure_identity::AzureCliCredential;
use azure_security_keyvault_secrets::SecretClient;
use futures::TryStreamExt;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {

    dotazure::load()?;

    let credential = AzureCliCredential::new(None)?;

    let vault_url = std::env::var("AZURE_KEYVAULT_URL")
        .map_err(|_| "AZURE_KEYVAULT_URL environment variable is required")?;

    let client = SecretClient::new(&vault_url, credential.clone(), None)?;

    let mut pager = client.list_secret_properties(None)?.into_pages();

    while let Some(page) = pager.try_next().await? {

        let page = page.into_body()?;
        println!("items_in_page: {}", page.value.len());
    }

    Ok(())
}

Lapozás az elemek egyes lapjainak feldolgozásához

Ha egy lapszámozott válasz összes elemét át szeretné iterálni, használja a into_pages() visszaadott Pagermetódust. Ez a metódus a lapok PageIteratoraszinkron adatfolyamát adja vissza, így az egyes oldalakat az elérhetővé válásukkor feldolgozhatja.

use azure_identity::AzureDeveloperCliCredential;
use azure_security_keyvault_secrets::{ResourceExt, SecretClient};
use futures::TryStreamExt;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {

    dotazure::load()?;

    let credential = AzureDeveloperCliCredential::new(None)?;

    let vault_url = std::env::var("AZURE_KEYVAULT_URL")
        .map_err(|_| "AZURE_KEYVAULT_URL environment variable is required")?;

    let client = SecretClient::new(vault_url.as_str(), credential.clone(), None)?;

    let mut pager = client.list_secret_properties(None)?;

    while let Some(secret) = pager.try_next().await? {

        let name = secret.resource_id()?.name;
        println!("Found secret with name: {}", name);
    }

    Ok(())
}

példakód

A cikkben látható kód a következő helyen https://github.com/azure-samples/azure-sdk-for-rust-docs/érhető el: .

Következő lépések