Gunakan Azure SDK untuk Go dalam operasi data plane

Pelajari cara berinteraksi dengan data yang disimpan di layanan Azure secara terprogram dengan menggunakan pustaka klien Azure SDK untuk Go. Untuk pengenalan tingkat yang lebih tinggi tentang bagaimana pustaka manajemen dan pustaka klien cocok bersama-sama, lihat Tinjauan Azure SDK untuk pustaka manajemen Go. Artikel ini berfokus pada pola data-plane Go yang Anda gunakan setelah sumber daya sudah ada, dan merujuk kembali ke control plane operations untuk provisi dan pekerjaan konfigurasi.

Apa itu lapisan data Azure?

Bidang data Azure adalah kumpulan API yang Anda gunakan untuk berinteraksi dengan data di dalam layanan Azure, termasuk mengunggah blob, mengirim pesan, mengkueri database, dan mengambil rahasia. Meskipun sarana kontrol menyediakan dan mengonfigurasi sumber daya, bidang data adalah apa yang dipanggil kode aplikasi Anda saat runtime. Alur kerja Go umum adalah menggunakan kode sarana kontrol sekali dalam penyiapan atau otomatisasi, lalu menyimpan klien data plane di jalur aplikasi yang berjalan setiap hari.

Azure SDK untuk Go mengekspos bidang data melalui paket khusus layanan seperti azblob, azservicebus, azeventhubs, azsecrets, dan azcosmos. Setiap paket terhubung ke sumber daya yang sudah disediakan dan mengikuti pola yang konsisten:

  1. Autentikasi dengan menggunakan azidentity paket.
  2. Buat klien bertipe dengan menggunakan titik akhir layanan atau string koneksi.
  3. Panggil metode pada klien untuk membaca, menulis, atau memproses data.
  4. Menangani hasil yang disusun dalam bentuk halaman dan mengatasi kesalahan.

Skenario umum untuk operasi data plane Go meliputi:

  • Mengunggah dan mengunduh file dari Blob Storage
  • Mengirim dan menerima pesan dengan Bus Layanan atau Azure Event Hubs
  • Menyimpan dan mengkueri dokumen di Cosmos DB
  • Mengambil rahasia, kunci, dan sertifikat dari Key Vault
  • Memantau performa aplikasi dengan Application Insights

Authentication

Operasi lapisan data mendukung jenis kredensial yang sama dari paket azidentity yang digunakan untuk operasi lapisan kontrol. Semua jenis kredensial mengimplementasikan azcore.TokenCredential antarmuka, sehingga Anda dapat menukarnya tanpa mengubah kode klien.

Klien jalur data menggunakan endpoint layanan (URL atau namespace) dan kredensial, bukan ID langganan.

// Create credential that auto-discovers authentication
cred, err := azidentity.NewDefaultAzureCredential(nil)

// Blob Storage - pass the storage account URL
blobClient, err := azblob.NewClient("https://mystorageaccount.blob.core.windows.net/", cred, nil)

// Key Vault secrets - pass the vault URL
secretClient, err := azsecrets.NewClient("https://mykeyvault.vault.azure.net/", cred, nil)

// Service Bus - pass the fully qualified namespace
sbClient, err := azservicebus.NewClient("mynamespace.servicebus.windows.net", cred, nil)

Beberapa layanan juga mendukung string koneksi untuk lingkungan tempat autentikasi berbasis token tidak tersedia:

// Connection string authentication (when token auth is not available)
client, err := azservicebus.NewClientFromConnectionString(connectionString, nil)

Untuk beban kerja produksi yang berjalan di Azure, gunakan identitas terkelola. Untuk pengembangan lokal, DefaultAzureCredential secara otomatis menemukan kredensial dari az loginvariabel lingkungan, atau sumber lainnya.

Untuk panduan lengkap tentang jenis kredensial dan praktik terbaik, lihat Authentication dengan Azure SDK untuk Go dan dokumentasi paket azidentity.

Pengaturan halaman

Banyak operasi data plane mengembalikan kumpulan yang bisa dalam jumlah besar. SDK menggunakan pola pager untuk operasi ini:

// Create a pager for listing large result sets
pager := client.NewListSecretPropertiesPager(nil)

// Iterate through pages until no more results
for pager.More() {
	page, err := pager.NextPage(ctx)
	if err != nil {
		return err
	}

	for _, item := range page.Value {
		fmt.Println(*item.ID)
	}
}

Metode yang mengembalikan jenis *Pager mengikuti pola iterasi yang sama di semua paket data plane ini.

Untuk detail selengkapnya tentang penomoran halaman dan pola umum lainnya, lihat pola penggunaan Common di Azure SDK untuk Go.

Penanganan kesalahan

Operasi sarana data mengembalikan kesalahan terstruktur yang dapat Anda periksa untuk kode kesalahan tertentu:

import "github.com/Azure/azure-sdk-for-go/sdk/azcore"

// Check if the error is an Azure service error with structured details
var respErr *azcore.ResponseError
if errors.As(err, &respErr) {
	fmt.Printf("Error code: %s\n", respErr.ErrorCode)
	fmt.Printf("Status code: %d\n", respErr.StatusCode)
}

Kode kesalahan sarana data umum meliputi BlobNotFound, , MessageLockLost, SecretNotFounddan RequestEntityTooLarge. Periksa dokumentasi untuk setiap layanan untuk daftar lengkap kode kesalahan.

Mengunggah contoh blob

Contoh ini menunjukkan pola siap produksi: mengautentikasi dengan menggunakan DefaultAzureCredential, buat klien blob, unggah data dengan batas waktu, dan verifikasi. Pola ini berlaku untuk semua klien bidang data. Tukar titik akhir layanan dan jenis klien untuk menyesuaikannya dengan Bus Layanan, Azure Event Hubs, Cosmos DB, atau Key Vault.

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

