Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Rust kasaları için Azure SDK, Rust uygulamalarından Azure hizmetlere erişmenize yardımcı olur. Bu makalede kimlik doğrulaması, desteklenen hizmetler ve en iyi yöntemler de dahil olmak üzere bu kasaların nasıl kullanılacağı açıklanmaktadır.
Crates | API başvuru belgeleri | Source kodu
Kasalarla geliştirme önkoşulları
- Rust 1.85 veya üzeri. Sürüm, Azure SDK'si Rust crate'lerinde Cargo.toml dosyasında belirtilir.
- Azure aboneliği. Ücretsiz bir tane oluşturabilirsiniz.
- Azure CLI
- Azure Geliştirici CLI
- Rust kasaları için Azure SDK
Tavsiye
En iyi geliştirme deneyimi için Rust'ın en son kararlı sürümünün yüklü olduğundan emin olun.
Kimlik doğrulama bilgilerini sağlayın
Azure bileşenlerinin Microsoft Entra ID'ye kimlik doğrulaması yapmak için kimlik bilgilerine ihtiyacı vardır. Azure hizmetleri, bağlantı için farklı kimlik doğrulama yöntemleri sağlar. Kimlik doğrulaması için azure_identity paketini kullanmanızı öneririz. Rust kasaları için Azure SDK için kimlik doğrulama hakkında daha fazla bilgi edinin.
İstemci nesneleri
Azure hizmetleriyle etkileşime geçmek için istemci nesnelerini kullanırsınız. Bir hizmetin kasasından her istemci nesnesi belirli bir Azure hizmetine karşılık gelir ve bu hizmette işlem gerçekleştirme yöntemleri sağlar. Örneğin, azure_security_keyvault_secrets::SecretClient Azure Key Vault gizli dizilerle etkileşime geçmek için kullanılır.
İstemci nesnelerini oluşturduğunuzda, hizmetle etkileşimleri özelleştirmek için bir ClientOptions parametre sağlayabilirsiniz. Zaman aşımları, yeniden deneme ilkeleri ve diğer yapılandırmalar gibi öğeleri ayarlamak için kullanın ClientOptions .
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(())
}
Hata yönetimi
Bir hizmet çağrısı başarısız olduğunda, döndürülen Yanıt öğesini statusiçerir.
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(())
}
Sayfa sonuçları
Bir hizmet çağrısı sayfalarda birden çok değer döndürürse, Result<Pager<T>>, bir ResultPager olarak döndürülür.
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(())
}
Öğelerin her sayfasını işlemek için sayfalandırma
Tüm öğeleri sayfalandırılmış bir yanıtta yinelemek için, döndürülen into_pages() üzerinde Pager yöntemini kullanın. Bu yöntem, zaman uyumsuz bir sayfa akışını olarak PageIteratordöndürür, böylece her sayfayı kullanılabilir hale geldikçe işleyebilirsiniz.
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(())
}
Örnek kodu
Bu makalede gösterilen kod https://github.com/azure-samples/azure-sdk-for-rust-docs/ üzerinde mevcuttur.
Sonraki Adımlar
- Crates.io üzerindeki Azure SDK paketleri - Kullanılabilir Azure SDK paketlerinin listesi
- Azure SDK tasarım yönergeleri - Tasarım ilkeleri ve desenleri
- Rust GitHub deposu için Azure SDK - Sorunlar ve kaynak kodu
- Kargo belgeleri - Eksiksiz Kargo referansı