Enviar mensajes a SQS con Lambda y API Gateway

enviar mensajes

Use Lambda y API Gateway para enviar mensajes a SQS

¿Hoy qué buscamos? Pues enviar mensajes… ¿Y cómo lo haremos? ¡Sigue leyendo!

Objetivo:

  1. Cree una cola SQS estándar con Python.
  2. Cree una función Lambda en la consola con un tiempo de ejecución de Python 3.7 o superior
  3. Modifique Lambda para enviar un mensaje a la cola de SQS. Su mensaje debe contener la hora actual o un número aleatorio. Puede utilizar la función de prueba integrada para realizar pruebas.
  4. Cree un activador de tipo API HTTP de puerta de enlace de API.
  5. Pruebe el activador para verificar que se envió el mensaje.

Requisitos previos:

  • Usuario de AWS IAM con acceso de administrador
  • IDE de su elección (usaré Cloud9), configurado con lo siguiente: Boto3, configuración de AWS. Ejecute los siguientes comandos para iniciar este proyecto:
pip3 install awscli
pip3 install boto3

 

Paso 1: Crearemos una cola SQS en Cloud9

Y para ello usaremos el script de Python a continuación. SQS actúa como un repositorio temporal de mensajes. Después de ejecutar el script, verificamos que SQS se haya creado en la consola de AWS.

Podemos verificar que la Cola SQS se creó navegando a la consola de AWS a ‘Amazon SQS’ y verá la cola recién creada:

¡SQS se creó con éxito!

Paso 2: crear la función Lambda:

Navegue a su tablero Lambda → seleccione Create Function → seleccione Author From Scratch → asígnele un nombre → seleccione Python 3.7 → seleccione Create Function.

Ahora queremos actualizar nuestros permisos. Haga clic en el nombre del rol (role name) → seleccione Agregar permisos (add permissions) → busque SQS y adjunte acceso completo (full access).

Tenga en cuenta que solo otorgamos FullAccess para fines de demostración.

¡Ahora tenemos nuestro rol de ejecución de Lambda configurado!

Paso 3: Modifique Lambda para enviar un mensaje a la cola de SQS

Vuelva a Lambda y haga clic en código (Code). Use la esencia adjunta para modificar la función de Lambda existente. Esto enviará un mensaje a SQS que contiene la hora actual. Agregue el siguiente código a su función de Lambda.

  • Haga clic en Deploy para guardar todos los cambios.
  • Haga clic en Test para configurar un evento de prueba:

  • Mientras configura su evento de prueba → Nombre del evento (Name Event) → Seleccione privado (Private) en Configuración de uso compartido de eventos → para la plantilla, seleccione apigateway-aws-proxy → Haga clic en Guardar (save) y probar (test). Una vez que haga clic en probar, debería ver un resultado de ejecución similar al siguiente:

enviar mensajes

Paso 3: Configure el activador de API Gateway para la función Lambda

En su tablero Lambda, seleccione Agregar disparador (Add Trigger) → seleccione API Gateway Trigger en el menú → seleccione Agregar disparador (Add Trigger).

enviar mensajes

Paso 4: Verifique que se envió el mensaje probando su disparador:

En este paso, agregaremos permiso para que nuestra API Gateway se comunique con nuestra función Lambda.

  • Haga clic en Configuración → Permisos
  • Luego en Nombre de función → Agregar permisos → Adjuntar política
  • Busque “AmazonAPIGatewayAdministrator”
  • Finalmente, haga clic en Adjuntar políticas

enviar mensajes

De vuelta en la consola de Lambda, haga clic en Configuración > Desencadenadores (Trigger) > Extremo de puerta de enlace API

enviar mensajes

Haga clic en la URL del extremo de la API y se abrirá una nueva ventana que dirá “Processed“.

enviar mensajes

Cuando cree el punto final de la API, también verá que la fecha y la hora aparecerán en la cola de SQS.

  • Haz clic en Enviar y recibir mensajes (Send and receive messages).

enviar mensajes

  • Haga clic en Encuesta para mensajes (Poll for messages).

enviar mensajes

Haga clic en el mensaje para verificar la fecha y la hora en que se envió el mensaje:

enviar mensajes
Éxito

¡Felicidades! ¡Acaba de configurar una API Gateway para activar una función Lambda y enviar mensajes a través de SQS usando Python!


Gracias por llegar hasta aquí, si encuentras esto útil no olvides aplaudir 👍🏼suscribirse para recibir más contenido.

Si necesita ayuda adicional, por favor contácteme.


Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre AWS y Laravel:

Recent Post