2012-10-07 13 views
5

Próbowałem znaleźć sposoby na to, aby AWS S3 działał z Heroku na potrzeby przesyłania plików FileField i ImageField. Ale nie udało mi się go uruchomić.Django + Heroku + S3

Plan jest

  1. Korzystanie FileField przesłać kilka plików.
  2. Użyj ImageField do zdjęć profilowych.
  3. Użyj Sorl Thumbnails, aby zmienić rozmiar tych zdjęć.

Śledziłem artykuł this, ale wygląda na to, że nie działa. Czy jest coś, czego mi brakuje? Chcę, aby przesyłanie plików było tak bezproblemowe, jak to możliwe. Czy istnieje lepsza alternatywa, która jest bardziej przyjazna dla Django i Heroku niż AWS? Jakakolwiek pomoc w tym zakresie byłaby wysoko ceniona.

Odpowiedz

5

Do zarządzania plikami statycznymi na S3 służy Django Storages. Następnie wykonaj Heroku Static assets guide when deploying.

Najpierw utwórz wiadro w S3, używając konsoli AWS lub ulubionego narzędzia. Następnie zmodyfikuj plik settings.py i dodaj następujące wartości:

import os 

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') 
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') 
AWS_STORAGE_BUCKET_NAME = '<YOUR BUCKET NAME>' 

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 

STATIC_URL = 'http://' + AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/' 
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' 

Zauważ, że używamy zmiennych środowiskowych do przechowywania klucza dostępu AWS i tajnego klucza. Podczas gdy jesteśmy na ten temat, jeśli planujesz otworzyć źródło aplikacji Django, którą wdrażasz, rozważ także przechowywanie swojego SECRET_KEY w zmiennej środowiskowej.

Powyższe dane pochodzą z here

+0

To jest niesamowite! Dzięki! Jedyne, co możesz chcieć oskarżyć, to, że w tym podejściu Boto, tak każdy, kto używa tego podejścia, będzie musiał zainstalować [Boto] (http://pypi.python.org/pypi/boto). Ale miałem dla ciebie jeszcze jedno pytanie. jak dodać politykę kontroli dostępu = odczyt publiczny do niego? Próbowałem dodać acl = "public-read" w settings.py, ale to nie działało. – Jonathan

+0

Raczej po prostu chcę, żeby przeglądarka Google Docs była w stanie uzyskać dostęp do przesłanych przeze mnie plików. Czy jest jakiś sposób, aby tak się stało? – Jonathan

+0

może http://aws.amazon.com/s3/faqs/#How_can_I_control_access_to_my_data_stored_on_Amazon_S3 powinien pomóc? –

Powiązane problemy