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
- Cache-Control
- Content-Disposition
- Content-Encoding
- Content-Language
- Content-Type
- Custom-Time
- Retenciones de objetos
- Configuración de conservación
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:
public, max-age=3600
, si el objeto no está cifrado con una clave de cifrado gestionada por el cliente o no está almacenado en un perímetro de servicio de nube privada virtual.no-cache, no-store, max-age=0
, si el objeto está cifrado con una clave de cifrado gestionada por el cliente.private, max-age=0
, si el objeto se almacena en un perímetro de servicio de nube privada virtual.no-cache, no-store, max-age=0, must-revalidate
, si el objeto se almacena en un perímetro de servicio de nube privada virtual y se cifra con una clave de cifrado gestionada por el cliente.
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.
|
metageneration |
Identifica la versión de los metadatos y aumenta cada vez que se actualizan los metadatos de un generation determinado.
|
Las propiedades generation
y metageneration
se usan en las siguientes circunstancias:
Cuando se usan condiciones previas en las solicitudes, estas hacen que la solicitud falle si no se cumplen. Si se produce un error de este tipo, se evita que la solicitud se aplique a una versión inesperada de un objeto, como recuperar datos de un objeto incorrecto o modificar el estado incorrecto de los metadatos de un objeto.
Al listar, acceder, restaurar y eliminar versiones de objetos no actuales: Las versiones de objetos no actuales son especialmente relevantes en los segmentos que usan o han usado la gestión de versiones de objetos.
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:
- CRC32C de Google para C++
- hash/crc32 para Go
- GoogleAPIs Guava para Java
- google-crc32c para Python
- digest-crc en Ruby
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:
- El objeto no es un objeto compuesto
- El objeto no se ha subido mediante una subida multiparte de la API XML
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:
- La solicitud se realiza a través de la API XML
- El objeto solo usa Google-owned and Google-managed encryption keys para el cifrado del lado del servidor.
- El objeto no es un objeto compuesto y no se ha subido mediante una subida multiparte de la API XML.
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
- Ver y editar metadatos de objetos
- Consulta las clases de almacenamiento disponibles.
- Para obtener una descripción detallada de todos los campos de metadatos de objetos disponibles en la API JSON, consulta la documentación de referencia de objetos para JSON.
- Consulta información sobre los informes de inventario, que te permiten obtener los metadatos de todos los objetos de un segmento a la vez.