Este proyecto es una API backend para una aplicación de comercio electrónico, diseñada para manejar autenticación, gestión de productos y otras funcionalidades. La API está construida utilizando Node.js y MongoDB, y está desplegada en una instancia EC2 dentro de un contenedor Docker. La API se expone a través de Amazon API Gateway.
- Amazon API Gateway: Para gestionar y exponer las API REST.
- Amazon EC2: Instancia donde corre la aplicación Node.js en un contenedor Docker.
- Docker: Para contenerizar la aplicación y asegurar la consistencia del entorno.
- MongoDB: Base de datos NoSQL para almacenamiento de datos.
- Amazon S3: Para almacenar los recursos estáticos de la aplicación frontend.
- Amazon CloudFront: CDN para servir el contenido estático de manera eficiente.
- CI/CD: Integración y despliegue continuo utilizando GitHub Actions.
https://github.com/hiram-avila/S3-AWS-e-commerce
- Autenticación: Implementada en Amazon API Gateway.
- Gestión de Productos: Endpoints para CRUD de productos.
- Escalabilidad: Desplegado en EC2, puede escalar según la demanda.
- Node.js
- Docker
- AWS CLI configurado
- Una cuenta de AWS con permisos para EC2, S3, API Gateway, y Lambda.
-
Clonar el repositorio:
git clone https://github.com/tu-usuario/api-ecommerce-mongodb.git cd api-ecommerce-mongodb
-
Instalar dependencias:
npm install
-
Crear un archivo
.env
con las variables de entorno necesarias:MONGODB_URI=<tu-conexion-a-mongodb> PORT=3000
-
Construir y correr el contenedor Docker:
docker build -t ecommerce-api . docker run -d -p 3000:3000 --name ecommerce-api ecommerce-api
- EC2: Crear una instancia EC2 y configurar los grupos de seguridad para permitir el tráfico en el puerto 3000.
- Docker en EC2: Conectar a la instancia EC2 y correr el contenedor Docker.
ssh -i "your-key.pem" ec2-user@<ec2-instance-public-dns> git clone https://github.com/tu-usuario/api-ecommerce-mongodb.git cd api-ecommerce-mongodb docker build -t ecommerce-api . docker run -d -p 3000:3000 --name ecommerce-api ecommerce-api
- API Gateway: Configurar Amazon API Gateway para exponer los endpoints de tu API.
- Lambda (opcional): Configurar funciones Lambda para lógica específica.
- CloudFront y S3: Desplegar la aplicación frontend en S3 y usar CloudFront para distribución.
- GET /products: Obtener todos los productos.
- POST /products: Crear un nuevo producto.
- GET /products/:id: Obtener un producto por ID.
- PUT /products/:id: Actualizar un producto por ID.
- DELETE /products/:id: Eliminar un producto por ID.
curl -X GET "https://tu-api-id.execute-api.us-east-1.amazonaws.com/prod/products"