
Partager:
Adam est un développeur et un consultant qui aime l'ultra-course, les blogs, et qui aide les autres à apprivoiser la technologie pour accomplir des choses étonnantes avec un désir insatiable de mentorat et d'aide.
Utiliser Amazon SQS pour la mise en file d'attente des messages en utilisant AWS Lambda et Python
Lorsque l'on s'attend à recevoir un grand nombre de messages, il peut être problématique de s'assurer qu'ils sont tous reçus. L'utilisation d'une file d'attente de messages, telle qu'AWS SQS, permet de contourner ces écueils. AWS SQS.
Dans cet exemple, vous allez créer un microservice sans serveur sur AWS Lambda en utilisant cette application Python disponible sur Github qui utilise Flasket Serverless. L'application répond à deux objectifs : Elle ajoute des messages à AWS SQS et facilite ensuite l'envoi proprement dit par l'intermédiaire de Vonage SMS comme demandé.
Conditions préalables
Python 3.8 (mettre à jour
serverless.ymlsi une version plus récente est souhaitée)Node.js et 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.
Instructions d'installation
Clonez le fichier nexmo-community/sms-aws-sqs-python-receiver depuis GitHub, et naviguez dans le répertoire nouvellement créé pour continuer.
Environnement
Renommer .env.default en .env et ajouter des valeurs à VONAGE_API_KEY et VONAGE_API_SECRET fournies par votre Tableau de bord de l'API Vonage.
Configuration d'AWS
Vous devez créer informations d'identification AWS comme indiqué par Serverless. Mettez à jour le fichier .env avec ces informations.
Créez également une nouvelle file d'attente file d'attente SQS FIFO en utilisant les paramètres par défaut, et mettez à jour .env avec l'URL de la file d'attente SQS. L'utilisation de FIFO garantit que les messages sont envoyés dans l'ordre dans lequel ils ont été stockés.
Utilisation
Pour commencer, créez une virtualenv à partir de la racine du projet pour contenir le projet au fur et à mesure que vous avancez. Activez-la ensuite comme suit :
Ensuite, initialisez npm et suivez les instructions en sélectionnant les valeurs par défaut. À moins que vous ne souhaitiez en changer. Utilisez également npm pour installer les dépendances nécessaires pour dev afin de permettre à Serverless et Lambda de fonctionner avec l'application Flask.
Vous pouvez maintenant utiliser pip pour installer les dépendances Python nécessaires. Les dépendances sont déjà listées dans le fichier requirements.txt, demandez donc à pip de les utiliser.
La course au niveau local
Si vous souhaitez exécuter l'application localement et tester les choses, avant de la déployer sur AWS Lambda, vous pouvez la servir avec la commande suivante :
Par défaut, l'application sera servie à l'adresse http://localhost:5000. En appuyant sur Ctrl+c la fermera.
Déployer vers Lambda
Une fois toutes les étapes ci-dessus terminées avec succès, vous pouvez maintenant utiliser Serverless pour déployer l'application sur AWS Lambda.
IMPORTANT : Cette application ne contient aucune authentification pour l'utilisation. Veillez donc à ajouter une authentification devant cette application afin d'empêcher son utilisation par le public. Si vous la laissez ouverte au public, vous risquez de devoir payer des frais d'utilisation à AWS et à Vonage.
Critères d'évaluation disponibles
Ce client dispose de 4 points d'extrémité URL :
1 Requête HTTP GET à /
Il n'effectue aucune action, mais constitue un moyen rapide de tester l'efficacité de l'application.
2 Demande HTTP POST à /add
Cette action stocke le message dans le SQS.
Passez un POST avec un corps JSON comme le suivant. Remplacez les espaces réservés, indiqués par
<>par vos données.Le résultat contient le SQS
MessageId.
{
"from": "<your_name_or_number>",
"message": "<sms_message_contents>",
"to": "<recipients_number>"
}
3 Demande HTTP GET à /get
Récupère le message de la file d'attente FIFO de SQS.
Une fois reçue, la touche
ReceiptHandlepeut être utilisée pour le retirer de la file d'attente.
location=None, media_mode=relayed, archive_mode=manual4 Demande HTTP POST à /delete
Cette action supprime le message de SQS.
Passez un POST avec un corps JSON comme le suivant. Remplacez les espaces réservés, indiqués par
<>par vos données.
{
"receipt_handle": "<your_receipt_handle>",
}
Exemples :
Accédez à l'URL fournie par le processus de déploiement. Vous trouverez ci-dessous des exemples de requêtes types : (Votre URL peut varier.)
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/
Le point d'arrivée / renvoie le message générique.
POST https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/add
Le point de terminaison add renverra le code SQS MessageId.
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/get
Le point de terminaison get renverra un message à utiliser.
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/delete
Le delete supprimera un message de SQS.
Désactivation de Virtualenv
Pour quitter la virtualenv, vous pouvez la désactiver si vous le souhaitez.
REMARQUE : Selon le système d'exploitation, il peut être nécessaire de faire précéder la commande ci-dessus de la mention
virtualenvà la commande ci-dessus.
Prochaines étapes
Si vous avez des questions ou rencontrez des problèmes, vous pouvez contacter @VonageDev sur Twitter ou vous renseigner dans la Communauté Vonage de Vonage. Bonne chance.
