Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure SDK pro crates Rust vám pomůžou získat přístup ke službám Azure z aplikací Rust. Tento článek vysvětluje, jak tyto bedny používat, včetně ověřování, podporovaných služeb a osvědčených postupů.
Crates | Referenční dokumentace k rozhraníAPI | Zdrojový kód
Důležité
Pro nový vývoj používejte nejnovější stabilní vydání balíčků Azure SDK pro Rust. Každý crate má verze nezávisle na ostatních, takže pro každý crate, na kterém vaše aplikace závisí, použijte nejnovější stabilní vydání.
Předpoklady pro vývoj s využitím krabic
-
Nejnovější stabilní sada nástrojů Rust. Pokud potřebujete minimální podporovanou verzi Rustu (MSRV), zkontrolujte
rust-versionpole v manifestu pracovního prostoru Rust v Azure SDK. - Předplatné Azure. Můžete si ho zdarma vytvořit.
- Azure CLI
- Azure Cli pro vývojáře
- Azure SDK pro bedny Rust
Zadání přihlašovacích údajů pro ověřování
K ověření u Microsoft Entra ID jsou potřeba přihlašovací údaje Azure. Azure služby poskytují různé metody ověřování pro připojení. Pro ověřování doporučujeme použít azure_identity bednu. Přečtěte si další informace o ověřování pro Azure SDK pro Rust crates.
Klientské objekty
Pomocí klientských objektů můžete pracovat se službami Azure. Každý objekt klienta z bedna služby odpovídá konkrétní službě Azure a poskytuje metody pro provádění operací s danou službou. Slouží azure_security_keyvault_secrets::SecretClient například k interakci s tajnými kódy Azure Key Vault. Můžete také použít QueueClient, KeyClienta CertificateClient pro Azure Queue Storage, Azure Key Vault klíče a Azure Key Vault certifikáty.
Při vytváření klientských objektů můžete poskytnout ClientOptions parametr pro přizpůsobení interakcí se službou. Slouží ClientOptions k nastavení věcí, jako jsou vypršení časových limitů, zásady opakování a další konfigurace.
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(())
}
Zpracování chyb
Pokud volání služby selže, vrácená odpověď obsahuje 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_model()?.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(())
}
Výsledky na stránce
Pokud volání služby vrátí více hodnot na stránkách, vrátí Result<Pager<T>> jako Result z Pager.
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_model()?;
println!("items_in_page: {}", page.value.len());
}
Ok(())
}
Stránkování pro zpracování každé stránky položek
Chcete-li iterovat přes všechny položky ve stránkované odpovědi, použijte metodu into_pages() na vrácené Pager. Tato metoda vrátí asynchronní datový proud stránek jako , PageIteratortakže můžete zpracovat každou stránku, jakmile bude k dispozici.
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(())
}
Ukázkový kód
Kód uvedený v tomto článku je k dispozici na .https://github.com/azure-samples/azure-sdk-for-rust-docs/
Další kroky
- Balíčky Azure SDK na Crates.io - Seznam dostupných balíčků Azure SDK
- Azure SDK pokyny k návrhu – principy a vzory návrhu
- Azure SDK pro úložiště Rust GitHub – Problémy a zdrojový kód
- Dokumentace k nákladu – Kompletní referenční dokumentace k nákladu