Erfahren Sie anhand dieser Schritt-für-Schritt-Anleitung, wie Sie die S3-Dateispeicherung einrichten.

Wenn Sie eine Django-Webanwendung erstellen, ist es wichtig, statische Assets und vom Benutzer hochgeladene Mediendateien effizient zu verwalten.

In einer Entwicklungsumgebung verwaltet Django diese Dateien. In der Produktion möchten Sie jedoch weitere Optionen erkunden. Ihre Benutzerbasis kann erheblich wachsen und Sie müssen möglicherweise mit viel größeren Dateien wie Audio- und Videodateien arbeiten.

Der Amazon Web Services (AWS) Simple Storage Service (S3) Bucket ist eine Alternative zum Hosten statischer und Mediendateien. Durch die Integration von S3 mit Django können Sie Ihren Server von der Last der Dateiverwaltung entlasten, die Belastung reduzieren und eine schnellere und zuverlässigere Bereitstellung von Assets gewährleisten.

Schritt 1: Erstellen Sie ein AWS-Konto

Wenn Sie kein AWS-Konto haben, navigieren Sie zu AWS-Site, und erstellen Sie ein neues Konto.

Neue AWS-Konten haben ein Jahr lang jeden Monat kostenlosen Zugriff auf 5 GB S3-Standardspeicher.

Schritt 2: Erstellen Sie einen S3-Bucket für Ihr Projekt

  1. Nachdem Sie Ihr AWS-Konto erstellt haben, melden Sie sich an und suchen Sie nach S3 in der Suchleiste oben und wählen Sie dann die erste Option aus.
  2. Nachdem Sie die erste Option ausgewählt haben, wird eine neue Seite angezeigt. Drücke den Bucket erstellen Taste:
  3. Geben Sie als Nächstes einen Namen für Ihren S3-Bucket ein. Sie können den Großteil der Konfiguration als Standard belassen.
  4. Scrollen Sie nach unten zum Einstellungen für den öffentlichen Zugriff für diesen Bucket blockieren Deaktivieren Sie im Abschnitt „ Blockieren Sie den gesamten öffentlichen Zugriff Einstellung und bestätigen Sie die angezeigte Warnung.
  5. Wenn Sie fertig sind, klicken Sie auf Bucket erstellen Taste. Sie werden zu einer Seite weitergeleitet, auf der eine Liste der von Ihnen erstellten S3-Buckets angezeigt wird.

Schritt 3: Erstellen Sie einen IAM-Benutzer auf AWS

AWS bietet einen Dienst namens IAM (Identity and Access Management) an. Auf diese Weise können Sie ein separates Konto für eine bestimmte Person oder Anwendung erstellen, die mit AWS-Diensten interagieren muss.

Sie können IAM-Benutzern unterschiedliche Berechtigungsstufen zuweisen, die Einzelpersonen oder Anwendungen darstellen, die mit den von Ihnen erstellten AWS-Services interagieren. Mit IAM-Benutzern können Sie sicherstellen, dass jeder Benutzer nur Zugriff auf die Ressourcen hat, die er benötigt, und nicht mehr.

