Arquitecto de Soluciones AWS
Apuntes para el Examen de Certificación
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 sitioWebDemoApiCrear 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.