Formulaires HTML (AWS Signature Version 2) - 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.

Formulaires HTML (AWS Signature Version 2)

Lorsque vous communiquez avec Amazon S3, vous utilisez normalement l'API REST ou SOAP pour effectuer des opérations telles que put, get, delete, etc. Avec POST, les utilisateurs téléchargent les données directement sur Amazon S3 via leur navigateur, qui ne peut pas exécuter l'API SOAP ni créer de demande REST PUT.

Note

La prise en charge de SOAP sur HTTP est obsolète, mais SOAP continue d'être disponible sur HTTP. Les nouvelles fonctions Amazon S3 ne sont pas prises en charge pour SOAP. Plutôt que d'utiliser SOAP, nous vous recommandons d'utiliser l'API REST ou les kits SDK AWS.

Utilisez les formulaires HTML pour autoriser les utilisateurs à télécharger du contenu vers Amazon S3 en utilisant leur navigateur. Les formulaires HTML se composent d'une déclaration de formulaire et de champs de formulaire. La déclaration de formulaire contient des informations de haut niveau sur la demande. Les champs de formulaire contiennent des informations détaillées sur la demande, ainsi que sur la stratégie utilisée pour authentifier cette dernière et garantir qu'elle répond aux conditions que vous spécifiez.

Note

