Lap elhelyezése

A Put Page művelet oldaltartományt ír egy lapblobba.

Kérés

A kérést az Put Page alábbiak szerint hozhatja létre. Javasoljuk, hogy HTTPS-t használjon. Cserélje le a myaccount kifejezést a tárfiók nevére:

PUT metóduskérés URI-ja HTTP-verzió
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1

Emulált tárolási szolgáltatás kérése

Amikor kérést küld az emulált tárolási szolgáltatásra, adja meg az emulátor gazdagépnevét és a Blob-szolgáltatás portját , 127.0.0.1:10000majd az emulált tárfiók nevét:

PUT metóduskérés URI-ja HTTP-verzió
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=page HTTP/1.1

További információ: Az Azurite emulátor használata helyi Azure Storage-fejlesztéshez.

URI-paraméterek

A kérelem URI-ján a következő további paramétereket adhatja meg:

Paraméter Leírás
timeout Választható. A timeout paraméter másodpercben van kifejezve. További információ: Időtúllépések beállítása Blob szolgáltatásműveletekhez.

Kérésfejlécek

A szükséges és nem kötelező kérésfejléceket az alábbi táblázat ismerteti:

Kérelem fejléce Leírás
Authorization Kötelező. Megadja az engedélyezési sémát, a fióknevet és az aláírást. További információ: Kérelmek engedélyezése az Azure Storage-ba.
Date vagy x-ms-date Kötelező. Megadja a kérés egyezményes világidő (UTC) formátumban kifejezett időpontját. További információ: Kérelmek engedélyezése az Azure Storage-ba.
x-ms-version Minden engedélyezett kéréshez szükséges. A kérelemhez használandó művelet verzióját adja meg. További információ: Az Azure Storage-szolgáltatások verziószámozása.
Range x-ms-range Vagy Range kötelező.

Megadja a lapként írandó bájtok tartományát. A tartomány kezdetét és végét is meg kell adni. Ezt a fejlécet a HTTP/1.1 protokoll specifikációja határozza meg.

Oldalfrissítési művelet esetén az oldaltartomány legfeljebb 4 MiB lehet. Oldaltörlési művelet esetén az oldaltartomány olyan nagy lehet, mint a blob teljes méretének értéke.

Mivel az oldalakat 512 bájtos határokhoz kell igazítani, a kezdő eltolásnak 512-es modulusnak kell lennie, a végeltolásnak pedig 512–1 modulusnak kell lennie. Érvényes bájttartományok például 0-511, 512-1023 és így tovább.

A Blob Storage csak egyetlen bájttartományt fogad el a Range fejléchez, és a bájttartományt a következő formátumban kell megadni: bytes=startByte-endByte.

Ha a és x-ms-range a érték is Range meg van adva, a szolgáltatás a értékét x-ms-rangehasználja. További információ: A blobszolgáltatás műveleteinek tartományfejlécének megadása.
x-ms-range x-ms-range Vagy Range kötelező.

Megadja a lapként írandó bájtok tartományát. A tartomány kezdetét és végét is meg kell adni. Ezt a fejlécet a HTTP/1.1 protokoll specifikációja határozza meg.

Egy oldalfrissítési művelet esetén az oldaltartomány akár 4 MiB méretű is lehet. Oldaltörlési művelet esetén az oldaltartomány legfeljebb a blob teljes méretének értékéhez adható meg.

Mivel az oldalakat 512 bájtos határokhoz kell igazítani, a kezdő eltolásnak 512-es modulusnak kell lennie, a végeltolásnak pedig 512–1 modulusnak kell lennie. Érvényes bájttartományok például 0-511, 512-1023 stb.

A Blob Storage csak egyetlen bájttartományt fogad el a x-ms-range fejléchez, és a bájttartományt a következő formátumban kell megadni: bytes=startByte-endByte.

