Laravel and AWS S3

Luis Ramirez
4 min readJun 14, 2022

--

En este ejemplo práctico se realizará el almacenamiento de archivos en el servicio de AWS S3.

  1. 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.

Servicio de Identity and Access Management (IAM)

Click en la opción Usuarios, aquí se mostrará los usuarios creados hasta el momento.

List Users in IAM

Para agregar un nuevo usuario, click en Agregar Usuarios

Details Users

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.

Permissions

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).

Tags

El tercer paso es opcional. Permite agregar etiquetas al usuario para dar un seguimiento o controlar el acceso al usuario.

Review

El cuarto paso es un resumen de las opciones que se han seleccionado para el usuario que se creará.

User success

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.

  1. Bukcket en S3

Buscamos el servicio de AWS S3, nos mostrará el listado de los buckets creados hasta el momento.

List Bucket

Click en Crear bucket

Configuración general

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.

  1. 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

  1. 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

--

--

Luis Ramirez
Luis Ramirez

Written by Luis Ramirez

Founder STARK & AV | Co-Founder of ANDHEURIS| Software Engineer | Product Manager