Object Storage - Récupérer les métadonnées d'un objet avec GetObjectAttributes

Objectif

Ce guide explique comment utiliser l'opération API S31 GetObjectAttributes pour récupérer les attributs de métadonnées des objets de vos buckets OVHcloud Object Storage sans télécharger le corps de l'objet.

Prérequis

En pratique

Pourquoi utiliser GetObjectAttributes ?

L'inspection des métadonnées d'un objet nécessite traditionnellement au moins 2 appels API distincts : HeadObject pour récupérer l'ETag, la taille et la classe de stockage, et ListParts pour énumérer les parties des objets multipart. Chaque appel supplémentaire ajoute de la latence, ce qui devient significatif à grande échelle dans les pipelines de données, les workflows de vérification d'intégrité ou les systèmes d'audit de stockage.

GetObjectAttributes consolide la récupération de tous les attributs en un seul appel API sélectif. Vous demandez exactement les attributs dont vous avez besoin ; le service retourne uniquement ces champs — aucun corps d'objet n'est transféré.

Bénéfices clés :

  • Aucun transfert de corps : récupérez uniquement les métadonnées, quelle que soit la taille de l'objet.
  • Réponse sélective : recevez uniquement les attributs que vous demandez.
  • Tout client compatible S3 : fonctionne avec AWS CLI, n'importe quel SDK S3 et les appels HTTP directs.

Attributs supportés

Vous sélectionnez les attributs à récupérer en les listant dans l'en-tête de requête x-amz-object-attributes (séparés par des espaces pour AWS CLI, par des virgules pour HTTP brut). Les attributs non listés sont absents de la réponse.

AttributDescription
ETagIdentifiant opaque représentant une version spécifique du contenu de l'objet
ChecksumValeur de checksum calculée avec l'algorithme stocké avec l'objet lors du téléversement
ObjectPartsStructure multipart de l'objet : liste des parties avec leur numéro, taille et checksum optionnel
StorageClassClasse de stockage de l'objet (STANDARD, STANDARD_IA, GLACIER_IR, DEEP_ARCHIVE, EXPRESS_ONEZONE)
ObjectSizeTaille totale de l'objet en octets

L'en-tête de réponse Last-Modified est toujours retourné, quels que soient les attributs demandés.

Info

L'en-tête x-amz-object-attributes est obligatoire. Une requête sans cet en-tête retourne 400 Bad Request. Les noms d'attributs sont sensibles à la casse.

Récupérer les attributs d'un objet

Via AWS CLI
Via curl (API REST S3)
# Récupérer l'ETag et la taille
aws s3api get-object-attributes \
  --bucket <nom_du_bucket> \
  --key <clé_de_l_objet> \
  --object-attributes ETag ObjectSize

Réponse en cas de succès :

{
    "LastModified": "2026-04-15T10:23:45+00:00",
    "ETag": "d41d8cd98f00b204e9800998ecf8427e",
    "ObjectSize": 1048576
}

Pour demander tous les attributs à la fois :

aws s3api get-object-attributes \
  --bucket <nom_du_bucket> \
  --key <clé_de_l_objet> \
  --object-attributes ETag Checksum ObjectParts StorageClass ObjectSize

Attribut Checksum

Lorsque Checksum est demandé, la réponse inclut l'algorithme et la valeur stockés avec l'objet lors du téléversement. Si l'objet a été téléversé sans checksum, l'élément Checksum est absent de la réponse — ce n'est pas une erreur.

Algorithmes de checksum supportés sur OVHcloud Object Storage :

AlgorithmeÉlément XML dans la réponse
CRC-32ChecksumCRC32
CRC-32CChecksumCRC32C
CRC-64/NVMEChecksumCRC64NVME
SHA-1ChecksumSHA1
SHA-256ChecksumSHA256
Via AWS CLI
Via curl (API REST S3)
aws s3api get-object-attributes \
  --bucket `<nom_du_bucket>` \
  --key <clé_de_l_objet> \
  --object-attributes Checksum

