Leer hoe u S3-bestandsopslag kunt instellen met behulp van deze stapsgewijze handleiding.

Als u een Django-webapp bouwt, is het essentieel om efficiënt om te gaan met statische middelen en door gebruikers geüploade mediabestanden.

In een ontwikkelomgeving beheert Django deze bestanden. Tijdens de productie wilt u echter meer opties verkennen. Uw gebruikersbestand kan aanzienlijk groeien en u hebt mogelijk te maken met veel grotere bestanden, zoals audio en video.

De Amazon Web Services (AWS) Simple Storage Service (S3) Bucket is een alternatief voor het hosten van statische en mediabestanden. Door S3 te integreren met Django, kunt u de last van bestandsbeheer van uw server verlichten, de belasting verminderen en zorgen voor een snellere, betrouwbaardere levering van middelen.

Stap 1: Maak een AWS-account aan

Als u geen AWS-account hebt, navigeert u naar de AWS-siteen maak een nieuw account aan.

Nieuwe AWS-accounts hebben een jaar lang elke maand gratis toegang tot 5 GB S3-standaardopslag.

Stap 2: maak een S3-bucket voor uw project

instagram viewer
  1. Nadat u uw AWS-account heeft aangemaakt, logt u in en zoekt u naar S3 in de zoekbalk bovenaan en selecteer vervolgens de eerste optie.
  2. Nadat je de eerste optie hebt geselecteerd, zie je een nieuwe pagina. Klik op de Emmer maken knop:
  3. Geef vervolgens een naam op voor uw S3-bucket. U kunt het grootste deel van de configuratie als standaard laten staan.
  4. Scroll naar beneden naar de Instellingen voor openbare toegang voor deze bucket blokkeren sectie, verwijder het vinkje bij de Blokkeer alle openbare toegang instelling en bevestig de waarschuwing die verschijnt.
  5. Als u klaar bent, klikt u op de Emmer maken knop. Het zal u omleiden naar een pagina met een lijst met de S3-buckets die u hebt gemaakt.

Stap 3: Maak een IAM-gebruiker aan op AWS

AWS biedt een dienst genaamd IAM (Identity and Access Management). Hiermee kunt u een apart account maken voor een specifieke persoon of applicatie die moet communiceren met AWS-services.

U kunt verschillende machtigingsniveaus toewijzen aan IAM-gebruikers, die individuen of applicaties vertegenwoordigen die communiceren met de AWS-services die u hebt gemaakt. Met IAM-gebruikers kunt u ervoor zorgen dat elke gebruiker alleen toegang heeft tot de bronnen die hij nodig heeft en niets meer.

Om veiligheidsredenen moet u een IAM-gebruiker voor uw Django-project maken om te communiceren met uw S3-bucket. Volg deze stappen om een ​​IAM-gebruiker op AWS aan te maken:

  1. Typ in de zoekbalk IK BEN en selecteer de eerste optie. Er verschijnt een nieuwe pagina.
  2. Selecteer aan de linkerkant van de IAM-pagina Gebruikersen klik vervolgens op de Voeg gebruikers toe knop. Er wordt een andere pagina geopend om wat informatie in te vullen.
  3. Begin met het invoeren van een naam voor de IAM-gebruiker en klik op de Volgende knop onderaan: Op de volgende pagina moet u de machtigingsniveaus voor de IAM-gebruiker selecteren. Volg deze stappen:
    1. Selecteer eerst de Voeg beleidsregels direct toe optie uit de Machtigingen opties sectie.
    2. Definieer vervolgens een machtigingsbeleid voor uw IAM-gebruiker. Dit bepaalt wat de IAM-gebruiker wel en niet kan doen. Aangezien u wilt dat uw Django-app bestanden downloadt en uploadt, moet u deze volledige toegang geven tot de S3-bucket.
    3. In de Toestemmingsbeleid sectie, moet u zoeken naar S3 Volledige toegang en selecteer de optie. Als u klaar bent, klikt u op de Volgende knop.
  4. Bekijk vervolgens het beleid voor de IAM-gebruiker en klik op de Gebruiker maken knop om uw IAM-gebruiker aan te maken.

Stap 4: maak een toegangssleutel aan voor uw IAM-gebruiker

In AWS verwijst een toegangssleutel naar inloggegevens die u kunt gebruiken om AWS-bronnen programmatisch te verifiëren en veilig te openen. Uw Django-project moet deze inloggegevens verstrekken om toegang te krijgen tot uw S3-bucket.

