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).
|
|
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 estCOPY, ce qui vous permet de copier l'objet et les métadonnées associées.Vous pouvez spécifier
REPLACEpour é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 estCOPY, ce qui vous permet de copier l'objet et toutes ses balises.Vous pouvez spécifier
REPLACEd'é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-holdSi 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-MatchLe
If-Match headerest accepté mais non fonctionnel. -
If-None-MatchLe
If-None-Match headerest accepté mais non fonctionnel. -
x-amz-checksum-algorithmLors 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-algorithmdans 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_REDUNDANCYSpé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.
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-encryptionen-tête ou l'x-amz-server-side-encryption-customer-algorithmen-tête, StorageGRID rejette la requête et renvoieXNotImplemented. -
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écisezAES256. -
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écisezAES256. -
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.
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-encryptionLa server-side-encryptionvaleur de l'objet ne peut pas être mise à jour. Créez plutôt une copie avec une nouvelleserver-side-encryptionvaleur en utilisantx-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".