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.
Peti Azure SDK for Rust membantu Anda mengakses layanan Azure dari aplikasi Rust. Artikel ini menjelaskan cara menggunakan peti ini, termasuk autentikasi, layanan yang didukung, dan praktik terbaik.
Peti | Dokumentasi | referensi APIKode sumber
Prasyarat untuk berkembang dengan peti
- Karat 1.85 atau yang lebih baru. Versi ditentukan dalam Azure SDK for Rust crates Cargo.toml.
- Sebuah 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 ke ID Microsoft Entra. Layanan Azure menyediakan metode autentikasi yang berbeda untuk koneksi. Sebaiknya gunakan peti azure_identity untuk autentikasi. Pelajari selengkapnya tentang autentikasi untuk Azure SDK untuk peti 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 halaman
Jika panggilan layanan mengembalikan beberapa nilai dalam halaman, panggilan akan Result<Pager<T>> ditampilkan 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(())
}
Penomoran halaman untuk memproses setiap halaman item
Untuk melakukan iterasi melalui semua item dalam respons paginated, gunakan into_pages() metode 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
- Peti Azure SDK di Crates.io - Daftar peti Azure SDK yang tersedia
- Panduan desain Azure SDK - Prinsip dan pola desain
- Repositori GitHub Azure SDK for Rust - Masalah dan kode sumber
- Dokumentasi kargo - Referensi Lengkap Kargo