Métadonnées des objets

Gérer

Cette page traite des champs de métadonnées couramment utilisés qui sont stockés avec les objets dans Cloud Storage.

Introduction

Les objets stockés dans Cloud Storage sont associés à des métadonnées. Les métadonnées identifient les propriétés de l'objet et spécifient la manière dont il doit être géré lorsqu'on y accède. Les métadonnées existent sous forme de paires clé/valeur. Par exemple, la classe de stockage d'un objet est représentée par l'entrée de métadonnées storageClass:STANDARD. storageClass est la clé des métadonnées, et tous les objets se voient associés à une clé de ce type. STANDARD spécifie la valeur de cet objet spécifique, qui varie d'un objet à l'autre.

La mutabilité des métadonnées est variable : certaines métadonnées peuvent être modifiées à tout moment, certaines ne peuvent être définies qu'au moment de la création de l'objet et d'autres peuvent être uniquement affichées. Par exemple, vous pouvez modifier la valeur des métadonnées Cache-Control à tout moment, mais vous ne pouvez attribuer les métadonnées storageClass que lorsque l'objet est créé ou réécrit. Vous ne pouvez pas non plus modifier directement la valeur des métadonnées generation, bien que la valeur generation change lorsque l'objet est remplacé.

Métadonnées modifiables

Pour les objets, il existe deux catégories de métadonnées que les utilisateurs peuvent modifier :

  • Métadonnées à clé fixe : métadonnées dont les clés sont définies, mais pour lesquelles vous pouvez spécifier une valeur

  • Métadonnées personnalisées : métadonnées que vous ajoutez en spécifiant à la fois une clé et une valeur associée à la clé

Lors de la modification de métadonnées, vous devez généralement éviter les caractères non ASCII, car ceux-ci ne sont pas autorisés dans les en-têtes HTTP utilisés par l'API XML.

Métadonnées à clé fixe

Si vous disposez des autorisations suffisantes pour le faire, vous pouvez modifier les métadonnées suivantes pour les objets :

Métadonnées de contrôle des accès

Cloud Storage utilise l'outil IAM (Identity and Access Management) et des listes de contrôle d'accès (LCA) pour contrôler l'accès aux objets. Utilisez ces liens pour en savoir plus sur ces méthodes de contrôle des accès et les métadonnées associées.

Cache-Control

Les métadonnées Cache-Control peuvent spécifier deux aspects différents de la diffusion de données à partir de Cloud Storage : elles indiquent si les données peuvent être mises en cache et si celles-ci peuvent être transformées.

Mettre des données en cache

Les métadonnées Cache-Control vous permettent de définir les autorisations de mise en cache de vos objets par les caches, ainsi que la durée de mise en cache. Les objets mis en cache peuvent alors être diffusés pour répondre à des requêtes ultérieures. Les caches peuvent inclure des caches de navigateur et d'Internet, ainsi que la mise en cache intégrée de Cloud Storage.

Si un objet concerné ne présente pas d'entrée de métadonnées Cache-Control, Cloud Storage utilise la valeur par défaut de :

Si vous autorisez la mise en cache, il est possible que les versions antérieures des objets soient visibles au moment du téléchargement, même après l'importation d'un nouvel objet de remplacement. En effet, les versions plus anciennes restent dans le cache pendant un certain temps défini par max-age. De plus, il n'existe aucun moyen de forcer l'expiration globale d'un objet mis en cache, étant donné que les objets peuvent être mis en cache à différents endroits sur Internet. Cela signifie que si vous révoquez l'accès public à un objet, cet objet peut toujours être diffusé à partir d'un cache, en fonction de la date de son dernier accès et de son paramètre Cache-Control. Par exemple, si votre objet a été diffusé avec les métadonnées Cache-Control définies sur public, max-age=3600, il peut être conservé dans un cache pendant une heure. Si vous souhaitez empêcher la diffusion des versions mises en cache d'objets lisibles publiquement, définissez Cache-Control: no-store sur ces objets.

Si vous avez besoin d'un contrôle accru sur le comportement du cache, vous pouvez configurer Cloud CDN devant votre bucket.

Transformer les données

Les métadonnées Cache-Control vous permettent également de diffuser les objets tels qu'ils sont stockés, sans appliquer aux données de transformation telle que la suppression du codage de contenu gzip pour les clients incompatibles. Pour diffuser un objet tel quel, définissez le paramètre Cache-Control:no-transform.

Content-Disposition