Ha a és x-ms-range a érték is Range meg van adva, a szolgáltatás a értékét x-ms-rangehasználja. További információt a Blob-szolgáltatásműveletek tartományfejlécének megadása című témakörben talál.
Content-Length Kötelező. A kérelem törzsében továbbított bájtok számát adja meg. Ha a x-ms-page-write fejléc clearértéke , a fejléc értékét értékre kell állítani 0.
Content-MD5 Választható. A lap tartalmának MD5-kivonata. Ez a kivonat a lap integritásának ellenőrzésére szolgál az átvitel során. Ha ez a fejléc meg van adva, a tárolási szolgáltatás összehasonlítja az ezzel a fejlécértékkel érkezett tartalom kivonatát.
<br / >Megjegyzés: Ezt az MD5-kivonatot nem tárolja a blob.

Ha a két kivonat nem egyezik, a művelet a 400-es hibakóddal (hibás kérelem) meghiúsul.
x-ms-content-crc64 Választható. A lap tartalmának CRC64-kivonata. Ez a kivonat a lap integritásának ellenőrzésére szolgál az átvitel során. Ha ez a fejléc meg van adva, a tárolási szolgáltatás összehasonlítja az ezzel a fejlécértékkel érkezett tartalom kivonatát.

Megjegyzés: Ez a CRC64-kivonat nem a blobban van tárolva.

Ha a két kivonat nem egyezik, a művelet a 400-es hibakóddal (hibás kérelem) meghiúsul.

Ha a és x-ms-content-crc64 a Content-MD5 fejléc is jelen van, a kérés 400-zal (hibás kéréssel) meghiúsul.

Ez a fejléc a 2019-02-02-es és újabb verziókban támogatott.
x-ms-page-write: {update ¦ clear} Kötelező. Az alábbi lehetőségek egyikét adhatja meg:

- Update: A kérelemtörzs által megadott bájtokat írja a megadott tartományba. A Range és Content-Length a fejlécnek egyeznie kell a frissítés végrehajtásához.
- Clear: Törli a megadott tartományt, és felszabadítja az adott tartomány tárterületét. Tartomány törléséhez állítsa a fejlécet értékre Content-Length0, és állítsa a Range fejlécet egy olyan értékre, amely a tartomány törlését jelzi, a maximális blobméretig.
x-ms-encryption-scope Választható. A kérelem tartalmának titkosításához használandó titkosítási hatókört jelzi. Ez a fejléc a 2019-02-02-es és újabb verziókban támogatott.
x-ms-lease-id:<ID> Akkor szükséges, ha a blob rendelkezik aktív bérlettal. Ha ezt a műveletet aktív bérlettel rendelkező blobon szeretné végrehajtani, adja meg a fejléc érvényes bérletazonosítóját.
x-ms-if-sequence-number-le: <num> Választható. Ha a blob sorszáma kisebb vagy egyenlő a megadott értékkel, a kérés folytatódik. Ellenkező esetben a SequenceNumberConditionNotMet hibával meghiúsul (HTTP-állapotkód: 412 – Az előfeltétel sikertelen).
x-ms-if-sequence-number-lt: <num> Választható. Ha a blob sorszáma kisebb a megadott értéknél, a kérés folytatódik. Ellenkező esetben SequenceNumberConditionNotMet hibával meghiúsul (HTTP-állapotkód: 412 – Az előfeltétel sikertelen).
x-ms-if-sequence-number-eq: <num> Választható. Ha a blob sorszáma megegyezik a megadott értékkel, a kérés folytatódik. Ellenkező esetben SequenceNumberConditionNotMet hibával meghiúsul (HTTP-állapotkód: 412 – Az előfeltétel sikertelen).
If-Modified-Since Választható. Egy DateTime érték. Ezt a feltételes fejlécet csak akkor adja meg a lap írásához, ha a blob a megadott dátum/idő óta módosult. Ha a blob nem lett módosítva, a Blob Storage a 412-s állapotkódot adja vissza (az előfeltétel sikertelen).
If-Unmodified-Since Választható. Egy DateTime érték. Ezt a feltételes fejlécet csak akkor adja meg a lap írásához, ha a blob a megadott dátum/idő óta nem lett módosítva. Ha a blob módosult, a Blob Storage a 412-s állapotkódot adja vissza (az előfeltétel sikertelen).
If-Match Választható. Egy ETag érték. Adjon meg egy ETag-értéket a feltételes fejléchez a lap írásához, ha a blob ETag értéke megegyezik a megadott értékkel. Ha az értékek nem egyeznek, a Blob Storage a 412-s állapotkódot adja vissza (az előfeltétel sikertelen).
If-None-Match Választható. Egy ETag érték.