func main() {
	accountURL := "https://<storage-account-name>.blob.core.windows.net/"
	containerName := "demo"
	blobName := "hello.txt"
	data := []byte("hello from Go")

	// Create credential that auto-discovers authentication
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		log.Fatalf("failed to create credential: %v", err)
	}

	// Set a timeout to prevent hanging on network issues
	ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
	defer cancel()

	// Create a client for the storage account
	client, err := azblob.NewClient(accountURL, cred, nil)
	if err != nil {
		log.Fatalf("failed to create blob client: %v", err)
	}

	// Upload data directly from a byte slice
	_, err = client.UploadBuffer(ctx, containerName, blobName, data, nil)
	if err != nil {
		log.Fatalf("failed to upload blob: %v", err)
	}

	fmt.Printf("uploaded %s to container %s\n", blobName, containerName)
}

Penyimpanan Blob

Paket azblob menyediakan akses bidang data ke Azure Blob Storage, layanan penyimpanan objek yang dapat diskalakan secara besar-besaran. Paket ini adalah apa yang digunakan aplikasi Anda pada runtime untuk membaca dan menulis data. Gunakan paket sarana kontrol terpisah armstorage untuk memprovisikan akun penyimpanan dan kontainer.

Gunakan untuk mengunggah dan mengunduh file dan dokumen, mencantumkan dan mengelola blob dan kontainer, mengatur metadata dan properti konten, menerapkan unggahan paralel untuk file besar, dan membangun alur pemrosesan data.

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Untuk memulai, lihat Quickstart: Azure Blob Storage modul klien untuk Go.

Untuk dokumentasi paket, lihat referensi paket azblob.

Cosmos DB

Paket azcosmos menyediakan akses bidang data ke Azure Cosmos DB, database multi-model yang didistribusikan secara global. Gunakan untuk membangun aplikasi yang membutuhkan pembacaan dan penulisan latensi rendah dalam skala apa pun.

Gunakan untuk melakukan operasi CRUD pada dokumen, menjalankan kueri SQL terhadap kontainer, mengelola strategi partisi untuk akses data yang efisien, menangani pagination pada kumpulan hasil besar, dan menjalankan operasi batch multi-item.

go get github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos

Untuk memulai, lihat Quickstart: Gunakan Azure Cosmos DB untuk NoSQL dengan Azure SDK untuk Go.

Untuk dokumentasi paket, lihat referensi paket azcosmos.

Pusat Aktivitas

Paket azeventhubs menyediakan akses ke jalur data Azure Event Hubs - layanan penyerapan data waktu nyata untuk streaming peristiwa dengan throughput tinggi.

Gunakan untuk mengirim peristiwa dengan pengelompokan batch untuk throughput yang efisien, menerima dan memproses peristiwa dengan menggunakan grup konsumen, mengelola penetapan partisi dan titik pemeriksaan, merutekan peristiwa dengan menggunakan kunci partisi untuk jaminan urutan, dan membangun pipeline pengumpulan log dan telemetri.

go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs

Untuk memulai, lihat Panduan Awal: Mengirim peristiwa ke atau menerima peristiwa dari Event Hubs menggunakan Go.

Untuk dokumentasi paket, lihat referensi paket azeventhubs.

Key Vault

Paket azsecrets, azkeys, dan azcertificates2 menyediakan akses bidang data ke Azure Key Vault. Paket ini digunakan aplikasi Anda pada runtime untuk mengambil rahasia dan melakukan operasi kriptografi. Gunakan paket sarana kontrol terpisah armkeyvault untuk menyediakan dan mengonfigurasi instans vault.

Gunakan untuk mengambil dan mengatur rahasia (kata sandi database, kunci API), membuat dan mengelola kunci kriptografi untuk penandatanganan dan enkripsi, mengelola sertifikat TLS/SSL dengan perpanjangan otomatis, melacak versi rahasia, dan menerapkan strategi rotasi, dan rahasia cache untuk mengurangi latensi dan panggilan API.

go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets
go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys
go get github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates

Untuk mulai menggunakan Key Vault, lihat Quickstart: pustaka klien sertifikat Azure Key Vault untuk Go.

Untuk dokumentasi paket, lihat azsecrets, azkeys, dan azcertificates referensi paket.

Bus Layanan

Paket azservicebus menyediakan akses bidang data ke Azure Service Bus - broker pesan yang dikelola sepenuhnya untuk komunikasi asinkron yang andal.

Gunakan untuk mengirim dan menerima pesan pada antrean untuk komunikasi titik-ke-titik, menerbitkan dan berlangganan topik untuk pola fan-out, mengirim batch pesan untuk throughput yang efisien, menjadwalkan pesan untuk pengiriman di masa mendatang, dan menerapkan konsumen polling panjang dengan penyelesaian dan pengabaian pesan.

go get github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus

Untuk mulai menggunakan Azure Service Bus, lihat Quickstart: Mengirim pesan ke dan menerima pesan dari antrean Azure Service Bus (Go).

Untuk dokumentasi paket, lihat referensi paket azservicebus.

Application Insights

Modul ApplicationInsights-Go menyediakan integrasi telemetri dengan layanan Azure Application Insights - pemantauan performa aplikasi (APM) Azure.

Gunakan untuk melacak peristiwa dan metrik kustom, memantau waktu dan kegagalan respons API, menerapkan pelacakan terdistribusi di seluruh layanan, mencatat pengecualian dengan properti kontekstual, dan mengontrol volume telemetri dengan pengambilan sampel.

go get github.com/microsoft/ApplicationInsights-Go

Untuk dokumentasi layanan, lihat gambaran umum Application Insights.

Langkah berikutnya