
Compartir:
Adam es un desarrollador y consultor al que le gusta correr a toda velocidad, bloguear y ayudar a otros a domar la tecnología para conseguir cosas increíbles, con un deseo insaciable de servir de mentor y ayudar.
Uso de Amazon SQS para poner en cola mensajes con AWS Lambda y Python
Cuando se espera recibir grandes cantidades de mensajes, asegurarse de que se reciben todos puede ser problemático. Una forma de sortear estos escollos es utilizar una cola de mensajes, como AWS SQS.
En este ejemplo, crearás un microservicio sin servidor en AWS Lambda utilizando esta aplicación Python disponible en Github que utiliza Flasky sin servidor. La aplicación tiene dos propósitos: Añade mensajes a AWS SQS y luego facilita el envío real a través de Vonage SMS según lo solicitado.
Requisitos previos
Python 3.8 (actualice
serverless.ymlsi se desea una versión superior)Node.js y npm
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Instrucciones de instalación
Clonar el nexmo-community/sms-aws-sqs-python-receiver de GitHub y navega hasta el directorio recién creado para continuar.
Medio ambiente
Cambie el nombre de .env.default a .env y añada valores a VONAGE_API_KEY y VONAGE_API_SECRET proporcionados por su Panel de API de Vonage.
Configuración de AWS
Deberá crear credenciales de AWS como indica Serverless. Actualice el .env con estas credenciales.
Además, cree una nueva cola SQS FIFO utilizando la configuración predeterminada y actualice .env con la URL de la cola SQS. Al utilizar FIFO, garantiza que los mensajes se envían en el orden en que se almacenaron.
Utilización
Para empezar, cree un virtualenv dentro de la raíz del proyecto para contener el proyecto a medida que avanza. A continuación, actívelo de la siguiente manera:
A continuación, inicialice npm y siga las indicaciones seleccionando los valores predeterminados. A menos que desees cambiar alguno de ellos. Además, utiliza npm para instalar las dependencias necesarias para dev para permitir que Serverless y Lambda funcionen con la aplicación Flask.
Ahora puede utilizar pip para instalar las dependencias de Python necesarias. Las dependencias ya están listadas en el requirements.txt, así que indica a pip que las use.
Correr localmente
Si desea ejecutar la aplicación localmente y probar las cosas, antes de implementar en AWS Lambda, puede servirla con el siguiente comando:
Por defecto, la aplicación se servirá en http://localhost:5000. Si pulsa Ctrl+c se cerrará.
Despliegue en Lambda
Con todo lo anterior terminado con éxito, ahora puede utilizar Serverless para desplegar la aplicación en AWS Lambda.
IMPORTANTE: Esta aplicación no contiene ninguna autenticación para su uso. Por lo tanto, asegúrate de agregar autenticación delante de ella para evitar el uso público. Al dejarla abierta al público, podría dar lugar a cargos por uso en AWS y Vonage.
Puntos finales disponibles
Hay 4 puntos finales de URL disponibles con este cliente:
1 Petición HTTP GET a /
No realiza ninguna acción, pero proporciona una forma rápida de probar
2 Solicitud HTTP POST a /add
Esta acción almacena el mensaje en SQS.
Pase un POST con un cuerpo JSON como el siguiente. Sustituya los marcadores de posición, indicados con
<>con sus datos.El resultado contiene el SQS
MessageId.
{
"from": "<your_name_or_number>",
"message": "<sms_message_contents>",
"to": "<recipients_number>"
}
3 Petición HTTP GET a /get
Recupera el mensaje de la cola SQS FIFO.
Una vez recibido, el botón
ReceiptHandlese puede utilizar para eliminarlo de la cola.
location=None, media_mode=relayed, archive_mode=manual4 Solicitud HTTP POST a /delete
Esta acción borra el mensaje de SQS.
Pase un POST con un cuerpo JSON como el siguiente. Sustituya los marcadores de posición, indicados con
<>con sus datos.
{
"receipt_handle": "<your_receipt_handle>",
}
Ejemplos:
Vaya a la URL proporcionada por el proceso de despliegue. A continuación se muestran algunos ejemplos de solicitudes de muestra: (Su URL variará.)
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/
El punto final / devuelve el mensaje genérico.
POST https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/add
El punto final add devolverá el SQS MessageId.
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/get
El punto final get endpoint devolverá un mensaje para su uso.
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/delete
La dirección delete borrará un mensaje de SQS.
Desactivar Virtualenv
Para salir del virtualenv puede desactivarlo, cuando lo desee.
NOTA: Dependiendo del sistema operativo, puede que tenga que anteponer
virtualenval comando anterior.
Próximos pasos
Si tiene alguna pregunta o se encuentra con problemas, puede ponerse en contacto con @VonageDev en Twitter o consultar en la Comunidad de Vonage en Slack. Buena suerte.
