Ejercicio completo de AWS Streaming con la siguiente arquitectura:
Para conseguir el objetivo de este ejercicio, se deben seguir los siguientes pasos:
Para poder desplegar la infraestructura necesaria, se debe configurar Terraform con las credenciales de AWS y el Bucket necesario para el estado de Terraform.
aws s3api create-bucket --bucket pnieto-terraform-state --region eu-west-1 --create-bucket-configuration LocationConstraint=eu-west-1output:
{
"Location": "http://pnieto-terraform-state.s3.amazonaws.com/"
}Una vez creado el bucket, se debe configurar Terraform con la siguiente configuración:
terraform {
backend "s3" {
bucket = "pnieto-terraform-state"
key = "terraform/state"
region = "eu-central-1" # Change to your desired AWS region
}
}Ahora proceded a inicializar Terraform:
terraform init Fijaros en el siguiente output:
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v5.89.0...
- Installed hashicorp/aws v5.89.0 (signed by HashiCorp)Apliquemos el siguiente comando para aplicar nuestra configuración:
terraform plan Fijaros en el siguiente output:
No changes. Your infrastructure matches the configuration.Ejercicio completo de AWS Streaming con la siguiente arquitectura:
Para conseguir el objetivo de este ejercicio, se deben seguir los siguientes pasos:
Para poder desplegar la infraestructura necesaria, se debe configurar Terraform con las credenciales de AWS y el Bucket necesario para el estado de Terraform.
- Crear un bucket S3 para almacenar el estado de Terraform.
- Configurar Terraform para usar el bucket S3 como backend.
- Inicializar Terraform.
- Aplicar la configuración de Terraform.
El alumno debe ser capaz de inicializar y aplicar la configuración de Terraform sin errores.
Crear una API local utilizando Flask que permita conectar con los mensajes enviados desde el generador.
- Instalar Flask.
- Crear un archivo
app.pycon la configuración básica de Flask. - Definir los endpoints necesarios para la API.
El alumno debe ser capaz de ejecutar la API localmente y acceder a los endpoints definidos.
Mostrar un HTML que consuma la API localmente.
- Crear un archivo
index.htmlen la carpetatemplates. - Modificar
app.pypara renderizar el HTML. - Asegurarse de que el HTML consuma la API correctamente.
El alumno debe ser capaz de acceder a la página HTML y ver los datos obtenidos de la API.
Desplegar la API en AWS utilizando AWS App Runner y acceder a ella a través de la URL proporcionada por AWS.
- Crear un repositorio ECR para la imagen Docker.
- Crear un archivo
Dockerfilepara la API. - Construir y subir la imagen Docker al repositorio ECR.
- Crear un servicio App Runner utilizando la imagen Docker.
El alumno debe ser capaz de acceder a la URL proporcionada por AWS App Runner y ver la API funcionando.
Crear una VPC en AWS con una subnet pública y una subnet privada.
- Crear una VPC.
- Crear una subnet pública.
- Crear una subnet privada.
- Crear una gateway de internet y asociarla a la VPC.
- Crear una tabla de rutas y asociarla a la subnet pública.
El alumno debe ser capaz de crear una VPC con una subnet pública y una subnet privada.
Crear una instancia de RDS dentro de la subnet privada de la VPC.
- Crear un grupo de seguridad para la RDS.
- Crear una instancia de RDS en la subnet privada.
El alumno debe ser capaz de crear una instancia de RDS dentro de la subnet privada de la VPC.
Modificar el código de la API para que lea datos de la base de datos RDS.
- Instalar el cliente de base de datos necesario.
- Modificar
app.pypara conectarse a la base de datos RDS. - Asegurarse de que los endpoints de la API lean datos de la base de datos.
El alumno debe ser capaz de acceder a la API y ver los datos de la base de datos RDS.
Crear un SNS (Simple Notification Service) y un SQS (Simple Queue Service) en AWS.
- Crear un tema SNS.
- Crear una cola SQS.
- Suscribir la cola SQS al tema SNS.
El alumno debe ser capaz de crear un SNS y un SQS en AWS y suscribir la cola SQS al tema SNS.
Crear un formulario de creación en la API que envíe un mensaje a SNS.
- Modificar
app.pypara enviar un mensaje a SNS. - Crear un archivo
new.htmlcon el formulario de creación.
El alumno debe ser capaz de acceder al formulario de creación y enviar un mensaje a SNS.
Crear una SQS que lea mensajes de la SNS.
- Crear una cola SQS.
- Suscribir la cola SQS al tema SNS.
El alumno debe ser capaz de crear una SQS que lea mensajes de la SNS.
Crear una función Lambda que lea mensajes de la SQS y los inserte en la base de datos RDS.
- Crear un archivo
lambda_function.pycon la lógica de inserción en la base de datos. - Crear un archivo
requirements.txtcon las dependencias necesarias. - Crear un archivo
Dockerfilepara la función Lambda. - Construir y subir la imagen Docker al repositorio ECR.
- Crear una función Lambda utilizando la imagen Docker.
- Crear un evento de origen para la función Lambda.
El alumno debe ser capaz de crear una función Lambda que lea mensajes de la SQS y los inserte en la base de datos RDS.
