AWS Lambda es un servicio de Amazon Web Services (AWS) que te permite ejecutar tu código en respuesta a eventos sin tener que gestionar servidores. Es una forma sencilla y escalable de construir aplicaciones.

En este tutorial, te mostraré cómo usar AWS Lambda con otros tres servicios:

  • Amazon S3 para almacenar archivos, imágenes y videos

  • Amazon Simple Notification Service (SNS) para enviar notificaciones

  • Amazon EventBridge para programar mensajes

Repasaremos todo paso a paso.

Al final, con la integración de los otros servicios, habrás construido una aplicación de Frases de Manifestación de Objetivos que enviará mensajes inspiradores aleatorios para mantenerte motivado y enfocado en tus metas.

Requisitos previos

  • Una cuenta de AWS: Si no tienes una, regístrate aquí.

  • Un repositorio de GitHub: Esto es para almacenar tu código fuente. Si no tienes una cuenta de GitHub, puedes crear una aquí.

  • Un Entorno de Desarrollo Integrado (IDE) como Visual Studio Code o Sublime Text.

  • Un conocimiento básico de desarrollo web y cualquier lenguaje de programación de tu elección. Yo utilicé Python para este tutorial.

  • API Aleatoria de Zenquote

Lo que Aprenderás

  • Cómo crear un bucket en Amazon S3

  • Cómo utilizar el Servicio de Notificación Simple de Amazon (SNS)

  • Cómo utilizar Amazon Lambda

  • Cómo usar Amazon EventBridge

Tabla de contenidos

  1. Paso 1: Configurar tu entorno de desarrollo

  2. Paso 2: Crear un Servicio de Almacenamiento Simple de Amazon (S3)

  3. Paso 3: Crear un Servicio de Notificaciones Simple de Amazon (SNS)

  4. Paso 4: Crear una política IAM

  5. Paso 5: Crear una función de Amazon Lambda

  6. Paso 6: Crear un EventBridge

  7. Paso 7: Subir tu código

  8. Conclusión

Paso 1: Configurar tu entorno de desarrollo

En este paso, configurarás todo. Comienza iniciando sesión en tu cuenta de AWS, luego instala Python si no lo tienes en tu IDE.

Paso 2: Crear un Servicio de Almacenamiento Simple de Amazon (S3)

Antes de comenzar a crear un depósito S3, primero entendamos qué es Amazon S3:

Amazon S3 (Servicio de Almacenamiento Simple) es un servicio de Amazon que te permite almacenar y acceder a cualquier cantidad o tipo de datos, como fotos, videos, documentos y copias de seguridad, cuando lo necesites.

Ahora que conoces los conceptos básicos de qué es Amazon S3, volvamos al tutorial.

Crea un depósito S3

Hay varias formas de crear un bucket S3, pero para este tutorial, utilizaremos la línea de comandos de Ubuntu (CMD), tu terminal, o Amazon CloudShell, según con lo que te sientas más cómodo.

  • Escribe boto3 s3 en la barra de búsqueda web para ver una lista de documentación relacionada.

  • Haz clic en el primer resultado.

  • Una vez que la documentación esté abierta, copia el primer comando que veas.

  • Pégalo en tu CMD O terminal de tu elección, pero antes recuerda “cd” en el directorio correcto.

  • En la documentación, baja y haz clic en “create_bucket.

  • Una vez abierto, baja a “Sintaxis de solicitud”. Copia el nombre del bucket y la configuración del bucket.

  • Otras variables listadas en la sintaxis de solicitud son opcionales.

  • Una vez hecho esto, asegúrate de guardar.

  • Regresa y llama al script:
#python3 nombre de tu archivo
  • Ejecutar el script crea automáticamente un bucket S3 en tu Amazon S3.

  • Ahora puedes ir a la consola para verificar si ha sido creado:

Subir archivos

