Dowiedz się, jak skonfigurować przechowywanie plików S3, korzystając z tego przewodnika krok po kroku.

Jeśli tworzysz aplikację internetową Django, niezbędna jest wydajna obsługa zasobów statycznych i plików multimedialnych przesyłanych przez użytkowników.

W środowisku programistycznym Django zarządza tymi plikami. Jednak w produkcji będziesz chciał zbadać dalsze opcje. Twoja baza użytkowników może znacznie wzrosnąć i możesz mieć do czynienia ze znacznie większymi plikami, takimi jak audio i wideo.

Usługa Amazon Web Services (AWS) Simple Storage Service (S3) Bucket to jedna z alternatyw dla hostowania plików statycznych i multimedialnych. Integrując S3 z Django, możesz odciążyć swój serwer od zarządzania plikami, zmniejszyć obciążenie i zapewnić szybsze, bardziej niezawodne dostarczanie zasobów.

Krok 1: Utwórz konto AWS

Jeśli nie masz konta AWS, przejdź do witryna AWSi utwórz nowe konto.

Nowe konta AWS mają bezpłatny dostęp do 5 GB standardowej przestrzeni dyskowej S3 każdego miesiąca przez rok.

instagram viewer

Krok 2: Utwórz wiadro S3 dla swojego projektu

  1. Po utworzeniu konta AWS zaloguj się i wyszukaj S3 na pasku wyszukiwania u góry, a następnie wybierz pierwszą opcję.
  2. Po wybraniu pierwszej opcji zobaczysz nową stronę. Kliknij Utwórz zasobnik przycisk:
  3. Następnie podaj nazwę zasobnika S3. Możesz pozostawić większość konfiguracji jako domyślną.
  4. Przewiń w dół do Zablokuj ustawienia dostępu publicznego dla tego zasobnika sekcji, usuń zaznaczenie Zablokuj wszelki publiczny dostęp ustawienie i potwierdź wyświetlone ostrzeżenie.
  5. Po zakończeniu kliknij Utwórz zasobnik przycisk. Przekieruje Cię do strony z listą utworzonych zasobników S3.

Krok 3: Utwórz użytkownika IAM w AWS

AWS udostępnia usługę o nazwie IAM (Identity and Access Management). Pozwala to na utworzenie osobnego konta dla konkretnej osoby lub aplikacji, która musi wchodzić w interakcję z usługami AWS.

Możesz przypisać różne poziomy uprawnień użytkownikom IAM, reprezentującym osoby lub aplikacje, które wchodzą w interakcje z utworzonymi przez Ciebie usługami AWS. Dzięki użytkownikom IAM możesz mieć pewność, że każdy użytkownik ma dostęp tylko do potrzebnych mu zasobów i nic więcej.

Ze względów bezpieczeństwa powinieneś utworzyć użytkownika IAM dla swojego projektu Django, aby mógł on wchodzić w interakcje z twoim segmentem S3. Wykonaj następujące kroki, aby utworzyć użytkownika IAM w AWS:

  1. W pasku wyszukiwania wpisz JA JESTEM i wybierz pierwszą opcję. Pojawi się nowa strona.
  2. Po lewej stronie strony IAM wybierz Użytkownicy, a następnie kliknij przycisk Dodaj użytkowników przycisk. Otworzy się kolejna strona, aby wypełnić pewne informacje.
  3. Zacznij od wprowadzenia nazwy użytkownika IAM i kliknięcia Następny przycisk na dole: Na następnej stronie musisz wybrać poziomy uprawnień dla użytkownika IAM. Wykonaj następujące kroki:
    1. Najpierw wybierz Dołącz zasady bezpośrednio opcja od Opcje uprawnień Sekcja.
    2. Następnie zdefiniuj zasady uprawnień dla użytkownika IAM. To określi, co użytkownik IAM może, a czego nie. Ponieważ chcesz, aby Twoja aplikacja Django pobierała i wysyłała pliki, powinieneś dać jej pełny dostęp do zasobnika S3.
    3. w Zasady uprawnień sekcja, której powinieneś szukać S3Pełny dostęp i wybierz opcję. Po zakończeniu kliknij Następny przycisk.
  4. Następnie przejrzyj zasady dla użytkownika IAM i kliknij przycisk Stwórz użytkownika przycisk, aby utworzyć użytkownika IAM.

Krok 4: Utwórz klucz dostępu dla swojego użytkownika IAM

W AWS klucz dostępu odnosi się do poświadczeń, których można użyć do uwierzytelnienia i bezpiecznego dostępu do zasobów AWS programowo. Twój projekt Django musi podać te dane uwierzytelniające, aby uzyskać dostęp do zasobnika S3.

