Skip to main content
Une version plus récente de ce produit est disponible.
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Créer une copie d'un objet dans StorageGRID avec la requête S3 CopyObject

Vous pouvez utiliser la requête S3 CopyObject pour créer une copie d'un objet déjà stocké dans S3. Une opération CopyObject équivaut à effectuer GetObject suivi de PutObject.

Résoudre les conflits

Les requêtes clients conflictuelles, comme par exemple deux clients écrivant sur la même clé, sont résolues selon le principe du « latest-wins ». Le moment de l’évaluation du « latest-wins » est déterminé par la date à laquelle le système StorageGRID termine une requête donnée, et non par la date à laquelle les clients S3 commencent une opération.

Taille de l'objet

La taille maximale recommandée pour une seule opération PutObject est de 5 Gio (5 368 709 120 octets). Si vous avez des objets de plus de 5 Gio, utilisez plutôt "téléchargement en plusieurs parties".

La taille maximale prise en charge pour une seule opération PutObject est de 5 Tio (5 497 558 138 880 octets).

Remarque Si vous avez effectué une mise à niveau depuis StorageGRID 11.6 ou une version antérieure, l'alerte « Taille de l'objet S3 trop volumineux lors de la commande PUT » sera déclenchée si vous tentez de télécharger un objet dépassant 5 Gio. Si vous disposez d'une nouvelle installation de StorageGRID 11.7 ou 11.8, l'alerte ne sera pas déclenchée dans ce cas. Cependant, afin de s'aligner sur la norme AWS S3, les prochaines versions de StorageGRID ne prendront plus en charge le téléchargement d'objets de plus de 5 Gio.

Caractères UTF-8 dans les métadonnées utilisateur

Si une requête inclut des valeurs UTF-8 (non échappées) dans le nom de clé ou la valeur des métadonnées définies par l'utilisateur, le comportement de StorageGRID est indéfini.

StorageGRID n'analyse ni n'interprète les caractères UTF-8 échappés inclus dans le nom ou la valeur de la clé des métadonnées définies par l'utilisateur. Les caractères UTF-8 échappés sont traités comme des caractères ASCII :

  • Les requêtes aboutissent si les métadonnées définies par l'utilisateur incluent des caractères UTF-8 échappés.

  • StorageGRID ne renvoie pas l' `x-amz-missing-meta`en-tête si la valeur interprétée du nom ou de la valeur de la clé contient des caractères non imprimables.

En-têtes de requête pris en charge

Les en-têtes de requête suivants sont pris en charge :

  • Content-Type

  • x-amz-copy-source

  • x-amz-copy-source-if-match

  • x-amz-copy-source-if-none-match

  • x-amz-copy-source-if-unmodified-since

  • x-amz-copy-source-if-modified-since

  • x-amz-meta-, suivi d'une paire nom-valeur contenant des métadonnées définies par l'utilisateur

  • x-amz-metadata-directive : La valeur par défaut est COPY, ce qui vous permet de copier l'objet et les métadonnées associées.

    Vous pouvez spécifier REPLACE pour écraser les métadonnées existantes lors de la copie de l'objet, ou pour mettre à jour les métadonnées de l'objet.

  • x-amz-storage-class

  • x-amz-tagging-directive : La valeur par défaut est COPY, ce qui vous permet de copier l'objet et toutes ses balises.

    Vous pouvez spécifier REPLACE d'écraser les balises existantes lors de la copie de l'objet, ou de mettre à jour les balises.

  • En-têtes de requête S3 Object Lock :

    • x-amz-object-lock-mode

    • x-amz-object-lock-retain-until-date

    • x-amz-object-lock-legal-hold

      Si une requête est effectuée sans ces en-têtes, les paramètres de rétention par défaut du compartiment sont utilisés pour calculer le mode de version de l'objet et la date de rétention jusqu'à la date limite. Voir "Utilisez l'API REST S3 pour configurer S3 Object Lock".

  • En-têtes de requête SSE :

    • x-amz-copy-source​-server-side​-encryption​-customer-algorithm

    • x-amz-copy-source​-server-side-encryption-customer-key

    • x-amz-copy-source​-server-side-encryption-customer-key-MD5

    • x-amz-server-side-encryption

    • x-amz-server-side-encryption-customer-key-MD5

    • x-amz-server-side-encryption-customer-key

    • x-amz-server-side-encryption-customer-algorithm

En-têtes de requête non pris en charge

Les en-têtes de requête suivants ne sont pas pris en charge :

  • Cache-Control

  • Content-Disposition

  • Content-Encoding

  • Content-Language

  • Expires

  • If-Match

    Le If-Match header est accepté mais non fonctionnel.

  • If-None-Match

    Le If-None-Match header est accepté mais non fonctionnel.

  • x-amz-checksum-algorithm

    Lors de la copie d'un objet, si l'objet source possède une somme de contrôle, StorageGRID ne copie pas cette valeur de somme de contrôle dans le nouvel objet. Ce comportement s'applique que vous tentiez ou non d'utiliser x-amz-checksum-algorithm dans la requête d'objet.

  • x-amz-website-redirect-location

Options de classe de stockage

