Tambahkan Blok

Operasi ini Append Block menerapkan blok data baru ke akhir blob penambahan yang ada.

Operasi Append Block hanya diizinkan jika blob dibuat dengan x-ms-blob-type diatur ke AppendBlob. Append Block hanya didukung pada versi 2015-02-21 atau yang lebih baru.

Minta

Anda dapat membuat Append Block permintaan sebagai berikut. HTTPS disarankan. Ganti myaccount dengan nama akun penyimpanan Anda.

URI permintaan metode PUT Versi HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=appendblock HTTP/1.1

Saat Anda membuat permintaan terhadap layanan penyimpanan yang ditimulasi, tentukan nama host emulator dan port Azure Blob Storage sebagai 127.0.0.1:10000, diikuti dengan nama akun penyimpanan yang ditimulasi.

URI permintaan metode PUT Versi HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=appendblock HTTP/1.1

Untuk informasi selengkapnya, lihat Gunakan emulator Azurite untuk pengembangan Microsoft Azure Storage lokal.

Parameter URI

Parameter Deskripsi
timeout Opsional. Parameter timeout dinyatakan dalam hitung detik. Untuk informasi selengkapnya, lihat Mengatur batas waktu untuk operasi Azure Blob Storage.

Header permintaan

Tabel berikut ini menjelaskan header permintaan yang diperlukan dan opsional.

Meminta kop Deskripsi
Authorization Wajib diisi. Menentukan skema otorisasi, nama akun, dan tanda tangan. Lihat Mengotorisasi permintaan ke Azure Storage untuk informasi selengkapnya.
Date atau x-ms-date Wajib diisi. Menentukan Waktu Universal Terkoordinasi (UTC) untuk permintaan tersebut. Untuk informasi selengkapnya, lihat Mengotorisasi permintaan ke Azure Storage.
x-ms-version Diperlukan untuk semua permintaan yang diotorisasi. Menentukan versi operasi yang akan digunakan untuk permintaan ini. Untuk informasi selengkapnya, lihat Penerapan versi untuk layanan Azure Storage.
Content-Length Wajib diisi. Panjang konten blok dalam byte. Ukuran blok harus kurang dari atau sama dengan ukuran 100 MiB (pratinjau) untuk versi 2022-11-02 dan yang lebih baru. Lihat bagian Keterangan untuk batasan dalam versi yang lebih lama.

Ketika panjang tidak disediakan, operasi akan gagal dengan kode status 411 (Panjang Diperlukan).
Content-MD5 Opsional. Hash MD5 dari konten blok. Hash ini digunakan untuk memverifikasi integritas blok selama transportasi. Ketika header ini ditentukan, layanan penyimpanan membandingkan hash konten yang telah tiba dengan nilai header ini.

Perhatikan bahwa hash MD5 ini tidak disimpan dengan blob.

Jika dua hash tidak cocok, operasi akan gagal dengan kode kesalahan 400 (Permintaan Buruk).
x-ms-content-crc64 Opsional. Hash CRC64 dari konten blok penambahan. Hash ini digunakan untuk memverifikasi integritas blok penambahan selama transportasi. Ketika header ini ditentukan, layanan penyimpanan membandingkan hash konten yang telah tiba dengan nilai header ini.

Perhatikan bahwa hash CRC64 ini tidak disimpan dengan blob.

Jika dua hash tidak cocok, operasi akan gagal dengan kode kesalahan 400 (Permintaan Buruk).

Jika header Content-MD5 dan x-ms-content-crc64 ada, permintaan akan gagal dengan kode kesalahan 400.