Adjon meg egy ETag-értéket a feltételes fejléchez a lap írásához, ha a blob ETag értéke nem egyezik meg a megadott értékkel. Ha az értékek azonosak, a Blob Storage a 412-s állapotkódot adja vissza (az előfeltétel sikertelen).
x-ms-client-request-id Választható. Ügyfél által generált, átlátszatlan értéket biztosít egy 1 kibibyte (KiB) karakterkorláttal, amelyet a naplózás konfigurálásakor rögzít a naplókban. Javasoljuk, hogy ezt a fejlécet használva korrelálja az ügyféloldali tevékenységeket a kiszolgáló által kapott kérésekkel. További információ: Azure Blob Storage figyelése.

Ez a művelet feltételes fejlécek használatát is támogatja a művelet végrehajtásához, ha egy adott feltétel teljesül. További információ: Feltételes fejlécek megadása blobszolgáltatás-műveletekhez.

Kérelemfejlécek (ügyfél által biztosított titkosítási kulcsok)

A 2019-02-02-es verziótól a következő fejléceket adhatja meg a blob ügyfél által megadott kulccsal történő titkosítására vonatkozó kérelemben. Az ügyfél által megadott kulccsal (és a megfelelő fejléckészlettel) történő titkosítás nem kötelező.

Kérelem fejléce Leírás
x-ms-encryption-key Kötelező. A Base64 kódolású AES-256 titkosítási kulcs.
x-ms-encryption-key-sha256 Kötelező. A titkosítási kulcs Base64 kódolású SHA256 kivonata.
x-ms-encryption-algorithm: AES256 Kötelező. Megadja a titkosításhoz használandó algoritmust. A fejléc értékének a következőnek kell lennie AES256: .

A kérés törzse

A kérelem törzse tartalmazza a lap tartalmát.

Mintakérés: Bájttartomány frissítése

  
Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1  
  
Request Headers:  
x-ms-page-write: update  
x-ms-date: Fri, 16 Sep 2011 22:15:50 GMT  
x-ms-version: 2011-08-18  
x-ms-range: bytes=0-65535  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
Content-Length: 65536  
  

Mintakérés: Bájttartomány törlése

  
Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1  
  
Request Headers:  
Range: bytes=1024-2048  
x-ms-page-write: clear  
x-ms-date: Sun, 25 Sep 2011 23:37:35 GMT  
x-ms-version: 2011-08-18  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
  

Reagálás

A válasz egy HTTP-állapotkódot és válaszfejléceket tartalmaz.

Állapotkód

A sikeres művelet a 201-et (Létrehozva) állapotkódot adja vissza.

További információ az állapotkódokról: Állapot- és hibakódok.

Válaszfejlécek

A műveletre adott válasz a következő fejléceket tartalmazza. A válasz további szabványos HTTP-fejléceket is tartalmazhat. Minden szabványos fejléc megfelel a HTTP/1.1 protokoll specifikációjának.

Syntax Description
ETag A blob ETagje. Ha a kérelem verziója 2011-08-18 és újabb, az ETag értéke idézőjelek közé kerül. Az ETag használatával feltételes Put Page műveletet hajthat végre a vagy If-None-Match a If-Match kérelem fejlécének értékének megadásával.
Last-Modified A blob utolsó módosításának dátuma és időpontja. A dátumformátum az RFC 1123-at követi. További információ: Dátum-/időértékek ábrázolása fejlécekben.

