Aprenda cómo configurar el almacenamiento de archivos S3 con esta guía paso a paso.
Si está creando una aplicación web de Django, es esencial manejar los activos estáticos y los archivos multimedia cargados por el usuario de manera eficiente.
En un entorno de desarrollo, Django administra estos archivos. En producción, sin embargo, querrá explorar otras opciones. Su base de usuarios puede crecer significativamente y es posible que esté tratando con archivos mucho más grandes, como audio y video.
El cubo del servicio de almacenamiento simple (S3) de Amazon Web Services (AWS) es una alternativa para alojar archivos estáticos y multimedia. Al integrar S3 con Django, puede descargar la carga de la administración de archivos de su servidor, reducir la carga y garantizar una entrega de activos más rápida y confiable.
Paso 1: Cree una cuenta de AWS
Si no tiene una cuenta de AWS, vaya a la Sitio de AWSy cree una cuenta nueva.
Las nuevas cuentas de AWS tienen acceso gratuito a 5 GB de almacenamiento estándar S3 cada mes durante un año.
Paso 2: Cree un depósito S3 para su proyecto
- Después de crear su cuenta de AWS, inicie sesión y busque S3 en la barra de búsqueda en la parte superior, luego seleccione la primera opción.
- Después de seleccionar la primera opción, verá una nueva página. Haga clic en el Crear cubo botón:
- A continuación, proporcione un nombre para su depósito S3. Puede dejar la mayor parte de la configuración por defecto.
- Desplácese hacia abajo hasta el Bloquear la configuración de acceso público para este segmento sección, desmarque la Bloquear todo el acceso público ajuste y reconozca la advertencia que aparece.
- Una vez hecho esto, haga clic en el Crear cubo botón. Lo redirigirá a una página que muestra una lista de los depósitos S3 que ha creado.
Paso 3: Cree un usuario de IAM en AWS
AWS proporciona un servicio llamado IAM (Administración de identidad y acceso). Esto le permite crear una cuenta separada para una persona o aplicación específica que necesita interactuar con los servicios de AWS.
Puede asignar diferentes niveles de permisos a los usuarios de IAM, que representan personas o aplicaciones que interactúan con los servicios de AWS que ha creado. Con los usuarios de IAM, puede asegurarse de que cada usuario solo tenga acceso a los recursos que necesita y nada más.
Por motivos de seguridad, debe crear un usuario de IAM para que su proyecto de Django interactúe con su depósito de S3. Siga estos pasos para crear un usuario de IAM en AWS:
- En la barra de búsqueda, escriba SOY y seleccione la primera opción. Aparecerá una nueva página.
- En el lado izquierdo de la página de IAM, seleccione Usuarios, luego proceda a hacer clic en el Agregar usuarios botón. Se abrirá otra página para completar alguna información.
- Comience ingresando un nombre para el usuario de IAM y haciendo clic en el Próximo botón en la parte inferior: En la página siguiente, debe seleccionar los niveles de permiso para el usuario de IAM. Sigue estos pasos:
- Primero, seleccione el Adjuntar políticas directamente opción de la Opciones de permisos sección.
- A continuación, defina una política de permisos para su usuario de IAM. Esto determinará lo que el usuario de IAM puede y no puede hacer. Dado que desea que su aplicación Django descargue y cargue archivos, debe otorgarle acceso completo al depósito S3.
- En el Políticas de permisos sección, debe buscar S3Acceso completo y seleccione la opción. Una vez hecho esto, haga clic en el Próximo botón.
- A continuación, revise las políticas para el usuario de IAM y haga clic en el Crear usuario botón para crear su usuario de IAM.
Paso 4: cree una clave de acceso para su usuario de IAM
En AWS, una clave de acceso hace referencia a las credenciales que puede utilizar para autenticar y acceder de forma segura a los recursos de AWS mediante programación. Su proyecto Django debe proporcionar estas credenciales para acceder a su depósito S3.
Los siguientes pasos lo ayudarán a generar una clave de acceso para su proyecto.
- Después de crear su usuario de IAM, recibirá un mensaje de alerta que le pedirá que vea al usuario. Alternativamente, puede ver el usuario haciendo clic en el Nombre de usuario.
- A continuación, seleccione el Credenciales de seguridad pestaña, desplácese hacia abajo para encontrar la Teclas de acceso sección y seleccione Crear clave de acceso.
- Deberá seleccionar un caso de uso para su acceso, de modo que AWS pueda recomendar una opción alternativa cuando corresponda. No afecta su clave de acceso. Siéntase libre de seleccionar una opción como Servicio de terceros o código local y reconozca la advertencia que aparece. Una vez hecho esto, haga clic en el Próximo botón.
- En la página siguiente, ingrese una etiqueta de descripción para su clave de acceso y haga clic en el Crear clave de acceso botón.
- Después de crear su clave de acceso, puede copiar sus credenciales o descargarlas como un archivo CSV. De cualquier manera, asegúrese de mantener estos datos seguros y protegidos.
Paso 5: configure su proyecto Django para el depósito S3
Para usar su depósito S3 con un proyecto Django, instale estos paquetes:
- Django-almacenamiento: este paquete lo ayudará a definir un backend de almacenamiento para sus archivos.
- boto3: Este paquete es el AWS Kit de desarrollo de software (SDK) para ayudar a que su proyecto de Python interactúe con AWS.
Puede instalar estos paquetes en su Entorno virtual Python con el administrador de paquetes Pip de Python escribiendo este comando en su terminal:
pip install django-storages boto3
Una vez que haya instalado correctamente estos paquetes, abra su configuración.py archivar y agregar boto3 a las aplicaciones instaladas.
Lo último que debe hacer es configurar su proyecto Django para usar el depósito de AWS S3. Aquí está la configuración general a usar:
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'
Pegue la configuración anterior en su configuración.py archivo y reemplace los valores en consecuencia. Reemplace su AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY con la clave de acceso y la clave de acceso secreta que copió o descargó anteriormente. También debe cambiar el AWS_STORAGE_BUCKET_NAME y AWS_S3_REGION_NAME a los nombres de su depósito y región de S3.
Puede obtener el nombre de la región navegando a su depósito S3 y copiando los últimos valores del Región de AWS columna.
Paso 6: pruebe su configuración de AWS
Con los pasos anteriores completos, debería estar listo para probar su aplicación cargando archivos. Los siguientes ejemplos de código cargarán archivos directamente desde el panel de administración, pero puede cargar los suyos desde otro lugar.
Por contexto, puede tener un modelo que se vea así:
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
Asegúrese de realizar las operaciones necesarias, como migraciones, agregarlo al panel de administración, crear una vista y otras cosas necesarias para su proyecto. Asegúrate de practicar Principio MVT de Django.
Una vez que haya terminado, vaya a su panel de administración o al formulario que haya creado para cargar archivos y cargue un archivo de imagen.
Navegue a su sitio principal y confirme que la imagen está allí. Si es así, haga clic derecho en la imagen y seleccione el Abierta la imagen en una nueva pestaña opción. En la nueva pestaña que contiene la imagen, notará que la barra de direcciones hace referencia al depósito S3 que creó anteriormente:
Otra forma de confirmar que su configuración funciona es navegar a su depósito en la consola de AWS. Encontrarás tu imagen allí:
Paso 7: Recopile archivos estáticos en su cubo S3
Hasta ahora, ha podido cargar archivos multimedia en su depósito S3; ahora, necesita cargar sus archivos estáticos.
Para hacer eso, agregue estas configuraciones a su configuración.py archivo:
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_LOCATION = 'static'
Después de eso, abre tu Interfaz de línea de comandos (CLI) y ejecuta este comando:
python manage.py collectstatic --noinput
Para confirmar que todo funciona, abra su depósito S3 en la consola de AWS. Verá una carpeta llamada estático.
Use AWS S3 Bucket para mucho más
¡Las posibilidades de los depósitos de AWS S3 son enormes! Debe familiarizarse con él y aprender a usar S3 para otros fines, como alojar una aplicación web estática.
Saber cómo usar correctamente los cubos S3 le ahorrará mucho tiempo y lo ayudará a crear un mejor producto o solución. Pero también debe tener en cuenta que S3 podría no ser adecuado para todos los casos, así que considere los requisitos de su proyecto antes de usarlo.