Con el cubo creado, ahora podemos subir archivos a través de la consola. Creo que también hay una forma programática de subir archivos y probar, pero aún no he explorado todos los métodos en la documentación.

Haz clic en el nombre del cubo para ser redirigido a la página de objetos. Aquí es donde subirás tus archivos para almacenarlos.

Haz clic en el botón de Subir para subir un archivo. Recuerda, estamos creando una Aplicación de Cotización de Manifestación de Objetivos.

Ahora que hemos configurado un cubo de almacenamiento:

  • Abre una herramienta como Google Drive, MS Word, WPS, o cualquier otro editor de documentos.

  • Escribe los objetivos que deseas lograr.

  • Guarda el archivo en formato PDF o DOCX.

  • Toma el documento y súbelo a tu Amazon S3.

Para verificar si es el archivo correcto:

  • Ve a la pestaña de Permisos.

  • Desplázate hacia abajo hasta Bloquear acceso público.

  • Haz clic en Editar y desmarca la casilla.

Como se muestra arriba, actualmente está configurado en “on”. Desmárcalo para cambiarlo a “off”.

  • En la misma página de configuración del bucket, modifica la política.

  • Desplázate hacia abajo y verás que se ha generado automáticamente una política de bucket.

  • Adelante, copia la política.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}
  • Regresa al editor de políticas del bucket y pega la política.

Una vez que hayas completado estos pasos, tu objeto tendrá acceso público.

Regresa a la pestaña Objetos y haz clic en la URL del objeto proporcionada a continuación:

Con esta URL, tu carga ahora es visible.

Paso 3: Crear un Servicio de Notificación Simple de Amazon (SNS)

SNS es un servicio de mensajería completamente gestionado proporcionado por AWS. Permite la comunicación entre aplicaciones o directamente con los usuarios enviando notificaciones.

Para crear un SNS, sigue estos pasos:

1. Inicia sesión en la consola de administración de AWS

Luego ve a Amazon SNS. Navega al Panel de SNS y selecciona Temas en el menú de la izquierda.

Para crear un tema:

  • Haz clic en Crear tema.

  • Elige un Tipo de tema: Estándar (predeterminado) o FIFO (para mensajes ordenados).

  • Ingresa un nombre para tu tema. (por ejemplo, MiPrimerTemaSNS).

  • Configura ajustes opcionales como cifrado, políticas de reintentos de entrega o etiquetas.

  • Haz clic en Crear tema.

2. Agregar Suscripciones:

Una vez que se haya creado el tema, haz clic en él para abrir la página de detalles. Selecciona la pestaña de Suscripciones.

Haz clic en Crear Suscripción y elige:

  • El Protocolo puede ser Email, SMS, HTTP/S, Lambda o SQS.

  • Los puntos finales como dirección de correo electrónico, número de teléfono o URL.

Haz clic en Crear Suscripción.

3. Confirmar la Suscripción:

Si seleccionaste correo electrónico o SMS, se enviará un enlace de confirmación o código al punto final proporcionado. Sigue las instrucciones para confirmar la suscripción.

Ahora que hemos hecho esto, creemos una función de Amazon Lambda que activará el SNS para que el mensaje se envíe a tu correo.

Paso 4: Crear una política IAM

Esta política se crea para autorizar a Amazon Lambda a activar el evento y asegurar que CloudWatch se active automáticamente para monitorear los eventos de la aplicación.

Para crear una política, sigue estos pasos:

1. Inicia sesión en la consola de administración de AWS.

En el menú de la izquierda, selecciona Políticas. Luego:

  • Haz clic en Crear política.

  • Elige la pestaña Visual, luego selecciona el servicio SNS.

  • Luego, haz clic en la pestaña Elegir para crear una política personalizada.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:REGION:ACCOUNT_ID:goal_topic"
        }
    ]
}

