Sdílet prostřednictvím


Vložit blok

Operace Put Block vytvoří nový blok, který se zavádí jako součást blobu.

Žádost

Požadavek Put Block můžete vytvořit následujícím způsobem. Doporučujeme používat PROTOKOL HTTPS. Nahraďte myaccount názvem vašeho úložného účtu:

PUT požadavek na URI metody Verze protokolu HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=id Protokol HTTP/1.1

Žádost o emulovanou službu úložiště

Když zadáváte požadavek na emulovanou úložnou službu, zadejte hostitelské jméno emulátoru a port 127.0.0.1:10000Blob jako , následované názvem emulovaného úložného účtu:

PUT požadavek na URI metody Verze protokolu HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=block&blockid=id Protokol HTTP/1.1

Další informace najdete v tématu Použití emulátoru Azurite pro místní vývoj ve službě Azure Storage.

Parametry identifikátoru URI

Parameter Description
blockid Povinné. Platná řetězcová hodnota Base64, která identifikuje blok. Před zakódováním musí být řetězec menší nebo roven velikosti 64 bajtů.

Pro zadaný blob musí být délka hodnoty parametru blockid stejná velikost pro každý blok.

Poznámka: String Base64 musí být kódován v URL.
timeout Optional. Parametr timeout je vyjádřen v sekundách. Pro více informací viz Nastavte časové limity pro operace služby Blob.

Hlavičky žádosti

Povinná a volitelná hlavička požadavku jsou popsána v následující tabulce:

Hlavička požadavku Description
Authorization Povinné. Určuje schéma autorizace, název účtu a podpis. Více informací naleznete v článku Authorize requests to Azure Storage .
Date nebo x-ms-date Povinné. Určuje standard UTC (Coordinated Universal Time) pro požadavek. Další informace najdete v tématu Autorizace požadavků na službu Azure Storage.
x-ms-version Vyžadováno pro všechny autorizované požadavky. Určuje verzi operace, která se má pro tento požadavek použít. Pro více informací viz Verze pro Azure Storage Services.
Content-Length Povinné. Délka obsahu bloku v bajtech. Blok musí být menší nebo roven velikosti 4 000 mebibajtů (MiB) pro verzi 2019-12-12 a později. Viz sekce Poznámky pro limity ve starších verzích.

Pokud délka není uvedena, operace selže se stavovým kódem 411 (Požadovaná délka).
Content-MD5 Optional. MD5 hash obsahu bloku. Tento hash se používá k ověření integrity bloku během transportu. Když je tato hlavička specifikována, služba úložiště porovná hash obsahu, který dorazil s touto hodnotou hlavičky.

Poznámka: Tento MD5 hash není uložen s blobem.

Pokud se oba hashe neshodují, operace selže s chybovým kódem 400 (Špatný požadavek).
x-ms-content-crc64 Optional. CRC64 hash obsahu bloku. Tento hash se používá k ověření integrity bloku během transportu. Když je tato hlavička specifikována, služba úložiště porovná hash obsahu, který dorazil s touto hodnotou hlavičky.

Poznámka: Tento hash CRC64 není uložen s blobem.

Pokud se dvě hodnoty hash neshoduje, operace selže s kódem chyby 400 (Chybný požadavek).

Pokud jsou přítomny hlavičky Content-MD5 a x-ms-content-crc64, požadavek selže s 400 (Špatný požadavek).

Tato hlavička je podporována ve verzích 2019-02-02 a novějších.
x-ms-encryption-scope Optional. Označuje obor šifrování, který se má použít k šifrování obsahu požadavku. Tato hlavička je podporována ve verzích 2019-02-02 a novějších.
x-ms-lease-id:<ID> Je vyžadováno, pokud má objekt blob aktivní pronájem. Chcete-li tuto operaci provést s objektem blob s aktivním zapůjčením, zadejte platné ID zapůjčení pro tuto hlavičku.
x-ms-client-request-id Optional. Poskytuje klientem generovanou, neprůhlednou hodnotu s limitem znaků 1 kibibajt (KiB), který se zaznamenává do protokolů při konfiguraci protokolování. Důrazně doporučujeme použít tuto hlavičku ke korelaci aktivit na straně klienta s požadavky, které server přijímá. Další informace najdete v tématu Monitorování služby Azure Blob Storage.

Záhlaví požadavků (šifrovací klíče poskytované zákazníkem)

