Metadatos del objeto

Gestionar

En esta página se describen los campos de metadatos que se suelen usar y que se almacenan junto con los objetos de Cloud Storage.

Introducción

Los objetos almacenados en Cloud Storage tienen metadatos asociados. Los metadatos identifican las propiedades del objeto y especifican cómo se debe gestionar el objeto cuando se accede a él. Los metadatos se almacenan como pares clave-valor. Por ejemplo, la clase de almacenamiento de un objeto se representa mediante la entrada de metadatos storageClass:STANDARD. storageClass es la clave de los metadatos, y todos los objetos tienen una clave asociada. STANDARD especifica el valor que tiene este objeto concreto y el valor varía de un objeto a otro.

La mutabilidad de los metadatos varía: algunos metadatos se pueden editar en cualquier momento, otros solo se pueden definir cuando se crea el objeto y otros solo se pueden ver. Por ejemplo, puede editar el valor de los metadatos Cache-Control en cualquier momento, pero solo puede asignar los metadatos storageClass cuando se crea o se vuelve a escribir el objeto. Además, no puede editar directamente el valor de los metadatos generation, aunque el valor de generation cambia cuando se sustituye el objeto.

Metadatos editables

Hay dos categorías de metadatos que los usuarios pueden cambiar de los objetos:

  • Metadatos de clave fija: metadatos cuyas claves están definidas, pero para los que puede especificar un valor.

  • Metadatos personalizados: metadatos que añades especificando una clave y un valor asociado a ella.

Cuando edites metadatos, debes evitar los caracteres no ASCII, ya que no se permiten en los encabezados HTTP, que usa la API XML.

Metadatos de clave fija

Puedes editar los siguientes metadatos de los objetos, pero debes tener permisos suficientes para hacerlo:

Metadatos de control de acceso

Cloud Storage usa Gestión de Identidades y Accesos (IAM) y listas de control de acceso (ACLs) para controlar el acceso a los objetos. Usa estos enlaces para obtener información sobre estos métodos de control de acceso y los metadatos asociados.

Control de caché

Los metadatos Cache-Control pueden especificar dos aspectos diferentes de cómo se sirven los datos desde Cloud Storage: si los datos se pueden almacenar en caché y si se pueden transformar.

Almacenar datos en caché

Los metadatos Cache-Control te permiten controlar si las cachés pueden almacenar tus objetos en caché y durante cuánto tiempo. Estos objetos se pueden usar para satisfacer solicitudes futuras. Las cachés pueden incluir cachés de navegadores y de Internet, así como la caché integrada de Cloud Storage.

Si un objeto aplicable no tiene una entrada de metadatos Cache-Control, Cloud Storage usa el valor predeterminado:

Si permites el almacenamiento en caché, es posible que las descargas sigan recibiendo versiones anteriores de un objeto, incluso después de subir una versión más reciente. Esto se debe a que las versiones anteriores permanecen "actualizadas" en las cachés durante un periodo determinado por max-age. Además, como los objetos se pueden almacenar en caché en varios lugares de Internet, no hay forma de forzar que un objeto almacenado en caché caduque a nivel mundial. Esto significa que, si revocas el acceso público a un objeto, este se podrá seguir sirviendo desde una caché, en función de cuándo se accedió a él por última vez y de su ajuste Cache-Control. Por ejemplo, si tu objeto se ha servido con un Cache-Control de public, max-age=3600, puede permanecer en una caché durante una hora. Si quiere evitar que se sirvan versiones almacenadas en caché de objetos legibles públicamente, defina Cache-Control: no-store en el objeto.

Si necesitas tener más control sobre el comportamiento de la caché, puedes configurar Cloud CDN delante de tu segmento.

Transformar datos

Los metadatos Cache-Control también te permiten servir objetos tal como se almacenan, sin aplicar ninguna transformación a los datos, como eliminar la codificación de contenido gzip para clientes incompatibles. Para servir un objeto tal cual, defina Cache-Control:no-transform.

Disposición del contenido