Aus Sicherheitsgründen sollten Sie einen IAM-Benutzer für Ihr Django-Projekt erstellen, um mit Ihrem S3-Bucket zu interagieren. Befolgen Sie diese Schritte, um einen IAM-Benutzer auf AWS zu erstellen:

  1. Geben Sie in die Suchleiste ein ICH BIN und wählen Sie die erste Option. Eine neue Seite wird angezeigt.
  2. Wählen Sie auf der linken Seite der IAM-Seite aus Benutzer, und klicken Sie dann auf Benutzer hinzufügen Taste. Es öffnet sich eine weitere Seite, auf der Sie einige Informationen eingeben können.
  3. Geben Sie zunächst einen Namen für den IAM-Benutzer ein und klicken Sie auf Nächste Button unten: Auf der nächsten Seite müssen Sie die Berechtigungsstufen für den IAM-Benutzer auswählen. Folge diesen Schritten:
    1. Wählen Sie zunächst die aus Hängen Sie Richtlinien direkt an Option aus dem Berechtigungsoptionen Abschnitt.
    2. Definieren Sie als Nächstes eine Berechtigungsrichtlinie für Ihren IAM-Benutzer. Dadurch wird bestimmt, was der IAM-Benutzer tun kann und was nicht. Da Sie möchten, dass Ihre Django-App Dateien herunter- und hochlädt, sollten Sie ihr vollen Zugriff auf den S3-Bucket gewähren.
    3. Im Berechtigungsrichtlinien Abschnitt, nach dem Sie suchen sollten S3FullAccess und wählen Sie die Option aus. Wenn Sie fertig sind, klicken Sie auf Nächste Taste.
  4. Überprüfen Sie als Nächstes die Richtlinien für den IAM-Benutzer und klicken Sie auf Benutzer erstellen Klicken Sie auf die Schaltfläche, um Ihren IAM-Benutzer zu erstellen.

Schritt 4: Erstellen Sie einen Zugriffsschlüssel für Ihren IAM-Benutzer

In AWS bezieht sich ein Zugriffsschlüssel auf Anmeldeinformationen, mit denen Sie sich programmgesteuert authentifizieren und sicher auf AWS-Ressourcen zugreifen können. Ihr Django-Projekt muss diese Anmeldeinformationen bereitstellen, um auf Ihren S3-Bucket zugreifen zu können.

Die folgenden Schritte helfen Ihnen, einen Zugriffsschlüssel für Ihr Projekt zu generieren.

  1. Nachdem Sie Ihren IAM-Benutzer erstellt haben, erhalten Sie eine Warnmeldung, die Sie auffordert, den Benutzer anzuzeigen. Alternativ können Sie den Benutzer anzeigen, indem Sie auf klicken Nutzername.
  2. Wählen Sie als Nächstes die aus Sicherheitsnachweise Scrollen Sie nach unten, um die Registerkarte zu finden Zugriffsschlüssel Abschnitt und wählen Sie Zugangsschlüssel erstellen.
  3. Sie müssen einen Anwendungsfall für Ihren Zugriff auswählen, damit AWS gegebenenfalls eine alternative Option empfehlen kann. Es hat keinen Einfluss auf Ihren Zugangsschlüssel. Fühlen Sie sich frei, eine Option auszuwählen, z Service von Drittanbietern oder Lokaler Code und bestätigen Sie die angezeigte Warnung. Wenn Sie fertig sind, klicken Sie auf Nächste Taste.
  4. Geben Sie auf der nächsten Seite ein Beschreibungs-Tag für Ihren Zugriffsschlüssel ein und klicken Sie auf Zugangsschlüssel erstellen Taste.
  5. Nachdem Sie Ihren Zugangsschlüssel erstellt haben, können Sie Ihre Zugangsdaten entweder kopieren oder als CSV-Datei herunterladen. Stellen Sie in jedem Fall sicher, dass diese Daten sicher aufbewahrt werden.

Schritt 5: Konfigurieren Sie Ihr Django-Projekt für S3 Bucket

Um Ihren S3-Bucket mit einem Django-Projekt zu verwenden, installieren Sie diese Pakete:

  • Django-Speicher: Dieses Paket hilft Ihnen bei der Definition eines Speicher-Backends für Ihre Dateien.
  • boto3: Dieses Paket ist das AWS Software Development Kit (SDK) um Ihr Python-Projekt bei der Interaktion mit AWS zu unterstützen.

Sie können diese Pakete in Ihrem installieren Virtuelle Python-Umgebung mit dem Pip-Paketmanager von Python, indem Sie diesen Befehl in Ihr Terminal eingeben:

pip install django-storages boto3

Sobald Sie diese Pakete erfolgreich installiert haben, öffnen Sie Ihr Settings.py Datei hinzufügen und hinzufügen boto3 zu den installierten Apps.