Od verze 2019-02-02 mohou být následující hlavičky uvedeny v požadavku na šifrování blobu pomocí zákaznického klíče. Šifrování pomocí klíče poskytnutého zákazníkem (a odpovídající sady hlaviček) je volitelné.

Hlavička požadavku Description
x-ms-encryption-key Povinné. Šifrovací klíč AES-256 kódovaný v Base64.
x-ms-encryption-key-sha256 Povinné. Hash SHA256 kódovaný v Base64 kódování šifrovacího klíče.
x-ms-encryption-algorithm: AES256 Povinné. Specifikuje algoritmus pro šifrování. Hodnota této hlavičky musí být AES256.

Záhlaví požadavků (strukturované tělo)

Od verze 2025-01-05 mohou být v požadavku uvedeny následující hlavičky pro využití strukturovaného tělního formátu.

Hlavička požadavku Description
Content-Length Povinné. Musí být délka zakódovaného požadavku (nejen délka obsahu bloku).

Pokud hodnota hlavičky neodpovídá očekávané délce kódovaného požadavku, operace selže s chybovým kódem 400 (Špatný požadavek).
x-ms-structured-body Povinné. Musí být zahrnut, pokud je formát zprávy strukturovaný. Hodnota této hlavičky obsahuje verzi a vlastnosti schématu zpráv.

V současnosti je podporovanou XSM/1.0; properties=crc64pouze hodnotou , což znamená, že požadavek používá kontrolní součet crc64 segmentů v zakódované zprávě. Pokud hodnota neodpovídá, operace selže s chybovým kódem 400 (Špatný požadavek). Požadavek také selže, pokud obsah uvedený v požadavku neodpovídá zadanému kontrolnímu součtu pro daný segment s chybovým kódem 400 (Špatný požadavek).
x-ms-structured-content-length Povinné. Musí být zahrnut, pokud je formát zprávy strukturovaný. Hodnota této hlavičky je délka obsahu bloku a vždy bude menší než Content-Length hodnota hlavičky kvůli kódování zpráv.

Pokud hodnota hlavičky neodpovídá délce obsahu bloku uvedeného v požadavku, operace selže s chybovým kódem 400 (Špatný požadavek).

Obsah požadavku

Tělo požadavků obsahuje obsah bloku.

Ukázkový požadavek

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=AAAAAA%3D%3D HTTP/1.1  
  
Request Headers:  
x-ms-version: 2011-08-18  
x-ms-date: Sun, 25 Sep 2011 14:37:35 GMT  
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 1048576  

Odezva

Odpověď obsahuje stavový kód HTTP a sadu hlaviček odpovědi.

Stavový kód

Úspěšná operace vrátí stavový kód 201 (vytvořeno).

Informace o stavových kódech naleznete v části Stavové a chybové kódy.

Hlavičky odpovědi

Odpověď na tuto operaci obsahuje následující hlavičky. Odpověď může obsahovat také další standardní hlavičky HTTP. Všechny standardní hlavičky odpovídají specifikaci protokolu HTTP/1.1.

Hlavička odpovědi Description
Content-MD5 Vráceno, aby klient mohl zkontrolovat integritu obsahu zpráv. Hodnota této hlavičky je vypočítána pomocí Blob Storage a nemusí být nutně stejná jako v hlavičkách požadavků. U verzí 2019-02-02 a novějších se tato hlavička vrací pouze tehdy, když požadavek tuto hlavičku obsahuje.
x-ms-content-crc64 U verzí 2019-02-02 a pozdějších se tato hlavička vrací, aby klient mohl zkontrolovat integritu obsahu zprávy. Hodnota této hlavičky je vypočítána pomocí Blob Storage a nemusí být nutně stejná jako v hlavičkách požadavků.

