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 100 MiB (pratinjau) dalam ukuran 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 |
Pilihan. 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 penampingan.
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 bersyar opsional, hanya digunakan untuk Append Block operasi. Angka menunjukkan offset byte untuk dibandingkan.
Append Block berhasil hanya 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 hanya berhasil jika kondisi tertentu terpenuhi. Untuk informasi selengkapnya, lihat Menentukan header kondisi 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 Status dan kode 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.
Penting
Microsoft merekomendasikan penggunaan Microsoft Entra ID dengan identitas terkelola untuk mengotorisasi permintaan ke Azure Storage. Microsoft Entra ID memberikan keamanan yang unggul dan kemudahan penggunaan dibandingkan dengan otorisasi Kunci Bersama.
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, identitas terkelola, atau perwakilan layanan Microsoft Entra untuk memanggil Append Block
operasi, dan peran Azure RBAC bawaan yang paling tidak istimewa yang mencakup tindakan ini:
- Tindakan Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action atau Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Peran bawaan dengan hak istimewa paling sedikit:Kontributor Data Blob Penyimpanan
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 |
Blok Penambahan tidak mendukung tingkatan tingkat objek tetapi menyimpulkan tingkat aksesnya dari pengaturan tingkat akses akun default dan ditagih sesuai. Untuk mempelajari selengkapnya tentang pengaturan tingkat akun default, lihat Tingkat akses untuk data blob - Azure Storage.
Untuk mempelajari tentang harga untuk kategori penagihan yang ditentukan, lihat harga Azure Blob Storage.