Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure SDK untuk peti Rust membantu Anda mengakses layanan Azure dari aplikasi Rust. Artikel ini menjelaskan cara menggunakan peti ini, termasuk autentikasi, layanan yang didukung, dan praktik terbaik.
Crates | Dokumen referensiAPI | Kode sumber
Prasyarat untuk berkembang dengan peti
- Rust 1.85 atau yang lebih baru. Versi ditentukan dalam Azure SDK untuk crates Rust Cargo.toml.
- Langganan Azure. Anda dapat membuatnya secara gratis.
- Azure CLI
- Azure Developer CLI
- Azure SDK untuk peti Rust
Petunjuk / Saran
Untuk pengalaman pengembangan terbaik, pastikan Anda menginstal Rust versi stabil terbaru.
Berikan kredensial autentikasi
Peti Azure memerlukan kredensial untuk mengautentikasi dengan Microsoft Entra ID. layanan Azure menyediakan metode autentikasi yang berbeda untuk koneksi. Sebaiknya gunakan peti azure_identity untuk autentikasi. Pelajari selengkapnya tentang otentikasi untuk paket Azure SDK Rust.
Objek klien
Anda menggunakan objek klien untuk berinteraksi dengan layanan Azure. Setiap objek klien, dari peti layanan, sesuai dengan layanan Azure tertentu dan menyediakan metode untuk melakukan operasi pada layanan tersebut. Misalnya, azure_security_keyvault_secrets::SecretClient digunakan untuk berinteraksi dengan rahasia Azure Key Vault.
Saat membuat objek klien, Anda dapat memberikan ClientOptions parameter untuk menyesuaikan interaksi dengan layanan. Gunakan ClientOptions untuk mengatur hal-hal seperti batas waktu, kebijakan coba lagi, dan konfigurasi lainnya.
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(())
}
Penanganan kesalahan
Ketika panggilan layanan gagal, Respons yang dikembalikan berisi 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(())
}
Hasil pencarian halaman
Jika pemanggilan layanan mengembalikan beberapa nilai dalam bentuk halaman, ini akan mengembalikan Result<Pager<T>> sebagai Result dari 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(())
}
Paginasi untuk memproses setiap halaman item
Untuk melakukan iterasi melalui semua item dalam respons paginated, gunakan metode into_pages() pada yang dikembalikan Pager. Metode ini mengembalikan aliran asinkron halaman sebagai PageIterator, sehingga Anda dapat memproses setiap halaman saat tersedia.
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(())
}
Contoh kode
Kode yang diperlihatkan dalam artikel ini tersedia di https://github.com/azure-samples/azure-sdk-for-rust-docs/.
Langkah selanjutnya
- Azure SDK crate di Crates.io - Daftar paket Azure SDK yang tersedia
- panduan desain Azure SDK - Prinsip dan pola desain
- Azure SDK untuk repositori Rust GitHub - Masalah dan kode sumber
- Dokumentasi kargo - Referensi Lengkap Kargo