Header ini didukung dalam versi 2019-02-02 atau yang lebih baru.
x-ms-encryption-scope Pilihan. Menunjukkan cakupan enkripsi yang akan digunakan untuk mengenkripsi konten permintaan. Header ini didukung dalam versi 2019-02-02 atau yang lebih baru.
x-ms-lease-id:<ID> Diperlukan jika blob memiliki sewa aktif. Untuk melakukan operasi ini pada blob dengan sewa aktif, tentukan ID sewa yang valid untuk header ini.
x-ms-client-request-id Pilihan. Menyediakan nilai buram yang dihasilkan klien dengan batas karakter 1 kibibyte (KiB) yang dicatat dalam log saat pengelogan dikonfigurasi. Kami sangat menyarankan Anda menggunakan header ini untuk menghubungkan aktivitas sisi klien dengan permintaan yang diterima server. Untuk informasi selengkapnya, lihat Memantau Azure Blob Storage.
x-ms-blob-condition-maxsize Header bersyar opsional. Menentukan panjang maksimum dalam byte yang diizinkan untuk blob penampan. Append Block Jika operasi menyebabkan blob melebihi batas tersebut, atau jika ukuran blob sudah lebih besar dari nilai yang ditentukan dalam header ini, permintaan gagal dengan kode kesalahan 412 (Prasyarat Gagal).
x-ms-blob-condition-appendpos Header bersyarah opsional, hanya digunakan untuk Append Block operasi. Angka menunjukkan offset byte untuk dibandingkan. Append Block hanya berhasil jika posisi penampan sama dengan angka ini. Jika tidak, permintaan gagal dengan kode kesalahan 412 (Prasyarat Gagal).

Operasi ini mendukung penggunaan header bersyarat tambahan untuk memastikan bahwa API berhasil hanya jika kondisi tertentu terpenuhi. Untuk informasi selengkapnya, lihat Menentukan header bersyarah untuk operasi Azure Blob Storage.

Header permintaan (kunci enkripsi yang disediakan pelanggan)

Dimulai dengan versi 2019-02-02, Anda dapat menentukan header berikut pada permintaan untuk mengenkripsi blob dengan kunci yang disediakan pelanggan. Enkripsi dengan kunci yang disediakan pelanggan (dan set header yang sesuai) bersifat opsional.

Meminta kop Deskripsi
x-ms-encryption-key Wajib diisi. Kunci enkripsi AES-256 yang dikodekan Base64.
x-ms-encryption-key-sha256 Wajib diisi. Hash SHA256 yang dikodekan Base64 dari kunci enkripsi.
x-ms-encryption-algorithm: AES256 Wajib diisi. Menentukan algoritma yang akan digunakan untuk enkripsi. Nilai header ini harus AES256.

Isi permintaan

Isi permintaan berisi konten blok.

Contoh permintaan

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=appendblock  HTTP/1.1  
  
Request Headers:  
x-ms-version: 2015-02-21  
x-ms-date: <date>  
x-ms-blob-condition-appendpos: 2097152  
x-ms-blob-condition-maxsize: 4194304  
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 1048  
If-Match: "0x8CB172A360EC34B"  
  

Respons

Respons mencakup kode status HTTP dan sekumpulan header respons.

Kode status

Operasi yang berhasil mengembalikan kode status 201 (Dibuat).

Untuk informasi tentang kode status, lihat Kode status dan kesalahan.

Header respons

Respons untuk operasi ini mencakup header berikut. Respons juga dapat mencakup header HTTP standar tambahan. Semua header standar sesuai dengan spesifikasi protokol HTTP/1.1.

Header respons Deskripsi
ETag ETag berisi nilai dalam tanda kutip. Klien dapat menggunakan nilai untuk melakukan operasi kondisional PUT dengan menggunakan If-Match header permintaan.
Last-Modified Tanggal dan waktu blob terakhir diubah. Format tanggal mengikuti RFC 1123. Untuk informasi selengkapnya, lihat Representasi nilai tanggal-waktu di header.

Setiap operasi tulis pada blob (termasuk pembaruan pada metadata atau properti blob) mengubah waktu blob yang terakhir dimodifikasi.
Content-MD5 Header ini dikembalikan sehingga klien dapat memeriksa integritas konten pesan. Nilai header ini dihitung oleh Blob Storage. Ini belum tentu nilai yang sama yang ditentukan dalam header permintaan. Untuk versi 2019-02-02 atau yang lebih baru, header ini hanya dikembalikan ketika permintaan memiliki header ini.
x-ms-content-crc64 Untuk versi 2019-02-02 atau yang lebih baru, header ini dikembalikan sehingga klien dapat memeriksa integritas konten pesan. Nilai header ini dihitung oleh Blob Storage. Ini belum tentu nilai yang sama yang ditentukan dalam header permintaan.