Después, reemplaza los siguientes marcadores de posición con tu información:

  • región: Tu región de AWS (por ejemplo, us-east-1).

  • id-cuenta: Tu ID de cuenta de AWS.

  • nombre-del-tema: Nombre de su tema de SNS.

2. Ver y crear la política:

Puede hacerlo siguiendo estos pasos:

  • Haga clic en el botón Revisar.

  • Asigne un Nombre a su política (por ejemplo, PoliticaLambdaSNS), y opcionalmente, una Descripción.

  • Haga clic en Crear política.

3. Adjuntar la política al Rol de Ejecución de Lambda

Ahora, debe adjuntar la política a su Rol de Ejecución de Lambda. Para hacerlo, siga estos pasos:

  • Vaya a la sección de Roles en la Consola de IAM.

  • Busque y seleccione el rol de ejecución.

  • A continuación, busque la política que acaba de crear y selecciónela.

  • Haga clic en Adjuntar política.

Ambas políticas se adjuntarán automáticamente.

Paso 5: Crear una función de Amazon Lambda

Amazon Lambda es un servicio de AWS que te permite ejecutar código sin tener que gestionar servidores. Subes tu código, y Lambda lo ejecuta automáticamente y lo escala cuando sea necesario.

Sigue estos pasos para crear una función de Amazon Lambda:

1. Inicia sesión en la Consola de Administración de AWS:

Ve a AWS Lambda.

2. Crea una función:

Haz clic en Crear función y elige la opción Autor desde cero.

Rellena los detalles:

  • Nombre de la función: Ingresa un nombre único (por ejemplo, SNSLambdaFunction).

  • Entorno de ejecución: Selecciona el entorno de ejecución (por ejemplo, Python, Node.js, Java, etc.).

  • Rol: Elige o crea un rol. Si ya tienes un rol, selecciona Usar un rol existente. De lo contrario, selecciona Crear un nuevo rol con permisos básicos de Lambda.

  • Haz clic en el botón Crear función.

3. Pega el código:

En la página de la función Lambda, ve a la pestaña Configuración:

Recuerda, estamos tratando de obtener una cita. Agregaré el ARN del tema que creamos aquí e incluiré mis claves API. Pero para este tutorial, usaré la API directamente para obtener los datos.

4. Escribe el código Lambda:

Ve a la pestaña Código en tu función Lambda. Luego escribe o pega el código desde tu IDE para procesar los mensajes SNS entrantes.

Ejemplo:

Aquí está el código:

import os
import json
import urllib.request
import boto3

def fetch_random_quote():
    """
    Fetches a random quote from the ZenQuotes API.
    """
    api_url = "https://zenquotes.io/api/random"
    try:
        with urllib.request.urlopen(api_url) as response:
            data = json.loads(response.read().decode())
            if data and isinstance(data, list):
                # Formatear la cita y el autor
                quote = data[0].get("q", "No quote available")
                author = data[0].get("a", "Unknown author")
                return f'"{quote}" - {author}'
            else:
                return "No quote available."
    except Exception as e:
        print(f"Error fetching random quote: {e}")
        return "Failed to fetch quote."

def lambda_handler(event, context):
    """
    AWS Lambda handler function to fetch a random quote and publish it to an SNS topic.
    """
    # Obtener el ARN del tema SNS de las variables de entorno
    sns_topic_arn = os.getenv("SNS_TOPIC_ARN")
    sns_client = boto3.client("sns")

    # Obtener una cita aleatoria
    quote = fetch_random_quote()
    print(f"Fetched Quote: {quote}")

    # Publicar la cita en SNS
    try:
        sns_client.publish(
            TopicArn=sns_topic_arn,
            Message=quote,
            Subject="Daily Random Quote to help you stay motivated and inspired to achieve your goals",
        )
        print("Quote published to SNS successfully.")
    except Exception as e:
        print(f"Error publishing to SNS: {e}")
        return {"statusCode": 500, "body": "Error publishing to SNS"}

    return {"statusCode": 200, "body": "Quote sent to SNS"}