Tato hlavička se vrací, když Content-md5 hlavička není v požadavku přítomna.
x-ms-request-id Jednoznačně identifikuje požadavek, který byl proveden, a můžete ho použít k řešení potíží s požadavkem. Další informace najdete v tématu Řešení potíží s operacemi rozhraní API.
x-ms-version Označuje verzi Blob Storage, která byla použita k vykonání požadavku. Tato hlavička se vrací pro požadavky provedené proti verzi 2009-09-19 nebo novější.
Date UTC data/čas generovaná službou a která ukazuje, kdy byla odpověď zahájena.
x-ms-request-server-encrypted: true/false Verze 2015-12-11 a pozdější. Hodnota této hlavičky je nastavena na , true pokud je obsah požadavku úspěšně zašifrován pomocí zadaného algoritmu. Jinak je hodnota nastavena na false.
x-ms-encryption-key-sha256 Verze 2019-02-02 a dále. Tato hlavička se vrátí, pokud požadavek použil zákaznický klíč pro šifrování, aby klient mohl zajistit, že obsah požadavku je úspěšně zašifrován pomocí poskytnutého klíče.
x-ms-encryption-scope Verze 2019-02-02 a dále. Tato hlavička se vrátí, pokud požadavek použil šifrovací rozsah, aby klient mohl zajistit, že obsah požadavku je úspěšně zašifrován pomocí šifrovacího rozsahu.
x-ms-client-request-id Dá se použít k řešení potíží s požadavky a jejich odpovídajícími odpověďmi. Hodnota této hlavičky se rovná hodnotě hlavičky x-ms-client-request-id, pokud se nachází v požadavku a hodnota neobsahuje více než 1 024 viditelných znaků ASCII. Pokud v požadavku není hlavička x-ms-client-request-id, není v odpovědi k dispozici.
x-ms-structured-body Vráceno, pokud byl požadavek zpracován jako strukturovaný tělesný požadavek. Hodnota této hlavičky je rovna hodnotě zaslané v požadavku, která musí být XSM/1.0; properties=crc64aktuálně .

Ukázková odpověď

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: Sun, 25 Sep 2011 23:47:09 GMT  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

Authorization

Autorizace se vyžaduje při volání jakékoli operace přístupu k datům ve službě Azure Storage. Operaci Put Block můžete autorizovat, jak je popsáno níže.

Důležité

Microsoft doporučuje používat Microsoft Entra ID se spravovanými identitami k autorizaci požadavků do služby Azure Storage. Microsoft Entra ID poskytuje vynikající zabezpečení a snadné použití v porovnání s autorizací sdíleného klíče.

Azure Storage podporuje použití Microsoft Entra ID k autorizaci přístupů k datům objektů blob. S ID Microsoft Entra můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit oprávnění k objektu zabezpečení. Objekt zabezpečení může být uživatel, skupina, instanční objekt aplikace nebo spravovaná identita Azure. Instanční objekt zabezpečení je ověřený pomocí ID Microsoft Entra pro vrácení tokenu OAuth 2.0. Token se pak dá použít k autorizaci požadavku ve službě Blob Service.

Další informace o autorizaci pomocí ID Microsoft Entra najdete v tématu Autorizace přístupu k objektům blob pomocíMicrosoft Entra ID .

Povolení

Níže je uvedena akce RBAC potřebná pro uživatele, skupinu, spravovanou identitu nebo instanční objekt Microsoftu pro volání operace Put Block a nejméně privilegované předdefinované role Azure RBAC, která zahrnuje tuto akci:

Další informace o přiřazování rolí pomocí Azure RBAC najdete v tématu Přiřazení role Azure pro přístup k datům objektů blob.

Poznámky

Put Block nahraje blok pro budoucí zařazení do blokového blobu. Každý blok v bloku může mít jinou velikost. Bloková blob může obsahovat maximálně 50 000 zavázaných bloků.

Následující tabulka popisuje maximální povolené velikosti bloků a blobů podle verzí služby:

Verze služby Maximální velikost bloku (přes Put Block) Maximální velikost blobu (přes Put Block List) Maximální velikost blobu pomocí operace jednoho zápisu (přes Put Blob)
Verze 2019-12-12 a novější 4 000 MiB Přibližně 190,7 tebibajtů (TiB) (4 000 MiB × 50 000 bloků) 5 000 MiB
Verze 2016-05-31 až 2019-07-07 100 MiB Přibližně 4,75 TiB (100 MiB × 50 000 bloků) 256 MiB
Verze před 31. květnem 2016 4 MiB Přibližně 195 gibibajtů (GiB) (4 MiB × 50 000 bloků) 64 MiB

Maximální počet nezávazných bloků, které mohou být spojeny s blobem, je 100 000. Pokud je toto číslo překročeno, služba vrátí stavový kód 409 (RequestEntityTooLargeBlockCountExceedsLimit).

Po nahrání sady bloků můžete vytvořit nebo aktualizovat blob na serveru z této sady voláním operace Put Block List . Každý blok v sadě je identifikován ID bloku, které je v rámci daného blobu jedinečné. ID bloků jsou zaměřena na konkrétní blob, takže různé bloby mohou mít bloky se stejnými ID.

