View a markdown version of this page

Politica POST - Amazon Simple Storage Service

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à.

Politica POST

La politica richiesta per effettuare richieste autenticate tramite HTTP POST è un UTF-8 documento con codifica base64 scritto in JavaScript Object Notation (JSON) che specifica le condizioni che la richiesta deve soddisfare. A seconda di come si progetta il documento di policy, è possibile controllare la granularità dell'accesso per caricamento, per utente, per tutti i caricamenti o in base ad altri design che soddisfano le proprie esigenze.

Questa sezione descrive la politica POST. Ad esempio, i calcoli delle firme utilizzando la politica POST, vedereEsempio: Browser-Based caricamento tramite HTTP POST (utilizzando AWS Signature (versione 4).

Nota

Sebbene il documento sulla politica sia facoltativo, ti consigliamo vivamente di utilizzarne uno per controllare cosa è consentito nella richiesta. Se rendi il bucket scrivibile pubblicamente, non hai alcun controllo su quali utenti possono scrivere nel tuo bucket.

Di seguito è riportato un esempio di documento di policy POST.

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

La politica POST contiene sempre conditions gli elementi expiration and. La politica di esempio utilizza due tipi di corrispondenza delle condizioni (corrispondenza esatta e corrispondenza iniziale). Le sezioni seguenti descrivono questi elementi.

Scadenza

L'expirationelemento specifica la data e l'ora di scadenza della politica POST nel formato di data GMT ISO8601. Ad esempio, 2013-08-01T12:00:00.000Z specifica che la politica POST non è valida dopo la mezzanotte GMT del 1° agosto 2013.

Corrispondenza delle condizioni

Di seguito è riportata una tabella che descrive i tipi di corrispondenza delle condizioni che è possibile utilizzare per specificare le condizioni della politica POST (descritti nella sezione successiva). Sebbene sia necessario specificare almeno una condizione per ogni campo del modulo specificato nel modulo, è possibile creare criteri di corrispondenza più complessi specificando più condizioni per un campo modulo.

Tipo di corrispondenza delle condizioni Description

Corrispondenze esatte

Il valore del campo del modulo deve corrispondere al valore specificato. Questo esempio indica che l'ACL deve essere impostata su public-read:

{"acl": "public-read" }

Questo esempio rappresenta un modo alternativo per indicare che l'ACL deve essere impostata su public-read:

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

Inizia con

Il valore deve iniziare con il valore specificato. Questo esempio indica che la chiave dell'oggetto deve iniziare con user/user1:

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

Content-Types Corrispondenza in un Comma-Separated elenco

Content-Types i valori per una starts-with condizione che includono virgole vengono interpretati come elenchi. Ogni valore nell'elenco deve soddisfare la condizione affinché l'intera condizione venga soddisfatta. Ad esempio, se si verifica la seguente condizione:

["starts-with", "$Content-Type", "image/"]

Il valore seguente soddisferebbe la condizione:

"image/jpg,image/png,image/gif"

Il valore seguente non soddisferebbe la condizione:

["image/jpg,text/plain"]
Nota

Gli elementi di dati diversi da quelli Content-Type vengono trattati come stringhe, indipendentemente dalla presenza di virgole.

Corrispondenza di qualsiasi contenuto

Per configurare la politica POST in modo da consentire qualsiasi contenuto all'interno di un campo del modulo, utilizzala starts-with con un valore vuoto («»). Questo esempio consente qualsiasi valore persuccess_action_redirect:

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

Specifica degli intervalli

Per i campi del modulo che accettano un intervallo, separa il limite superiore e inferiore con una virgola. Questo esempio consente una dimensione del file compresa tra 1 e 10 MiB:

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

Le condizioni specifiche supportate in una politica POST sono descritte inCondizioni.

Condizioni

conditionsIn una policy POST c'è una serie di oggetti, ognuno dei quali viene utilizzato per convalidare la richiesta. È possibile utilizzare queste condizioni per limitare ciò che è consentito nella richiesta. Ad esempio, le condizioni politiche precedenti richiedono quanto segue:

  • La richiesta deve specificare il nome del johnsmith bucket.

  • Il nome della chiave dell'oggetto deve avere il user/eric prefisso.

  • L'ACL dell'oggetto deve essere impostato su. public-read

Ogni campo del modulo specificato in un modulo (ad eccezione dix-amz-signature, filepolicy, e i nomi di campo con un x-ignore- prefisso) deve apparire nell'elenco delle condizioni.

Nota

Tutte le variabili all'interno del modulo vengono espanse prima della convalida della politica POST. Pertanto, tutte le condizioni che corrispondono devono corrispondere ai campi del modulo espanso. Supponiamo di voler limitare il nome della chiave dell'oggetto a un prefisso specifico ()user/user1. In questo caso, impostate il campo del modulo chiave su. user/user1/${filename} La tua politica POST dovrebbe essere [ "starts-with", "$key", "user/user1/" ] (non inserire[ "starts-with", "$key", "user/user1/${filename}" ]). Per ulteriori informazioni, consulta Corrispondenza delle condizioni.

Le condizioni del documento politico sono descritte nella tabella seguente.

Nome elemento Description
acl

Specifica il valore ACL che deve essere utilizzato nell'invio del modulo.

Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza starts-with delle condizioni descritti nella sezione seguente.

bucket

Specifica il nome del bucket accettabile.

Questa condizione supporta il tipo di corrispondenza esatta della condizione.

content-length-range

Le dimensioni minime e massime consentite per il contenuto caricato.

Questa condizione supporta il tipo di corrispondenza content-length-range delle condizioni.

Cache-Control

Content-Type

Content-Disposition

Content-Encoding

Expires

REST-specific intestazioni. Per ulteriori informazioni, consulta POST Object.

Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza starts-with delle condizioni.

key

Il nome della chiave accettabile o il prefisso dell'oggetto caricato.

Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza starts-with delle condizioni.

success_action_redirect

redirect

L'URL a cui viene reindirizzato il client dopo il corretto caricamento.

Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza starts-with delle condizioni.

success_action_status

Il codice di stato restituito al client in caso di caricamento riuscito, se non success_action_redirect è specificato.

Questa condizione supporta una corrispondenza esatta.

x-amz-algorithm

L'algoritmo di firma che deve essere utilizzato durante il calcolo della firma. Per la versione 4 di AWS Signature, il valore èAWS4-HMAC-SHA256.

Questa condizione supporta una corrispondenza esatta.

x-amz-credential

Le credenziali utilizzate per calcolare la firma. Fornisce l'ID della chiave di accesso e le informazioni sull'ambito che identificano l'area e il servizio per i quali la firma è valida. Dovrebbe essere lo stesso ambito utilizzato nel calcolo della chiave di firma per il calcolo della firma.

È una stringa del seguente formato:

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

Ad esempio:

AKIAIOSFODNN7EXAMPLE/20130728/us-east-1/s3/aws4_request

Per Amazon S3, la stringa aws-service è. s3 Per un elenco delle aws-region stringhe Amazon S3, consulta Regioni ed endpoint in. Riferimenti generali di AWS Ciò è necessario se nella richiesta è incluso un documento di policy POST.

Questa condizione supporta una corrispondenza esatta.

x-amz-date

Il valore della data specificato nella stringa in formato ISO8601. Ad esempio, 20130728T000000Z. La data deve essere la stessa utilizzata per creare la chiave di firma per il calcolo della firma.

Ciò è necessario se nella richiesta è incluso un documento relativo alla politica POST.

Questa condizione supporta una corrispondenza esatta.

x-amz-security-token

Token DevPay di sicurezza Amazon.

Ogni richiesta che utilizza Amazon DevPay richiede due campi del x-amz-security-token modulo: uno per il token del prodotto e uno per il token utente. Di conseguenza, i valori devono essere separati da virgole. Ad esempio, se il token utente è eW91dHViZQ== e il token del prodotto èb0hnNVNKWVJIQTA=, imposti la voce della politica POST su:{ "x-amz-security-token": "eW91dHViZQ==,b0hnNVNKWVJIQTA=" }.

Per ulteriori informazioni su Amazon DevPay, consulta Using DevPay in the Amazon Simple Storage Service User Guide.

x-amz-meta-*

User-specified metadati.

Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza starts-with delle condizioni.

x-amz-*

Vedi POST Object () POST Object per altre x-amz-* intestazioni.

Questa condizione supporta una corrispondenza esatta.

Nota

Se il tuo toolkit aggiunge altri campi modulo (ad esempio, Flash aggiungefilename), devi aggiungerli al documento sulla politica POST. Se puoi controllare questa funzionalità, aggiungi il prefisso x-ignore- al campo in modo che Amazon S3 ignori la funzionalità e non ne alteri le versioni future.

Utilizzo di escape con caratteri

I caratteri che devono essere evitati all'interno di un documento di policy POST sono descritti nella tabella seguente.

Sequenza di escape Descrizione

\\

Barra rovesciata

\$

Simbolo del dollaro

\b

Backspace

\f

Avanzamento modulo

\n

Nuova riga

\r

Ritorno a capo

\t

Tabulatore orizzontale

\v

Tabulatore verticale

\ u xxxx

Tutti i caratteri Unicode

Ora che conosci i moduli e le politiche e hai capito come funziona la firma, puoi provare un esempio di caricamento POST. È necessario scrivere il codice per calcolare la firma. L'esempio fornisce un modulo di esempio e una politica POST che puoi utilizzare per testare i calcoli della firma. Per ulteriori informazioni, consulta Esempio: Browser-Based caricamento tramite HTTP POST (utilizzando AWS Signature (versione 4).