¿Qué Crearemos?
- Crearemos un servidor de Nodejs que nos permita subir un archivo desde el fronten a una carpeta en el servidor
- crea una aplicacion frontend de Javascript o que use un client REST que envie datos
Bibliotecas para subir archivos
Cuando queremos subir archivos en Nodejs es bastante comun que usemos modulos de npm que nos permitan facilitar este proceso, alguno de estos son:
- multer
- express-fileuplaod
- https://www.npmjs.com/package/multer-s3
En nuestro caso el que escogeremos sera express-file-upload pero si tienes un proyecto o quieres usar otro, sientete libre de hacerlo porque tal modulo solo se encargara de la subida de tu archivo a tu servidor, a partir de alli el resto de codigo es el mismo para cualquier proyecto de Node.
Subir archivos al Backend
Para este ejemplo estaremos usando un cliente REST como Postman o Thunder Client
Crear un Bucker de AWS
- Entra en tu cuenta de AWS
- Busca el servicio de S3
- Ve en el boton Crear Bucket
- Coloca los siguientes datos
- Nombre:
faztnodes3 - Region:
us-west-2Aqui puedes escoger la region que gustes
- Nombre:
- Crea el Bucket
Crea variables de entorno en Nodejs
Crea un archivo .env en la raiz de tu proyecto:
AWS_BUCKET_NAME=faztnodes3
AWS_BUCKET_REGION=us-west-2
Si no encuentas tus datos:
- bucket name, este lo encuentra cuando creas el bucket: faztnodes3
- la region lo encuentras en propiedades
Crear Politica en AWS
una vez creado el bucket, necesamos crear una politica para ver quien se pueda conectar a los servicios de AWS.
- ve a IAM
- ve a Policies
- crear policy
- elige S3 como servicio
- Elige los siguientes accesos:
- Enumeracion
- List bucket
- Lectura
- GetObject
- Escritura
- PutObject
- Enumeracion
- Especifica un recurso, ve en Agregar ARN y añades el recurso que en este caso es el nombre del bucket que hemos creado:
faztnodes3- Bucket Name:
faztnodes3 - Objectname: * (Any Policy)
- Bucket Name:
- Luego dale siguiente y cuando llegues a la seccion "Crear politica", colocas un nombre y listo.
Crea un Usuario en AWS IAM
este represetan neustra aplicacion
- ve a Users
- coloca un nombre como
faztnodeuser - selecciona accesso programado
- Da un click en asociar directamentea politicas existenstes:
faztnodes3
esto te dara unas credenciales de accesso, guardalos en tu archivo .env:
AWS_BUCKET_NAME=fazttestb
AWS_BUCKET_REGION=us-west-2
AWS_PUBLIC_KEY=AKIA3RM2O2KNXHIAYJEX
AWS_SECRET_KEY=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
AWS SDK
npm install @aws-sdk/client-s3
A partir de aquie puedes crear el proyecto
Eliminar Bucket
Mas recursos
- https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/s3-node-examples.html
- https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/index.html
- https://stackoverflow.com/questions/36942442/how-to-get-response-from-s3-getobject-in-node-js
- https://aws.amazon.com/es/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/