Poniższe kroki pomogą Ci wygenerować klucz dostępu do Twojego projektu.

  1. Po utworzeniu użytkownika IAM otrzymasz komunikat ostrzegawczy z prośbą o wyświetlenie użytkownika. Alternatywnie możesz wyświetlić użytkownika, klikając przycisk Nazwa użytkownika.
  2. Następnie wybierz Poświadczenia bezpieczeństwa przewiń w dół, aby znaleźć Klucze dostępu sekcję i wybierz Utwórz klucz dostępu.
  3. Musisz wybrać przypadek użycia dla swojego dostępu, aby AWS mógł zalecić alternatywną opcję w stosownych przypadkach. Nie ma to wpływu na klucz dostępu. Możesz wybrać opcję, np Usługa strony trzeciej Lub Kod lokalny i potwierdź wyskakujące ostrzeżenie. Po zakończeniu kliknij Następny przycisk.
  4. Na następnej stronie wprowadź tag opisu klucza dostępu i kliknij przycisk Utwórz klucz dostępu przycisk.
  5. Po utworzeniu klucza dostępu możesz skopiować swoje dane uwierzytelniające lub pobrać je jako plik CSV. Tak czy inaczej, upewnij się, że te dane są bezpieczne.

Krok 5: Skonfiguruj swój projekt Django dla S3 Bucket

Aby używać wiadra S3 z projektem Django, zainstaluj te pakiety:

  • magazyny django: Ten pakiet pomoże Ci zdefiniować backend przechowywania plików.
  • boto3: Ten pakiet to AWS Zestaw programistyczny (SDK) aby pomóc Twojemu projektowi w Pythonie współdziałać z AWS.

Możesz zainstalować te pakiety w swoim Środowisko wirtualne Pythona z menedżerem pakietów Pip Pythona, wpisując to polecenie w swoim terminalu:

pip install django-storages boto3

Po pomyślnym zainstalowaniu tych pakietów otwórz swój ustawienia.py plik i dodaj boto3 do zainstalowanych aplikacji.

Ostatnią rzeczą do zrobienia jest skonfigurowanie projektu Django do korzystania z zasobnika AWS S3. Oto ogólna konfiguracja do użycia:

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'

Wklej powyższą konfigurację do swojego ustawienia.py plik i odpowiednio zamień wartości. Wymień swoje AWS_ACCESS_KEY_ID I AWS_SECRET_ACCESS_KEY za pomocą skopiowanego lub pobranego wcześniej klucza dostępu i tajnego klucza dostępu. Powinieneś także zmienić tzw AWS_STORAGE_BUCKET_NAME I AWS_S3_REGION_NAME do nazw zasobnika S3 i regionu.

Możesz uzyskać nazwę regionu, przechodząc do wiadra S3 i kopiując ostatnie wartości z pliku regionie AWS kolumna.

Krok 6: Przetestuj swoją konfigurację AWS

Po wykonaniu powyższych kroków powinieneś być gotowy do przetestowania aplikacji przez przesłanie plików. Poniższe przykłady kodu będą przesyłać pliki bezpośrednio z panelu administracyjnego, ale możesz przesłać swoje z innego miejsca.

Dla kontekstu możesz mieć model, który wygląda tak:

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

Upewnij się, że wykonałeś niezbędne operacje, takie jak migracje, dodanie go do panelu administracyjnego, utworzenie widoku i inne rzeczy niezbędne dla Twojego projektu. Upewnij się, że ćwiczysz Zasada MVT Django.

Gdy skończysz, przejdź do panelu administracyjnego lub dowolnego formularza utworzonego do przesyłania plików i prześlij plik obrazu.

Przejdź do swojej strony głównej i potwierdź, że obraz tam jest. Jeśli tak, kliknij obraz prawym przyciskiem myszy i wybierz Otwórz obraz w nowej karcie opcja. Na nowej karcie zawierającej obraz zauważysz, że pasek adresu odnosi się do utworzonego wcześniej zasobnika S3:

Innym sposobem sprawdzenia, czy konfiguracja działa, jest przejście do zasobnika w konsoli AWS. Znajdziesz tam swój obraz:

Krok 7: Zbierz pliki statyczne do swojego zasobnika S3

Do tej pory można było przesyłać pliki multimedialne do zasobnika S3; teraz musisz przesłać pliki statyczne.

Aby to zrobić, dodaj te konfiguracje do pliku ustawienia.py plik:

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

Następnie otwórz swój Interfejs wiersza poleceń (CLI) i uruchom to polecenie:

python manage.py collectstatic --noinput

Aby potwierdzić, że wszystko działa, otwórz wiadro S3 w konsoli AWS. Zobaczysz folder o nazwie statyczny.

Użyj AWS S3 Bucket, aby uzyskać znacznie więcej

Możliwości kubełków AWS S3 są ogromne! Powinieneś się z nim zapoznać i dowiedzieć się, jak używać S3 do innych celów, takich jak hostowanie statycznej aplikacji internetowej.

Wiedza o tym, jak prawidłowo korzystać z kubełków S3, pozwoli Ci zaoszczędzić mnóstwo czasu i pomoże w stworzeniu lepszego produktu lub rozwiązania. Należy jednak pamiętać, że S3 może nie być odpowiedni w każdym przypadku, dlatego przed użyciem należy rozważyć wymagania dotyczące projektu.