Les métadonnées Content-Disposition spécifient la présentation des données en cours de transmission. Définir Content-Disposition vous permet de contrôler le style de présentation du contenu, par exemple de déterminer si une pièce jointe doit être affichée automatiquement ou si une action de l'utilisateur est requise pour l'ouvrir. Pour plus d'informations sur la spécification de Content-Disposition, consultez la page https://datatracker.ietf.org/doc/html/rfc6266.

Content-Encoding

Les métadonnées Content-Encoding peuvent être utilisées pour indiquer qu'un objet est compressé, tout en conservant les métadonnées Content-Type sous-jacentes de l'objet. Par exemple, un fichier texte compressé au format gzip peut présenter des métadonnées indiquant qu'il s'agit d'un fichier texte dans Content-Type, et des métadonnées indiquant qu'il est compressé au format gzip dans Content-Encoding. Vous devez vous assurer avant de transférer les fichiers que ceux-ci sont effectivement compressés conformément au paramètre Content-Encoding spécifié. Dans le cas contraire, cela peut entraîner un comportement inattendu lors du téléchargement des objets. Pour en savoir plus, consultez la page sur le transcodage.

Pour le contenu compressible, tel que du texte, l'utilisation de Content-Encoding: gzip permet de réduire les coûts de stockage et de réseau, et d'améliorer les performances de diffusion du contenu. Toutefois, il est préférable d'éviter d'appliquer un autre niveau de compression aux contenus déjà intrinsèquement compressés, tels que les archives et de nombreux formats de supports, et de les marquer dans les métadonnées Content-Encoding. En effet, cela est généralement préjudiciable à la fois pour la taille et les performances des objets.

Content-Language

Les métadonnées Content-Language indiquent la ou les langues auxquelles l'objet est destiné. Reportez-vous aux codes de langue ISO 639-1 pour connaître les valeurs types de ces métadonnées.

Cloud Storage accepte les valeurs Content-Language comportant jusqu'à 100 caractères.

Content-Type

Les métadonnées les plus couramment définies sont Content-Type (également appelées type de contenu multimédia), qui permettent aux navigateurs d'afficher correctement l'objet. Tous les objets ont une valeur définie dans leurs métadonnées Content-Type, mais cette valeur ne correspond pas nécessairement au type sous-jacent de l'objet. Par exemple, si la valeur de Content-Type n'est pas spécifiée à l'importation et ne peut pas être déterminée, elle est définie sur application/octet-stream ou sur application/x-www-form-urlencoded, selon le mode de transfert de l'objet. Pour obtenir la liste des types de contenus valides, consultez la page Types de contenus IANA.

Custom-Time

Les métadonnées Custom-Time sont une date et une heure spécifiées par l'utilisateur au format RFC 3339 YYYY-MM-DD'T'HH:MM:SS.SS'Z' ou YYYY-MM-DD'T'HH:MM:SS'Z' lorsque le nombre de millisecondes est égal à zéro. Ces métadonnées sont généralement définies sur la condition DaysSinceCustomTime de la gestion du cycle de vie des objets.

Vous ne pouvez pas supprimer Custom-Time une fois qu'il a été défini sur un objet. De plus, la valeur de Custom-Time ne peut pas diminuer. Autrement dit, vous ne pouvez pas définir Custom-Time sur une date/heure antérieure à la valeur actuelle de Custom-Time. Toutefois, vous pouvez de fait supprimer ou réinitialiser Custom-Time en réécrivant l'objet.

Préservations d'objets à titre conservatoire

Utilisez des options de métadonnées pour placer des préservations à titre conservatoire relatives aux objets, qui empêchent la suppression ou le remplacement de ceux-ci. Pour en savoir plus, consultez la page Préservation à titre conservatoire des objets.

Configuration de la conservation

La configuration de conservation d'un objet définit la date et l'heure auxquelles l'objet ne peut plus être supprimé ni remplacé. Pour en savoir plus, consultez la page Verrou de conservation des objets.

Métadonnées personnalisées

Les métadonnées personnalisées sont des métadonnées pour lesquelles vous définissez à la fois la clé et la valeur. Pour créer des métadonnées personnalisées, vous devez spécifier une clé et une valeur. Après avoir créé une paire de métadonnées personnalisées key:value, vous pouvez supprimer la clé ou modifier la valeur.

Les métadonnées personnalisées sont soumises à une limite de taille et entraînent des frais de stockage.