L' `x-amz-storage-class`en-tête de requête est pris en charge et influe sur le nombre de copies d'objets que StorageGRID crée si la règle ILM correspondante utilise la validation double ou équilibrée"option d'ingestion".

  • STANDARD

    (Par défaut) Spécifie une opération d'ingestion à double validation lorsque la règle ILM utilise l'option Dual commit, ou lorsque l'option Balanced revient à créer des copies intermédiaires.

  • REDUCED_REDUNDANCY

    Spécifie une opération d'ingestion à validation unique lorsque la règle ILM utilise l'option de double validation, ou lorsque l'option équilibrée revient à créer des copies intermédiaires.

    Remarque Si vous ingérez un objet dans un compartiment avec S3 Object Lock activé, l’ `REDUCED_REDUNDANCY`option est ignorée. Si vous ingérez un objet dans un compartiment Compliant hérité, l’ `REDUCED_REDUNDANCY`option renvoie une erreur. StorageGRID effectuera toujours une double validation à l’ingestion pour garantir le respect des exigences de conformité.

Utilisation de x-amz-copy-source dans CopyObject

Si le compartiment et la clé source, spécifiés dans l `x-amz-copy-source`en-tête, sont différents du compartiment et de la clé de destination, une copie des données de l'objet source est écrite dans la destination.

Si la source et la destination correspondent, et que l'en-tête x-amz-metadata-directive est spécifié comme REPLACE, les métadonnées de l'objet sont mises à jour avec les valeurs de métadonnées fournies dans la requête. Dans ce cas, StorageGRID ne réingère pas l'objet. Cela a deux conséquences importantes :

  • Vous ne pouvez pas utiliser CopyObject pour chiffrer un objet existant sur place, ni pour modifier le chiffrement d'un objet existant sur place. Si vous fournissez l' x-amz-server-side-encryption en-tête ou l' x-amz-server-side-encryption-customer-algorithm en-tête, StorageGRID rejette la requête et renvoie XNotImplemented.

  • L'option de comportement d'ingestion spécifiée dans la règle ILM correspondante n'est pas utilisée. Toute modification du placement des objets déclenchée par la mise à jour est effectuée lorsque l'ILM est réévalué par les processus ILM d'arrière-plan normaux.

    Cela signifie que si la règle ILM utilise l'option Strict pour le comportement d'ingestion, aucune action n'est entreprise si les emplacements d'objets requis ne peuvent pas être effectués (par exemple, parce qu'un emplacement nouvellement requis est indisponible). L'objet mis à jour conserve son emplacement actuel jusqu'à ce que l'emplacement requis soit possible.

En-têtes de requête pour le chiffrement côté serveur

Si vous "utiliser le chiffrement côté serveur", les en-têtes de requête que vous fournissez dépendent du chiffrement de l'objet source et de votre intention de chiffrer l'objet cible.

  • Si l'objet source est chiffré à l'aide d'une clé fournie par le client (SSE-C), vous devez inclure les trois en-têtes suivants dans la requête CopyObject, afin que l'objet puisse être déchiffré puis copié :

    • x-amz-copy-source​-server-side​-encryption​-customer-algorithm: Précisez AES256.

    • x-amz-copy-source​-server-side-encryption-customer-key: Spécifiez la clé de chiffrement que vous avez fournie lors de la création de l'objet source.

    • x-amz-copy-source​-server-side-encryption-customer-key-MD5: Spécifiez le condensé MD5 que vous avez fourni lors de la création de l'objet source.

  • Si vous souhaitez chiffrer l'objet cible (la copie) avec une clé unique que vous fournissez et gérez, incluez les trois en-têtes suivants :

    • x-amz-server-side-encryption-customer-algorithm: Précisez AES256.

    • x-amz-server-side-encryption-customer-key: Spécifiez une nouvelle clé de chiffrement pour l'objet cible.

    • x-amz-server-side-encryption-customer-key-MD5: Spécifiez le condensé MD5 de la nouvelle clé de chiffrement.

    Avertissement Les clés de chiffrement que vous fournissez ne sont jamais stockées. Si vous perdez une clé de chiffrement, vous perdez l'objet correspondant. Avant d'utiliser des clés fournies par le client pour sécuriser les données d'objet, examinez les considérations pour "utilisation du chiffrement côté serveur".
  • Si vous souhaitez chiffrer l'objet cible (la copie) avec une clé unique gérée par StorageGRID (SSE), incluez cet en-tête dans la requête CopyObject :

    • x-amz-server-side-encryption

      Remarque La server-side-encryption valeur de l'objet ne peut pas être mise à jour. Créez plutôt une copie avec une nouvelle server-side-encryption valeur en utilisant x-amz-metadata-directive : REPLACE.

Versionnage

Si le compartiment source est versionné, vous pouvez utiliser l'en-tête x-amz-copy-source pour copier la dernière version d'un objet. Pour copier une version spécifique d'un objet, vous devez spécifier explicitement la version à copier à l'aide de la sous-ressource versionId. Si le compartiment de destination est versionné, la version générée est renvoyée dans l'en-tête de réponse x-amz-version-id. Si le versionnement est suspendu pour le compartiment cible, alors x-amz-version-id renvoie une valeur "null".