Append Block From URL
Der Append Block From URL
Vorgang committet einen neuen Datenblock an das Ende eines vorhandenen Anfügeblobs.
Der Append Block From URL
Vorgang ist nur zulässig, wenn das Blob mit x-ms-blob-type
festgelegt auf AppendBlob
erstellt wurde.
Append Block From URL
wird nur ab Version 2018-11-09 unterstützt.
Anforderung
Sie können die Append Block From URL
Anforderung wie folgt erstellen. HTTPS wird empfohlen. Ersetzen Sie myaccount durch den Namen Ihres Speicherkontos.
PUT-Methodenanforderungs-URI | HTTP-Version |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=appendblock |
HTTP/1.1 |
Wenn Sie eine Anforderung für den emulierten Speicherdienst stellen, geben Sie den Hostnamen des Emulators und Azure Blob Storage Port als 127.0.0.1:10000
an, gefolgt vom Namen des emulierten Speicherkontos.
PUT-Methodenanforderungs-URI | HTTP-Version |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=appendblock |
HTTP/1.1 |
Weitere Informationen finden Sie unter Verwenden des Azurite-Emulators für lokale Azure Storage-Entwicklung.
URI-Parameter
Parameter | BESCHREIBUNG |
---|---|
timeout |
Optional. Der timeout-Parameter wird in Sekunden angegeben. Weitere Informationen finden Sie unter Festlegen von Timeouts für Blob Storage-Vorgänge. |
Anforderungsheader
In der folgenden Tabelle werden erforderliche und optionale Anforderungsheader beschrieben.
Anforderungsheader | BESCHREIBUNG |
---|---|
Authorization |
Erforderlich. Gibt das Autorisierungsschema, den Kontonamen und die Signatur an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage . |
Date oder x-ms-date |
Erforderlich. Gibt die koordinierte Weltzeit (Coordinated Universal Time, UTC) für die Anforderung an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. |
x-ms-version |
Erforderlich für alle autorisierten Anforderungen. Gibt die Version des für die Anforderung zu verwendenden Vorgangs an. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure-Speicherdienste. |
Content-Length |
Erforderlich. Gibt die Anzahl der Bytes an, die im Anforderungstext übertragen werden. Der Wert dieses Headers muss auf 0 festgelegt werden. Wenn die Länge nicht 0 ist, schlägt der Vorgang mit dem Fehlercode 400 (Ungültige Anforderung) fehl. |
x-ms-copy-source:name |
Erforderlich. Gibt die URL des Quellblobs an. Der Wert kann eine URL mit einer Länge von bis zu 2 KiB sein, die ein Blob angibt. Der Wert sollte URL-codiert sein, wie er in einem Anforderungs-URI angezeigt wird. Das Quellblob muss entweder öffentlich sein oder über eine Freigegebene Zugriffssignatur autorisiert werden. Wenn das Quellblob öffentlich ist, ist zum Ausführen des Vorgangs keine Autorisierung erforderlich. Hier sind einige Beispiele für Quellobjekt-URLs: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> |
Optional. Gibt das Autorisierungsschema und die Signatur für die Kopierquelle an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. Nur der Schematräger wird für Microsoft Entra ID unterstützt. Dieser Header wird in Version 2020-10-02 und höher unterstützt. |
x-ms-source-range |
Optional. Lädt nur die Bytes des Blobs in die Quell-URL im angegebenen Bereich hoch. Wenn dies nicht angegeben ist, wird der gesamte Quellblobinhalt als einzelner Anfügeblock hochgeladen. Weitere Informationen finden Sie unter Angeben des Bereichsheaders für Blob Storage-Vorgänge . |
x-ms-source-content-md5 |
Optional. Ein MD5-Hash des Anfügeblockinhalts aus dem URI. Dieser Hash wird verwendet, um die Integrität des Anfügeblocks beim Transport der Daten aus dem URI zu überprüfen. Wenn Sie diesen Header angeben, vergleicht der Speicherdienst den Hash des Inhalts, der aus der Copy-Source-Quelle eingegangen ist, mit diesem Headerwert. Beachten Sie, dass dieser MD5-Hash nicht mit dem Blob gespeichert wird. Wenn die beiden Hashs nicht übereinstimmen, schlägt der Vorgang mit Fehlercode 400 (Ungültige Anforderung) fehl. |
x-ms-source-content-crc64 |
Optional. Ein CRC64-Hash des Anfügeblockinhalts aus dem URI. Dieser Hash wird verwendet, um die Integrität des Anfügeblocks beim Transport der Daten aus dem URI zu überprüfen. Wenn Sie diesen Header angeben, vergleicht der Speicherdienst den Hash des Inhalts, der aus der Copy-Source-Quelle eingegangen ist, mit diesem Headerwert. Beachten Sie, dass dieser CRC64-Hash nicht mit dem Blob gespeichert wird. Wenn die beiden Hashs nicht übereinstimmen, schlägt der Vorgang mit Fehlercode 400 (Ungültige Anforderung) fehl. Wenn sowohl als x-ms-source-content-crc64 auch x-ms-source-content-md5 Header vorhanden sind, schlägt die Anforderung mit einer 400 (ungültige Anforderung) fehl.Dieser Header wird in Version 2019-02-02 oder höher unterstützt. |
x-ms-encryption-scope |
Optional. Gibt den Verschlüsselungsbereich an, der zum Verschlüsseln des Quellinhalts verwendet werden soll. Dieser Header wird in Version 2019-02-02 oder höher unterstützt. |
x-ms-lease-id:<ID> |
Erforderlich, wenn das BLOB über eine aktive Lease verfügt. Um diesen Vorgang für ein BLOB mit einer aktiven Lease auszuführen, geben Sie die gültige Lease-ID für diesen Header an. |
x-ms-client-request-id |
Optional. Stellt einen vom Client generierten, undurchsichtigen Wert mit einem Zeichenlimit von 1 Kibibyte (KiB) bereit, der beim Konfigurieren der Protokollierung in den Protokollen aufgezeichnet wird. Es wird dringend empfohlen, diesen Header zu verwenden, um clientseitige Aktivitäten mit Anforderungen zu korrelieren, die der Server empfängt. Weitere Informationen finden Sie unter Überwachen Azure Blob Storage. |
x-ms-blob-condition-maxsize |
Optionaler bedingter Header. Die maximale Länge in Bytes, die für das Anfügeblob zulässig ist. Wenn der Append Block From URL Vorgang dazu führt, dass das Blob diesen Grenzwert überschreitet oder die Blobgröße bereits größer als der in diesem Header angegebene Wert ist, schlägt die Anforderung mit 412 (Vorbedingung fehlgeschlagen) fehl. |
x-ms-blob-condition-appendpos |
Optionaler bedingter Header, der nur für den Append Block from URL Vorgang verwendet wird. Eine Zahl, die den zu vergleichenden Byteoffset angibt.
Append Block from URL ist nur erfolgreich, wenn die Anfügeposition gleich dieser Zahl ist. Ist dies nicht der Fall, schlägt die Anforderung mit einer 412 fehl (Vorbedingung fehlgeschlagen). |
Dieser Vorgang unterstützt die Verwendung zusätzlicher bedingter Header, um sicherzustellen, dass die API nur erfolgreich ist, wenn eine angegebene Bedingung erfüllt ist. Weitere Informationen finden Sie unter Angeben von bedingten Headern für Blob Storage-Vorgänge.
Anforderungsheader (vom Kunden bereitgestellte Verschlüsselungsschlüssel)
Ab Version 2019-02-02 können Sie die folgenden Header für die Anforderung angeben, ein Blob mit einem vom Kunden bereitgestellten Schlüssel zu verschlüsseln. Die Verschlüsselung mit einem vom Kunden bereitgestellten Schlüssel (und der entsprechenden Gruppe von Headern) ist optional.
Anforderungsheader | BESCHREIBUNG |
---|---|
x-ms-encryption-key |
Erforderlich. Der Base64-codierte AES-256-Verschlüsselungsschlüssel. |
x-ms-encryption-key-sha256 |
Erforderlich. Der Base64-codierte SHA256-Hash des Verschlüsselungsschlüssels. |
x-ms-encryption-algorithm: AES256 |
Erforderlich. Gibt den Algorithmus an, der für die Verschlüsselung verwendet werden soll. Der Wert dieses Headers muss auf AES256 festgelegt sein. |
Anforderungstext
Der Anforderungstext enthält den Inhalt des Blocks.
Beispiel für eine Anforderung
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"
Antwort
Die Antwort enthält den HTTP-Statuscode und einen Satz von Antwortheadern.
Statuscode
Bei einem erfolgreichen Vorgang wird der Statuscode 201 (Erstellt) zurückgegeben. Informationen zu status Codes finden Sie unter Status- und Fehlercodes.
Antwortheader
Die Antwort für diesen Vorgang umfasst die folgenden Header. Die Antwort kann außerdem weitere HTTP-Standardheader enthalten. Alle Standardheader entsprechen der HTTP/1.1-Protokollspezifikation.
Antwortheader | BESCHREIBUNG |
---|---|
Etag |
enthält ETag einen Wert in Anführungszeichen. Der Client verwendet den Wert, um bedingte PUT Vorgänge mithilfe des Anforderungsheaders If-Match auszuführen. |
Last-Modified |
Datum/Uhrzeit der letzten Änderung des BLOB. Das Datumsformat entspricht RFC 1123. Weitere Informationen finden Sie unter Darstellung von Datums-/Uhrzeitwerten in Headern. Jeder Schreibvorgang für das Blob (einschließlich Aktualisierungen der Metadaten oder Eigenschaften des Blobs) ändert den Zeitpunkt der letzten Änderung des Blobs. |
Content-MD5 |
Dieser Header wird zurückgegeben, damit der Client die Integrität des Nachrichteninhalts überprüfen kann. Blob Storage berechnet den Wert dieses Headers. Es ist nicht unbedingt derselbe Wert, der in den Anforderungsheadern angegeben ist. Für Version 2019-02-02 oder höher wird dieser Header nur zurückgegeben, wenn die Anforderung über diesen Header verfügt. |
x-ms-content-crc64 |
Für Version 2019-02-02 oder höher. Dieser Header wird zurückgegeben, damit der Client die Integrität des Nachrichteninhalts überprüfen kann. Blob Storage berechnet den Wert dieses Headers. Es ist nicht unbedingt derselbe Wert, der in den Anforderungsheadern angegeben ist. Dieser Header wird zurückgegeben, wenn der x-ms-source-content-md5 Header in der Anforderung nicht vorhanden ist. |
x-ms-request-id |
Dieser Header identifiziert die durchgeführte Anforderung eindeutig und kann für die Problembehandlung der Anforderung verwendet werden. |
x-ms-version |
Gibt die Version von Blob Storage an, die zum Ausführen der Anforderung verwendet wird. Dieser Header wird für Anforderungen zurückgegeben, die für Version 2009-09-19 und höher erfolgen. |
Date |
Ein vom Dienst generierter Datums-/Uhrzeitwert in UTC, der angibt, wann die Antwort initiiert wurde. |
x-ms-blob-append-offset |
Dieser Antwortheader wird nur für Anfügevorgänge zurückgegeben. Er gibt den Offset in Bytes zurück, bei dem der Block committet wurde. |
x-ms-blob-committed-block-count |
Die Anzahl der committeten Blöcke, die im Blob vorhanden sind. Damit können Sie steuern, wie viele weitere Anfüge ausgeführt werden können. |
x-ms-request-server-encrypted: true/false |
Version 2015-12-11 oder höher. Der Wert dieses Headers wird auf true festgelegt, wenn der Inhalt der Anforderung mithilfe des angegebenen Algorithmus erfolgreich verschlüsselt wurde. Andernfalls wird der Wert auf false festgelegt. |
x-ms-encryption-key-sha256 |
Version 2019-02-02 oder höher. Dieser Header wird zurückgegeben, wenn die Anforderung einen vom Kunden bereitgestellten Schlüssel für die Verschlüsselung verwendet hat. Der Client kann dann sicherstellen, dass der Inhalt der Anforderung mithilfe des bereitgestellten Schlüssels erfolgreich verschlüsselt wurde. |
x-ms-encryption-scope |
Version 2019-02-02 oder höher. Dieser Header wird zurückgegeben, wenn die Anforderung einen Verschlüsselungsbereich verwendet hat. Der Client kann dann sicherstellen, dass der Inhalt der Anforderung mithilfe des Verschlüsselungsbereichs erfolgreich verschlüsselt wurde. |
Beispiel für eine Antwort
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
Beim Aufrufen eines Datenzugriffsvorgangs in Azure Storage ist eine Autorisierung erforderlich. Sie können den Append Block From URL
Vorgang wie unten beschrieben autorisieren.
Die Autorisierungsdetails in diesem Abschnitt gelten für das Kopierziel. Weitere Informationen zur Kopierquellautorisierung finden Sie in den Details zum Anforderungsheader x-ms-copy-source
.
Wichtig
Microsoft empfiehlt die Verwendung von Microsoft Entra ID mit verwalteten Identitäten, um Anforderungen an Azure Storage zu autorisieren. Microsoft Entra ID bietet im Vergleich zur Autorisierung mit gemeinsam genutzten Schlüsseln eine höhere Sicherheit und Benutzerfreundlichkeit.
Azure Storage unterstützt die Verwendung von Microsoft Entra ID zum Autorisieren von Anforderungen für Blobdaten. Mit Microsoft Entra ID können Sie die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) verwenden, um einem Sicherheitsprinzipal Berechtigungen zu erteilen. Der Sicherheitsprinzipal kann ein Benutzer, eine Gruppe, ein Anwendungsdienstprinzipal oder eine verwaltete Azure-Identität sein. Der Sicherheitsprinzipal wird von Microsoft Entra ID authentifiziert, um ein OAuth 2.0-Token zurückzugeben. Das Token kann anschließend zum Autorisieren einer Anforderung an den Blob-Dienst verwendet werden.
Weitere Informationen zur Autorisierung mit Microsoft Entra ID finden Sie unter Autorisieren des Zugriffs auf Blobs mithilfe von Microsoft Entra ID.
Berechtigungen
Nachfolgend sind die RBAC-Aktion aufgeführt, die für einen Microsoft Entra Benutzer, eine Gruppe, eine verwaltete Identität oder einen Dienstprinzipal erforderlich ist, um den Append Block From URL
Vorgang aufzurufen, und die integrierte Azure RBAC-Rolle mit den geringsten Berechtigungen, die diese Aktion enthält:
- Azure RBAC-Aktion:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action oder Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Integrierte Rolle mit den geringsten Berechtigungen:Mitwirkender an Storage-Blobdaten
Weitere Informationen zum Zuweisen von Rollen mithilfe von Azure RBAC finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf Blobdaten.
Hinweise
Append Block From URL
lädt einen Block an das Ende eines vorhandenen Anfügeblobs hoch. Der Datenblock ist sofort verfügbar, nachdem der Aufruf auf dem Server erfolgreich war. Für jedes Anfügeblob sind maximal 50.000 Anfügevorgänge zulässig. Jeder Block kann eine unterschiedliche Größe aufweisen.
In der folgenden Tabelle werden die maximal zulässigen Block- und Blobgrößen nach Dienstversion beschrieben:
Dienstversion | Maximale Blockgröße (über Append Block From URL ) |
Maximale Blobgröße |
---|---|---|
Version 2022-11-02 und höher | 100 MiB (Vorschau) | Ca. 4,75 TiB (100 MiB × 50.000 Blöcke) |
Versionen vor 02.11.2022 | 4 MiB | Ca. 195 Gibibyte (GiB) (4 MiB × 50.000 Blöcke) |
In Version 2020-10-02 und höher wird Microsoft Entra ID Autorisierung für die Quelle des Kopiervorgangs unterstützt.
Append Block From URL
ist nur erfolgreich, wenn das Blob bereits vorhanden ist.
Blobs, die mit Append Block From URL
hochgeladen werden, machen keine Block-IDs verfügbar, sodass Sie get Block List nicht für ein Anfügeblob aufrufen können. Dies führt zu einem Fehler.
Sie können die folgenden optionalen, bedingten Header für die Anforderung angeben:
x-ms-blob-condition-appendpos
: Sie können diesen Header auf einen Byteoffset festlegen, bei dem der Client erwartet, dass er den Block anfügen soll. Die Anforderung ist nur erfolgreich, wenn der aktuelle Offset mit dem vom Client angegebenen übereinstimmt. Andernfalls schlägt die Anforderung mit dem Fehlercode 412 (Vorbedingungsfehler) fehl.Clients, die einen einzelnen Writer verwenden, können diesen Header verwenden, um zu bestimmen, wann ein
Append Block From URL
Vorgang trotz Eines Netzwerkfehlers erfolgreich war.x-ms-blob-condition-maxsize
: Clients können diesen Header verwenden, um sicherzustellen, dass Anfügevorgänge die Blobgröße nicht über die erwartete maximale Größe in Bytes hinaus erhöhen. Wenn die Bedingung fehlschlägt, schlägt die Anforderung mit dem Fehlercode 412 (Vorbedingung fehlgeschlagen) fehl.
Wenn Sie versuchen, einen Block hochzuladen, der größer als die zulässige Größe ist, gibt der Dienst den HTTP-Fehlercode 413 (Request Entity Too Large) zurück. Der Dienst gibt in der Antwort zudem weitere Informationen zum Fehler zurück, einschließlich der maximal zulässigen Blockgröße in Bytes. Wenn Sie versuchen, mehr als 50.000 Blöcke hochzuladen, gibt der Dienst den Fehlercode 409 (Konflikt) zurück.
Wenn das BLOB über eine aktive Lease verfügt, muss der Client zum Schreiben eines Blocks in das BLOB in der Anforderung eine gültige Lease-ID angeben. Wenn der Client keine Lease-ID oder eine ungültige Lease-ID angibt, gibt Blob Storage den Fehlercode 412 (Vorbedingung fehlgeschlagen) zurück. Wenn der Client eine Lease-ID angibt, das Blob jedoch keine aktive Lease aufweist, gibt der Dienst den Fehlercode 412 zurück.
Wenn Sie für ein vorhandenes Blockblob oder Seitenblob aufrufen Append Block From URL
, gibt der Dienst den Fehlercode 409 (Konflikt) zurück. Wenn Sie für ein nicht vorhandenes Blob aufrufen Append Block From URL
, gibt der Dienst den Fehlercode 404 (Nicht gefunden) zurück.
Vermeiden von doppelten oder verzögerten Anfügevorgängen
In einem Szenario mit einem einzelnen Writer kann der Client doppelte Anfügevorgänge oder verzögerte Schreibvorgänge vermeiden, indem er den x-ms-blob-condition-appendpos
bedingten Header verwendet, um den aktuellen Offset zu überprüfen. Der Client kann auch Duplikate oder Verzögerungen vermeiden, indem er die ETag
bedingt überprüft, indem er verwendet If-Match
.
In einem Szenario mit mehreren Writern kann jeder Client bedingte Header verwenden. Dies ist möglicherweise nicht optimal für die Leistung. Für den höchsten gleichzeitigen Anfügedurchsatz sollten Anwendungen redundante anfügevorgänge und verzögerte Anfügevorgänge auf ihrer Anwendungsschicht verarbeiten. Anwendungen können beispielsweise Epochen oder Sequenznummern in den angefügten Daten hinzufügen.
Informationen zu den Preisen für die angegebene Abrechnungskategorie finden Sie unter Azure Blob Storage Preise.
Abrechnung
Preisanforderungen können von Clients stammen, die Blob Storage-APIs verwenden, entweder direkt über die Blob Storage-REST-API oder aus einer Azure Storage-Clientbibliothek. Für diese Anforderungen fallen Gebühren pro Transaktion an. Die Art der Transaktion wirkt sich auf die Abrechnung des Kontos aus. Beispielsweise werden Lesetransaktionen einer anderen Abrechnungskategorie zugeordnet als Schreibtransaktionen. Die folgende Tabelle zeigt die Abrechnungskategorie für Append Block From URL
Anforderungen basierend auf dem Speicherkontotyp:
Vorgang | Speicherkontotyp | Abrechnungskategorie |
---|---|---|
Block von URL anfügen (Zielkonto1) | Premium, Blockblob Standard „Allgemein v2“ Standard „Allgemein v1“ |
Schreibvorgänge |
Block von URL anfügen (Quellkonto2) | Premium, Blockblob Standard „Allgemein v2“ Standard „Allgemein v1“ |
Dient zum Lesen von Vorgängen. |
1Dem Zielkonto wird eine Transaktion in Rechnung gestellt, um den Schreibvorgang zu initiieren.
2Das Quellkonto verursacht eine Transaktion für jede Leseanforderung an die Quelle.