
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.
Utilisation d'une file d'attente de messages avec le SMS en cas de limitation du débit
Dans certains pays, la limitation du débit des SMS et la lenteur des requêtes (parfois aussi peu qu'une requête par seconde) compliquent l'envoi en masse. L'utilisation d'une file d'attente de messages, telle que AWS SQS.
Pour cet exemple, vous créez un microservice sans serveur sur AWS Lambda à l'aide de 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)Pip
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-sender 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 dans 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. La FIFO garantit que les messages sont envoyés dans l'ordre dans lequel ils ont été stockés.
Utilisation
Pour commencer, créez un fichier virtualenv à la racine du projet pour contenir le projet. Ensuite, activez-le comme suit :
Ensuite, initialisez npm et suivez les invites 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 dans le fichier requirements.txt, demandez donc à pip de l'utiliser.
Locaux de course à pied
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 est servie à l'adresse http://localhost:5000. Vous devez appuyer sur Ctrl+c pour la fermer.
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 3 points d'extrémité URL :
1 demande GET à /
Il n'effectue aucune action, mais constitue un moyen rapide de tester l'efficacité de l'application.
2 Demande 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 GET à /process
Lance le processus d'envoi.
Récupère les messages de la file d'attente SQS FIFO.
Se connecte à Nexmo et envoie le SMS.
location=None, media_mode=relayed, archive_mode=manual 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 renvoie l'information SQS MessageId.
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/process
Le point d'arrivée process renvoie un message indiquant que l'envoi a réussi.
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
Dans cet exemple, l'application contient un /process qui peut être appelé par une requête HTTP GET à intervalles réguliers. Alternativement, le code dans /process pourrait être placé dans une fonction Lambda distincte et appelé directement à partir des événements planifiés de CloudWatch au lieu d'une requête HTTP GET.
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.
