Attribution d’un nom aux objets Amazon S3 - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Attribution d’un nom aux objets Amazon S3

La clé d’objet (ou nom de clé) identifie de façon unique l’objet dans un compartiment Amazon S3. Vous pouvez spécifier le nom d’une clé d’objet lors de la création de l’objet. Par exemple, dans la console Amazon S3, lorsque vous sélectionnez un compartiment, la liste des objets de ce compartiment s’affiche. Ces noms sont les clés d’objet.

Le nom des clés d’objet consiste en une séquence de caractères Unicode codés en UTF-8, d’une longueur maximale de 1 024 octets ou d’environ 1 024 caractères latins. Pour certains paramètres régionaux, l’encodage d’un seul caractère peut nécessiter 2 octets. Lorsque vous nommez des objets, tenez compte de ce qui suit :

  • Les noms de clés d’objet ne sont pas sensibles à la casse.

  • Les noms de clés d’objet incluent tous les préfixes (appelés dossiers dans la console). Par exemple, Development/Projects.xls est le nom complet de la clé de l’objet Projects.xls situé dans le préfixe (ou dossier) Development. Le préfixe, le délimiteur (/) et le nom de l’objet sont inclus dans la limite de 1 024 octets du nom de clé d’objet. Pour en savoir plus sur les préfixes et dossiers, consultez Choix des noms de clés d’objet.

  • Certains caractères peuvent nécessiter un traitement spécial lorsqu’ils sont utilisés dans des noms de clés d’objet. Pour de plus amples informations, veuillez consulter Directives de dénomination de la clé d’objet.

Note

Les noms de clé d'objet contenant la valeur "soap" ne sont pas pris en charge pour les virtual-hosted-style demandes. Pour les noms de clés d’objet contenant la valeur "soap", une URL de type chemin d’accès doit être utilisée à la place.

Choix des noms de clés d’objet

Le modèle de données Amazon S3 est une structure horizontale : vous créez un compartiment et ce compartiment stocke des objets. Il n’existe aucune hiérarchie de sous-compartiments ou de sous-dossiers. Toutefois, vous pouvez déduire une hiérarchie logique grâce aux préfixes et délimiteurs de nom de clé à l’image de la console Amazon S3. La console Amazon S3 prend en charge un concept de dossiers. Pour en savoir plus sur la modification des métadonnées à partir de la console Amazon S3, consultez Modification des métadonnées d’objet dans la console Amazon S3.

Imaginons que le compartiment (admin-created) comporte quatre objets avec les clés d’objet suivantes :

Development/Projects.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

La console utilise les préfixes de nom de clé (Development/, Finance/ et Private/) ainsi que le délimiteur (/) pour présenter une structure de dossiers. La clé s3-dg.pdf ne possède pas de préfixe délimité par des barres obliques. Son objet apparaît donc directement à la racine du compartiment. Si vous ouvrez le dossier Development/, vous voyez qu’il contient l’objet Projects.xlsx.

  • Amazon S3 prend en charge les compartiments et les objets. Il n’y a aucune hiérarchie. Cependant, en utilisant des préfixes et des délimiteurs dans le nom d'une clé d'objet, la console Amazon S3 et le AWS SDKs peuvent déduire une hiérarchie et introduire le concept de dossiers.

  • La console Amazon S3 implémente la création d’objets de dossier en créant un objet de type zéro octet avec la valeur préfixe et délimiteur du dossier comme clé. Ces objets de dossier n’apparaissent pas dans la console. Sinon, ils se comportent comme n'importe quel autre objet et peuvent être visualisés et manipulés via l'API REST, la AWS CLI et AWS SDKs.

Directives de dénomination de la clé d’objet

Vous pouvez utiliser n’importe quel caractère UTF-8 dans le nom de clé d’un objet. L’utilisation de certains caractères dans les noms de clé peut toutefois générer des problèmes avec certaines applications et certains protocoles. Les directives suivantes vous aident à optimiser la conformité avec le DNS, les caractères sécurisés pour le Web, les analyseurs XML, etc. APIs