Los metadatos Content-Disposition especifican información de presentación sobre los datos que se transmiten. Si defines Content-Disposition, puedes controlar el estilo de presentación del contenido. Por ejemplo, puedes determinar si un archivo adjunto debe mostrarse automáticamente o si el usuario debe hacer algo para abrirlo. Consulta la especificación de Content-Disposition en https://datatracker.ietf.org/doc/html/rfc6266.

Codificación del contenido

Los metadatos Content-Encoding se pueden usar para indicar que un objeto está comprimido, pero manteniendo el Content-Type subyacente del objeto. Por ejemplo, un archivo de texto comprimido con gzip puede tener el hecho de que es un archivo de texto indicado en Content-Type y el hecho de que está comprimido con gzip indicado en Content-Encoding. Debes asegurarte de que los archivos estén comprimidos con el Content-Encoding especificado antes de subirlos. De lo contrario, puede que se produzca un comportamiento inesperado al intentar descargar los objetos. Para obtener más información, consulta la página Transcodificación.

En el caso del contenido comprimible, como el texto, el uso de Content-Encoding: gzip ahorra costes de red y almacenamiento, y mejora el rendimiento del servicio de contenido. Sin embargo, en el caso del contenido que ya está comprimido de forma inherente, como los archivos y muchos formatos multimedia, aplicar otro nivel de compresión y marcarlo en los metadatos Content-Encoding suele ser perjudicial tanto para el tamaño del objeto como para el rendimiento, por lo que se debe evitar.

Idioma del contenido

Los metadatos Content-Language indican los idiomas a los que se dirige el objeto. Consulta los códigos de idioma ISO 639-1 para ver los valores típicos de estos metadatos.

Cloud Storage admite valores Content-Language de hasta 100 caracteres de longitud.

Tipo de contenido

Los metadatos que se definen con más frecuencia son Content-Type (también conocido como tipo de contenido), que permite a los navegadores renderizar el objeto correctamente. Todos los objetos tienen un valor especificado en sus metadatos Content-Type, pero este valor no tiene por qué coincidir con el tipo subyacente del objeto. Por ejemplo, si el uploader no especifica Content-Type y no se puede determinar, se le asigna el valor application/octet-stream o application/x-www-form-urlencoded, en función de cómo hayas subido el objeto. Para ver una lista de los tipos de contenido válidos, consulta la página Tipos de medios de IANA.

Custom-Time

Los metadatos Custom-Time son una fecha y una hora especificadas por el usuario representadas en formato RFC 3339 YYYY-MM-DD'T'HH:MM:SS.SS'Z' o YYYY-MM-DD'T'HH:MM:SS'Z' cuando los milisegundos son cero. Estos metadatos se suelen definir para usar la condición DaysSinceCustomTime en la gestión del ciclo de vida de los objetos.

No puedes quitar Custom-Time una vez que se haya definido en un objeto. Además, el valor de Custom-Time no puede disminuir. Es decir, no puedes asignar a Custom-Time una fecha u hora anterior a la de Custom-Time. Sin embargo, puedes quitar o restablecer el Custom-Time de forma eficaz reescribiendo el objeto.

Retenciones de objetos

Usa marcas de metadatos para aplicar retenciones a objetos, lo que evita que se eliminen o se sustituyan. Para obtener más información, consulta la página Retenciones de objetos.

Configuración de conservación

Cuando está presente, la configuración de retención de un objeto define una fecha y una hora anteriores a las cuales no se puede eliminar ni sustituir el objeto. Para obtener más información, consulta Bloqueo de conservación de objetos.

Metadatos personalizados

Los metadatos personalizados son metadatos en los que usted define tanto la clave como el valor. Para crear metadatos personalizados, debe especificar una clave y un valor. Una vez que hayas creado un par de metadatos personalizados key:value, puedes eliminar la clave o cambiar el valor.

Los metadatos personalizados están sujetos a un límite de tamaño y generan costes de almacenamiento.

