Laravel and AWS S3
En este ejemplo práctico se realizará el almacenamiento de archivos en el servicio de AWS S3.
- Configuración de usuarios en IAM
Primero debemos crear usuarios para garantizar el acceso al servicio de AWS S3, esto se hace desde el servicio de IAM.
Click en la opción Usuarios, aquí se mostrará los usuarios creados hasta el momento.
Para agregar un nuevo usuario, click en Agregar Usuarios
En el primer paso, se debe agregar un nombre para el usuario. Este nombre de usuario no debe tener espacios en blanco. Y en el tipo acceso de acceso de AWS se debe seleccionar acceso mediante programación, con el fin de obtener un ID y clave para poder conectar el usuario con la aplicación a desarrollar.
El segundo paso es establecer los permisos al usuario. Para el caso práctico solo seleccionaremos la política de acceso completo a S3 (AmazonS3FullAccess).
El tercer paso es opcional. Permite agregar etiquetas al usuario para dar un seguimiento o controlar el acceso al usuario.
El cuarto paso es un resumen de las opciones que se han seleccionado para el usuario que se creará.
El último paso muestra que el usuario se ha creado correctamente. Tener en cuenta que las credenciales solo se visualizarán únicamente en este paso, por lo que se recomienda guardarlas en un lugar seguro XD.
- Bukcket en S3
Buscamos el servicio de AWS S3, nos mostrará el listado de los buckets creados hasta el momento.
Click en Crear bucket
En la configuración general del bucket se debe agregar un nombre, elegir la región de AWS (por defecto dejar la que está seleccionada).
En propiedad de objetos seleccionamos la opción ACL deshabilitadas (recomendado).
Desbloquemos el acceso al público. Adicional a ello se debe marcar “Reconozco que la configuración… etc” y damos click en crear bucket
Y el bucket se creó correctamente.
- Políticas de acceso a bucket en AWS S3
Para agregar una política de acceso a los objetos del bucket, se hace click en el bucket creado y en la pestaña Permisos ubicar el apartado “Política de bucket”
Dar click en Editar para agregar la política de acceso.
Para crear la política usaremos el Generador de Políticas que proporciona AWS.
- Select Policy Type: S3 Bucket Policy
- Effect: Allow
- Principal: *
- Actions: GetObject, DeleteObject
- Amazon Resource Name (ARN): arn:aws:s3:::NAME_BUCKET
Click en Add Statment, se muestra las configuraciones de la política a crear.
Click en Generate Policy. Aparcerá un JSON con la configuración de la polítca de acceso.
Copiamos y pegamos la configuración de la política en el editor de políticas. Click en guardar cambios
Nota: Agregar “/*” al finalizar el Resource
- Laravel y AWS S3
Crear un proyecto de laravel
composer create-project — prefer-dist laravel/laravel NAME_PROJECT
Instalar paquete para poder configurar las credenciales de AWS S3
composer require league/flysystem-aws-s3-v3 “~1.0”
Modificar el archivo .env con las credenciales del usuario creado en IAM
En el controlador agregamos la lógica para guardar los archivos en S3
Link al repositorio del proyecto en GitHub, estaré agregando más cosas :).
https://github.com/luisramirezcoronado10/laravelrepositoryS3