A blob írási művelete, beleértve a blob metaadatainak vagy tulajdonságainak frissítését is, megváltoztatja a blob utolsó módosításának időpontját.
Content-MD5 Ez a fejléc lesz visszaadva, hogy az ügyfél ellenőrizni tudja az üzenet tartalomintegritását. A fejléc értékét a Blob Storage számítja ki. Ez nem feltétlenül ugyanaz, mint a kérelemfejlécekben megadott érték. A 2019-02-02-es és újabb verziók esetében ez a fejléc csak akkor jelenik meg, ha a kérelemhez tartozik ez a fejléc.
x-ms-content-crc64 A 2019-02-02-es vagy újabb verzió esetén a rendszer ezt a fejlécet adja vissza, hogy az ügyfél ellenőrizni tudja az üzenettartalom integritását. A fejléc értékét a Blob Storage számítja ki. Ez nem feltétlenül ugyanaz, mint a kérelemfejlécekben megadott érték.

Ez a fejléc akkor jelenik meg, ha Content-MD5 a fejléc nincs jelen a kérelemben.
x-ms-blob-sequence-number Az oldalblob aktuális sorszáma.
x-ms-request-id Egyedileg azonosítja a végrehajtott kérést, és a kérés hibaelhárításához használható. További információ: API-műveletek hibaelhárítása.
x-ms-version A kérés végrehajtásához használt Blob szolgáltatásverziót jelzi. Ez a fejléc a 2009-09-19-es és újabb verzióval kapcsolatos kérések esetén jelenik meg.
Date A szolgáltatás által létrehozott UTC dátum/idő érték, amely a válasz indításának időpontját jelzi.
x-ms-request-server-encrypted: true/false 2015-12-11-es és újabb verziók. Ennek a fejlécnek az értéke akkor van beállítva, true ha a kérés tartalma sikeresen titkosítva van a megadott algoritmussal. Ellenkező esetben az érték értékre falsevan állítva.
x-ms-encryption-key-sha256 2019-02-02-es és újabb verzió. Akkor adja vissza, ha a kérés ügyfél által megadott kulcsot használt a titkosításhoz, így az ügyfél a megadott kulccsal meggyőződhet arról, hogy a kérés tartalma sikeresen titkosítva van.
x-ms-encryption-scope 2019-02-02-es és újabb verzió. Akkor adja vissza, ha a kérelem titkosítási hatókört használt, így az ügyfél meggyőződhet arról, hogy a kérés tartalma sikeresen titkosítva van a titkosítási hatókör használatával.
x-ms-client-request-id A kérések és a megfelelő válaszok hibaelhárítására használható. A fejléc értéke megegyezik a x-ms-client-request-id kérelemben szereplő fejléc értékével, és az érték legfeljebb 1024 látható ASCII-karaktert tartalmaz. Ha a x-ms-client-request-id fejléc nem szerepel a kérelemben, akkor az nem jelenik meg a válaszban.

Választörzs

Nincsenek.

Mintaválasz

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
x-ms-content-crc64: 77uWZTolTHU  
Date: Sun, 25 Sep 2011 22:33:35 GMT  
ETag: "0x8CB171BA9E94B0B"  
Last-Modified: Sun, 25 Sep 2011 12:13:31 GMT  
x-ms-version: 2011-08-18  
x-ms-blob-sequence-number: 0  
Content-Length: 0  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
  

Engedélyezés

Az azure storage-beli adathozzáférési műveletek meghívásakor engedélyezés szükséges. A műveletet az Put Page alábbiak szerint engedélyezheti.

Az Azure Storage támogatja a Microsoft Entra ID használatát a blobadatokra irányuló kérések engedélyezéséhez. A Microsoft Entra ID azure-beli szerepköralapú hozzáférés-vezérléssel (Azure RBAC) adhat engedélyeket egy rendszerbiztonsági tagnak. A rendszerbiztonsági tag lehet felhasználó, csoport, alkalmazás-szolgáltatásnév vagy Azure-beli felügyelt identitás. A rendszerbiztonsági tag hitelesítését a Microsoft Entra ID végzi egy OAuth 2.0-jogkivonat visszaadásához. A jogkivonat ezután a Blob szolgáltatásra irányuló kérések engedélyezésére használható.

További információ a Microsoft Entra ID használatával történő engedélyezésről: Blobokhoz való hozzáférés engedélyezése Microsoft Entra ID használatával.

