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
Předpoklady pro vývoj s využitím krabic
- Rust 1.85 nebo novější. Verze je zadaná v Azure SDK pro crates Rust Cargo.toml.
- Předplatné Azure. Můžete si ho zdarma vytvořit.
- Azure CLI
- Azure Cli pro vývojáře
- Azure SDK pro bedny Rust
Návod
Abyste dosáhli co nejlepšího vývojového prostředí, ujistěte se, že máte nainstalovanou nejnovější stabilní verzi Rustu.
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
Klientské objekty slouží k interakci 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. Například azure_security_keyvault_secrets::SecretClient slouží k interakci s tajnými kódy Azure Key Vault.
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