2013-04-08 26 views
8

Sto costruendo un sito Web PHP che manterrà i suoi file di contenuti su Amazon S3. I file del sito Web (con codice PHP) sono ospitati su un server tradizionale. Gli utenti si registreranno sul sito Web e dopo la registrazione e l'accesso avranno accesso ai file su S3.Lasciamo scaricare solo gli utenti registrati dal mio bucket Amazon S3

La domanda è: come consentire solo agli utenti registrati di scaricare i file e impedire a tutti gli altri di scaricare? AWS IAM deve essere coinvolto in qualche modo?

Non voglio gli URL in scadenza. Voglio concedere l'accesso ai file solo a un utente specifico e non voglio che condividano il collegamento con nessun altro per un periodo di tempo.

In futuro, inoltre, desidero limitare l'accesso ai file per gli utenti registrati, a seconda del tipo di account utente che l'utente avrà accesso a file diversi.

Thx in anticipo per le risposte!

+4

Non è possibile con S3. Devi prima scaricare i file sul tuo server web e servirli da lì o creare URL in scadenza. – sprain

+2

grazie! almeno hai risposto qualcosa invece di sviare la mia domanda come l'altra a ** fori – Val

+1

+1, stavo anche cercando la soluzione e non vedo alcun motivo per cui la domanda dovrebbe essere rifiutata. – kiranvj

risposta

3

Questo può essere fatto ... Io uso ROR invece di PHP, dove la mia applicazione controlla l'accesso ai dati in un bucket S3. Ho dei bucket a cui la mia app può accedere e l'accesso ai file è limitato dalle loro credenziali nella mia app. Ha senso?

Ho un bucket pubblico per archiviare le mie risorse (immagini disponibili pubblicamente) e un bucket a cui può accedere solo la mia applicazione. Gli utenti nella mia applicazione possono accedere a determinati bit di bucket solo in base alle loro credenziali.

Il database memorizza un riferimento al file/posizione esatto s3, come accedervi (credenziali e chiavi crittografate passate durante la transazione) e chi può accedervi.

Leggere le offerte di risorse Web da un bucket S3 e creare un modulo di caricamento in un bucket S3. Questo ti darà un'idea di come interagire con i secchi S3. Una volta che puoi interagire con il contenuto del bucket, puoi controllare l'accesso con la tua applicazione web.

Buona fortuna!

+0

In che modo vengono trasmessi i dati del file? Passa attraverso il tuo server o direttamente da S3 all'utente? È possibile solo con ROR? Sto usando PHP e la classe S3 personalizzata da Undesigned: http://undesigned.org.za/2007/10/22/amazon-s3-php-class e molto probabilmente dovrò attenermi agli URL firmati – Val

+1

tu può farlo in entrambi i modi ... http: //aws.amazon.com/articles/1434 è un metodo diretto che implementi te stesso. Non conosco PHP, ma ROR ha anche un sacco di plugin per gestire farlo per voi (portante wave, rails-direct-upload, paperclip, swf-upload). – twinturbotom

Problemi correlati