Pokud vyvoláte Put Block blob, který ještě neexistuje, vytvoří se nový blokový blob s obsahovou délkou 0. Tento blob je vyčíslován operací, List Blobs pokud je tato include=uncommittedblobs možnost specifikována. Bloky nebo bloky, které nahraješ, nejsou zavázané, dokud nezavoláš Put Block List nový blob. Blob vytvořený tímto způsobem je na serveru udržován týden. Pokud jste během té doby nepřidali další bloky nebo nezavázali bloky do blobu, blob je garbage collected.

Blok, který byl úspěšně nahrán pomocí Put Block operace, se nestane součástí blobu, dokud není commitován s Put Block List. Před tím, než Put Block List je volán k commitu nového nebo aktualizovaného blobu, jakákoli volání Get Blob vrátí obsah blobu bez zahrnutí nezávazného bloku.

Pokud nahrajete blok, který má stejné ID bloku jako jiný blok, který ještě nebyl zavázán, poslední nahraný blok s tímto ID bude potvrzen při další úspěšné Put Block List operaci.

Po Put Block List vyvolání jsou všechny nezávazné bloky specifikované v seznamu bloků zavázány jako součást nového blobu. Jakékoliv nezávazné bloky, které nebyly specifikovány v seznamu bloků pro blob, jsou odstraňovány a odstraněny z Blob Storage. Jakékoliv neuzavřené bloky jsou také odsouzeny do garbage collect, pokud do týdne po poslední úspěšné Put Block operaci neproběhnou žádné úspěšné volání na Put Block List stejné blob nebo Put Block na něm. Pokud je na blobu vyvolán Put Blob , všechny neoddané bloky jsou garbage collected.

Pokud má blob aktivní nájem, klient musí při žádosti o zápis bloku do blobu zadat platné ID nájemní smlouvy. Pokud klient nespecifikuje ID pronájmu nebo specifikuje neplatné ID pronájmu, Blob Storage vrací stavový kód 412 (Předpodmínka selhala). Pokud klient zadá ID leasingu, ale blob nemá aktivní nájem, Blob Storage také vrátí stavový kód 412 (Precondition Failed).

Pro zadaný blob musí být všechna ID bloků stejně dlouhá. Pokud je blok nahrán s ID bloku jiné délky než ID bloků pro jakékoli existující nezávazné bloky, služba vrátí kód chybové odpovědi 400 (Špatný požadavek).

Pokud se pokusíte nahrát blok větší než 4 000 MiB pro verzi 2019-12-12 nebo později, větší než 100 MiB pro verzi 2016-05-31 nebo novější, nebo větší než 4 MiB pro starší verze, služba vrátí stavový kód 413 (Request Entity Too Large). Služba také vrací další informace o chybě v odpovědi, včetně maximální povolené velikosti bloku, v bajtech.

Volání Put Block neaktualizuje poslední upravený čas existujícího blobu.

Volání Put Block na stránkový blob vrátí chybu.

Volání Put Block From URL blobu nemění úroveň blob, ale volání archive blob vrátí chybu.

Fakturování

Požadavky na stanovení cen mohou pocházet od klientů, kteří používají rozhraní API služby Blob Storage, a to buď přímo prostřednictvím rozhraní REST API služby Blob Storage, nebo z klientské knihovny Azure Storage. Za tyto žádosti se účtují poplatky za transakci. Typ transakce má vliv na způsob účtování poplatků. Například transakce čtení narůstají do jiné fakturační kategorie než transakce zápisu. Následující tabulka uvádí kategorii fakturace pro Put Block požadavky na základě typu účtu úložiště:

Operation Typ účtu úložiště Kategorie fakturace
Vložit blok Objekt blob bloku Premium
Standard pro obecné účely verze 2
Standard pro obecné účely verze 1
Zápisové operace1

Operace 1Put Block zapisují bloky do dočasného úložiště pomocí výchozí přístupové úrovně úložného účtu. Například pokud nahráváte blob do archivní úrovně, všechny Put Block operace, které jsou součástí nahrávání, jsou účtovány jako zápisové operace založené na výchozí úrovni přístupu úložiště, nikoli na cílové úrovni. Put Block List a Put Blob operace jsou však účtovány jako zápisové operace založené na cílové úrovni blobu.

Další informace o cenách pro zadanou kategorii fakturace najdete v tématu Ceny služby Azure Blob Storage.

Viz také

Autorizace požadavků na Azure Storage
Kódy stavu a chyb
Chybové kódy blob služeb
Nastavte časové limity pro provoz služby Blob