Mi piacerebbe creare un servizio Web per un'app per iPhone. Per quanto riguarda i caricamenti di file, mi chiedo quale sia la procedura standard e la soluzione più conveniente. Per quanto posso vedere, ci sono due possibilità:Caricare direttamente su S3 o tramite EC2?
- client> S3: Ho caricare un file da iPhone a S3 direttamente (con il AWS SDK)
- client> EC2> S3: aggiungo un file al mio server (EC2 in esecuzione Django) e quindi il server carica il file di S3 (come descritto in questo post)
non ho intenzione di modificare il file in alcun modo. Devo solo dire al database di aggiungere una voce. Quindi, se dovessi caricare un file Client> S3, dovrei comunque collegarmi al server per fare la voce del database.
It seems come se EC2> S3 non costa nulla fintanto che i due si trovano nella stessa regione.
Sarei interessato a sapere quali sono i vantaggi e gli svantaggi prima di iniziare a implementare i caricamenti di file.
Grazie mille. Quindi, se ti capisco correttamente, non c'è alcun reale vantaggio nel farlo tramite l'EC2. Non direste che è un po 'complicato per (1) avere un GUID restituito al client, (2) fare il client di upload> S3 e (3) connettersi a EC2 per fare la voce del database. Inoltre, dovrei controllare prima del primo passaggio se l'immagine può essere effettivamente caricata, quindi il passaggio 0 dovrebbe essere quello di connettersi a EC2 e controllare se il file esiste già. –
Sì, è un po 'più complesso, ma direi dal punto di vista della futura prova della tua app e garantire la scalabilità è essenziale. Dovresti usare EC2 come proxy per S3 altrimenti. S3 è un servizio di storage infinitamente scalabile: perché mettere un collo di bottiglia di fronte ad esso? – reach4thelasers
Grazie! Quindi, per chiarire: se carico direttamente su S3, non avrò il problema di caricare pezzi in abbondanza e non dovrò preoccuparmi della memoria della mia istanza EC2, giusto? È un po 'come se S3 fosse un'altra istanza, solo che è un grosso disco fisso, che non fa altro che immagazzinare cose e accettare caricamenti, giusto? Quindi, sarebbe davvero imprudente passare attraverso un'istanza EC2 e sprecare le mie risorse EC2 per il caricamento di roba mentre potrebbe fare altre cose (ad esempio la gestione del database ecc.). –