Als letztes müssen Sie Ihr Django-Projekt für die Verwendung des AWS S3-Buckets konfigurieren. Hier ist die allgemeine Konfiguration, die Sie verwenden sollten:

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'

Fügen Sie die obige Konfiguration in Ihr ein Settings.py Datei und ersetzen Sie die Werte entsprechend. Ersetzen Sie Ihr AWS_ACCESS_KEY_ID Und AWS_SECRET_ACCESS_KEY mit dem Zugangsschlüssel und geheimen Zugangsschlüssel, den Sie zuvor kopiert oder heruntergeladen haben. Sie sollten auch die ändern AWS_STORAGE_BUCKET_NAME Und AWS_S3_REGION_NAME zu den Namen Ihres S3-Buckets und Ihrer Region.

Sie können den Regionsnamen erhalten, indem Sie zu Ihrem S3-Bucket navigieren und die letzten Werte daraus kopieren AWS-Region Spalte.

Schritt 6: Testen Sie Ihre AWS-Konfiguration

Nachdem Sie die oben genannten Schritte abgeschlossen haben, sollten Sie bereit sein, Ihre Anwendung durch Hochladen von Dateien zu testen. Mit den folgenden Codebeispielen werden Dateien direkt aus dem Admin-Bereich hochgeladen. Sie können Ihre Dateien jedoch auch von einem anderen Ort aus hochladen.

Für den Kontext können Sie ein Modell haben, das so aussieht:

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

Stellen Sie sicher, dass Sie die notwendigen Vorgänge wie Migrationen, das Hinzufügen zum Admin-Panel, das Erstellen einer Ansicht und andere für Ihr Projekt notwendige Dinge durchführen. Stellen Sie sicher, dass Sie üben Djangos MVT-Prinzip.

Sobald Sie fertig sind, navigieren Sie zu Ihrem Admin-Panel oder dem Formular, das Sie für den Datei-Upload erstellt haben, und laden Sie eine Bilddatei hoch.

Navigieren Sie zu Ihrer Hauptseite und bestätigen Sie, dass das Bild dort ist. Wenn dies der Fall ist, klicken Sie mit der rechten Maustaste auf das Bild und wählen Sie das aus Öffne das Bild in einem neuen Tab Möglichkeit. Auf der neuen Registerkarte mit dem Bild werden Sie feststellen, dass die Adressleiste auf den S3-Bucket verweist, den Sie zuvor erstellt haben:

Eine andere Möglichkeit, zu bestätigen, dass Ihre Konfiguration funktioniert, besteht darin, zu Ihrem Bucket in der AWS-Konsole zu navigieren. Dort finden Sie Ihr Bild:

Schritt 7: Sammeln Sie statische Dateien in Ihrem S3-Bucket

Bisher konnten Sie Mediendateien in Ihren S3-Bucket hochladen; Jetzt müssen Sie Ihre statischen Dateien hochladen.

Fügen Sie dazu diese Konfigurationen zu Ihrem hinzu Settings.py Datei:

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

Öffnen Sie danach Ihr Befehlszeilenschnittstelle (CLI) und führen Sie diesen Befehl aus:

python manage.py collectstatic --noinput

Um zu bestätigen, dass alles funktioniert, öffnen Sie Ihren S3-Bucket in der AWS-Konsole. Sie sehen einen Ordner mit dem Namen statisch.

Nutzen Sie AWS S3 Bucket für noch viel mehr

Die Möglichkeiten von AWS S3 Buckets sind enorm! Sie sollten sich damit vertraut machen und lernen, S3 für andere Zwecke zu verwenden, beispielsweise zum Hosten einer statischen Webanwendung.

Wenn Sie wissen, wie Sie S3-Buckets richtig verwenden, sparen Sie viel Zeit und können ein besseres Produkt oder eine bessere Lösung entwickeln. Sie sollten sich jedoch auch darüber im Klaren sein, dass S3 möglicherweise nicht für jeden Fall geeignet ist. Berücksichtigen Sie daher Ihre Projektanforderungen, bevor Sie es verwenden.