Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure SDK för Rust-lådor hjälper dig att komma åt Azure-tjänster från Rust-program. Den här artikeln beskriver hur du använder dessa lådor, inklusive autentisering, tjänster som stöds och metodtips.
Lådor | API-referensdokumentation | Källkod
Förutsättningar för att utvecklas med lådor
- Rost 1,85 eller senare. Versionen anges i Azure SDK för Rust crates Cargo.toml.
- Ett Azure-abonnemang. Du kan skapa en kostnadsfritt.
- Azure CLI
- Azure Developer CLI
- Azure SDK för Rust-lådor
Tips/Råd
Se till att du har den senaste stabila versionen av Rust installerad för bästa möjliga utveckling.
Ange autentiseringsuppgifter
Azure-lådorna behöver autentiseringsuppgifter för att autentisera till Microsoft Entra-ID. Azure-tjänster tillhandahåller olika autentiseringsmetoder för anslutning. Vi rekommenderar att du använder azure_identity lådan för autentisering. Läs mer om autentisering för Azure SDK för Rust-lådor.
Klientobjekt
Du använder klientobjekt för att interagera med Azure-tjänster. Varje klientobjekt, från en tjänsts låda, motsvarar en specifik Azure-tjänst och tillhandahåller metoder för att utföra åtgärder på den tjänsten. Används till exempel azure_security_keyvault_secrets::SecretClient för att interagera med Azure Key Vault-hemligheter.
När du skapar klientobjekten kan du ange en ClientOptions parameter för att anpassa interaktionerna med tjänsten. Använd ClientOptions för att ange timeouter, återförsöksprinciper och andra konfigurationer.
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(())
}
Felhantering
När ett tjänstanrop misslyckas innehåller det returnerade svaretstatus.
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(())
}
Sidresultat
Om ett tjänstanrop returnerar flera värden på sidor returneras Result<Pager<T>> det som en Result av 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_body()?;
println!("items_in_page: {}", page.value.len());
}
Ok(())
}
Sidnumrering för att bearbeta varje sida med objekt
Om du vill iterera igenom alla objekt i ett sidnumrerat svar använder du into_pages() metoden på den returnerade Pager. Den här metoden returnerar en asynkron dataström med sidor som en PageIterator, så att du kan bearbeta varje sida när den blir tillgänglig.
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(())
}
Exempelkod
Koden som visas i den här artikeln är tillgänglig på https://github.com/azure-samples/azure-sdk-for-rust-docs/.
Nästa steg
- Azure SDK-lådor på Crates.io – Lista över tillgängliga Azure SDK-lådor
- Designriktlinjer för Azure SDK – Designprinciper och mönster
- Azure SDK för Rust GitHub-lagringsplats – Problem och källkod
- Lastdokumentation – Fullständig lastreferens