Engedélyek

Az alábbiakban azokat az RBAC-műveletet soroljuk fel, amelyek szükségesek ahhoz, hogy egy Microsoft Entra felhasználó, csoport vagy szolgáltatásnév meghívja a Put Page műveletet, valamint a legkevésbé emelt szintű beépített Azure RBAC-szerepkört, amely tartalmazza ezt a műveletet:

A szerepkörök Azure RBAC-vel való hozzárendelésével kapcsolatos további információkért lásd: Azure-szerepkör hozzárendelése blobadatokhoz való hozzáféréshez.

Megjegyzések

A Put Page művelet oldaltartományt ír egy lapblobba. Ez a művelet csak egy meglévő lapblobon hívható meg. Nem hívható meg új lapblob létrehozásához, és blokkblobon sem hívható meg. A jelenleg nem létező blobnévvel való hívás Put Page a 404-ben (nem található) http-állapotkódot adja vissza.

Új lapblob létrehozásához hívja meg a Put Blobot , és adja meg a lapblobként létrehozandó blob típusát. Az oldalblobok mérete legfeljebb 8 TiB lehet.

Ha a blob rendelkezik aktív bérletmel, az ügyfélnek érvényes bérletazonosítót kell megadnia a lap írására vonatkozó kérelemben.

Lapfrissítési műveletek

A beállítással történő Update hívás Put Page helyben írható a megadott lapblobon. A megadott lapon lévő összes tartalom felülíródik a frissítéssel.

Fontos

Ha a kiszolgáló túllépi az időkorlátot, vagy egy művelet során Put Page megszakad a kapcsolat, előfordulhat, hogy a lap frissült. Ezért folytassa a frissítés újrapróbálkozási kísérletét, amíg a sikerességet jelző válasz nem érkezik.

A frissítési művelethez elküldött Put Page lapok tartományai legfeljebb 4 MiB méretűek lehetnek. A lap kezdő és záró tartományának 512 bájtos határral kell igazodnia. Ha 4 MiB-nél nagyobb oldaltartományt próbál feltölteni, a szolgáltatás a 413-at adja vissza (a kérelem entitása túl nagy).

Oldaltörlési műveletek

A beállítással történő Clear hívás Put Page felszabadítja a megadott lap által használt tárterületet. A törölt oldalakat a rendszer a továbbiakban nem követi nyomon a lapblob részeként.

A törölt lapok után már nem kell díjat fizetni a tárfiókért, mert a tárerőforrások felszabadultak. Ez alól az egyetlen kivétel, ha a lapblob meglévő pillanatképei vannak. A pillanatképek lapjai díjat számítanak fel, ha ugyanazok az oldalak már nem léteznek a forrásblob részeként.

Egyidejűségi problémák kezelése

A Blob Storage egymást követően kezeli az egymást átfedő oldalakra történő egyidejű írásokat. Ez azt jelzi, hogy a szolgáltatás által feldolgozott utolsó oldal határozza meg a blob tartalmát. Ezért a blob tartalmának integritásának biztosítása érdekében az ügyfélnek kezelnie kell az egymást átfedő oldalakra történő írásokat az alábbi módszerek közül egy vagy több használatával:

  • Ellenőrizheti a válaszfejléc értékét minden Last-Modified sikeres hívás esetében.Put Page A Blob Storage-ból visszaadott válaszok sorrendje nem feltétlenül egyezik meg a szolgáltatás által végrehajtott sorrenddel. A értéke Last-Modified azonban mindig azt a sorrendet jelzi, amelyben a szolgáltatás feldolgozta a kéréseket.

  • A frissítéseket feltételesen hajthatja végre a blob ETagje vagy az utolsó módosítás időpontja alapján optimista egyidejűség használatával. Ez a megközelítés akkor működik jól, ha az egyidejű írások száma viszonylag alacsony. Ehhez használja a feltételes kérelem fejlécét If-Match, If-None-Matcha , If-Modified-Sincea és If-Unmodified-Since a fejlécet.

  • Meghívhatja a bérletblobot , hogy a blobot egy percen belül zárolja más írásokkal szemben, vagy hosszabb ideig, ha a bérlet megújul.

  • A blob sorszámával biztosíthatja, hogy egy olyan kérés újrapróbálása, amelyre nem érkezett válasz, nem eredményez egyidejű frissítéseket. Ez a módszer lehet a legjobb azoknak az ügyfeleknek, amelyek nagy átviteli sebességet igényelnek az oldalírásokhoz. Ezt részletesen a következő szakaszban ismertetjuk.