Header ini dikembalikan ketika Content-md5 header tidak ada dalam permintaan.
x-ms-request-id Header ini secara unik mengidentifikasi permintaan yang dibuat, dan dapat digunakan untuk memecahkan masalah permintaan.
x-ms-version Menunjukkan versi Blob Storage yang digunakan untuk menjalankan permintaan. Header ini dikembalikan untuk permintaan yang dibuat terhadap versi 2009-09-19 dan yang lebih baru.
Date Nilai tanggal/waktu UTC yang menunjukkan waktu di mana respons dimulai. Layanan menghasilkan nilai ini.
x-ms-blob-append-offset Header respons ini dikembalikan hanya untuk operasi penampingan. Ini mengembalikan offset di mana blok diterapkan, dalam byte.
x-ms-blob-committed-block-count Jumlah blok yang diterapkan yang ada dalam blob. Anda dapat menggunakan ini untuk mengontrol berapa banyak tambahan yang dapat dilakukan.
x-ms-request-server-encrypted: true/false Versi 2015-12-11 atau yang lebih baru. Nilai header ini diatur ke true jika konten permintaan berhasil dienkripsi dengan menggunakan algoritma yang ditentukan. Jika tidak, nilai diatur ke false.
x-ms-encryption-key-sha256 Versi 2019-02-02 atau yang lebih baru. Header ini dikembalikan jika permintaan menggunakan kunci yang disediakan pelanggan untuk enkripsi. Klien kemudian dapat memastikan konten permintaan berhasil dienkripsi dengan menggunakan kunci yang disediakan.
x-ms-encryption-scope Versi 2019-02-02 atau yang lebih baru. Header ini dikembalikan jika permintaan menggunakan cakupan enkripsi. Klien kemudian dapat memastikan konten permintaan berhasil dienkripsi dengan menggunakan cakupan enkripsi.
x-ms-client-request-id Anda dapat menggunakan header ini untuk memecahkan masalah permintaan dan respons terkait. Nilai header ini sama dengan nilai x-ms-client-request-id header jika ada dalam permintaan. Nilainya paling banyak 1024 karakter ASCII yang terlihat. x-ms-client-request-id Jika header tidak ada dalam permintaan, header ini tidak ada dalam respons.

Respons sampel

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: <date>  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-blob-append-offset: 2097152  
x-ms-blob-committed–block-count: 1000  
  

Authorization

Otorisasi diperlukan saat memanggil operasi akses data apa pun di Azure Storage. Anda dapat mengotorisasi operasi seperti yang Append Block dijelaskan di bawah ini.

Azure Storage mendukung penggunaan Microsoft Entra ID untuk mengotorisasi permintaan ke data blob. Dengan Microsoft Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin kepada prinsip keamanan. Perwakilan keamanan mungkin pengguna, grup, perwakilan layanan aplikasi, atau identitas terkelola Azure. Perwakilan keamanan diautentikasi oleh Microsoft Entra ID untuk mengembalikan token OAuth 2.0. Token kemudian dapat digunakan untuk mengotorisasi permintaan terhadap Blob service.

Untuk mempelajari selengkapnya tentang otorisasi menggunakan Microsoft Entra ID, lihat Mengotorisasi akses ke blob menggunakan Microsoft Entra ID.

Izin

Tercantum di bawah ini adalah tindakan RBAC yang diperlukan untuk pengguna, grup, atau perwakilan layanan yang Microsoft Entra untuk memanggil Append Block operasi, dan peran Azure RBAC bawaan yang paling tidak istimewa yang mencakup tindakan ini:

Untuk mempelajari selengkapnya tentang menetapkan peran menggunakan Azure RBAC, lihat Menetapkan peran Azure untuk akses ke data blob.

Keterangan

Append Block mengunggah blok ke akhir blob penambahan yang ada. Blok data segera tersedia setelah panggilan berhasil di server. Maksimum 50.000 tambahan diizinkan untuk setiap blob penampan. Setiap blok dapat memiliki ukuran yang berbeda.

Tabel berikut menjelaskan ukuran blok dan blob maksimum yang diizinkan, berdasarkan versi layanan:

Versi layanan. Ukuran blok maksimum (melalui Append Block) Ukuran blob maksimum
Versi 2022-11-02 dan yang lebih baru 100 MiB (Pratinjau) Sekitar 4,75 TiB (100 MiB × 50.000 blok)
Versi yang lebih lama dari 2022-11-02 4 MiB Sekitar 195 gibibyte (GiB) (4 MiB × 50.000 blok)