Les limites et les données de formulaire (à l'exclusion du contenu du fichier) ne peuvent pas dépasser 20 Ko.

Cette section explique comment utiliser les formulaires HTML.

Encodage des formulaires HTML

Le formulaire et la stratégie doivent être encodés en UTF-8. Vous pouvez appliquer un encodage UTF-8 au formulaire en le spécifiant dans l'en-tête HTML ou comme en-tête de la demande.

Note

La déclaration d'un formulaire HTML n'accepte pas les paramètres d'authentification par chaîne d'interrogation.

Voici un exemple d'encodage en UTF-8 dans l'en-tête HTML :

<html> <head> ... <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ... </head> <body>

Voici un exemple d'encodage en UTF-8 dans un en-tête de demande :

Content-Type: text/html; charset=UTF-8

Déclaration de formulaire HTML

La déclaration d'un formulaire possède trois composants : l'action, la méthode et le type d'encadrement. Si l'une quelconque de ces valeurs est définie de façon incorrecte, la demande échoue.

L'action spécifie l'URL qui doit traiter la demande et qu'il convient de définir sur l'URL du compartiment. Par exemple, si le nom de votre compartiment est awsexamplebucket1 et que la Région est USA Ouest (Californie du Nord), l'URL est https://awsexamplebucket1.s3.us-west-1.amazonaws.com/.

Note

Le nom de clé est spécifié dans un champ du formulaire.

La méthode doit être POST.

Le type d'encadrement (enctype) doit être spécifié et défini sur multipart/form-data à la fois pour les chargements de fichiers et les chargements de zones de texte. Pour de plus amples informations, veuillez consulter la RFC 1867.

Exemple

L'exemple suivant est une déclaration de formulaire pour le compartiment « awsexamplebucket1 ».

<form action="https://awsexamplebucket1.s3.us-west-1.amazonaws.com/" method="post" enctype="multipart/form-data">

Champs de formulaire HTML

Le tableau ci-dessous décrit les champs qui peuvent être utilisés au sein d'un formulaire HTML.

Note

La variable ${filename} est automatiquement remplacée par le nom du fichier fourni par l'utilisateur et est reconnue par l'ensemble des champs de formulaire. Si le navigateur ou le client fournit un chemin d'accès complet ou partiel au fichier, seul le texte suivant la dernière barre oblique (/) ou barre oblique inverse (\) sera utilisé. Par exemple, « C:\Program Files\dossier1\fichier.txt » est interprété comme « fichier.txt ». Si aucun fichier ni nom de fichier n'est fourni, la variable est remplacée par une chaîne vide.

Nom de champ Description Obligatoire
AWSAccessKeyId

ID de clé d'accès AWS du propriétaire du compartiment qui accorde à un utilisateur anonyme l'accès pour une demande satisfaisant l'ensemble de contraintes de la stratégie. Ce champ est requis si la demande inclut un document de stratégie.

Conditionnel

acl

Une liste de contrôle d'accès (ACL) Amazon S3 Si une liste de contrôle d'accès non valide est spécifiée, une erreur est générée. Pour plus d'informations sur les listes ACL, consultez Listes de contrôle d’accès (ACL).

Type : chaîne

Valeur par défaut : private

Valeurs valides : private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control

Non

Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires

En-têtes spécifiques à REST. Pour de plus amples informations, veuillez consulter PUT Object.

Non

key

Nom de la clé chargée.

Pour utiliser le nom de fichier fourni par l'utilisateur, utilisez la variable ${filename}. Par exemple, si l'utilisateur Betty charge le fichier lolcatz.jpg et que vous spécifiez /user/betty/${filename}, le fichier est stocké en tant que /user/betty/lolcatz.jpg.

Pour de plus amples informations, veuillez consulter Utilisation des métadonnées d'objet.

Oui

policy

Stratégie de sécurité décrivant ce qui est autorisé dans la demande. Les demandes sans stratégie de sécurité sont considérées anonymes et aboutiront uniquement sur des compartiments publiquement accessibles en écriture.

Non

success_action_redirect, redirect

URL vers laquelle le client est redirigé en cas d'échec du chargement. Amazon S3 ajoute à l'URL les valeurs de compartiment, de clé et etag comme paramètres de la chaîne d'interrogation.

Si success_action_redirect n'est pas spécifié, Amazon S3 retourne le type de document vide spécifié dans le champ success_action_status.

Si Amazon S3 ne peut pas interpréter l'URL, le champ est ignoré.

Si le téléchargement échoue, Amazon S3 affiche une erreur et ne redirige pas l'utilisateur vers une URL.

Pour de plus amples informations, veuillez consulter Redirection.

Note

Le nom du champ de redirection est obsolète et la prise en charge du nom du champ de redirection sera supprimée à l'avenir.

Non

success_action_status

Code de statut retourné au client lors du succès du chargement si success_action_redirect n'est pas spécifié.

Les valeurs valides sont 200, 201 et 204 (par défaut).

Si la valeur est définie sur 200 ou 204, Amazon S3 retourne un document vide avec un code de statut égal à 200 ou 204.

Si la valeur est définie sur 201, Amazon S3 retourne un document XML avec un code de statut égal à 201. Pour des informations sur le contenu du document XML, veuillez consulter POST Object.

Si la valeur n'est pas définie ou si elle est définie sur une valeur non valide, Amazon S3 retourne un document vide avec un code de statut égal à 204.

Note

Certaines versions d'Adobe Flash Player ne traitent pas correctement les réponses HTTP dont le corps est vide. Pour prendre en charge les chargements via Adobe Flash, nous vous recommandons de définir success_action_status sur 201.

Non

signature

Signature HMAC élaborée à l'aide de la clé d'accès secrète correspondant à l'ID AWSAccessKeyId fourni. Ce champ est requis si un document de stratégie est inclus dans la demande.

Pour de plus amples informations, veuillez consulter Identity and Access Management dans Amazon S3.

Conditionnel

x-amz-security-token

Jeton de sécurité utilisé par les informations d'identification de session

Si la demande utilise Amazon DevPay, elle requiert deux champs de formulaire x-amz-security-token : un pour le jeton produit et l'autre pour le jeton utilisateur.

Si la demande utilise les informations d'identification de session, elle requiert un seul formulairex-amz-security-token. Pour de plus amples informations, veuillez consulter Informations d'identification de sécurité temporaires dans le Guide de l'utilisateur IAM.

Non

Autres noms de champs dotés du préfixe x-amz-meta-

Métadonnées spécifiées par l'utilisateur.

Amazon S3 ne valide pas et n'utilise pas ces données.

Pour de plus amples informations, veuillez consulter PUT Object.

Non

dans le fichier

Fichier ou contenu de texte.

Le fichier ou le contenu doit être le dernier champ du formulaire. Tout champ situé au-dessous est ignoré.

Vous ne pouvez pas charger plus d'un fichier à la fois.

Oui

Elaboration de la stratégie

La stratégie est un document JSON encodé en UTF-8 et Base64 qui spécifie les conditions que la demande doit respecter et qui est utilisé pour authentifier le contenu. En fonction de la manière dont vous concevez vos documents de stratégie, vous pouvez les utiliser par chargement, par utilisateur, pour tous les chargements ou selon d'autres conceptions répondant à vos besoins.

Note

Le document de stratégie est facultatif, mais nous recommandons vivement son utilisation plutôt que de rendre un compartiment publiquement accessible en écriture.

Voici un exemple de document de stratégie :

{ "expiration": "2007-12-01T12:00:00.000Z", "conditions": [ {"acl": "public-read" }, {"bucket": "awsexamplebucket1" }, ["starts-with", "$key", "user/eric/"], ] }

Le document de stratégie contient l'expiration et les conditions.

Expiration

L'élément expiration spécifie la date d'expiration de la stratégie au format de date UTC, conformément à la norme ISO 8601. Par exemple, « 2007-12-01T12:00:00.000Z » indique que la stratégie ne sera plus valide après minuit, heure UTC, le 01/12/2007. Une date d'expiration est requise dans une stratégie.

Conditions

Les conditions figurant dans le document de stratégie valident le contenu de l'objet chargé. Chaque champ de formulaire que vous spécifiez dans le formulaire (à l'exception de AWSAccessKeyId, signature, fichier, stratégie et des noms de champs dotés du préfixe x-ignore-) doit être inclus dans la liste des conditions.

