Kommentar
Å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.
Med Azure SDKs för Rust-lådor kan du komma åt Azure tjänster från Rust-program. Den här artikeln beskriver hur du använder dessa paket, som inkluderar autentisering, stödda tjänster och bästa praxis.
Crates | API-referensdokumentation | Källakod
Förutsättningar för att utvecklas med lådor
- Rust 1,85 eller senare. Versionen anges i Azure SDKs för Rust-lådor Cargo.toml.
- En Azure-abonnemang. Du kan skapa en kostnadsfritt.
- Azure CLI
- Azure Developer CLI
- Azure SDKs för Rust crates
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-kistorna behöver autentiseringsuppgifter för att autentisera mot 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är dig mer om autentisering för Azure SDKs för Rust-paket.
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. Till exempel används 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_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(())
}
Sidresultat
Om ett tjänstanrop returnerar flera värden i sidor returneras Result<Pager<T>> 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_model()?;
println!("items_in_page: {}", page.value.len());
}
Ok(())
}
Paginering för att behandla 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 SDKs lådor på Crates.io – Lista över tillgängliga Azure SDKs lådor
- Azure SDKs designriktlinjer – Designprinciper och mönster
- Azure SDKs för Rust GitHub-lagringsplats – Problem och källkod
- Cargo-dokumentation – Fullständig Cargo-referens