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

Base de connaissances

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


Icons/System/eye-open Created with Sketch. 6 vues 06.05.2026 Object Storage

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.

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

# 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
curl -X GET \
  -H "x-amz-object-attributes: ETag,ObjectSize" \
  --aws-sigv4 "aws:amz:<région>:s3" \
  --user "<clé_accès>:<clé_secrète>" \
  "https://s3.<région>.io.cloud.ovh.net/<nom_du_bucket>/<clé_de_l_objet>?attributes"

Succès : HTTP 200 OK avec un corps XML contenant les attributs demandés.

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
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) :

{
    "LastModified": "2026-04-15T10:23:45+00:00",
    "Checksum": {
        "ChecksumCRC32": "aGVsbG8="
    }
}

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

{
    "LastModified": "2026-04-15T10:23:45+00:00"
}
curl -X GET \
  -H "x-amz-object-attributes: Checksum" \
  --aws-sigv4 "aws:amz:<région>:s3" \
  --user "<clé_accès>:<clé_secrète>" \
  "https://s3.<région>.io.cloud.ovh.net/<nom_du_bucket>/<clé_de_l_objet>?attributes"

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.

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

# 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 }
        ]
    }
}
curl -X GET \
  -H "x-amz-object-attributes: ObjectParts" \
  --aws-sigv4 "aws:amz:<région>:s3" \
  --user "<clé_accès>:<clé_secrète>" \
  "https://s3.<région>.io.cloud.ovh.net/<nom_du_bucket>/<clé_de_l_objet>?attributes"
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.

# 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>
# Première page
curl -X GET \
  -H "x-amz-object-attributes: ObjectParts" \
  -H "x-amz-max-parts: 1000" \
  --aws-sigv4 "aws:amz:<région>:s3" \
  --user "<clé_accès>:<clé_secrète>" \
  "https://s3.<région>.io.cloud.ovh.net/<nom_du_bucket>/<clé_de_l_objet>?attributes"

# Page suivante
curl -X GET \
  -H "x-amz-object-attributes: ObjectParts" \
  -H "x-amz-max-parts: 1000" \
  -H "x-amz-part-number-marker: <marqueur_de_partie_suivante>" \
  --aws-sigv4 "aws:amz:<région>:s3" \
  --user "<clé_accès>:<clé_secrète>" \
  "https://s3.<région>.io.cloud.ovh.net/<nom_du_bucket>/<clé_de_l_objet>?attributes"

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.

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é.

curl -X GET \
  -H "x-amz-object-attributes: ETag,ObjectSize" \
  --aws-sigv4 "aws:amz:<région>:s3" \
  --user "<clé_accès>:<clé_secrète>" \
  "https://s3.<région>.io.cloud.ovh.net/<nom_du_bucket>/<clé_de_l_objet>?attributes&versionId=<id_de_version>"

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é.

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>
curl -X GET \
  -H "x-amz-object-attributes: ETag,ObjectSize" \
  -H "x-amz-server-side-encryption-customer-algorithm: AES256" \
  -H "x-amz-server-side-encryption-customer-key: <clé_encodée_base64>" \
  -H "x-amz-server-side-encryption-customer-key-MD5: <md5_encodé_base64>" \
  --aws-sigv4 "aws:amz:<région>:s3" \
  --user "<clé_accès>:<clé_secrète>" \
  "https://s3.<région>.io.cloud.ovh.net/<nom_du_bucket>/<clé_de_l_objet>?attributes"

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

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.

Articles associés