5. Guardar:

Haz clic en el botón de implementación para guardar.

6. Probar tu función Lambda:

Ve a la pestaña Prueba y crea un nuevo evento de prueba.

Luego guarda y ejecuta la prueba. Si es exitosa, se enviará un mensaje:

Esto significa que el mensaje ha sido creado para ti

Finalmente, verifica tu correo electrónico o SMS, dependiendo del punto final que hayas usado para este tutorial. En mi caso, usé correo electrónico.

Paso 6: Crear un EventBridge

Amazon EventBridge es un servicio que te ayuda a conectar aplicaciones y servicios de AWS como Amazon SNS y Amazon Lambda.

Para crear una regla de Amazon EventBridge, sigue estos pasos:

1. Ir a EventBridge:

En la barra de búsqueda, escribe EventBridge y selecciónalo de la lista de servicios.

2. Crear una regla:

En la consola de EventBridge, haz clic en Reglas en el panel izquierdo. Luego haz clic en el botón Crear regla.

3. Configurar los Detalles de la Regla:

  • Nombre: Ingresa un nombre único para tu regla.

  • Descripción (opcional): Agrega una descripción para explicar qué hace esta regla.

4. Escoge el Bus de Eventos:

Selecciona el bus de eventos predeterminado (o otro bus de eventos si has creado uno).

5. Define el Patrón de Evento o Programación:

Para Patrón de Evento:

  • Selecciona un Servicio de AWS como la fuente del evento.

  • Elige el tipo de evento específico (por ejemplo, una carga de archivo S3 o un cambio de estado de instancia EC2).

Para Programación:

  • Elige la opción de Programación para ejecutar la regla en un intervalo fijo (por ejemplo, cada 5 minutos).

  • Haz clic en continuar. Esto te llevará a la página de detalles específicos donde:

  • Desplázate hacia abajo y haz clic en el programador cron. El programador cron especifica la hora en la que se enviará el mensaje.
  • Selecciona “Desactivado” para la opción de ventana de tiempo flexible.

  • Revisa los detalles de la regla para confirmar que todo esté correcto.

  • Haz clic en el botón “Siguiente” para proceder a la página Objetivo.

    La imagen de arriba muestra a qué hora se enviarán los mensajes.

    • En la página de Objetivo, selecciona AWS Lambda para invocar tu función.

  • Desplázate hacia abajo para invocar y elegir la función que creaste.

  • Haz clic en el botón “Siguiente” para continuar. Esto te llevará a la página de configuración. En la sección de permisos, selecciona “Usar regla existente.”

  • Por último, ve a la revisión y crea un horario:

  • La siguiente página te muestra todos los detalles:

Usando EventBrige se crea un programador para los usuarios.

Paso 7: Sube tu Código

Finalmente, sube tu código a GitHub e incluye una documentación adecuada para ayudar a explicar cómo funciona el código.

Consulta esta documentación si no sabes cómo: Subiendo un proyecto a GitHub.

Conclusión

Si has seguido todos estos pasos, habrás creado una aplicación de Citas de Manifestación de Objetivos utilizando AWS Lambda, Amazon S3, Amazon SNS y Amazon EventBridge. Esta aplicación obtiene citas motivacionales y las envía a los suscriptores según un horario.

Puedes encontrar el enlace al repositorio aquí.

No dudes en compartir tu progreso o hacer preguntas si tienes algún problema.

Si encontraste útil este artículo, compártelo con otros.

Mantente actualizado con mis proyectos siguiéndome en Twitter, LinkedIn y GitHub

Gracias por leer 💖.

Descargo de responsabilidad:
Los recursos mostrados en este artículo, incluido el bucket de S3 y su ARN, han sido eliminados y ya no existen. Los detalles visibles en las capturas de pantalla se utilizan únicamente con fines de demostración.