- Pasos Manuales Añadir Rol a la EC2
- Explicación de cada archivo de configuración
- Funcionamiento del sistema
- Ir a la consola de Amazon EC2.
- Seleccionar la instancia EC2 a la que desea añadir el rol.
- Ir a "Acciones" -> "Seguridad" -> "Modificar rol de IAM".
- Elegir el rol “LabRol”.
- Guardar los cambios.
- Ir a la consola de Amazon IAM.
- Buscar el rol “LabRol”.
- Seleccionar el rol y ir a "Agregar permisos".
- Añadir la política “AmazonSNSFullAccess”.
- Guardar los cambios.
- Ejecutar
terraform apply
para desplegar la infraestructura. - Tomar nota del output de Terraform, específicamente el ARN del SNS.
- Colocar el ARN del SNS en el archivo
submit.php
. - Revisar el correo electrónico y aceptar la suscripción al SNS.
├── clave.pem
├── index.html
├── info.php
├── main.tf
├── outputs.tf
├── provisioners.tf
├── script.sh
└── submit.php
-
clave.pem
- Archivo de clave privada para acceder a la instancia EC2 vía SSH.
- Uso: Guardar de manera segura y utilizar con el comando SSH para conectarse a la instancia.
-
index.html
- Página principal del sitio web.
- Uso: Interfaz del usuario donde se encuentra el formulario para enviar un mensaje.
-
info.php
- Archivo PHP que muestra información del sistema PHP instalado.
- Uso: Verificar la correcta instalación y configuración de PHP en el servidor.
-
main.tf
- Archivo principal de configuración de Terraform.
- Uso: Define los recursos de infraestructura, como la instancia EC2, roles de IAM, y SNS.
-
outputs.tf
- Archivo de Terraform que define los outputs del despliegue.
- Uso: Muestra información útil después de ejecutar
terraform apply
, como el ARN del SNS.
-
provisioners.tf
- Archivo de Terraform que contiene provisionadores.
- Uso: Configura la instancia EC2 después de su creación, como instalar software necesario.
-
script.sh
- Script de shell para configurar el servidor.
- Uso: Ejecutado por el provisionador de Terraform para instalar y configurar dependencias en la EC2.
-
submit.php
- Archivo PHP que maneja el envío del formulario y publica mensajes a SNS.
- Uso: Procesa la información del formulario y envía una notificación a SNS.
El sistema está diseñado para que un formulario en una página web envíe un mensaje a un servicio de Amazon SNS, que luego notifica a los suscriptores vía correo electrónico. Aquí está el flujo de trabajo detallado:
-
Usuario Interactúa con la Página Web:
- El usuario accede a
index.html
y completa el formulario.
- El usuario accede a
-
Formulario Envía Datos a
submit.php
:- El formulario envía una solicitud POST a
submit.php
.
- El formulario envía una solicitud POST a
-
Procesamiento en
submit.php
:- El archivo
submit.php
recibe los datos del formulario. - Utiliza el ARN del SNS configurado para publicar un mensaje en el tema SNS.
- El archivo
-
SNS Envía Notificación:
- SNS recibe el mensaje y envía una notificación a todos los suscriptores del tema.
- Los suscriptores reciben la notificación en sus correos electrónicos.
-
Aceptación de Suscripción:
- Inicialmente, los usuarios deben aceptar la suscripción al tema SNS desde su correo electrónico.
-
Terraform y Provisionamiento:
main.tf
define la infraestructura necesaria y la configura.script.sh
instala las dependencias necesarias en la instancia EC2.outputs.tf
proporciona el ARN del SNS necesario parasubmit.php
.
-
Formulario y
submit.php
:- El formulario en
index.html
se comunica consubmit.php
a través de una solicitud HTTP POST.
- El formulario en
-
submit.php
y SNS:submit.php
utiliza las credenciales del rol IAM para publicar en el tema SNS.
-
SNS y Correo Electrónico:
- SNS envía mensajes a las direcciones de correo electrónico suscritas al tema.
Este flujo asegura que los mensajes enviados desde el formulario web sean entregados a los usuarios mediante notificaciones por correo electrónico, utilizando la infraestructura segura y escalable proporcionada por AWS.