Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Skrzynie z zestawem Azure SDK for Rust ułatwiają dostęp do usług platformy Azure z poziomu aplikacji Rust. W tym artykule wyjaśniono, jak używać tych skrzynek, w tym uwierzytelniania, obsługiwanych usług i najlepszych rozwiązań.
Skrzynie | Dokumentacja referencyjna interfejsu | APIKod źródłowy
Wymagania wstępne dotyczące opracowywania z skrzyniami
- Rust 1.85 lub nowszy. Wersja jest określona w zestawie Azure SDK dla oprogramowania Rust crates Cargo.toml.
- Subskrypcja platformy Azure. Możesz utworzyć go bezpłatnie.
- Interfejs wiersza polecenia (CLI) platformy Azure
- Azure CLI dla deweloperów
- Zestaw Azure SDK for Rust crates
Wskazówka
Aby uzyskać najlepsze środowisko programistyczne, upewnij się, że masz zainstalowaną najnowszą stabilną wersję oprogramowania Rust.
Podawanie poświadczeń uwierzytelniania
Skrzynie platformy Azure wymagają poświadczeń, aby uwierzytelnić się w identyfikatorze Entra firmy Microsoft. Usługi platformy Azure zapewniają różne metody uwierzytelniania dla połączenia. Zalecamy użycie azure_identity skrzyni do uwierzytelniania. Dowiedz się więcej o uwierzytelnianiu dla zestawu Azure SDK for Rust.
Obiekty klienta
Obiekty klienta służą do interakcji z usługami platformy Azure. Każdy obiekt klienta, z skrzyni usługi, odpowiada określonej usłudze platformy Azure i udostępnia metody wykonywania operacji na tej usłudze. Na przykład azure_security_keyvault_secrets::SecretClient służy do interakcji z wpisami tajnymi usługi Azure Key Vault.
Podczas tworzenia obiektów klienta można podać ClientOptions parametr do dostosowywania interakcji z usługą. Służy ClientOptions do ustawiania elementów, takich jak limity czasu, zasady ponawiania prób i inne konfiguracje.
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(())
}
Obsługa błędów
Gdy wywołanie usługi zakończy się niepowodzeniem, zwrócona Response zawiera 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(())
}
Wyniki strony
Jeśli wywołanie usługi zwraca wiele wartości na stronach, zwraca Result<Pager<T>> wartość jako ResultPagerwartość .
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(())
}
Stronicowanie w celu przetworzenia każdej strony elementów
Aby iterować wszystkie elementy w odpowiedzi podzielonej na strony, użyj into_pages() metody zwróconej Pagerprzez element . Ta metoda zwraca asynchroniczny strumień stron jako PageIteratorelement , dzięki czemu można przetworzyć każdą stronę, gdy stanie się ona dostępna.
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(())
}
Przykładowy kod
Kod przedstawiony w tym artykule jest dostępny w witrynie https://github.com/azure-samples/azure-sdk-for-rust-docs/.
Dalsze kroki
- Skrzynie zestawu Azure SDK na Crates.io — lista dostępnych stawek zestawu Azure SDK
- Wskazówki dotyczące projektowania zestawu Azure SDK — zasady i wzorce projektowania
- Repozytorium GitHub dla zestawu Azure SDK for Rust — problemy i kod źródłowy
- Dokumentacja ładunku — kompletna dokumentacja ładunku