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.
Sada Azure SDK for Rust vám pomůže 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ů.
Bedny | Referenční dokumentace | k rozhraní APIZdrojový kód
Předpoklady pro vývoj s využitím krabic
- Rust 1.85 nebo novější. Verze je zadaná v sadě Azure SDK pro crates Cargo.toml.
- Předplatné služby Azure. Můžete si ho zdarma vytvořit.
- Azure CLI
- Azure Developer CLI
- Azure SDK for Rust crates
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í
Služba Azure Crates potřebuje přihlašovací údaje k ověření v Microsoft Entra ID. Služby Azure 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 for Rust crates.
Klientské objekty
K interakci se službami Azure používáte klientské objekty. Každý objekt klienta z crate služby odpovídá konkrétní službě Azure a poskytuje metody pro provádění operací s danou službou. Slouží například azure_security_keyvault_secrets::SecretClient k interakci s tajnými kódy služby 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 stránky
Pokud volání služby vrátí více hodnot na stránkách, vrátí Result<Pager<T>> se jako Result hodnota 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 všechny položky ve stránkované odpovědi, použijte into_pages() metodu pro vrácenou 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
- Krabicové sady Azure SDK na Crates.io – seznam dostupných krabic Azure SDK
- Pokyny k návrhu sady Azure SDK – Principy a vzory návrhu
- Úložiště Azure SDK pro Rust na GitHubu – Problémy a zdrojový kód
- Dokumentace k nákladu – Kompletní referenční dokumentace k nákladu