Réponse (l'objet a un checksum CRC32) :

&#123;
    "LastModified": "2026-04-15T10:23:45+00:00",
    "Checksum": &#123;
        "ChecksumCRC32": "aGVsbG8="
    &#125;
&#125;

Réponse (l'objet n'a pas de checksum) :

&#123;
    "LastModified": "2026-04-15T10:23:45+00:00"
&#125;

Attribut ObjectParts (objets multipart)

Lorsque ObjectParts est demandé sur un objet multipart, la réponse liste toutes les parties avec leur numéro, taille et checksum optionnel. Pour les objets en une seule partie (non-multipart), ObjectParts est retourné comme un élément vide.

Info

Seuls les détails des parties (taille, checksum, pagination) des objets créés avec le type de checksum COMPOSITE seront listés ; en d'autres termes, lorsque vous créez votre multipart upload, vous devez définir la valeur de l'en-tête x-amz-checksum-type sur COMPOSITE.

Pagination : les résultats sont paginés à 1000 parties par réponse maximum.

Via AWS CLI
Via curl (API REST S3)
# Lister toutes les parties (par défaut : jusqu'à 1000)
aws s3api get-object-attributes \
  --bucket <nom_du_bucket> \
  --key <clé_de_l_objet> \
  --object-attributes ObjectParts

Réponse :

{
    "LastModified": "2026-04-20T08:10:00+00:00",
    "ObjectParts": {
        "TotalPartsCount": 3,
        "MaxParts": 1000,
        "IsTruncated": false,
        "Parts": [
            { "PartNumber": 1, "Size": 5242880 },
            { "PartNumber": 2, "Size": 5242880 },
            { "PartNumber": 3, "Size": 1048576 }
        ]
    }
}
Paginer à travers ObjectParts (objets avec plus de 1000 parties)

Lorsqu'un objet possède plus de 1000 parties, IsTruncated vaut true et NextPartNumberMarker indique où reprendre. Utilisez --part-number-marker pour récupérer les pages suivantes.

Via AWS CLI
Via curl (API REST S3)
# Première page
aws s3api get-object-attributes \
  --bucket `<nom_du_bucket>` \
  --key <clé_de_l_objet> \
  --object-attributes ObjectParts \
  --max-parts 1000

# Page suivante - utilisez NextPartNumberMarker de la réponse précédente
aws s3api get-object-attributes \
  --bucket `<nom_du_bucket>` \
  --key <clé_de_l_objet> \
  --object-attributes ObjectParts \
  --max-parts 1000 \
  --part-number-marker `<marqueur_de_partie_suivante>`

Objets versionnés

Par défaut, GetObjectAttributes opère sur la version courante de l'objet. Pour récupérer les attributs d'une version spécifique, ajoutez --version-id à la requête.

Via AWS CLI
Via curl (API REST S3)
aws s3api get-object-attributes \
  --bucket <nom_du_bucket> \
  --key <clé_de_l_objet> \
  --version-id <id_de_version> \
  --object-attributes ETag ObjectSize StorageClass

L'en-tête de réponse x-amz-version-id retourne l'identifiant de version de l'objet récupéré.

Info

Permissions IAM avec versionId : l'utilisation de --version-id requiert les permissions s3:GetObjectVersion et s3:GetObjectVersionAttributes, à la place des permissions par défaut s3:GetObject + s3:GetObjectAttributes.

Objets chiffrés (SSE-C)

Pour les objets chiffrés avec SSE-C (clés fournies par le client), vous devez fournir les trois en-têtes de chiffrement à chaque requête GetObjectAttributes. Le service ne stocke pas la clé.

Via AWS CLI
Via curl (API REST S3)
aws s3api get-object-attributes \
  --bucket <nom_du_bucket> \
  --key <clé_de_l_objet> \
  --object-attributes ETag ObjectSize \
  --sse-customer-algorithm AES256 \
  --sse-customer-key <clé_256_bits_encodée_base64> \
  --sse-customer-key-md5 <md5_de_la_clé_encodé_base64>
Warning

Les trois en-têtes SSE-C sont obligatoires pour les objets SSE-C. L'omission de l'un d'eux retourne 400 Bad Request. Fournir une clé incorrecte retourne 403 Forbidden.

Pour les objets non chiffrés et SSE-S3, n'incluez pas les en-têtes SSE-C — les inclure retourne 400 Bad Request.

Permissions IAM

SituationPermissions requises
Sans versionIds3:GetObject + s3:GetObjectAttributes
Avec versionIds3:GetObjectVersion + s3:GetObjectVersionAttributes

Aucune permission supplémentaire n'est requise au-delà des permissions de lecture standard.

Codes d'erreur

Code HTTPCode d'erreurCondition
200 OK-Requête réussie
400 Bad RequestInvalidArgumentx-amz-object-attributes manquant, nom d'attribut invalide, ou combinaison d'en-têtes SSE-C invalide
403 ForbiddenAccessDeniedPermission IAM manquante, ou clé SSE-C incorrecte
404 Not FoundNoSuchKeyL'objet n'existe pas et le demandeur a s3:ListBucket
403 ForbiddenAccessDeniedL'objet n'existe pas et le demandeur n'a PAS s3:ListBucket
405 Method Not Allowed-La version cible est un marqueur de suppression
Info

Marqueurs de suppression : dans un bucket versionné, si la version courante d'un objet (ou la version spécifiée par --version-id) est un marqueur de suppression, le service retourne 405 Method Not Allowed avec l'en-tête de réponse x-amz-delete-marker: true.

Aller plus loin

Échangez avec notre communauté d'utilisateurs.

1 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services de OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.

Cette page vous a-t-elle aidé ?