Tambahkan Blok Dari URL

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

Operasi Append Block From URL hanya diizinkan jika blob dibuat dengan x-ms-blob-type diatur ke AppendBlob. Append Block From URL hanya didukung pada versi 2018-11-09 atau yang lebih baru.

Minta

Anda dapat membuat Append Block From URL 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 batas waktu dinyatakan dalam hitung detik. Untuk informasi selengkapnya, lihat Mengatur batas waktu untuk operasi 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. Menentukan jumlah byte yang dikirimkan dalam isi permintaan. Nilai header ini harus diatur ke nol. Ketika panjangnya bukan nol, operasi akan gagal dengan kode kesalahan 400 (Permintaan Buruk).
x-ms-copy-source:name Wajib diisi. Menentukan URL blob sumber. Nilainya dapat berupa URL dengan panjang hingga 2 KiB yang menentukan blob. Nilai harus dikodekan URL, karena akan muncul dalam URI permintaan. Blob sumber harus publik atau harus diotorisasi melalui tanda tangan akses bersama. Jika blob sumber bersifat publik, tidak ada otorisasi yang diperlukan untuk melakukan operasi. Berikut adalah beberapa contoh URL objek sumber:

https://myaccount.blob.core.windows.net/mycontainer/myblob
https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-copy-source-authorization: <scheme> <signature> Opsional. Menentukan skema otorisasi dan tanda tangan untuk sumber salinan. Untuk informasi selengkapnya, lihat Mengotorisasi permintaan ke Azure Storage.
Hanya pembawa skema yang didukung untuk Microsoft Entra ID.
Header ini didukung dalam versi 2020-10-02 dan yang lebih baru.
x-ms-source-range Pilihan. Hanya mengunggah byte blob di URL sumber dalam rentang yang ditentukan. Jika ini tidak ditentukan, seluruh konten blob sumber diunggah sebagai satu blok penambahan. Lihat Menentukan header rentang untuk operasi Blob Storage untuk informasi selengkapnya.
x-ms-source-content-md5 Pilihan. Hash MD5 dari konten blok penambahan dari URI. Hash ini digunakan untuk memverifikasi integritas blok penambahan selama pengangkutan data dari URI. Saat Anda menentukan header ini, layanan penyimpanan membandingkan hash konten yang telah tiba dari sumber salin dengan nilai header ini.

Perhatikan bahwa hash MD5 ini tidak disimpan dengan blob.

Jika dua hash tidak cocok, operasi gagal dengan kode kesalahan 400 (Permintaan Buruk).
x-ms-source-content-crc64 Pilihan. Hash CRC64 dari konten blok penambahan dari URI. Hash ini digunakan untuk memverifikasi integritas blok penambahan selama pengangkutan data dari URI. Saat Anda menentukan header ini, layanan penyimpanan membandingkan hash konten yang telah tiba dari sumber salin dengan nilai header ini.

Perhatikan bahwa hash CRC64 ini tidak disimpan dengan blob.

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

Jika header x-ms-source-content-md5 dan x-ms-source-content-crc64 ada, permintaan gagal dengan 400 (Permintaan Buruk).

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 sumber. 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. Panjang maksimum dalam byte yang diizinkan untuk blob penampan. Append Block From URL Jika operasi menyebabkan blob melebihi batas tersebut, atau jika ukuran blob sudah lebih besar dari nilai yang ditentukan di header ini, permintaan gagal dengan 412 (Prasyarat Gagal).
x-ms-blob-condition-appendpos Header bersyarah opsional, hanya digunakan untuk Append Block from URL operasi. Angka yang menunjukkan offset byte untuk dibandingkan. Append Block from URL hanya berhasil jika posisi penampan sama dengan angka ini. Jika tidak, permintaan gagal dengan 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 kondisional untuk operasi 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: 2018-11-09  
x-ms-date: <date>  
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-65535
x-ms-blob-condition-appendpos: 2097152  
x-ms-blob-condition-maxsize: 4194304  
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 0 
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 menggunakan nilai untuk melakukan operasi kondisional PUT dengan menggunakan If-Match header permintaan.
Last-Modified Tanggal/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. Blob Storage menghitung nilai header ini. 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. Blob Storage menghitung nilai header ini. Ini belum tentu nilai yang sama yang ditentukan dalam header permintaan.

Header ini dikembalikan ketika x-ms-source-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 dihasilkan oleh layanan yang menunjukkan waktu dimulainya respons.
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 bahwa 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 bahwa konten permintaan berhasil dienkripsi dengan menggunakan cakupan enkripsi.

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 From URL dijelaskan di bawah ini.

Detail otorisasi di bagian ini berlaku untuk tujuan salin. Untuk informasi selengkapnya tentang otorisasi sumber salin, lihat detail untuk header x-ms-copy-sourcepermintaan .

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 From URL 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 From URL 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 penampingan, di mana. 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 From URL) 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)

Dalam versi 2020-10-02 dan yang lebih baru, Microsoft Entra ID otorisasi didukung untuk sumber operasi salin.

Append Block From URL berhasil hanya jika blob sudah ada.

Blob yang diunggah dengan menggunakan Append Block From URL jangan mengekspos ID blok, sehingga 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 operasi Append Block From URL 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 HTTP 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, layanan mengembalikan kode kesalahan 412.

Jika Anda memanggil Append Block From URL blob blok atau blob halaman yang ada, layanan mengembalikan kode kesalahan 409 (Konflik). Jika Anda memanggil Append Block From URL blob yang tidak ada, layanan mengembalikan kode kesalahan 404 (Tidak Ditemukan).

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 keterlambatan ETag dengan memeriksa secara kondisional, dengan menggunakan If-Match.

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

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

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 cara akun ditagih. Misalnya, transaksi baca bertambah ke kategori penagihan yang berbeda dari transaksi tulis. Tabel berikut ini memperlihatkan kategori penagihan untuk Append Block From URL permintaan berdasarkan jenis akun penyimpanan:

Operasi Jenis akun penyimpanan Kategori penagihan
Tambahkan Blok Dari URL (akun tujuan1) Objek besar biner blok premium
Tujuan umum standar v2
Tujuan umum standar v1
Operasi tulis
Tambahkan Blok Dari URL (akun sumber2) Objek besar biner blok premium
Tujuan umum standar v2
Tujuan umum standar v1
Membacakan operasi

1Akun tujuan dibebankan untuk satu transaksi untuk memulai penulisan.
2Akun sumber menimbulkan satu transaksi untuk setiap permintaan baca ke sumbernya.