Append Block hanya berhasil jika blob sudah ada.

Blob yang diunggah dengan menggunakan Append Block jangan mengekspos ID blok. Anda tidak dapat memanggil Dapatkan Daftar Blokir terhadap blob penambahan. Melakukannya menghasilkan kesalahan.

Anda dapat menentukan header opsional dan kondisional berikut pada permintaan:

  • x-ms-blob-condition-appendpos: Anda dapat mengatur header ini ke offset byte di mana klien berharap untuk menambahkan blok. Permintaan hanya berhasil jika offset saat ini cocok dengan yang ditentukan oleh klien. Jika tidak, permintaan gagal dengan kode kesalahan 412 (Prasyarat Gagal).

    Klien yang menggunakan penulis tunggal dapat menggunakan header ini untuk menentukan apakah Append Block operasi berhasil, meskipun terjadi kegagalan jaringan.

  • x-ms-blob-condition-maxsize: Klien dapat menggunakan header ini untuk memastikan bahwa operasi penambahan tidak meningkatkan ukuran blob di luar ukuran maksimum yang diharapkan dalam byte. Jika kondisi gagal, permintaan gagal dengan kode kesalahan 412 (Prasyarat Gagal).

Jika Anda mencoba mengunggah blok yang lebih besar dari ukuran yang diizinkan, layanan mengembalikan kode kesalahan 413 (Entitas Permintaan Terlalu Besar). Layanan ini juga mengembalikan informasi tambahan tentang kesalahan dalam respons, termasuk ukuran blok maksimum yang diizinkan dalam byte. Jika Anda mencoba mengunggah lebih dari 50.000 blok, layanan mengembalikan kode kesalahan 409 (Konflik).

Jika blob memiliki sewa aktif, klien harus menentukan ID sewa yang valid pada permintaan untuk menulis blok ke blob. Jika klien tidak menentukan ID sewa, atau menentukan ID sewa yang tidak valid, Blob Storage mengembalikan kode kesalahan 412 (Prasyarat Gagal). Jika klien menentukan ID sewa, tetapi blob tidak memiliki sewa aktif, Blob Storage juga mengembalikan kode kesalahan 412.

Jika Anda memanggil Append Block blob blok atau blob halaman yang ada, layanan mengembalikan kesalahan konflik. Jika Anda memanggil Append Block blob yang tidak ada, layanan juga mengembalikan kesalahan.

Hindari penambah duplikat atau tertunda

Dalam skenario penulis tunggal, klien dapat menghindari penambahan duplikat atau penulisan tertunda dengan menggunakan *x-ms-blob-condition-appendpos header kondisional untuk memeriksa offset saat ini. Klien juga dapat menghindari duplikat atau penundaan dengan memeriksa ETag secara kondisional, dengan menggunakan If-Match.

Dalam skenario beberapa penulis, setiap klien dapat menggunakan header kondisional, tetapi ini mungkin tidak optimal untuk performa. Untuk throughput penampakan bersamaan tertinggi, aplikasi harus menangani tambahan yang berlebihan dan tambahan yang tertunda di lapisan aplikasi. Misalnya, aplikasi dapat menambahkan epoch atau nomor urutan dalam data yang ditambahkan.

Billing

Permintaan harga dapat berasal dari klien yang menggunakan API Blob Storage, baik langsung melalui BLob Storage REST API, atau dari pustaka klien Azure Storage. Permintaan ini mengumpulkan biaya per transaksi. Jenis transaksi memengaruhi bagaimana akun ditagih. Misalnya, membaca transaksi bertambah ke kategori penagihan yang berbeda dari transaksi tulis. Tabel berikut ini memperlihatkan kategori penagihan untuk Append Block permintaan berdasarkan jenis akun penyimpanan:

Operasi Jenis akun penyimpanan Kategori penagihan
Tambahkan Blok Objek besar biner blok premium
Tujuan umum standar v2
Tujuan umum standar v1
Operasi tulis

Untuk mempelajari tentang harga untuk kategori penagihan yang ditentukan, lihat harga Azure Blob Storage.