2009-11-18 10 views
7

Un po 'di background: sto costruendo un'app per iPhone con un backend server complementare (scritto in Rails o forse Sinatra, ma probabilmente non pertinente per questa discussione). Parte della funzionalità implica il caricamento di immagini da iPhone al server. Questi ultimi vengono memorizzati su S3, quindi per semplificare l'app e risparmiare larghezza di banda, vorrei caricare le immagini direttamente da iPhone a S3, saltando il mio server di back-end.Amazon S3 caricamento POST (da iPhone)

L'utilizzo dell'API REST S3 (nel qual caso probabilmente utilizzerò ASIHTTPRequest) significherebbe memorizzare la chiave AWS e il segreto nell'app per iPhone, che non desidero fare per motivi di sicurezza.

Per ragioni simili, non voglio rendere il mio secchio S3 pubblicamente scrivibile.

Ora sembra che S3 abbia anche il supporto per browser-based uploads using POST. Se ho capito bene, questo funziona generando un documento di criteri firmato sul server, che consente quindi all'app client di caricare direttamente il file su S3. Sembra che in linea di principio questo dovrebbe funzionare non solo per i browser, ma anche per le app per iPhone.

Tuttavia, ho difficoltà a capire il modo esatto per ottenere questo funzionamento (non la parte specifica per iPhone, solo caricamenti S3 POST in generale). Quali informazioni devono essere inviate al server per calcolare la firma (ad esempio, ha bisogno della dimensione del file o di qualsiasi altra informazione sul file)? Scoverò ancora una volta i documenti ufficiali e inizierò a sperimentare con questo, ma se qualcuno mi indicasse alcuni tutorial o codice di esempio, sarebbe molto apprezzato.

risposta

5

Quando si genera il criterio, è possibile limitare ciò che viene caricato in vari modi (nome chiave, tipo mime, dimensione del file, ecc.) Costruendo una stringa JSON. Queste restrizioni (incluso un expirydate) vengono quindi firmate usando la chiave segreta di AWS. Successivamente, inserisci la politica firmata e accedi alla chiave come parametri del modulo in AWS insieme alla chiave per la nuova risorsa, al contenuto e agli altri metadati che ti piacciono.

Il doco ufficiale è l'unico riferimento che conosco (ma non l'ho googled per esso sia ...)

http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/HTTPPOSTForms.html#HTTPPOSTConstructPolicy

è la pagina probabilmente siete più interessati.

+0

Grazie per la spiegazione. Speravo che potesse esserci qualcosa di più simile a un tutorial, ma in retrospettiva sembra che il documento Amazon abbia tutte le informazioni necessarie, quindi dovrei solo iniziare a sperimentarlo. –

+0

questo URL non funziona più – Deepak