AWS Portfolio Example

Repo Demo
Blog / AWS Portfolio Example /
AWS Portfolio Example
 JavaScript  GitHub  CSS 3  HTML 5  Amazon

Por: Leonardo Narváez.

En: 20 de Diciembre de 2023 a las 17:57
AWS AWS APIGateway AWS Cloud9 AWS CloudFront AWS Lambda AWS S3 AWS Serverless AWS SNS Github Portfolio

AWS Portfolio

En este tutorial, exploraremos la implementación de un sitio web estático para nuestro portafolio en AWS, aprovechando las capacidades de Cloud9, Lambda, API Gateway y S3. Esta práctica asegura una implementación fluida y eficiente de nuestro portafolio en el entorno de AWS. ¡Vamos a comenzar!

AWS Cloud9

Primero crearemos un entorno con Cloud9.

Abrimos Cloud9 ID dentro de el entorno vamos a clonar nuestro repositorio:

git clone https://github.com/leonxrdon/AWS-Portfolio.git

Ahora:

cd AWS-Portfolio

AWS S3

Ahora crearemos una S3 para mostrar nuestra Web Estática.

  • La S3 debe tener acceso público para que funcione.

  • Agregamos los permisos correspondientes:
{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Sid": "PublicReadGetObject",
           "Effect": "Allow",
           "Principal": "*",
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::aws-portfolio-leo/*"
       }
   ]
}
  • Ahora copiaremos los archivos de Cloud9 a S3 con el comando:
aws s3 cp ./ s3://<nombre-del-bucket> --recursive
  • Y vemos que los archivos se carguen correctamente en el bucket:

  • Ahora desde el bucket, en la seccion de Propiedades, habilitamos el despliegue de web estáticas, te debería quedar así:

  • Y para ver nuestro proyecto desde internet entramos en el enlace:

  • Y ya hemos desplegado nuestro Portfolio, usando Cloud9 y S3


AWS Lambda

Ahora para agregar funcionalidad al formulario de contacto, vamos a utilizar una API Gateway con Lambda y configuraremos una SNS para que el envío del formulario nos llegue a nuestro correo.


  • Primero creamos la Lambda en Node.js 16.x:


AWS API Gateway

  • Después crearemos la API Gateway de tipo REST API:

  • Creamos el recurso /contact el método que vamos a usar que en este caso sera POST, deberá quedarte algo asi:

  • Para crear el método POST, debemos seleccionar Lambda y marcar la Lambda que creamos previamente:

  • Una vez creado habilitaremos los CORS, dando clic sobre el recurso /contact y en la parte de la derecha damos clic en en Habilitar CORS,

  • Ahora damos en Desplegar y creamos una nueva etapa:

  • Una vez que tengamos guardado, copiaremos el link de invocación de nuestra API y lo colocamos en nuestro código HTML, así:

  • El diagrama de nuestra lambda se vera así (Perdón escribí mal lambda jeje):


AWS Lambda

  • Agregamos el código que controlará nuestra lambda:
const AWS = require('aws-sdk');
const sns = new AWS.SNS();

exports.handler = async (event) => {
   var input_data = JSON.stringify(event, null, 4);
   var input = JSON.parse(input_data)
   var params = {
       Message: 'Nombre: ' + input.name+'\n\nEmail: '+ input.email +'\n\nTelefono: '+ input.phoneNumber+ '\n\n' +input.message + '\n\n--Fin del mensaje--',
       Subject: "Contacto de Portafolio.",
       TopicArn: "<arn:Topic>"
   };
   try {
       const data = await sns.publish(params).promise();
       console.log(`Message sent to the topic ${params.TopicArn}`);
       console.log(`Message ID: ${data.MessageId}`);
   } catch (err) {
       console.error(err, err.stack);
   }
};

AWS SNS

Solo nos faltaría configurar la SNS para recibir mensajes en nuestro email.

  • Creamos un nuevo "Topic" en SNS y una suscripción con el email donde queremos recibir los mensajes desde nuestro portfolio.


Después de confirmar la subscripción, copiamos el "arn" de nuestra SNS y la colocamos dentro de la lambda.

Ahora debería funcionar correctamente, si vamos al formulario de contacto y enviamos los datos del formulario, toda nuestra estructura funcionara correctamente.

Si no funciona correctamente, no te olvides en revisar los log dentro de CloudWatch.

Funcionamiento:

Formulario:

Email:

Espero este tutorial te ayude para que despliegues tu portfolio con un formulario de contacto funcional usando AWS lambda, AWS cloud9, AWS s3 AWS SNS, AWS API Gateway. Este conjunto de herramientas de AWS no solo simplifican el despliegue, sino también elevará la funcionalidad de tu portafolio.

Espero que esta experiencia te brinde una base sólida y eficiente para destacar tu presencia en línea. ¡Éxito en tu proyecto!

Compartir:

Ver más

¿Cómo púbicar una página web en AWS con Docker?
169 AWS
¿Cómo crear una web estática usando AWS S3 y Cloud9?
175 AWS
¿Cómo crear una Amazon Elastic Compute Cloud (EC2) en Amazon?
116 AWS
Portfolio con CloudFront y DynamoDB
132 AWS

author-aws-portfolio-example
Leonardo Narváez

Desarrollador de software apasionado y creativo con experiencia en diversos lenguajes y tecnologías. Especializado en la creación de soluciones innovadoras y eficientes, como aplicaciones web y móviles, sitios web interactivos y soluciones personalizadas.

Artículos