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ñade especificando tanto una clave como un valor asociado a la clave.
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. Consulta 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, de forma que se puedan usar para satisfacer solicitudes futuras. Las cachés pueden incluir cachés de Internet y del navegador, 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 permite 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ó 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 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 realizar alguna acción 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, sin dejar de mantener 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 para los que se ha creado el objeto. Consulta los códigos de idioma ISO 639-1 para ver los valores habituales de estos metadatos.
Cloud Storage admite valores de 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 el 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.
Tiempo personalizado
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 después de haberlo 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 impide 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 aquellos 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.
El 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 que no están al día: Las versiones de objetos que no están al día 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.
Cuando se incluye un encabezado Content-MD5 en la solicitud, Cloud Storage valida la integridad de los datos del objeto comparando el hash MD5 proporcionado con el hash calculado del objeto subido. Si los hashes no coinciden, la solicitud se rechaza.
ETags
Todos los objetos de Cloud Storage tienen un 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.
Marcas de tiempo
Los metadatos de un objeto de Cloud Storage pueden incluir las siguientes marcas de tiempo. Los nombres de los campos varían en función del lenguaje de la herramienta o del SDK que uses para trabajar con el objeto. En el caso de los SDKs, consulta la documentación de la biblioteca de cliente correspondiente.
Línea de comandos
| Nombre del campo | Descripción |
|---|---|
creation_time |
Hora de creación del objeto. Esta marca de tiempo no cambia. |
update_time |
La hora de modificación más reciente de los metadatos del objeto. Este valor se define inicialmente como la hora de creación del objeto y, a continuación, se actualiza cada vez que cambian 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. |
noncurrent_time |
Hora de eliminación del objeto. Se devuelve si y solo si esta versión del objeto ya no es una versión activa, pero permanece en el segmento como una versión no actual. |
soft_delete_time |
La hora a la que se eliminó no definitivamente el objeto. Solo está disponible para los objetos de los segmentos que tengan una política de eliminación no definitiva. |
hard_delete_time |
La hora a la que se eliminará de forma permanente un objeto eliminado de forma no definitiva y ya no se podrá restaurar. Este valor es la suma de los valores del tiempo de eliminación lógica y la duración de la conservación que se define en la política de conservación del cubo. Solo está disponible para los objetos de los segmentos que tengan una política de eliminación no definitiva. Ten en cuenta que el valor del tiempo de eliminación definitiva es permanente una vez que se ha definido y no cambia en respuesta a los cambios en la duración de la conservación. |
retention_settings.retainUntilTime |
La hora más antigua en la que se puede eliminar o sustituir el objeto. Este valor es independiente de cualquier política de retención que se haya definido para el segmento que contiene el objeto. El valor máximo es de 3.155.760.000 segundos (100 años) a partir de la fecha y la hora actuales. |
retention_expiration |
La hora más temprana a la que se puede eliminar el objeto. Este valor depende tanto de la configuración de retención definida para el objeto como de la política de retención definida para el cubo que contiene el objeto. |
storage_class_update_time |
Hora a la que se cambió por última vez la clase de almacenamiento del objeto. Cuando se crea el objeto, el valor se asigna a la hora de creación del objeto. |
finalize_time |
Hora de finalización del objeto. |
contexts.KEY.createTime |
La hora en la que se añadió por primera vez esta clave de contexto de objeto al objeto. |
contexts.KEY.updateTime |
Hora a la que se actualizó por última vez esta clave de contexto de objeto. |
custom_time |
Marca de tiempo especificada por el usuario para el objeto. Una vez que hayas definido una hora personalizada en un objeto, no podrás eliminarla ni cambiarla a una fecha y hora anteriores. Para obtener más información sobre cómo usar la hora personalizada, consulta los metadatos de hora personalizada. |
APIs
API JSON
| Nombre del campo | Descripción |
|---|---|
timeCreated |
Hora de creación del objeto. Esta marca de tiempo no cambia. |
updated |
La hora de modificación más reciente de los metadatos del objeto. Este valor se define inicialmente como la hora de creación del objeto y, a continuación, se actualiza cada vez que cambian 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. |
timeDeleted |
Hora de eliminación del objeto. Se devuelve si y solo si esta versión del objeto ya no es una versión activa, pero permanece en el segmento como una versión no actual. |
softDeleteTime |
La hora a la que se eliminó no definitivamente el objeto. Solo está disponible para los objetos de los segmentos que tengan una política de eliminación no definitiva. |
hardDeleteTime |
La hora a la que se eliminará de forma permanente un objeto eliminado de forma no definitiva y ya no se podrá restaurar. Este valor es la suma de los valores del tiempo de eliminación lógica y la duración de la conservación que se define en la política de conservación del cubo. Solo está disponible para los objetos de los segmentos que tengan una política de eliminación no definitiva. Ten en cuenta que el valor del tiempo de eliminación definitiva es permanente una vez que se ha definido y no cambia en respuesta a los cambios en la duración de la conservación. |
retention.retainUntilTime |
La hora más antigua en la que se puede eliminar o sustituir el objeto. Este valor es independiente de cualquier política de retención que se haya definido para el segmento que contiene el objeto. El valor máximo es de 3.155.760.000 segundos (100 años) a partir de la fecha y la hora actuales. |
retentionExpirationTime |
La hora más temprana a la que se puede eliminar el objeto. Este valor depende tanto de la configuración de retención definida para el objeto como de la política de retención definida para el cubo que contiene el objeto. |
timeStorageClassUpdated |
Hora a la que se cambió por última vez la clase de almacenamiento del objeto. Cuando se crea el objeto, el valor se asigna a la hora de creación del objeto. |
timeFinalized |
Hora de finalización del objeto. |
contexts.custom.KEY.createTime |
La hora en la que se añadió por primera vez esta clave de contexto de objeto al objeto. |
contexts.custom.KEY.updateTime |
Hora a la que se actualizó por última vez esta clave de contexto de objeto. |
customTime |
Marca de tiempo especificada por el usuario para el objeto. Una vez que hayas definido una hora personalizada en un objeto, no podrás eliminarla ni cambiarla a una fecha y hora anteriores. Para obtener más información sobre cómo usar la hora personalizada, consulta los metadatos de hora personalizada. |
API XML
| Nombre del campo | Descripción |
|---|---|
Created |
Hora de creación del objeto. Esta marca de tiempo no cambia. |
LastModified |
La hora de modificación más reciente de los metadatos del objeto. Este valor se define inicialmente como la hora de creación del objeto y, a continuación, se actualiza cada vez que cambian 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. |
DeletedTime |
Hora de eliminación del objeto. Se devuelve si y solo si esta versión del objeto ya no es una versión activa, pero permanece en el segmento como una versión no actual. |
x-goog-object-lock-retain-until-date |
La hora más antigua en la que se puede eliminar o sustituir el objeto. Este valor es independiente de cualquier política de retención que se haya definido para el segmento que contiene el objeto. El valor máximo es de 3.155.760.000 segundos (100 años) a partir de la fecha y la hora actuales. |
Finalized |
Hora de finalización del objeto. |
x-goog-custom-time |
Marca de tiempo especificada por el usuario para el objeto. Una vez que hayas definido una hora personalizada en un objeto, no podrás eliminarla ni cambiarla a una fecha y hora anteriores. Para obtener más información sobre cómo usar la hora personalizada, consulta los metadatos de hora personalizada. |
API de RPC
| Nombre del campo | Descripción |
|---|---|
create_time |
Hora de creación del objeto. Esta marca de tiempo no cambia. |
update_time |
La hora de modificación más reciente de los metadatos del objeto. Este valor se define inicialmente como la hora de creación del objeto y, a continuación, se actualiza cada vez que cambian 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. |
delete_time |
Hora de eliminación del objeto. Se devuelve si y solo si esta versión del objeto ya no es una versión activa, pero permanece en el segmento como una versión no actual. |
soft_delete_time |
La hora a la que se eliminó no definitivamente el objeto. Solo está disponible para los objetos de los segmentos que tengan una política de eliminación no definitiva. |
hard_delete_time |
La hora a la que se eliminará de forma permanente un objeto eliminado de forma no definitiva y ya no se podrá restaurar. Este valor es la suma de los valores del tiempo de eliminación lógica y la duración de la conservación que se define en la política de conservación del cubo. Solo está disponible para los objetos de los segmentos que tengan una política de eliminación no definitiva. Ten en cuenta que el valor del tiempo de eliminación definitiva es permanente una vez que se ha definido y no cambia en respuesta a los cambios en la duración de la conservación. |
retention.retain_until_time |
La hora más antigua en la que se puede eliminar o sustituir el objeto. Este valor es independiente de cualquier política de retención que se haya definido para el segmento que contiene el objeto. El valor máximo es de 3.155.760.000 segundos (100 años) a partir de la fecha y la hora actuales. |
retention_expire_time |
La hora más temprana a la que se puede eliminar el objeto. Este valor depende tanto de la configuración de retención definida para el objeto como de la política de retención definida para el cubo que contiene el objeto. |
update_storage_class_time |
Hora a la que se cambió por última vez la clase de almacenamiento del objeto. Cuando se crea el objeto, el valor se asigna a la hora de creación del objeto. |
finalize_time |
Hora de finalización del objeto. |
contexts.custom.KEY.createTime |
La hora en la que se añadió por primera vez esta clave de contexto de objeto al objeto. |
contexts.custom.KEY.updateTime |
Hora a la que se actualizó por última vez esta clave de contexto de objeto. |
custom_time |
Marca de tiempo especificada por el usuario para el objeto. Una vez que hayas definido una hora personalizada en un objeto, no podrás eliminarla ni cambiarla a una fecha y hora anteriores. Para obtener más información sobre cómo usar la hora personalizada, consulta los metadatos de hora personalizada. |
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.