De volgende stappen helpen u bij het genereren van een toegangssleutel voor uw project.

  1. Nadat u uw IAM-gebruiker heeft gemaakt, ontvangt u een waarschuwingsbericht waarin u wordt gevraagd de gebruiker te bekijken. U kunt de gebruiker ook bekijken door op te klikken Gebruikersnaam.
  2. Selecteer vervolgens de Beveiligingsreferenties tab, scroll naar beneden om de Toegangssleutels gedeelte en selecteer Toegangssleutel maken.
  3. U moet een use-case voor uw toegang selecteren, zodat AWS waar nodig een alternatieve optie kan aanbevelen. Het heeft geen invloed op uw toegangssleutel. Voel je vrij om een ​​optie te selecteren zoals Dienst van derden of Lokale code en bevestig de waarschuwing die verschijnt. Als u klaar bent, klikt u op de Volgende knop.
  4. Voer op de volgende pagina een beschrijvingstag in voor uw toegangssleutel en klik op de Toegangssleutel maken knop.
  5. Nadat u uw toegangssleutel hebt gemaakt, kunt u uw inloggegevens kopiëren of ze downloaden als een CSV-bestand. Hoe dan ook, zorg ervoor dat u deze gegevens veilig bewaart.

Stap 5: Configureer uw Django-project voor S3 Bucket

Installeer deze pakketten om uw S3-bucket met een Django-project te gebruiken:

  • django-opslagplaatsen: Dit pakket helpt u bij het definiëren van een opslagbackend voor uw bestanden.
  • boto3: Dit pakket is de AWS Softwareontwikkelingskit (SDK) om uw Python-project te helpen communiceren met AWS.

U kunt deze pakketten in uw Python virtuele omgeving met Python's Pip-pakketbeheerder door deze opdracht in uw terminal te typen:

pip install django-storages boto3

Nadat u deze pakketten met succes hebt geïnstalleerd, opent u uw instellingen.py archiveren en toevoegen boto3 naar de geïnstalleerde apps.

Het laatste dat u hoeft te doen, is uw Django-project configureren om de AWS S3-bucket te gebruiken. Dit is de algemene configuratie die moet worden gebruikt:

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'

Plak de bovenstaande configuratie in uw instellingen.py bestand en vervang de waarden dienovereenkomstig. Vervang uw AWS_ACCESS_KEY_ID En AWS_SECRET_ACCESS_KEY met de toegangssleutel en de geheime toegangssleutel die u eerder hebt gekopieerd of gedownload. Je moet ook de AWS_STORAGE_BUCKET_NAME En AWS_S3_REGION_NAME naar de namen van uw S3-bucket en -regio.

U kunt de regionaam krijgen door naar uw S3-bucket te navigeren en de laatste waarden uit de AWS-regio kolom.

Stap 6: Test uw AWS-configuratie

Als de bovenstaande stappen zijn voltooid, zou u klaar moeten zijn om uw toepassing te testen door bestanden te uploaden. De volgende codevoorbeelden uploaden bestanden rechtstreeks vanuit het beheerderspaneel, maar u bent vrij om uw bestanden vanaf een andere plaats te uploaden.

Voor de context kunt u een model hebben dat er als volgt uitziet:

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

Zorg ervoor dat u de nodige bewerkingen uitvoert, zoals migraties, het toevoegen aan het admin-paneel, het maken van een weergave en andere dingen die nodig zijn voor uw project. Zorg dat je oefent Django's MVT-principe.

Als u klaar bent, navigeert u naar uw beheerderspaneel of welk formulier u ook hebt gemaakt voor het uploaden van bestanden, en uploadt u een afbeeldingsbestand.

Navigeer naar uw hoofdsite en bevestig dat de afbeelding er is. Als dit het geval is, klikt u met de rechtermuisknop op de afbeelding en selecteert u het Open afbeelding in een nieuw tabblad keuze. Op het nieuwe tabblad met de afbeelding ziet u dat de adresbalk verwijst naar de S3-bucket die u eerder hebt gemaakt:

Een andere manier om te bevestigen dat uw configuratie werkt, is door naar uw bucket op de AWS-console te navigeren. Je vindt je afbeelding daar:

Stap 7: verzamel statische bestanden naar uw S3-bucket

Tot nu toe heb je mediabestanden kunnen uploaden naar je S3-bucket; nu moet je je statische bestanden uploaden.

Om dat te doen, voegt u deze configuraties toe aan uw instellingen.py bestand:

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'

Open daarna je Opdrachtregelinterface (CLI) en voer deze opdracht uit:

python manage.py collectstatic --noinput

Om te bevestigen dat alles werkt, opent u uw S3-bucket in de AWS-console. Je ziet een map met de naam statisch.

Gebruik AWS S3 Bucket voor nog veel meer

De mogelijkheden van AWS S3 emmers zijn enorm! U moet er vertrouwd mee raken en leren hoe u S3 voor andere doeleinden kunt gebruiken, zoals het hosten van een statische webtoepassing.

Als u weet hoe u S3-emmers op de juiste manier gebruikt, bespaart u veel tijd en kunt u een beter product of een betere oplossing bouwen. Maar u moet er ook rekening mee houden dat S3 mogelijk niet voor elk geval geschikt is, dus denk na over uw projectvereisten voordat u het gebruikt.