web-dev-qa-db-fra.com

Quels sont les noms de clé S3 valides accessibles via l'API de repos S3?

D'après les documents AWS, je comprends que:

  • Les noms de clé S3 peuvent être n'importe quel nom UNICODE <1024 caractères
  • Lors de l'utilisation de GET OBJ, je dois encoder l'URL du nom de la clé pour y accéder.

Cependant, ces règles semblent trop permissives.

Par exemple, si je crée une clé appelée '../../d', une erreur 400 se produit lorsque j'essaie d'y accéder avec l'API GET OBJECT. Fait intéressant, je n'ai aucun problème à accéder à "../d".

Existe-t-il un document précisant ce qui est et ce qui n'est pas légal?

43
UsAaR33

Selon documentation AWS S :

Bien que vous puissiez utiliser n'importe quel caractère UTF-8 dans un nom de clé d'objet, les meilleures pratiques de dénomination de clé suivantes garantissent une compatibilité maximale avec d'autres applications. Chaque application peut analyser les caractères spéciaux différemment. Les directives suivantes vous aident à maximiser la conformité avec DNS, les caractères sécurisés pour le Web, les analyseurs XML et les autres API.

Veuillez trouver ci-dessous le

Consignes de dénomination des clés d'objet de la documentation officielle AWS S


Caractères sûrs

Les jeux de caractères suivants sont généralement sûrs pour une utilisation dans les noms de clés:

  • Caractères alphanumériques: 0-9 a-z A-Z
  • Caractères spéciaux: ! - _. * '()

REMARQUE SUR LE DÉLIMITEUR ("/")

Voici des exemples de noms de clé d'objet valides:

  • 4my-organisation

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

  • vidéos/2014/anniversaire/video1.wmv

Notez que le modèle de données Amazon S3 est une structure plate: vous créez un compartiment et le compartiment stocke des objets. Il n'y a pas de hiérarchie de sous-ensembles ou de sous-dossiers; cependant, vous pouvez déduire la hiérarchie logique à l'aide de préfixes de nom de clé et de délimiteurs comme le fait la console Amazon S3.

par exemple, si vous utilisez Private/taxdocument.pdf comme clé, il créera le dossier Private, avec taxdocument.pdf = dedans.

Amazon S3 prend en charge les compartiments et les objets, il n'y a pas de hiérarchie dans Amazon S3. Cependant, les préfixes et délimiteurs d'un nom de clé d'objet permettent à la console Amazon S3 et aux kits SDK AWS d'inférer la hiérarchie et d'introduire le concept de dossiers.


Caractères pouvant nécessiter une manipulation spéciale

Les caractères suivants dans un nom de clé peuvent nécessiter une gestion de code supplémentaire et devront probablement être codés par URL ou référencés comme HEX. Certains d'entre eux sont des caractères non imprimables et votre navigateur peut ne pas les gérer, ce qui nécessitera également une gestion spéciale:

  • Esperluette ("&")
  • Symbole 'At' ("@")
  • Colon (":")
  • Virgule (",")
  • Dollar ("$")
  • Égale ("=")
  • Plus ("+")
  • Point d'interrogation ("?")
  • Plage de caractères ASCII 00–1F hex (0–31 décimal) et 7F (127 décimal.)
  • Point-virgule (";")
  • Espace - Des séquences importantes d'espaces peuvent être perdues dans certaines utilisations (en particulier les espaces multiples)

Personnages à éviter

Vous devez éviter les caractères suivants dans un nom de clé en raison d'une gestion spéciale importante pour la cohérence dans toutes les applications.

  • Barre oblique inverse ("\")
  • Caret ("^")
  • Accent grave/coche arrière ("` ")
  • Symbole "Supérieur à" (">")
  • Symbole "Moins de" ("<")
  • Accolade frisée gauche ("{")
  • Accolade frisée droite ("}")
  • Crochet droit ("]")
  • Crochet gauche ("[")
  • Caractère 'Pound' ("#")
  • Non imprimable ASCII caractères (128–255 caractères décimaux)
  • Caractère en pourcentage ("%")
  • Guillemets
  • Tilde ("~")
  • Barre/tuyau vertical ("|")
59
Manube

Les seules restrictions fournies par Amazon sont (comme sur leur FAQ technique ):

Quels caractères sont autorisés dans un nom de compartiment ou d'objet?
Une clé est une séquence de caractères Unicode dont le codage UTF-8 fait au plus 1024 octets.

Des restrictions supplémentaires s'appliquent aux compartiments (comme indiqué dans la section Règles de dénomination des compartiments de leur Restrictions et limitations des compartiments FAQ):

Dans toutes les régions, à l'exception de la région US Standard, un nom de compartiment doit respecter les règles suivantes. Il en résulte un nom de compartiment compatible DNS.

  • Les noms des compartiments doivent comporter au moins 3 et pas plus de 63 caractères
  • Le nom du compartiment doit être une série d'une ou plusieurs étiquettes séparées par un point (.), Où chaque étiquette:
    • Doit commencer par une lettre minuscule ou un chiffre
    • Doit se terminer par une lettre minuscule ou un chiffre
    • Peut contenir des lettres minuscules, des chiffres et des tirets
  • Les noms de compartiment ne doivent pas être formatés en tant qu'adresse IP (par exemple, 192.168.5.4)

Des restrictions moins permissives s'appliquent à la région standard des États-Unis. Veuillez consulter la FAQ pour plus d'informations et quelques exemples. J'espère que cela aide!

13
Viccari