Note

Si plusieurs champs ont le même nom, les valeurs doivent être séparées par des virgules. Par exemple, si vous avez deux champs nommés « x-amz-meta-tag » et que le premier a la valeur « Ninja » alors que le second a la valeur « Stallman », vous devez définir le document de stratégie sur Ninja,Stallman.

Toutes les variables figurant dans le formulaire sont développées avant la validation de la stratégie. Par conséquent, toutes les correspondances des conditions doivent être effectuées par rapport aux champs développés. Par exemple, si vous définissez le champ clé sur user/betty/${filename}, la stratégie peut être [ "starts-with", "$key", "user/betty/" ]. Ne saisissez pas [ "starts-with", "$key", "user/betty/${filename}" ]. Pour de plus amples informations, veuillez consulter Correspondance des conditions.

Le tableau ci-dessous décrit les conditions d'un document de stratégie.

Nom d'élément Description
liste acl

Spécifie les conditions que la liste ACL doit respecter.

Prend en charge la correspondance exacte et starts-with.

content-length-range

Spécifie les tailles minimale et maximale autorisées pour le contenu chargé.

Prend en charge la correspondance de plage.

Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires

En-têtes spécifiques à REST.

Prend en charge la correspondance exacte et starts-with.

key

Nom de la clé chargée.

Prend en charge la correspondance exacte et starts-with.

success_action_redirect, redirect

URL vers laquelle le client est redirigé en cas d'échec du chargement.

Prend en charge la correspondance exacte et starts-with.

success_action_status

Code de statut retourné au client lors du succès du chargement si success_action_redirect n'est pas spécifié.

Prend en charge la correspondance exacte.

x-amz-security-token

Jeton de sécurité Amazon DevPay.

Chaque demande qui utilise Amazon DevPay requiert deux champs de formulaire x-amz-security-token : un pour le jeton produit et l'autre pour le jeton utilisateur. Par conséquent, les valeurs doivent être séparées par des virgules. Par exemple, si le jeton utilisateur est eW91dHViZQ== et le token produit b0hnNVNKWVJIQTA=, vous définissez l'entrée de stratégie sur : { "x-amz-security-token": "eW91dHViZQ==,b0hnNVNKWVJIQTA=" }.

