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.
Exemple : Browser-Based téléchargement à l'aide de HTTP POST (à l'aide de AWS Signature (version 4)
Cette section présente un exemple d'utilisation d'une requête HTTP POST pour charger du contenu directement sur Amazon S3.
Pour plus d'informations sur Signature Version 4, voir Processus de signature Signature Version 4.
Chargement d'un fichier sur Amazon S3 à l'aide du protocole HTTP POST
Cet exemple fournit un exemple de politique POST et un formulaire que vous pouvez utiliser pour charger un fichier. La rubrique utilise l'exemple de politique et des informations d'identification fictives pour vous montrer le flux de travail et le hachage de signature et de stratégie qui en résultent. Vous pouvez utiliser ces données comme suite de tests pour vérifier votre code de calcul de signature.
L'exemple utilise les informations d'identification suivantes pour les calculs de signature. Vous pouvez utiliser ces informations d'identification pour vérifier votre code de calcul de signature. Cependant, vous devez ensuite les remplacer par vos propres informations d'identification lorsque vous envoyez des demandes à AWS.
| Paramètre | Value |
|---|---|
AWSAccessKeyId |
AKIAIOSFODNN7EXAMPLE |
AWSSecretAccessKey |
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
Exemple de politique et de formulaire
La politique POST suivante prend en charge les chargements vers Amazon S3 sous certaines conditions.
{ "expiration": "2015-12-30T12:00:00.000Z", "conditions": [ {"bucket": "sigv4examplebucket"}, ["starts-with", "$key", "user/user1/"], {"acl": "public-read"}, {"success_action_redirect": "http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html"}, ["starts-with", "$Content-Type", "image/"], {"x-amz-meta-uuid": "14365123651274"}, {"x-amz-server-side-encryption": "AES256"}, ["starts-with", "$x-amz-meta-tag", ""], {"x-amz-credential": "AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request"}, {"x-amz-algorithm": "AWS4-HMAC-SHA256"}, {"x-amz-date": "20151229T000000Z" } ] }
Cette politique POST définit les conditions suivantes pour la demande :
-
Le téléchargement doit avoir lieu avant midi UTC le 30 décembre 2015.
-
Le contenu ne peut être téléchargé que sur le
sigv4examplebucket. Le compartiment doit se trouver dans la région que vous avez spécifiée dans l'étendue des informations d'identification (paramètre dux-amz-credentialformulaire), car la signature que vous avez fournie n'est valide que dans cette étendue. -
Vous pouvez fournir n'importe quel nom de clé commençant par
user/user1. Par exemple,user/user1/MyPhoto.jpg. -
L'ACL doit être définie sur
public-read. -
Si le téléchargement aboutit, le navigateur de l'utilisateur est redirigé vers
http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html. -
L'objet doit être un fichier image.
-
La
x-amz-meta-uuidbalise doit être définie sur14365123651274. -
Le
x-amz-meta-tagpeut contenir n'importe quelle valeur.
Voici une Base64-encoded version de cette politique POST. Vous utilisez cette valeur pour le calcul StringToSign de votre signature.
eyAiZXhwaXJhdGlvbiI6ICIyMDE1LTEyLTMwVDEyOjAwOjAwLjAwMFoiLA0KICAiY29uZGl0aW9ucyI6IFsNCiAgICB7ImJ1Y2tldCI6ICJzaWd2NGV4YW1wbGVidWNrZXQifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAidXNlci91c2VyMS8iXSwNCiAgICB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LA0KICAgIHsic3VjY2Vzc19hY3Rpb25fcmVkaXJlY3QiOiAiaHR0cDovL3NpZ3Y0ZXhhbXBsZWJ1Y2tldC5zMy5hbWF6b25hd3MuY29tL3N1Y2Nlc3NmdWxfdXBsb2FkLmh0bWwifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRDb250ZW50LVR5cGUiLCAiaW1hZ2UvIl0sDQogICAgeyJ4LWFtei1tZXRhLXV1aWQiOiAiMTQzNjUxMjM2NTEyNzQifSwNCiAgICB7IngtYW16LXNlcnZlci1zaWRlLWVuY3J5cHRpb24iOiAiQUVTMjU2In0sDQogICAgWyJzdGFydHMtd2l0aCIsICIkeC1hbXotbWV0YS10YWciLCAiIl0sDQoNCiAgICB7IngtYW16LWNyZWRlbnRpYWwiOiAiQUtJQUlPU0ZPRE5ON0VYQU1QTEUvMjAxNTEyMjkvdXMtZWFzdC0xL3MzL2F3czRfcmVxdWVzdCJ9LA0KICAgIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwNCiAgICB7IngtYW16LWRhdGUiOiAiMjAxNTEyMjlUMDAwMDAwWiIgfQ0KICBdDQp9
Lorsque vous utilisez copy/paste la politique précédente, elle devrait comporter des retours de chariot et de nouvelles lignes pour que votre hachage calculé corresponde à cette valeur (c'est-à-dire. Texte ASCII, avec terminaisons de ligne CRLF).
À l'aide d'exemples d'informations d'identification pour créer une signature, la valeur de signature est la suivante (dans le calcul de la signature, la date est la même que x-amz-date dans la politique (20151229)) :
8afdbf4008c03f22c2cd3cdb72e4afbb1f6a588f3255ac628749a66d7f09699e
L'exemple de formulaire suivant spécifie la politique POST précédente et prend en charge une requête POST adressée ausigv4examplebucket. Copy/paste le contenu dans un éditeur de texte et enregistrez-le sous le nom exampleform.html. Vous pouvez ensuite télécharger des fichiers image dans le compartiment concerné à l'aide du fichier exampleform.html. Votre demande aboutira si la signature que vous fournissez correspond à la signature calculée par Amazon S3.
Note
Vous devez mettre à jour le nom du compartiment, les dates, les informations d'identification, la politique et la signature avec des valeurs valides pour que le téléchargement vers S3 soit réussi.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <form action="http://sigv4examplebucket.s3.amazonaws.com/" method="post" enctype="multipart/form-data"> Key to upload: <input type="input" name="key" value="user/user1/${filename}" /><br /> <input type="hidden" name="acl" value="public-read" /> <input type="hidden" name="success_action_redirect" value="http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html" /> Content-Type: <input type="input" name="Content-Type" value="image/jpeg" /><br /> <input type="hidden" name="x-amz-meta-uuid" value="14365123651274" /> <input type="hidden" name="x-amz-server-side-encryption" value="AES256" /> <input type="text" name="X-Amz-Credential" value="AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request" /> <input type="text" name="X-Amz-Algorithm" value="AWS4-HMAC-SHA256" /> <input type="text" name="X-Amz-Date" value="20151229T000000Z" /> Tags for File: <input type="input" name="x-amz-meta-tag" value="" /><br /> <input type="hidden" name="Policy" value='<Base64-encoded policy string>' /> <input type="hidden" name="X-Amz-Signature" value="<signature-value>" /> File: <input type="file" name="file" /> <br /> <!-- The elements after this will be ignored --> <input type="submit" name="submit" value="Upload to Amazon S3" /> </form> </html>
Les paramètres de publication ne font pas la distinction entre majuscules et minuscules. Par exemple, vous définissez x-amz-signature ou X-Amz-Signature.