Sur la page Afficher et modifier des métadonnées, vous trouverez des informations sur la définition de métadonnées personnalisées.

Préfixe x-goog-meta-

L'API XML définit et récupère les métadonnées d'objet à l'aide des en-têtes de requête, et l'API JSON permet de définir des métadonnées personnalisées dans la requête finale d'une importation avec reprise à l'aide d'en-têtes de requêtes. Pour distinguer clairement les en-têtes de métadonnées personnalisés des en-têtes de requête standards, les deux API ajoutent le préfixe x-goog-meta- à ces en-têtes de métadonnées personnalisées.

Métadonnées non modifiables

Certaines métadonnées ne peuvent pas être modifiées directement. Ces métadonnées sont définies au moment de la création ou de la réécriture de l'objet. Dans le cadre de la création ou de la réécriture de l'objet, vous pouvez définir certaines métadonnées, telles que la classe de stockage de l'objet ou les clés de chiffrement gérées par le client. D'autres métadonnées sont ajoutées automatiquement et ne sont accessibles qu'en lecture, par exemple le numéro de génération de l'objet, ou sa date et son heure de création.

Numéros de génération et de métagénération

Dans ses métadonnées, chaque objet Cloud Storage possède une propriété generation numérique et une propriété metageneration numérique qui l'identifie de manière unique :

Propriété Description
generation Identifie la version d'un objet et existe pour chaque objet, qu'un bucket utilise la gestion des versions d'objets ou non.
  • La valeur generation d'une version de l'objet ne change jamais. Un nouvel objet portant le même nom peut remplacer un objet existant, mais un nouvel generation est toujours attribué à ce nouvel objet.
  • Notez que rien ne garantit que les numéros de génération augmentent pour les versions successives, mais uniquement que chaque nouvelle version possède un numéro de génération unique.
  • Il n'y a pas de lien entre les numéros de génération d'objets non liés, même si ceux-ci se trouvent dans le même bucket.
metageneration Identifie la version de métadonnées et augmente chaque fois que les métadonnées d'un generation donné sont mises à jour.
  • La propriété metageneration commence à 1 pour chaque nouvelle génération (generation) d'objet.
  • La propriété metageneration n'a aucun sens sans la propriété generation et ne doit être utilisée qu'avec elle. Il n'y a aucun intérêt à comparer la génération de métadonnées de deux versions d'objet.

Les propriétés generation et metageneration sont utilisées dans les cas suivants :

Sommes de contrôle

Les sommes de contrôle sont des métadonnées calculées à partir des données de l'objet associé. Les sommes de contrôle permettent de vérifier que les données de l'objet ne sont pas corrompues. Les objets Cloud Storage comportent plusieurs champs de métadonnées de somme de contrôle.

CRC32C

Tous les objets Cloud Storage ont un hachage de type CRC32C. Les bibliothèques permettant de calculer un hachage CRC32C incluent :

Le CRC32C encodé en base64 est classé par ordre d'octets en mode big-endian.

MD5

Les objets Cloud Storage disposent d'un hachage MD5 s'ils répondent aux critères suivants :

Ce hachage ne s'applique qu'à un objet complet. Il ne peut donc pas être utilisé pour vérifier l'intégrité des téléchargements partiels en cas d'exécution d'une plage GET.

ETags

Tous les objets Cloud Storage sont associés à un ETag. Cependant, le même objet peut avoir une valeur ETag différente lorsqu'elle est demandée par l'API XML plutôt que par l'API JSON. Dans tous les autres cas, les utilisateurs ne doivent faire aucune hypothèse concernant la valeur utilisée dans un ETag, sauf qu'elle change chaque fois que les données ou métadonnées sous-jacentes sont modifiées, conformément à la spécification.

L'en-tête ETag d'un objet renvoie la valeur MD5 de l'objet si toutes les conditions suivantes sont remplies :

Date et heure de modification

Dans ses métadonnées, chaque objet Cloud Storage possède une propriété updated qui indique la date/heure de dernière modification des métadonnées de cet objet. La date/heure updated est initialement définie sur l'heure de création de l'objet, puis change chaque fois que les métadonnées de l'objet sont modifiées. Cela inclut les modifications apportées par un demandeur, telles que la modification des métadonnées personnalisées, ainsi que les modifications apportées par Cloud Storage au nom d'un demandeur, telles que la modification de la classe de stockage en fonction d'une Configuration du cycle de vie des objets.

Étape suivante