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.
Artikel ini memperlihatkan cara membuat dan mengelola sewa blob menggunakan pustaka klien Azure Storage untuk Java. Anda dapat menggunakan pustaka klien untuk memperoleh, memperbarui, merilis, dan memutuskan sewa blob.
Prasyarat
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- Java Development Kit (JDK) versi 8 atau yang lebih baru (kami merekomendasikan versi 17 untuk pengalaman terbaik)
- Apache Maven digunakan untuk manajemen proyek dalam contoh ini
Menyiapkan lingkungan Anda
Jika Anda tidak memiliki proyek yang sudah ada, bagian ini memperlihatkan kepada Anda cara menyiapkan proyek untuk bekerja dengan pustaka klien Azure Blob Storage untuk Java. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Blob Storage dan Java.
Untuk bekerja dengan contoh kode dalam artikel ini, ikuti langkah-langkah ini untuk menyiapkan proyek Anda.
Catatan
Artikel ini menggunakan alat build Maven untuk membangun dan menjalankan kode contoh. Alat build lainnya, seperti Gradle, juga bekerja dengan Azure SDK untuk Java.
Memasang paket
Buka file pom.xml di editor teks Anda. Instal paket dengan menyertakan file BOM, atau menyertakan dependensi langsung.
Menambahkan pernyataan impor
Tambahkan pernyataan import berikut:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Otorisasi
Mekanisme otorisasi harus memiliki izin yang diperlukan untuk mengelola sewa blob. Untuk otorisasi dengan Microsoft Entra ID (disarankan), Anda memerlukan peran Azure RBAC bawaan Storage Blob Data Contributor atau yang lebih tinggi. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Lease Blob (REST API).
Membuat objek klien
Untuk menyambungkan aplikasi ke Blob Storage, buat instans BlobServiceClient.
Contoh berikut menggunakan BlobServiceClientBuilder untuk membangun BlobServiceClient objek menggunakan DefaultAzureCredential, dan menunjukkan cara membuat klien kontainer dan blob, jika diperlukan:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
Untuk mempelajari selengkapnya tentang membuat dan mengelola objek klien, lihat Membuat dan mengelola objek klien yang berinteraksi dengan sumber daya data.
Tentang penyewaan blob
Sewa membuat dan mengelola kunci pada blob untuk operasi tulis dan hapus. Durasi penguncian bisa 15 hingga 60 detik, atau dapat tak terbatas. Hak sewa pada blob menyediakan akses tulis dan hapus eksklusif ke blob. Untuk menulis pada blob dengan sewa aktif, klien harus menyertakan ID sewa aktif dalam permintaan penulisan.
Untuk mempelajari selengkapnya tentang status sewa dan kapan Anda dapat melakukan tindakan tertentu pada sewa, lihat Status sewa dan tindakan.
Semua operasi kontainer diizinkan pada kontainer yang memiliki blob dengan lease aktif, termasuk Hapus Kontainer. Oleh karena itu, kontainer dapat dihapus bahkan jika blob di dalamnya memiliki sewa aktif. Gunakan operasi Sewa Kontainer untuk mengontrol hak untuk menghapus kontainer.
Operasi sewa ditangani oleh kelas BlobLeaseClient , yang menyediakan klien yang berisi semua operasi sewa untuk blob dan kontainer. Untuk mempelajari selengkapnya tentang sewa kontainer menggunakan pustaka klien, lihat Membuat dan mengelola sewa kontainer dengan Java.
Mendapatkan sewa
Ketika Anda memperoleh sewa blob, Anda mendapatkan ID sewa yang dapat digunakan kode Anda untuk beroperasi pada blob. Jika blob sudah memiliki sewa aktif, Anda hanya dapat meminta sewa baru dengan menggunakan ID sewa aktif. Namun, Anda dapat menentukan durasi sewa baru.
Untuk memperoleh sewa, buat instans kelas BlobLeaseClient , lalu gunakan metode berikut:
Contoh berikut ini memperoleh sewa 30 detik untuk blob:
public BlobLeaseClient acquireBlobLease(BlobClient blob) {
// Create the lease client
BlobLeaseClient leaseClient = new BlobLeaseClientBuilder()
.blobClient(blob)
.buildClient();
// Acquire the lease - specify duration between 15 and 60 seconds, or -1 for
// infinite duration
String leaseID = leaseClient.acquireLease(30);
System.out.printf("Acquired lease ID: %s%n", leaseID);
return leaseClient;
}
Memperpanjang sewa
Anda dapat memperbarui sewa blob jika ID sewa yang disebutkan dalam permintaan cocok dengan ID sewa yang terkait dengan blob. Sewa dapat diperpanjang bahkan jika telah kedaluwarsa, selama blob belum dimodifikasi atau disewakan lagi sejak kedaluwarsa sewa tersebut. Saat Anda memperbarui sewa, durasinya diatur ulang.
Untuk memperbarui sewa yang ada, gunakan metode berikut:
Contoh berikut memperbarui penyewaan untuk blob:
public void renewBlobLease(BlobLeaseClient leaseClient) {
leaseClient.renewLease();
}
Melepaskan sewa
Anda dapat melepaskan sewa blob jika ID sewa yang ditentukan dalam permintaan cocok dengan ID sewa yang terkait dengan blob. Melepaskan sewa memungkinkan klien lain untuk memperoleh sewa untuk blob segera setelah pelepasan selesai.
Anda dapat melepas kontrak sewa dengan menggunakan metode berikut:
Contoh berikut ini melepaskan sewa pada blob.
public void releaseBlobLease(BlobLeaseClient leaseClient) {
leaseClient.releaseLease();
System.out.println("Release lease operation completed");
}
Memutuskan sewa
Anda dapat membatalkan sewa blob jika blob memiliki sewa aktif. Setiap permintaan yang diotorisasi dapat mengakhiri sewa; permintaan tidak diwajibkan untuk menyebutkan ID sewa yang cocok. Kontrak sewa tidak dapat diperbarui setelah dilanggar, dan pelanggaran kontrak sewa menghalangi akuisisi kontrak sewa baru untuk jangka waktu tertentu sampai kontrak sewa asli berakhir atau dilepaskan.
Anda dapat memutuskan sewa dengan menggunakan metode berikut:
Contoh berikut memutus sewa pada blob:
public void breakBlobLease(BlobLeaseClient leaseClient) {
leaseClient.breakLease();
}
Status dan tindakan sewa
Diagram berikut menunjukkan lima status sewa, dan perintah atau peristiwa yang menyebabkan perubahan status sewa.
Tabel berikut mencantumkan lima status sewa, memberikan deskripsi singkat masing-masing, dan mencantumkan tindakan sewa yang diizinkan dalam status tertentu. Aksi sewa ini menyebabkan transisi status, seperti yang ditunjukkan dalam diagram.
| status sewa | Deskripsi | Tindakan sewa diizinkan |
|---|---|---|
| Tersedia | Perjanjian sewa terbuka dan bisa didapatkan. | acquire |
| Disewakan | Perjanjian sewa tidak bisa diubah. |
acquire (id sewa yang sama saja), renew, , change, releasedan break |
| Kedaluwarsa | Durasi sewa telah kedaluwarsa. |
acquire, renew, release, dan break |
| Berita Terbaru | Kontrak sewa telah dibatalkan, tetapi kontrak sewa akan tetap terkunci sampai periode pembatalan berakhir. |
release dan break |
| Terputus | Perjanjian sewa telah dibatalkan, dan periode pembatalan telah kedaluwarsa. |
acquire, release, dan break |
Ketika sewa kedaluwarsa, ID sewa dipertahankan oleh layanan Blob sampai blob dimodifikasi atau disewakan lagi. Klien dapat mencoba memperbarui atau melepaskan sewa menggunakan ID sewa yang kedaluwarsa. Jika operasi ini berhasil, klien tahu bahwa blob belum diubah sejak ID sewa terakhir berlaku. Jika permintaan gagal, klien tahu bahwa blob telah dimodifikasi, atau blob telah disewakan lagi setelah sewa terakhirnya berakhir. Klien kemudian harus mendapatkan sewa baru untuk blob tersebut.
Jika sewa habis masa berlakunya daripada dirilis secara eksplisit, klien mungkin perlu menunggu waktu hingga satu menit sebelum sewa baru dapat diperoleh bagi blob. Namun, jika blob belum dimodifikasi, klien dapat segera memperbarui sewa dengan ID sewa mereka.
Sewa tidak dapat diberikan untuk rekam jepret blob, karena rekam jepret bersifat baca-saja. Meminta penyewaan terhadap snapshot menghasilkan status kode 400 (Bad Request).
Sumber
Untuk mempelajari selengkapnya tentang mengelola sewa blob menggunakan pustaka klien Azure Blob Storage untuk Java, lihat sumber daya berikut ini.
Sampel kode
Operasi REST API
Azure SDK untuk Java berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma Java yang sudah dikenal. Metode pustaka klien untuk mengelola sewa blob menggunakan operasi REST API berikut:
Sumber daya pustaka klien
Lihat juga
Konten terkait
- Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk Java. Untuk mempelajari lebih lanjut, lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi Java Anda.