Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempio: Browser-Based caricamento tramite HTTP POST (utilizzando AWS Signature (versione 4)
Questa sezione mostra un esempio di utilizzo di una richiesta HTTP POST per caricare contenuti direttamente su Amazon S3.
Per ulteriori informazioni sulla versione 4 di Signature, consulta Signature Version 4 Signing Process.
Caricamento di un file su Amazon S3 tramite HTTP POST
Questo esempio fornisce un esempio di policy POST e un modulo che puoi utilizzare per caricare un file. L'argomento utilizza il criterio di esempio e le credenziali fittizie per mostrare il flusso di lavoro e l'hash della firma e della politica risultanti. Puoi utilizzare questi dati come suite di test per verificare il codice di calcolo della firma.
L'esempio utilizza le seguenti credenziali di esempio per il calcolo della firma. È possibile utilizzare queste credenziali per verificare il codice di calcolo della firma. Tuttavia, è necessario sostituirle con le proprie credenziali quando si inviano richieste a. AWS
| Parametro | Valore |
|---|---|
AWSAccessKeyId |
AKIAIOSFODNN7EXAMPLE |
AWSSecretAccessKey |
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
Esempio di politica e modulo
La seguente politica POST supporta i caricamenti su Amazon S3 con condizioni specifiche.
{ "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" } ] }
Questa politica POST stabilisce le seguenti condizioni sulla richiesta:
-
Il caricamento deve avvenire entro mezzogiorno UTC del 30 dicembre 2015.
-
Il contenuto può essere caricato solo su.
sigv4examplebucketIl bucket deve trovarsi nella regione specificata nell'ambito delle credenziali (parametro delx-amz-credentialmodulo), poiché la firma fornita è valida solo all'interno di questo ambito. -
Puoi fornire qualsiasi nome di chiave che inizi con.
user/user1Ad esempio,user/user1/MyPhoto.jpg. -
L'ACL deve essere impostato su.
public-read -
Se il caricamento ha esito positivo, il browser dell'utente viene reindirizzato a.
http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html -
L'oggetto deve essere un file di immagine.
-
Il
x-amz-meta-uuidtag deve essere impostato su14365123651274. -
x-amz-meta-tagPuò contenere qualsiasi valore.
Quella che segue è una Base64-encoded versione di questa politica POST. Questo valore viene utilizzato come calcolo StringToSign della firma.
eyAiZXhwaXJhdGlvbiI6ICIyMDE1LTEyLTMwVDEyOjAwOjAwLjAwMFoiLA0KICAiY29uZGl0aW9ucyI6IFsNCiAgICB7ImJ1Y2tldCI6ICJzaWd2NGV4YW1wbGVidWNrZXQifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAidXNlci91c2VyMS8iXSwNCiAgICB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LA0KICAgIHsic3VjY2Vzc19hY3Rpb25fcmVkaXJlY3QiOiAiaHR0cDovL3NpZ3Y0ZXhhbXBsZWJ1Y2tldC5zMy5hbWF6b25hd3MuY29tL3N1Y2Nlc3NmdWxfdXBsb2FkLmh0bWwifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRDb250ZW50LVR5cGUiLCAiaW1hZ2UvIl0sDQogICAgeyJ4LWFtei1tZXRhLXV1aWQiOiAiMTQzNjUxMjM2NTEyNzQifSwNCiAgICB7IngtYW16LXNlcnZlci1zaWRlLWVuY3J5cHRpb24iOiAiQUVTMjU2In0sDQogICAgWyJzdGFydHMtd2l0aCIsICIkeC1hbXotbWV0YS10YWciLCAiIl0sDQoNCiAgICB7IngtYW16LWNyZWRlbnRpYWwiOiAiQUtJQUlPU0ZPRE5ON0VYQU1QTEUvMjAxNTEyMjkvdXMtZWFzdC0xL3MzL2F3czRfcmVxdWVzdCJ9LA0KICAgIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwNCiAgICB7IngtYW16LWRhdGUiOiAiMjAxNTEyMjlUMDAwMDAwWiIgfQ0KICBdDQp9
Quando applichi copy/paste la politica precedente, dovrebbe contenere ritorni a capo e nuove righe affinché l'hash calcolato corrisponda a questo valore (ad es. Testo ASCII, con terminatori di riga CRLF).
Utilizzando le credenziali di esempio per creare una firma, il valore della firma è il seguente (nel calcolo della firma, la data è la stessa indicata x-amz-date nella policy (20151229):
8afdbf4008c03f22c2cd3cdb72e4afbb1f6a588f3255ac628749a66d7f09699e
Il seguente modulo di esempio specifica la precedente politica POST e supporta una richiesta POST a. sigv4examplebucket Copy/paste il contenuto in un editor di testo e salvalo come exampleform.html. È quindi possibile caricare i file di immagine nel bucket specifico utilizzando il file exampleform.html. La tua richiesta avrà esito positivo se la firma fornita corrisponde alla firma calcolata da Amazon S3.
Nota
È necessario aggiornare il nome del bucket, le date, le credenziali, la policy e la firma con valori validi affinché il bucket venga caricato correttamente su S3.
<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>
I parametri del post non fanno distinzione tra maiuscole e minuscole. Ad esempio, puoi specificare x-amz-signature o X-Amz-Signature.