2012-10-07 45 views
5

He estado tratando de buscar maneras de hacer que AWS S3 funcione con Heroku para archivos FileField e ImageField. Pero he estado fallando en ponerlo en funcionamiento.Django + Heroku + S3

El plan es

  1. Uso FileField que subir algunos archivos.
  2. Use ImageField para las imágenes de perfil.
  3. Utilice Sorl Thumbnails para cambiar el tamaño de esas imágenes.

Seguí el artículo this, pero parece que no funciona. ¿Hay algo que me falta? Quiero cargar archivos, de la forma más sencilla posible. ¿Hay una mejor alternativa que sea más compatible con django y heroku que AWS? Cualquier ayuda en este sentido sería muy apreciada.

Respuesta

5

Utilice Django Storages para gestionar archivos estáticos en S3. Luego siga Heroku Static assets guide when deploying.

Primero, cree un cubo en S3, usando la consola AWS o su herramienta favorita. A continuación, modifique su settings.py y añadir los siguientes valores:

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/' 

en cuenta que estamos utilizando variables de entorno para almacenar la clave de acceso AWS y la clave secreta. Si bien estamos en este tema, si planea abrir la aplicación Django que está implementando, considere también almacenar su SECRET_KEY en una variable de entorno.

Lo anterior es de here

+0

Esto es increíble! ¡Gracias hombre! Lo único que querrás decir es que, como este enfoque es Boto, cualquier persona que use este enfoque deberá instalar [Boto] (http://pypi.python.org/pypi/boto) también. Sin embargo, tenía otra pregunta para usted. ¿Cómo agrego una política de control de acceso = public-read? Traté de agregar acl = 'public-read' en settings.py pero eso no pareció funcionar – Jonathan

+0

En cambio, solo quiero que google docs viewer pueda acceder a los archivos que cargué. ¿Hay alguna manera de hacer que eso suceda? – Jonathan

+0

tal vez http://aws.amazon.com/s3/faqs/#How_can_I_control_access_to_my_data_stored_on_Amazon_S3 debería ayudar? –

Cuestiones relacionadas