Caractères adaptés

Les caractères configurés suivants sont généralement adaptés à une utilisation dans les noms de clés :

Caractères alphanumériques
  • 0-9

  • a-z

  • A-Z

Caractères spéciaux
  • Point d’exclamation (!)

  • Trait d’union (-)

  • Trait de soulignement (_)

  • Point (.)

  • Astérisque (*)

  • Guillemet simple (')

  • Parenthèse ouvrante (()

  • Parenthèse fermante ())

Voici des exemples de noms de clés d’objet valides :

  • 4my-organization

  • my.great_photos-2014/jan/myvacation.jpg

  • videos/2014/birthday/video1.wmv

Note

Si vous utilisez la console Amazon S3 pour télécharger des objets dont le nom de clé se termine par des points (.), ces derniers sont supprimés du nom de clé des objets téléchargés. Pour conserver les points à la fin des noms de clé dans les objets téléchargés, vous devez utiliser l'API REST AWS Command Line Interface (AWS CLI) ou Amazon S3. AWS SDKs

En outre, vous devez connaître les limitations suivantes en ce qui concerne les préfixes :

  • Les objets avec un préfixe de ./ doivent être chargés ou téléchargés avec l'API AWS CLI, AWS SDKs, ou REST. Vous ne pouvez pas utiliser la console Amazon S3 pour charger ces objets.

  • Les clés d'objet contenant des éléments de chemin relatifs (par exemple,../) sont valides si, lors de l'analyse left-to-right, le nombre cumulé de segments de chemin relatifs ne dépasse jamais le nombre d'éléments de chemin non relatifs rencontrés. Cette règle s'applique à toutes les demandes effectuées à l'aide de la console Amazon S3, de l'API REST Amazon S3 et AWS SDKs. AWS CLI

    Par exemple :

    • videos/2014/../../video1.wmv est valide.

    • videos/../../video1.wmv n’est pas valide.

    • videos/../../2014/video1.wmv n’est pas valide.

Segments de chemin contenant uniquement des points

Les clés d'objet contenant uniquement des segments de chemin (.ou..) peuvent provoquer un comportement inattendu lorsqu'elles sont traitées par des applications ou des outils qui les interprètent comme des références de chemin relatives. SDKs

Les modèles suivants peuvent provoquer des problèmes :

  • folder/./file.txt : contient une référence au répertoire en cours

  • folder/../file.txt : contient une référence au répertoire parent

  • ./file.txt : commence par une référence au répertoire en cours

  • ../file.txt : commence par une référence au répertoire parent

Les modèles suivants fonctionnent normalement :

  • folder/.hidden/file.txt : le point fait partie du nom de fichier, il n’est pas indépendant

  • folder/..backup/file.txt : les points font partie du nom de fichier, ils ne sont pas indépendants

Lorsque les applications traitent des clés d’objet avec des segments contenant uniquement des points, le comportement peut être impacté comme suit :

  • Normalisation des chemins : de nombreux systèmes résolvent automatiquement les références . et .., ce qui peut modifier le chemin effectif (par exemple, folder/./file.txt devient folder/file.txt)

  • Problèmes d’accès : les applications peuvent ne pas localiser les objets en raison de différences dans la résolution des chemins

  • Comportement incohérent - Des outils différents SDKs peuvent gérer ces modèles différemment

Important

Pour éviter ces problèmes, nous vous recommandons d’éviter les segments de chemin contenant uniquement des points dans les noms de clés d’objet. Utilisez d’autres conventions de dénomination à des fins d’organisation.

Caractères pouvant exiger une manipulation spéciale

Les caractères suivants dans un nom de clé peuvent nécessiter un traitement supplémentaire du code et ont probablement besoin d’être codés en URL ou référencés comme valeur HEX. Certains de ces caractères ne sont pas imprimables et le navigateur peut ne pas réussir à les traiter, ce qui nécessite également un traitement spécial :

  • Esperluette (&)

  • Symbole dollar ($)

  • Caractères ASCII 00–1F hex (0–31 décimale) et 7F (127 décimale)

  • Arobase (@)

  • Signe égal (=)

  • Point-virgule () ;

  • Barre oblique (/)

  • Colon (:)

  • Signe plus (+)

  • Espace. Dans certains cas, des séquences importantes d’espaces peuvent être perdues (notamment les espaces multiples).

  • Virgule () ,

  • Point d’interrogation (?)

Caractères à éviter

Nous recommandons de ne pas utiliser les caractères suivants dans un nom de clé en raison des différences de traitement des caractères spéciaux selon les applications :

  • Barre oblique inverse (\)

  • Accolade gauche ({)

  • Caractères ASCII non imprimables (128–255 caractères décimaux)

  • Accent circonflexe (^)

  • Accolade droite (})

  • Pourcentage (%)

  • Accent grave (`)

  • Crochet droit (])

  • Guillemet (")

  • Signe supérieur à (>)

  • Crochet gauche ([)

  • Tilde («  ») (~)

  • Signe inférieur à (<)

  • Dièse (#)

  • Barre verticale (|)

Comme spécifié par la norme XML relative à la end-of-line manipulation, tout le texte XML est normalisé de telle sorte que les retours d'un seul chariot (code ASCII 13) et les retours de chariot immédiatement suivis d'un fil (code ASCII 10), également appelés caractères de nouvelle ligne, sont remplacés par un caractère d'alimentation d'une seule ligne. Pour analyser correctement les clés d’objet dans les demandes XML, les retours chariot et les autres caractères spéciaux doivent être remplacés par leur code d’entité XML équivalent lorsqu’ils sont insérés dans des balises XML.

Voici ces caractères spéciaux et leur code d’entité XML équivalent :

  • L’apostrophe (') doit être remplacée par &apos;

  • Le guillemet (") doit être remplacé par &quot;

  • L’esperluette (&) doit être remplacée par &amp;

  • Le signe inférieur à (<) doit être remplacé par &lt;

  • Le signe supérieur à (>) doit être remplacé par &gt;

  • Le retour chariot (\r) doit être remplacé par &#13; ou &#x0D;

  • Le caractère de nouvelle ligne (\n) doit être remplacé par &#10; ou &#x0A;

Exemple

L’exemple suivant montre l’utilisation d’un code d’entité XML à la place d’un retour chariot. Cette demande DeleteObjects supprime un objet avec le paramètre key /some/prefix/objectwith\rcarriagereturn (où \r est le retour chariot).

<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Object> <Key>/some/prefix/objectwith&#13;carriagereturn</Key> </Object> </Delete>

Ordre de tri des clés d’objet

Amazon S3 trie les clés d’objet, y compris les préfixes, par ordre lexicographique en fonction de leur valeur d’octets codée en UTF-8.

Les caractères ASCII sont triés dans l’ordre suivant :

  • Caractères spéciaux (par exemple !, /)

  • Lettres majuscules (A–Z)

  • Lettres minuscules (a–z)

Les caractères non ASCII (par exemple, é, 中 文) sont codés sous forme de séquences UTF-8 multi-octets, et sont généralement classés après les caractères ASCII en raison de leur valeur d’octets plus élevée (par exemple, 0xC3 pour é, 0xE4 pour 中).

Par exemple, les préfixes tels que apple/, Apple/, éclair/ et 中 文/ seraient classés comme suit :

1. Apple/ (commence par 0x41)

2. apple/ (commence par 0x61)

3. éclair/ (commence par 0xC3 0xA9)

4. 中 文/ (commence par 0xE4 0xB8 0xAD 0xE6 0x96 0x87)