Put Block From URL
La Put Block From URL operación crea un nuevo bloque que se confirma como parte de un blob donde el contenido se lee de una dirección URL. Esta API está disponible a partir de la versión 2018-03-28 .
Solicitud
La solicitud Put Block From URL se puede construir como sigue. Se recomienda HTTPS. Reemplace myaccount por el nombre de la cuenta de almacenamiento:
| URI de solicitud del método PUT | Versión HTTP |
|---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=id |
HTTP/1.1 |
URI de servicio de almacenamiento emulado
Al realizar una solicitud en el servicio de almacenamiento emulado, especifique el nombre de host del emulador y el puerto del servicio Blob como 127.0.0.1:10000, seguido del nombre de la cuenta de almacenamiento emulado:
| URI de solicitud del método PUT | Versión HTTP |
|---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=block&blockid=id |
HTTP/1.1 |
Para obtener más información, vea Using the Azure Storage Emulator for Development and Testing.
Parámetros de identificador URI
| Parámetro | Descripción |
|---|---|
blockid |
Obligatorio. Valor de cadena de tipo Base64 válido que identifica el bloque. Para que se realice la codificación, el tamaño de la cadena debe ser menor o igual que 64 bytes. Para un blob determinado, la longitud del valor especificado para el parámetro blockid debe ser igual para cada bloque.Tenga en cuenta que la cadena de tipo Base64 debe estar codificada para URL. |
timeout |
Opcional. El parámetro timeout se expresa en segundos. Para obtener más información, vea Establecer tiempos de espera para las operaciones de Blob Service. |
Encabezados de solicitud
En la tabla siguiente se describen los encabezados de solicitud requeridos y opcionales.
| Encabezado de solicitud | Descripción |
|---|---|
Authorization |
Obligatorio. Especifica el esquema de autorización, el nombre de cuenta y la firma. Consulte Autorización de solicitudes para Azure Storage para obtener más información. |
Date o x-ms-date |
Obligatorio. Especifica la hora universal coordinada (UTC) de la solicitud. Para obtener más información, vea Authorize requests to Azure Storage. |
x-ms-version |
Se requiere para todas las solicitudes autorizadas. Especifica la versión de la operación que se utiliza para esta solicitud. Para obtener más información, vea Control de versiones de Azure Storage Services. En Put Block From URL (Poner bloquear desde url), la versión debe ser 2018-03-28 o posterior. |
Content-Length |
Obligatorio. Especifica el número de bytes que se transmiten en el cuerpo de la solicitud. El valor de este encabezado debe establecerse en cero. Cuando la longitud no es cero, se producirá un error en la operación con el código de estado 400 (solicitud no correcta). |
x-ms-copy-source:name |
Obligatorio. Especifica la dirección URL del blob de origen. El valor puede ser una dirección URL de hasta 2 KiB de longitud que especifique un blob. El valor debe estar codificado para URL tal y como aparecería en un URI de solicitud. El blob de origen debe ser público o debe estar autorizado a través de una firma de acceso compartido. Si el blob de origen es público, no se requiere ninguna autorización para realizar la operación. Estos son algunos ejemplos de direcciones URL de objeto de origen: - 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> |
Opcional. Especifica el esquema de autorización y la firma para el origen de copia. Para obtener más información, vea Authorize requests to Azure Storage. Solo se admite el portador de esquema para Azure Active Directory. Este encabezado se admite en las versiones 2020-10-02 y posteriores. |
x-ms-source-range |
Opcional. Carga solo los bytes del blob en la dirección URL de origen en el intervalo especificado. Si no se especifica, todo el contenido del blob de origen se carga como un único bloque. Consulte Especificación del encabezado de intervalo para las operaciones de Blob Service para obtener más información. |
x-ms-source-content-md5 |
Opcional. Hash MD5 del contenido del bloque del URI. Este hash se usa para comprobar la integridad del bloque durante el transporte de los datos desde el URI. Cuando se especifica este encabezado, el servicio de almacenamiento compara el hash del contenido que ha llegado desde el origen de copia con este valor de encabezado. Tenga en cuenta que este hash md5 no se almacena con el blob. Si ambos valores de hash no coinciden, la operación producirá un error con el código de estado 400 (Solicitud incorrecta). |
x-ms-source-content-crc64 |
Opcional. Hash CRC64 del contenido del bloque del URI. Este hash se usa para comprobar la integridad del bloque durante el transporte de los datos desde el URI. Cuando se especifica este encabezado, el servicio de almacenamiento compara el hash del contenido que ha llegado desde el origen de copia con este valor de encabezado. Tenga en cuenta que este hash CRC64 no se almacena con el blob. Si ambos valores de hash no coinciden, la operación producirá un error con el código de estado 400 (Solicitud incorrecta). Si los encabezados y están presentes, se producirá un error x-ms-source-content-md5 x-ms-source-content-crc64 400 (solicitud no correcta) en la solicitud.Este encabezado se admite en las versiones 2019-02-02 o posteriores. |
x-ms-encryption-scope |
Opcional. Indica el ámbito de cifrado que se usará para cifrar el contenido de origen. Este encabezado se admite en las versiones 2019-02-02 o posteriores. |
x-ms-lease-id:<ID> |
Obligatorio si el blob tiene una concesión activa. Para realizar esta operación en un blob con una concesión activa, especifique el identificador de concesión válido de este encabezado. |
x-ms-client-request-id |
Opcional. Proporciona un valor opaco generado por el cliente con un límite de caracteres de 1 KiB que se registra en los registros de análisis cuando se habilita el registro de análisis de almacenamiento. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes recibidas por el servidor. Para más información, consulte Acerca del registro Storage Analytics y registro de Azure: Uso de registros para realizar un seguimiento Storage solicitudes. |
Encabezados de solicitud (claves de cifrado proporcionadas por el cliente)
A partir de la versión 2019-02-02, se pueden especificar los siguientes encabezados en la solicitud para cifrar un blob con una clave proporcionada por el cliente. El cifrado con una clave proporcionada por el cliente (y el conjunto de encabezados correspondiente) es opcional.
| Encabezado de solicitud | Descripción |
|---|---|
x-ms-encryption-key |
Obligatorio. Clave de cifrado AES-256 codificada en Base64. |
x-ms-encryption-key-sha256 |
Obligatorio. Hash SHA256 codificado en Base64 de la clave de cifrado. |
x-ms-encryption-algorithm: AES256 |
Obligatorio. Especifica el algoritmo que se usará para el cifrado. El valor de este encabezado debe ser AES256. |
Cuerpo de la solicitud
No hay cuerpo de la solicitud.
Solicitud de ejemplo
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: 2018-03-28
x-ms-date: Sat, 31 Mar 2018 14:37:35 GMT
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=
Content-Length: 0
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-499
Response
La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.
Código de estado
Una operación correcta devuelve el código de estado 201 (Creado).
Para obtener información sobre los códigos de estado, vea Códigos de estado y de error.
Encabezados de respuesta
La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir otros encabezados HTTP estándar. Todos los encabezados estándar se ajustan a la especificación del protocolo HTTP/1.1.
| Encabezado de respuesta | Descripción |
|---|---|
Content-MD5 |
Este encabezado se devuelve para que el cliente pueda comprobar la integridad del contenido del mensaje. El valor de este encabezado lo calcula el servicio Blob; no es necesariamente el mismo valor que el especificado en los encabezados de solicitud. Para las versiones 2019-02-02 o posteriores, este encabezado solo se devuelve cuando la solicitud tiene este encabezado. |
x-ms-content-crc64 |
Para las versiones 2019-02-02 o posteriores, este encabezado se devuelve para que el cliente pueda comprobar la integridad del contenido del mensaje. El valor de este encabezado lo calcula el servicio Blob; no es necesariamente el mismo valor que el especificado en los encabezados de solicitud. Este encabezado se devuelve cuando x-ms-source-content-md5 el encabezado no está presente en la solicitud. |
x-ms-request-id |
Este encabezado identifica de forma única la solicitud que se realizó y se puede utilizar para solucionar problemas relacionados con esta. Para más información, consulte Solución de problemas de operaciones de API. |
x-ms-version |
Indica la versión del servicio Blob utilizado para ejecutar la solicitud. |
Date |
Valor de fecha y hora UTC generado por el servicio que indica la hora a la que se inició la respuesta. |
x-ms-request-server-encrypted: true/false |
Versión 2015-12-11 o posterior. El valor de este encabezado se establece en si el contenido del bloque se cifra correctamente mediante el algoritmo especificado y, de true lo false contrario, . |
x-ms-encryption-key-sha256 |
Versión 2019-02-02 o posterior. Este encabezado se devuelve si la solicitud usa una clave proporcionada por el cliente para el cifrado, por lo que el cliente puede asegurarse de que el contenido de la solicitud se cifra correctamente mediante la clave proporcionada. |
x-ms-encryption-scope |
Versión 2019-02-02 o posterior. Este encabezado se devuelve si la solicitud usa un ámbito de cifrado, por lo que el cliente puede asegurarse de que el contenido de la solicitud se cifra correctamente mediante el ámbito de cifrado. |
x-ms-client-request-id |
Este encabezado se puede usar para solucionar problemas de solicitudes y respuestas correspondientes. El valor de este encabezado es igual al valor del encabezado si está presente en la solicitud y el valor tiene como máximo x-ms-client-request-id 1024 caracteres ASCII visibles. Si el x-ms-client-request-id encabezado no está presente en la solicitud, este encabezado no estará presente en la respuesta. |
Respuesta de ejemplo
Response Status:
HTTP/1.1 201 Created
Response Headers:
Transfer-Encoding: chunked
x-ms-content-crc64: 77uWZTolTHU
Date: Sat, 31 Mar 2018 23:47:09 GMT
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
Autorización
La llamada a esta operación la puede realizar el propietario de la cuenta y cualquiera que disponga de una firma de acceso compartido con permiso para escribir en el blob o en su contenedor.
Comentarios
Put Block From URL carga un bloque para su futura inclusión en un blob en bloques. Un blob en bloques puede incluir un máximo de 50 000 bloques. Cada bloque puede tener un tamaño diferente. El tamaño máximo de un bloque cargado con Put Block From URL es 100 MiB. Para cargar bloques más grandes (hasta 4000 MiB), consulte Put Block.
En la versión 2020-10-02 y versiones posteriores, se admite Azure Active Directory autorización para el origen de la operación de copia.
Un blob puede tener un máximo de 100 000 bloques sin confirmar en un momento dado. Si se supera este máximo, el servicio devuelve el código de estado 409 (RequestEntityTooLargeBlockCountExceedsLimit).
En la tabla siguiente se describen los tamaños máximos de bloque y blob que permite la versión del servicio.
| Versión del servicio | Tamaño máximo de bloque (a través de Put Block from URL) | Tamaño máximo de blob (a través de Put Block List) | Tamaño máximo de blob mediante una operación de escritura única (a través de Put Blob from URL) |
|---|---|---|---|
| Versión 2020-04-08 y posteriores | 4000 MiB | Aproximadamente 190,7 TiB (4000 MiB x 50 000 bloques) | 5000 MiB (versión preliminar) |
| Versiones anteriores a 2020-04-08 | 100 MiB | Aproximadamente 4,75 TiB (100 MiB x 50 000 bloques) | 256 MiB |
Después de cargar un conjunto de bloques, puede crear o actualizar el blob en el servidor desde este conjunto mediante una llamada a la operación Put Block List. Cada bloque del conjunto se identifica mediante un identificador de bloque que es único dentro del blob. El ámbito de los identificadores de bloque es el blob, de modo que diferentes blobs pueden tener bloques con el mismo identificador.
Si llama a Put Block From URL en un blob que aún no existe, se creará un nuevo blob en bloques cuyo contenido tendrá una longitud de 0. Este blob lo enumera la operación List Blobs si se especifica la opción include=uncommittedblobs. El bloque o los bloques cargados no se confirman hasta que se llama a Put Block List en el nuevo blob. Un blob creado de esta manera se mantiene en el servidor durante una semana; si no se han agregado ni confirmado bloques en el blob durante ese período de tiempo, el blob será objeto de la recolección de elementos no utilizados.
Un bloque que se ha cargado correctamente con la operación Put Block From URL no se convierte en parte de un blob hasta que se confirma con Put Block List. Antes de que se llame a para confirmar el blob nuevo o actualizado, las llamadas a Get Blob devuelven el contenido del blob sin la inclusión del Put Block List bloque no confirmado.
Si se carga un bloque con el mismo identificador de bloque que otro bloque aún sin confirmar, el último bloque cargado con ese identificador se confirmará en la próxima operación Put Block List correcta.
Después de llamar a Put Block List, todos los bloques sin confirmar especificados en la lista de bloques se confirman como parte del nuevo blob. Los bloques sin confirmar que no se hayan especificado en la lista de bloques del blob serán objeto de la recolección de elementos no utilizados y se quitarán de Blob service. Cualquier bloque sin confirmar también será objeto de la recolección de elementos no utilizados si no hay llamadas correctas a Put Block From URL o a Put Block List en el mismo blob durante una semana desde la última operación Put Block From URL correcta. Si se llama a Put Blob en el blob, los bloques no confirmados se recopilarán como elementos no utilizados.
Si el blob tiene una concesión activa, el cliente debe especificar un identificador de concesión válido en la solicitud para poder escribir un bloque en el blob. Si el cliente no especifica un identificador de concesión o especifica un identificador de concesión no válido, Blob service devuelve el código de estado 412 (Error de condición previa). Si el cliente especifica un identificador de concesión, pero el blob no dispone de una concesión activa, el servicio Blob también devuelve el código de estado 412 (Error de condición previa).
En un blob determinado, todos los identificadores de bloque deben tener la misma longitud. Si se carga un bloque con un identificador de grupo de distinta longitud que los identificadores de bloque de los bloques sin confirmar existentes, el servicio devuelve el código de respuesta de error 400 (Solicitud incorrecta).
Una llamada a Put Block From URL no actualiza la última hora de modificación de los blobs existentes.
Una llamada a Put Block From URL en un blob en páginas devuelve un error.
Llamar Put Block From URL a en un blob archivado devolverá un error y en el blob no cambia el nivel Hot / Cool de blob.