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.
Krok 2: Utwórz wiadro S3 dla swojego projektu
- Po utworzeniu konta AWS zaloguj się i wyszukaj S3 na pasku wyszukiwania u góry, a następnie wybierz pierwszą opcję.
- Po wybraniu pierwszej opcji zobaczysz nową stronę. Kliknij Utwórz zasobnik przycisk:
- Następnie podaj nazwę zasobnika S3. Możesz pozostawić większość konfiguracji jako domyślną.
- 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.
- 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:
- W pasku wyszukiwania wpisz JA JESTEM i wybierz pierwszą opcję. Pojawi się nowa strona.
- 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.
- 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:
- Najpierw wybierz Dołącz zasady bezpośrednio opcja od Opcje uprawnień Sekcja.
- 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.
- w Zasady uprawnień sekcja, której powinieneś szukać S3Pełny dostęp i wybierz opcję. Po zakończeniu kliknij Następny przycisk.
- 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.
- 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.
- Następnie wybierz Poświadczenia bezpieczeństwa przewiń w dół, aby znaleźć Klucze dostępu sekcję i wybierz Utwórz klucz dostępu.
- 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.
- Na następnej stronie wprowadź tag opisu klucza dostępu i kliknij przycisk Utwórz klucz dostępu przycisk.
- 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.