Autres noms de champs dotés du préfixe x-amz-meta-

Métadonnées spécifiées par l'utilisateur.

Prend en charge la correspondance exacte et starts-with.

Note

Si votre boîte à outils ajoute des champs supplémentaires (p. ex. : Flash ajoute le nom de fichier), vous devez les ajouter dans le document de stratégie. Si vous pouvez contrôler cette fonctionnalité, ajoutez le préfixe x-ignore- au champ afin qu'Amazon S3 ignore la fonction et que les versions futures de cette fonction ne soient pas affectées.

Correspondance des conditions

Le tableau ci-dessous décrit les types de correspondance des conditions. Vous devez spécifier une seule condition pour chaque champ de formulaire que vous spécifiez dans le formulaire, mais vous pouvez créer des critères de correspondance plus complexes en spécifiant plusieurs conditions pour un champ de formulaire.

Condition Description

Correspondances exactes

Les correspondances exactes vérifient que les champs correspondent à des valeurs spécifiques. Cet exemple indique que la liste ACL doit être définie sur public-read :

{"acl": "public-read" }

Cet exemple représente une méthode alternative pour indiquer que la liste ACL doit être définie sur public-read :

[ "eq", "$acl", "public-read" ]

Commence par

Si la valeur doit commencer par une certaine valeur, utilisez le mot clé starts-with. Cet exemple indique que la clé doit commencer par user/betty :

["starts-with", "$key", "user/betty/"]

Correspondance avec un contenu quelconque

Pour configurer la stratégie de manière à autoriser un contenu quelconque dans un champ, utilisez starts-with avec une valeur vide. Cet exemple autorise une valeur quelconque pour success_action_redirect :

["starts-with", "$success_action_redirect", ""]

Spécification de plages

Pour les champs qui acceptent des plages, séparez les seuils inférieur et supérieur de plage par une virgule. Cet exemple autorise une taille de fichier comprise entre 1 et 10 mégaoctets :

["content-length-range", 1048579, 10485760]

Échappement de caractère

Le tableau suivant décrit les caractères qui doivent être placés dans une séquence d'échappement au sein d'un document de stratégie.

Séquence d'échappement Description

\\

Barre oblique inverse

\$

Symbole dollar

\b

Retour arrière

\f

Saut de page

\n

Nouvelle ligne

\r

Retour chariot

\t

Tabulation horizontale

\v

Tabulation verticale

\uxxxx

Tous les caractères Unicode

Élaboration d'une signature

Étape Description
1

Encodez la stratégie en UTF-8.

2

Encodez les octets UTF-8 en Base64.

3

Signez la stratégie avec votre clé d'accès secrète en utilisant HMAC SHA-1.

4

Encodez la signature SHA-1 en Base64.

Pour obtenir des informations générales sur l’authentification, veuillez consulter Identity and Access Management dans Amazon S3.

Redirection

Cette section décrit comment traiter les redirections.

Redirection générale

Une fois la demande POST terminée, l'utilisateur est redirigé à l'emplacement que vous avez spécifié dans le champ success_action_redirect. Si Amazon S3 ne peut pas interpréter l'URL, le champ success_action_redirect est ignoré.

Si success_action_redirect n'est pas spécifié, Amazon S3 retourne le type de document vide spécifié dans le champ success_action_status.

Si la demande POST échoue, Amazon S3 affiche une erreur et ne fournit pas de redirection.

Redirection antérieure au chargement

Si votre compartiment a été créé à l'aide de <CreateBucketConfiguration>, les utilisateurs finaux peuvent exiger une redirection. Si cela se produit, certains navigateurs peuvent traiter la redirection de façon incorrecte. Cela est relativement rare, mais a le plus de chances de se produire juste après la création d'un compartiment.