Kérések újrapróbálkozása az oldalblob sorszámával

Ha egy hívás Put Page túllépi az időkorlátot, vagy nem ad vissza választ, nem lehet tudni, hogy a kérés sikeres volt-e. Ezért újra meg kell próbálnia a kérést, de az Azure Storage-szolgáltatások elosztott jellege miatt lehetséges, hogy az eredeti kérés feldolgozása az újrapróbálkozás sikeressége után lehetséges. A késleltetett eredeti kérés felülírja a többi frissítést, és váratlan eredményt ad. Az alábbi sorozat bemutatja, hogyan történhet ez meg:

  1. Az Put Page "X" értéknek a 0. oldalra történő írására vonatkozó kérés túllépi az időkorlátot, vagy nem ad vissza választ.

  2. Egy újrapróbálkozott kérés, amely az "X" értéket a 0. oldalra írja, sikeres lesz.

  3. Az "Y" érték 0. oldalra történő írására irányuló kérés sikeres.

  4. Az eredeti kérés sikeres, és az "X" értéket a 0. oldalra írja.

  5. A 0. olvasási oldal az "X" értéket adja vissza, amikor az ügyfél ekkor az "Y" értéket várta.

Ez az ütközés akkor fordulhat elő, ha az eredeti kérés nem ad vissza állapotkódot 100-ról 499-re vagy 503-ra (Kiszolgáló foglalt). Ha ezen állapotkódok valamelyikét adja vissza, biztos lehet abban, hogy a kérés sikeres volt vagy sikertelen volt. Ha azonban a szolgáltatás ezen a tartományon kívüli állapotkódot ad vissza, nem lehet tudni az eredeti kérés állapotát.

Az ilyen típusú ütközések elkerülése érdekében használhatja a lapblob sorszámát annak biztosítására, hogy a kérés újrapróbálásakor az eredeti kérés ne legyen sikeres. Ehhez növelje a sorszámot, mielőtt újrapróbálkozott volna az eredeti kéréssel. Ezután használhatja a feltételes sorszámfejléceket annak biztosítására, hogy a kérés meghiúsuljon, ha a sorszáma nem egyezik meg a várt sorszámmal. Az alábbi sorozat ezt a megközelítést szemlélteti:

  1. Az ügyfél létrehoz egy lapblobot a Put Blob használatával, és a sorszámát értékre 0állítja.

  2. Az Put Page "X" értéknek a 0. oldalra való írására vonatkozó kérés, if-sequence-number-lt amelynek fejléce időtúllépésre 1 van beállítva, vagy nem ad vissza választ.

  3. Az ügyfél meghívja Set Blob Properties , hogy frissítse a sorszámot a következőre 1: .

  4. Egy újrapróbálkozott kérés, amely az "X" értéket a 0 if-sequence-number-lt . oldalra írja a sikeres értékre állítva 2 .

  5. Az "Y" értéknek a 0 if-sequence-number-lt . oldalra való írására irányuló kérelem sikeres értékre 2 van állítva.

  6. Az eredeti kérés végül feldolgozva lesz, de sikertelen, mert azt a feltételt határozza meg, hogy a sorszámnak 1-nél kisebbnek kell lennie (azaz a if-sequence-num-lt fejléc 1értéke ). A hiba: SequenceNumberConditionNotMet (HTTP-állapotkód: 412 – Az előfeltétel sikertelen).

  7. A 0. olvasólap az "Y" várt értékét adja vissza.

Lásd még

Kérések engedélyezése az Azure Storage-nak
Állapot- és hibakódok
Időtúllépések beállítása blobszolgáltatás-műveletekhez