Arquitecto de Soluciones AWS

Apuntes para el Examen de Certificación

Temas AWS

Conceptos Básicos

Formulario de Contacto Sin Servidor (AWS Serverless)



Tener en Amazon Simple Email Service (SES) agregada la cuenta de correo que se utilizara para el envio de datos.
Se utilizara AWS Lambda y Amazon API Gateway, considerar que las funciones y las APIs esten en la misma region donde esta la cuenta de correos en SES.
Crear funcion en Lambda con el nombre procesarSolicitud
Copiar este codigo en el nuevo rol:


{
  "Version": "2012–10–17",
  "Statement": [
{
  "Effect": "Allow",
  "Action": [
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:PutLogEvents"
  ],
  "Resource": "arn:aws:logs:*:*:*"
},
{
  "Effect": "Allow",
  "Action": [
  "ses:SendEmail"
],
  "Resource": [
    "*"
]}]}
Reemplazar el codigo de la funcion:

exports.handler = (event, context, callback) => {
 //console.log(‘Received event:’, event);
 var response = {
   "isBase64Encoded": false,
   "headers": { 'Content-Type': 'application/json'},
   "statusCode": 200,
   "body": "{\"result\": \"Success.\"}"
 };
 callback(null, response);
};

Crear el API en API Gateway con el nombre sitioWebDemoApi
Crear el Metodo POST
Aqui ya podemos hacer un TEST de coneccion del API con la Funcion
Activar CORS
Deplegar el API poniendole el nombre de beta para obtener el URL de punto final
Editar el archivo HTML con el formulario y subirlo a S3.
Actualizar el codigo en la funcion Lambda para este pueda enviar la informacion del formulario al email del destinatario

var AWS = require('aws-sdk')
var ses = new AWS.SES()

var DESTINATARIO = ['destinatario@example.com'];
var REMITENTE = 'remitente@example.com'; // asegúrese de que el correo electrónico del remitente esté configurado correctamente en su Amazon SES

exports.handler = (event, context, callback) => {
    console.log('Received event:', event);
    sendEmail(event, function (err, data) {
        var response = {
            "isBase64Encoded": false,
            "headers": { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': 'http://example.com' },
            "statusCode": 200,
            "body": "{\"result\": \"Success.\"}"
        };
        callback(err, response);
    });
};

function sendEmail (event, done) {
    var data = JSON.parse(event.body);
    
    var params = {
        Destination: {
            ToAddresses: DESTINATARIO
        },
        Message: {
            Body: {
                Text: {
                    Data: 'Nombre: ' + data.name + '\nEmail: ' + data.email + '\nMensaje: ' + data.message,
                    Charset: 'UTF-8'
                }
            },
            Subject: {
                Data: 'Consulta del Formulario de Contacto: ' + data.name,
                Charset: 'UTF-8'
            }
        },
        Source: REMITENTE
    }
    ses.sendEmail(params, done);
}
          
  		  
Verifica el Emial DESTINATARIO y ya tendras el correo.