Scopri come configurare l'archiviazione file S3 utilizzando questa guida dettagliata.
Se stai creando un'app Web Django, è essenziale gestire in modo efficiente le risorse statiche e i file multimediali caricati dagli utenti.
In un ambiente di sviluppo, Django gestisce questi file. In produzione, tuttavia, vorrai esplorare ulteriori opzioni. La tua base di utenti potrebbe crescere in modo significativo e potresti avere a che fare con file molto più grandi, come audio e video.
Il bucket Simple Storage Service (S3) di Amazon Web Services (AWS) è un'alternativa per l'hosting di file statici e multimediali. Integrando S3 con Django, puoi scaricare l'onere della gestione dei file dal tuo server, ridurre il carico e garantire una consegna delle risorse più rapida e affidabile.
Passaggio 1: crea un account AWS
Se non disponi di un account AWS, accedi al file Sito dell'AWSe crea un nuovo account.
I nuovi account AWS hanno accesso gratuito a 5 GB di storage standard S3 ogni mese per un anno.
Passaggio 2: crea un bucket S3 per il tuo progetto
- Dopo aver creato il tuo account AWS, accedi e cerca S3 nella barra di ricerca in alto, quindi seleziona la prima opzione.
- Dopo aver selezionato la prima opzione, vedrai una nuova pagina. Clicca il Crea secchio pulsante:
- Quindi, fornisci un nome per il tuo bucket S3. Puoi lasciare la maggior parte della configurazione come predefinita.
- Scorri verso il basso fino a Blocca le impostazioni di accesso pubblico per questo bucket sezione, deselezionare la Blocca tutti gli accessi pubblici impostazione e accettare l'avviso visualizzato.
- Al termine, fare clic su Crea secchio pulsante. Ti reindirizzerà a una pagina che mostra un elenco dei bucket S3 che hai creato.
Fase 3: crea un utente IAM su AWS
AWS fornisce un servizio chiamato IAM (Identity and Access Management). Ciò consente di creare un account separato per una persona o un'applicazione specifica che deve interagire con i servizi AWS.
Puoi assegnare diversi livelli di autorizzazioni agli utenti IAM, che rappresentano individui o applicazioni che interagiscono con i servizi AWS che hai creato. Con gli utenti IAM, puoi assicurarti che ogni utente abbia accesso solo alle risorse di cui ha bisogno e nient'altro.
Per motivi di sicurezza, devi creare un utente IAM per il tuo progetto Django per interagire con il tuo bucket S3. Segui questi passaggi per creare un utente IAM su AWS:
- Digita nella barra di ricerca SONO e seleziona la prima opzione. Apparirà una nuova pagina.
- Sul lato sinistro della pagina IAM, seleziona Utenti, quindi procedere facendo clic su Aggiungi utenti pulsante. Si aprirà un'altra pagina per inserire alcune informazioni.
- Inizia inserendo un nome per l'utente IAM e facendo clic su Prossimo pulsante in basso: Nella pagina successiva, devi selezionare i livelli di autorizzazione per l'utente IAM. Segui questi passi:
- Per prima cosa, seleziona il Allega direttamente le policy opzione dal Opzioni di autorizzazione sezione.
- Successivamente, definisci una policy di autorizzazione per il tuo utente IAM. Ciò determinerà ciò che l'utente IAM può e non può fare. Dal momento che vuoi che la tua app Django scarichi e carichi file, dovresti darle pieno accesso al bucket S3.
- Nel Politiche di autorizzazione sezione, dovresti cercare S3Accesso completo e selezionare l'opzione. Al termine, fare clic su Prossimo pulsante.
- Successivamente, esamina le policy per l'utente IAM e fai clic su Creare un utente pulsante per creare il tuo utente IAM.
Passaggio 4: crea una chiave di accesso per il tuo utente IAM
In AWS, una chiave di accesso fa riferimento alle credenziali che puoi utilizzare per autenticare e accedere in modo sicuro alle risorse AWS a livello di programmazione. Il tuo progetto Django deve fornire queste credenziali per accedere al tuo bucket S3.
I seguenti passaggi ti aiuteranno a generare una chiave di accesso per il tuo progetto.
- Dopo aver creato il tuo utente IAM, riceverai un messaggio di avviso che ti chiede di visualizzare l'utente. In alternativa, è possibile visualizzare l'utente facendo clic sull'icona Nome utente.
- Quindi, seleziona il Credenziali di sicurezza scheda, scorrere verso il basso per trovare il Chiavi di accesso sezione e selezionare Crea chiave di accesso.
- Dovrai selezionare un caso d'uso per il tuo accesso, in modo che AWS possa consigliare un'opzione alternativa, se del caso. Non influisce sulla tua chiave di accesso. Sentiti libero di selezionare un'opzione come Servizio di terze parti O Codice locale e riconoscere l'avviso che si apre. Al termine, fare clic su Prossimo pulsante.
- Nella pagina successiva, inserisci un tag descrittivo per la tua chiave di accesso e fai clic su Crea chiave di accesso pulsante.
- Dopo aver creato la tua chiave di accesso, puoi copiare le tue credenziali o scaricarle come file CSV. In ogni caso, assicurati di mantenere questi dati al sicuro.
Passaggio 5: configura il tuo progetto Django per il bucket S3
Per utilizzare il tuo bucket S3 con un progetto Django, installa questi pacchetti:
- django-depositi: Questo pacchetto ti aiuterà a definire un backend di archiviazione per i tuoi file.
- boto3: Questo pacchetto è l'AWS Kit di sviluppo software (SDK) per aiutare il tuo progetto Python a interagire con AWS.
Puoi installare questi pacchetti nel tuo file Ambiente virtuale Python con il gestore di pacchetti Pip di Python digitando questo comando nel tuo terminale:
pip install django-storages boto3
Dopo aver installato correttamente questi pacchetti, apri il tuo file impostazioni.py file e aggiungi boto3 alle app installate.
L'ultima cosa da fare è configurare il tuo progetto Django per utilizzare il bucket AWS S3. Ecco la configurazione generale da utilizzare:
AWS_ACCESS_KEY_ID = 'AWS_ACCESS_KEY_ID '
AWS_SECRET_ACCESS_KEY = 'AWS_SECRET_ACCESS_KEY'
AWS_STORAGE_BUCKET_NAME = 'AWS_STORAGE_BUCKET_NAME'
AWS_S3_SIGNATURE_NAME = 's3v4',
AWS_S3_REGION_NAME = 'AWS_S3_REGION_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERITY = True
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
Incolla la configurazione di cui sopra nel tuo file impostazioni.py file e sostituire i valori di conseguenza. Sostituisci il tuo AWS_ACCESS_KEY_ID E AWS_SECRET_ACCESS_KEY con la chiave di accesso e la chiave di accesso segreta che hai copiato o scaricato in precedenza. Dovresti anche cambiare il file AWS_STORAGE_BUCKET_NAME E AWS_S3_REGION_NAME ai nomi del bucket e della regione S3.
Puoi ottenere il nome della regione accedendo al tuo bucket S3 e copiando gli ultimi valori dal file Regione AWS colonna.
Passaggio 6: verifica la tua configurazione AWS
Dopo aver completato i passaggi precedenti, dovresti essere pronto per testare la tua applicazione caricando i file. I seguenti esempi di codice caricheranno i file direttamente dal pannello di amministrazione, ma sei libero di caricare i tuoi da un'altra posizione.
Per il contesto, puoi avere un modello simile a questo:
classPost(models.Model):
title = models.CharField(max_length=225, blank=False, null=False)
content = models.TextField('Post Body', blank=False, null=False)
author = models.CharField(max_length=225, blank=False, null=False)
date_published = models.DateTimeField(auto_now=True)
image = models.ImageField(upload_to='posts')
def__str__(self):
return self.title
Assicurati di eseguire le operazioni necessarie come le migrazioni, l'aggiunta al pannello di amministrazione, la creazione di una vista e altre cose necessarie per il tuo progetto. Assicurati di esercitarti Il principio MVT di Django.
Al termine, vai al tuo pannello di amministrazione o qualsiasi modulo che hai creato per il caricamento del file e carica un file immagine.
Vai al tuo sito principale e conferma che l'immagine è lì. In tal caso, fare clic con il pulsante destro del mouse sull'immagine e selezionare il file Apri l'immagine in una nuova scheda opzione. Nella nuova scheda contenente l'immagine, noterai che la barra degli indirizzi fa riferimento al bucket S3 che hai creato in precedenza:
Un altro modo per verificare che la configurazione funzioni è accedere al bucket nella console AWS. Troverai la tua immagine lì:
Passaggio 7: raccogli i file statici nel tuo bucket S3
Finora, sei stato in grado di caricare file multimediali nel tuo bucket S3; ora devi caricare i tuoi file statici.
Per fare ciò, aggiungi queste configurazioni al tuo impostazioni.py file:
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'
Successivamente, apri il tuo Interfaccia della riga di comando (CLI) ed esegui questo comando:
python manage.py collectstatic --noinput
Per verificare che tutto funzioni, apri il tuo bucket S3 nella console AWS. Vedrai una cartella chiamata statico.
Usa il bucket AWS S3 per molto di più
Le possibilità dei bucket AWS S3 sono enormi! Dovresti familiarizzare con esso e imparare a utilizzare S3 per altri scopi, come l'hosting di un'applicazione Web statica.
Sapere come utilizzare correttamente i bucket S3 ti farà risparmiare molto tempo e ti aiuterà a creare un prodotto o una soluzione migliore. Ma dovresti anche essere consapevole che S3 potrebbe non essere adatto a tutti i casi, quindi considera i requisiti del tuo progetto prima di utilizzarlo.