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
Important
Yeni geliştirmelerde Rust için Azure SDK'nın en son kararlı crate sürümlerini kullanın. Her crate bağımsız olarak sürümlendirilir; bu nedenle uygulamanızın bağımlı olduğu her crate için en son kararlı sürümü kullanın.
Kasalarla geliştirme önkoşulları
- En son kararlı Rust araç zinciri. Desteklenen en düşük Rust sürümüne (MSRV) ihtiyacınız varsa Rust çalışma alanı bildirimi için Azure SDK alanını denetleyin
rust-version. - Azure aboneliği. Ücretsiz bir tane oluşturabilirsiniz.
- Azure CLI
- Azure Geliştirici CLI
- Rust kasaları için Azure SDK
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ın. 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 Key Vault gizli anahtarlarıyla etkileşim kurmak için azure_security_keyvault_secrets::SecretClient kullanın. Azure Kuyruk Depolama, Azure Key Vault anahtarları ve Azure Key Vault sertifikaları için QueueClient, KeyClient ve CertificateClient kullanabilirsiniz.
İ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ı