La página Ver y editar metadatos incluye información sobre cómo definir metadatos personalizados.

Prefijo x-goog-meta-

La API XML define y obtiene metadatos de objetos mediante encabezados de solicitud, y la API JSON permite definir metadatos personalizados en la solicitud final de una subida reanudable mediante encabezados de solicitud. Para distinguir claramente los encabezados de metadatos personalizados de los encabezados de solicitud estándar, ambas APIs añaden el prefijo x-goog-meta- a los encabezados de metadatos personalizados.

Metadatos no editables

Algunos metadatos no se pueden editar directamente. Estos metadatos se definen en el momento de crear o reescribir el objeto. Como parte de la creación o reescritura de un objeto, puede definir algunos metadatos, como la clase de almacenamiento del objeto o las claves de cifrado gestionadas por el cliente. Otros metadatos se añaden automáticamente y solo se pueden ver, como el número de generación del objeto o la hora de creación.

Números de generación y metageneración

Como parte de sus metadatos, cada objeto de Cloud Storage tiene una propiedad numérica generation y una propiedad numérica metageneration que identifican de forma única al objeto:

Propiedad Descripción
generation Identifica la versión de un objeto y está presente en todos los objetos, independientemente de si un segmento usa la gestión de versiones de objetos.
  • El valor generation de una versión de objeto nunca cambia. Un objeto nuevo con el mismo nombre puede sustituir a uno ya creado, pero siempre tendrá un generation diferente.
  • No hay ninguna garantía de que los números de generación aumenten en las versiones sucesivas, solo de que cada nueva versión tenga un número de generación único.
  • No hay ninguna relación entre los números de generación de objetos no relacionados, aunque estén en el mismo segmento.
metageneration Identifica la versión de los metadatos y aumenta cada vez que se actualizan los metadatos de un generation determinado.
  • metageneration empieza en 1 para cada nuevo generation de un objeto.
  • La propiedad metageneration no tiene ningún significado sin la propiedad generation y solo debe usarse junto con ella. No tiene sentido comparar las generaciones de metadatos de dos versiones de un objeto.

Las propiedades generation y metageneration se usan en las siguientes circunstancias:

sumas de comprobación.

Las sumas de verificación son metadatos calculados a partir de los datos del objeto asociado. Las sumas de comprobación se usan para validar que los datos de los objetos no estén dañados. Los objetos de Cloud Storage tienen varios campos de metadatos de suma de comprobación.

CRC32C

Todos los objetos de Cloud Storage tienen un hash CRC32C. Las bibliotecas para calcular CRC32C incluyen lo siguiente:

El CRC32C codificado en Base64 está en orden de bytes big-endian.

MD5

Los objetos de Cloud Storage tienen un hash MD5 si cumplen los siguientes criterios:

Este hash solo se aplica a un objeto completo, por lo que no se puede usar para comprobar la integridad de las descargas parciales causadas por una solicitud GET de intervalo.

ETags

Todos los objetos de Cloud Storage tienen una ETag. Sin embargo, el mismo objeto puede tener un valor de ETag diferente cuando se solicita desde la API XML en comparación con la API JSON. En la mayoría de los casos, los usuarios no deben hacer suposiciones sobre el valor utilizado en un ETag, excepto que cambia cada vez que cambian los datos o los metadatos subyacentes, según la especificación.

El encabezado ETag de un objeto devuelve el valor MD5 del objeto si se cumplen todas las condiciones siguientes:

Hora de modificación

Como parte de sus metadatos, todos los objetos de Cloud Storage tienen una propiedad updated que indica la última vez que se modificaron los metadatos del objeto. El updated se asigna inicialmente a la hora de creación del objeto y, a continuación, cambia cada vez que se modifican los metadatos del objeto. Esto incluye los cambios realizados por un solicitante, como la modificación de metadatos personalizados, así como los cambios realizados por Cloud Storage en nombre de un solicitante, como el cambio de la clase de almacenamiento en función de una configuración del ciclo de vida de los objetos.

Siguientes pasos