L’API On-Premises ne sera bientôt plus disponible. Consultez notre document Abandon progressif de l’API On-Premises pour de plus amples détails, mais aussi pour connaître la procédure de migration vers notre API Cloud nouvelle génération.
Ce document vous montre comment déployer l’API WhatsApp Business avec Amazon Web Services (AWS). Le processus peut être divisé en deux grandes étapes :
Une fois la configuration terminée, vous pouvez choisir de mettre à jour le client. Si vous avez besoin de redémarrer la Webapp et la Coreapp, suivez cette procédure.
Ce document présente le nouveau modèle AWS que nous avons testé pour vous proposer un débit de message plus élevé et plus stable. Si vous cherchez des informations sur l’ancien modèle AWS, consultez l’archive sur AWS.
Avant de commencer, vous devez réaliser les actions suivantes :
Pour ce faire, il vous faut configurer un compte AWS valide et avoir l’habitude de travailler avec la solution AWS. WhatsApp fournit des modèles CloudFormation permettant de déployer facilement le client de l’API WhatsApp Business. Pour en savoir plus, consultez le Centre de ressources de démarrage AWS.
Vous devez créer une nouvelle paire de clés pour accéder à l’instance EC2 créée par le modèle d’API WhatsApp Business. Il est également possible d’utiliser une paire de clés créée précédemment. Pour plus d’informations sur la création et l’utilisation de paires de clés avec une instance EC2, reportez-vous à la documentation sur les paires de clés Amazon EC2.
La paire de clés doit être créée en fonction de la région dans laquelle vous déployez l’API WhatsApp Business.
Le client de l’API WhatsApp Business utilise une image CentOS 9 (disponible sur AWS Marketplace). Avant d’utiliser le modèle, consultez et acceptez les conditions générales. Si vous n’acceptez pas les conditions, la création du modèle n’aboutira pas.
Pour examiner et accepter l’image AMI de CentOS 9 :
Les modèles de l’API WhatsApp Business utilisent le type de ressource EFS, qui n’est pas disponible dans toutes les régions AWS. En effet, seules les régions suivantes sont actuellement prises en charge :
En fonction du test initial, WhatsApp détermine si nous pouvons fournir une option alternative disponible dans l’ensemble des régions.
Non, nous ne prenons pas en charge kOps. Par contre, nous prenons en charge la solution AWS avec le service ECS. Une configuration Minikube générale pour Kubernetes est également disponible.
En général, le réseau du cloud privé virtuel (VPC) est créé lorsque vous ouvrez un compte AWS. Il peut y avoir ensuite un certain nombre de personnalisations et de restrictions touchant les contrôles d’accès spécifiques à telle ou telle entreprise.
Si l’infrastructure du réseau VPC est déjà créée, vous pouvez ignorer cette étape. Dans le cas contraire, le modèle suivant permet de créer l’infrastructure réseau sur AWS.
Le modèle de réseau est fourni à titre de référence uniquement. Vous pouvez le modifier selon vos besoins.
Pour déployer le modèle de réseau :
Nom | Description |
---|---|
| Obligatoire. Nom de la pile à créer. |
Nom | Description |
---|---|
| Obligatoire. Zones de disponibilité du VPC à créer. |
| Obligatoire. Nombre de zones de disponibilité sélectionnées. |
Nom | Description |
---|---|
| Obligatoire. Plage d’adresses IP (CIDR) pour ce VPC. |
| Obligatoire. Location du VPC |
Nom | Description |
---|---|
| Obligatoire. Plage d’adresses IP (CIDR) pour les sous-réseaux publics |
| Obligatoire. Plage d’adresses IP (CIDR) pour les sous-réseaux publics |
| Facultatif. Obligatoire si le nombre de zones de disponibilité est supérieur à 2. |
| Facultatif. Obligatoire si le nombre de zones de disponibilité est supérieur à 3. |
Nom | Description |
---|---|
| Obligatoire. Options : |
| Conditionnel. Obligatoire si la création de sous-réseau privé est définie sur |
| Conditionnel. Obligatoire si la création de sous-réseau privé est définie sur |
| Conditionnel. Obligatoire si la création de sous-réseau privé est définie sur |
| Conditionnel. Obligatoire si la création de sous-réseau privé est définie sur |
Avant de déployer la pile de l’API WhatsApp Business dans AWS, vous devez d’abord importer les fichiers de configuration des sous-piles référencées dans un bucket S3 pour lequel vous disposez des autorisations de lecture.
WhatsApp Enterprise est le principal modèle et crée l’ensemble des ressources (réseau excepté) requises pour le client de l’API WhatsApp Business. Comme vu précédemment, ce modèle crée également une ressource de base de données, si nécessaire.
Pour déployer le client de l’API WhatsApp Business :
Nom | Description |
---|---|
| Obligatoire. Nom de la pile à créer. Le nom peut comprendre jusqu’à 22 caractères. Remarque : pour les déploiements dans les régions ap-southeast-1, ap-southeast-2, ap-northeast-1 et ap-northeast-2, la limite est fixée à 8 caractères. Si le |
Nom | Description |
---|---|
| Facultatif. Active la fonctionnalité High Availability (Haute disponibilité). Par défaut : |
| Obligatoire. Nombre de messages que vous souhaitez envoyer par seconde. En fonction de ce paramètre et de l’option |
| Obligatoire. Le type de message que vous allez majoritairement envoyer et recevoir. En fonction de ce paramètre et de l’option |
| Facultatif. Installe node-exporter sur chaque hôte de la CoreApp afin de surveiller les instances. Par défaut : |
Nom | Description |
---|---|
| Obligatoire. Nom de la pile de réseau CloudFormation créée lors de l’étape de configuration du réseau. |
| Obligatoire. Nombre de sous-réseaux choisis. Actuellement, nous limitons le déploiement à deux sous-réseaux afin de répartir uniformément les tâches ECS entre tous les hôtes. |
| Obligatoire. Actuellement, nous acceptons uniquement les équilibreurs de charge web, qui sont visibles publiquement. Modifiez les groupes de sécurité une fois la pile de l’API créée pour restreindre les accès superflus. |
Nom | Description |
---|---|
| Obligatoire. Paire de clés permettant d’accéder à l’instance EC2, si nécessaire. |
| Facultatif. Garantit l’évolutivité et la prise en charge des clients expérimentaux de l’API WhatsApp Business. La valeur par défaut devrait convenir à la majorité des cas. |
| Obligatoire. Il est toujours recommandé d’utiliser la dernière version stable (consultez la rubrique changelog pour connaître la version la plus récente). La version du client de l’API WhatsApp Business commence toujours par un « v », sauf indication contraire explicite. L’utilisation d’une version incorrecte empêche la création de la pile. |
| Obligatoire. Il est recommandé de choisir 32 Go ou plus pour les charges de travail de production. |
Nom | Description |
---|---|
| Facultatif. Active le stockage des informations de configuration dans la base de données. |
| Facultatif. Nom d’hôte de la base de données existante. |
| Obligatoire. Nom d’administrateur·ice permettant d’accéder à la base de données. |
| Obligatoire. Mot de passe d’administrateur·ice permettant d’accéder à la base de données. Le mot de passe de la base de données ne doit contenir aucun des caractères suivants : ?{}&~!()^/"@ |
| Obligatoire. Numéro de port permettant d’accéder au serveur de base de données. |
| Facultatif. Indique si la connexion à la base de données doit être maintenue pour les conteneurs web. Par défaut : |
| Facultatif. Durée, en millisecondes, à l’issue de laquelle la base de données ferme les connexions inactives. |
Nom | Description |
---|---|
| Facultatif. Pilote de journalisation pour les journaux du conteneur. |
| Facultatif. Taille maximale en méga-octets d’un fichier journal de conteneur avant rotation des enregistrements. Valeurs autorisées : entre 1 et 250 (inclus). Valeur par défaut : 50. |
| Facultatif. Nombre maximal de fichiers journaux à conserver par conteneur. Valeurs autorisées : entre 1 et 30 (inclus). Valeur par défaut : 7. |
| Facultatif. Nombre de jours pendant lesquels les journaux sont conservés dans CloudWatch. Valeur par défaut : |
Nom | Description |
---|---|
| Non utilisé. Veuillez laisser ce paramètre vide. |
Nom | Description |
---|---|
| Facultatif. Par défaut, la clé du service AWS (option Default-Key) est utilisée pour chiffrer les données inactives de la base et des ressources EFS. Les autres options sont :
|
| Facultatif. Vous pouvez fournir un ID de clé KMS, qui permettra de chiffrer les données. Laissez ce champ vide si l’option User-Provided-Key n’est pas sélectionnée. |
| Facultatif. Par défaut, les données en transit vers la base de données sont chiffrées. Pour le moment, cela s’applique uniquement à la Coreapp. Le chiffrement de la Webapp n’est pas encore pris en charge. En outre, avec un nouveau moteur de base de données, même si cette option est désactivée, la Coreapp procède au chiffrement, mais sans vérification du certificat de serveur (identité). |
| Facultatif. La valeur par défaut contient le groupe de certificats RDS. Si une base de données non RDS est utilisée, un groupe de certificats de l’autorité de certification (AC) approprié peut être fourni ou la valeur peut être laissée vide. La valeur par défaut est adéquate pour activer une connexion sécurisée à la base de données. |
| Facultatif. Certificat du client pour la connexion à la base de données. |
| Facultatif. Clé du client pour la connexion à la base de données |
Ces paramètres sont requis pour les tableaux de bord afin de récupérer les indicateurs d’application à des fins de surveillance.
Nom | Description |
---|---|
| Obligatoire. Nom d’utilisateur de l’API WhatsApp Business. |
| Obligatoire. Mot de passe du nom d’utilisateur indiqué dans |
Nom | Description |
---|---|
| Obligatoire. Mot de passe utilisé pour se connecter au tableau de bord Grafana lors de la création de la pile. |
| Facultatif. Indique si SMTP est activé pour configurer des alertes par e-mail. Valeurs acceptées : Valeur par défaut : |
| Facultatif. Hôte SMTP utilisé dans les alertes par e-mail. Par exemple, smtp.gmail.com:465. |
| Facultatif. Nom d’utilisateur SMTP utilisé dans les alertes par e-mail. |
| Facultatif. Mot de passe SMTP utilisé dans les alertes par e-mail. |
Lorsque le modèle est correctement créé, les paramètres suivants s’affichent :
Par défaut, les règles de sécurité créées par la pile autorisent tous les trafics à accéder aux instances EC2 via SSH, aux points de terminaison de l’API et au tableau de bord Grafana via HTTPS, et aux conteneurs cadvisor et Prometheus. Pour des raisons de sécurité, nous vous recommandons vivement de fermer tous les accès superflus. Cette section vous indique comment modifier les règles de sécurité SSH à travers un exemple. Vous devez toujours limiter l’accès SSH aux trafics fiables.
"<stackName>-ms-xxx-EcsSecurityGroup"
afin de restreindre l’accès à la pile Monitoring via SSH.
Une fois que le client de l’API WhatsApp Business est déployé, il doit être configuré pour devenir opérationnel.
Pour plus d’informations sur l’enregistrement des numéros de téléphone, consultez le guide des numéros de téléphone.
Téléchargez le certificat encodé Base64 depuis votre compte WhatsApp dans Facebook Business Manager sous l’onglet des numéros de téléphone du Gestionnaire WhatsApp.
Une fois que le numéro de téléphone correct est sélectionné et que vous disposez du certificat encodé Base64, vous devez enregistrer le client de l’API WhatsApp Business via le nœud account
. Pour en savoir plus, consultez la documentation sur la procédure d’enregistrement.
Si le numéro de téléphone peut recevoir des textos, récupérez le code d’enregistrement par texto.
Si vous avez déjà reçu le code d’enregistrement de WhatsApp, vous pouvez ignorer cette étape.
Une fois la pile créée, vous devrez utiliser l’appel d’API shards
pour augmenter le nombre d’instances Coreapp actives pour obtenir le débit souhaité. Le nombre de partitions est indiqué dans la section Output (Résultat) de la pile.
La documentation sur les paramètres de l’application décrit la procédure de configuration des rappels web et d’autres paramètres de l’API WhatsApp Business. Nous vous recommandons les paramètres suivants afin de garantir un débit stable.
{ "settings": { "application": { "callback_backoff_delay_ms": 3000, "callback_persist": true, "db_garbagecollector_enable": false, # change this to true when there are no ongoing messaging campaigns "heartbeat_interval": 5, "max_callback_backoff_delay_ms": 900000, "media": { "auto_download": [ "document", "image", "video", "voice", "sticker", "audio" ] }, "notify_user_change_number": true, "pass_through": false, "sent_status": true, "show_security_notifications": false, "skip_referral_media_download": false, "unhealthy_interval": 30, "wa_id": "12245552741", "webhooks": { "max_concurrent_requests": 24, "message": { "delivered": true, "read": true, "sent": true }, "url": "<YOUR_WEBHOOK_SERVER_URL>" } } }, "meta": { "api_status": "stable", "version": "2.41.3" } }
Le client de l’API WhatsApp Business génère un certificat auto-signé par défaut lors de sa création. Le certificat de l’autorité de certification (AC) utilisé pour générer le certificat auto-signé peut être requis pour vérifier le point de terminaison du client de l’API WhatsApp Business et éviter ainsi un avertissement de sécurité.
Vous pouvez télécharger le certificat de l’autorité de certification et l’enregistrer en local pour éviter de recevoir l’avertissement de sécurité, ou télécharger votre propre certificat. Pour en savoir plus, consultez la documentation sur le nœud certificate
.
Dans les déploiements AWS, le certificat SSL est créé à l’aide du nom d’hôte de l’équilibreur de charge. Si une adresse IP est utilisée à la place du nom d’hôte pour les accès, un avertissement est notifié.
Dans une future version, WhatsApp prendra en charge la configuration des certificats SSL fournis par la clientèle.
Une fois que les étapes relatives à la configuration et à l’enregistrement sont terminées, l’envoi et la réception d’un message permettent de valider les fonctionnalités de base du client de l’API WhatsApp Business. Ce point est décrit en détail dans la documentation sur les messages.
À réception du message, le client de l’API WhatsApp Business envoie une requête POST
indiquant le statut ou les détails du message au webhook configuré à l’Étape 3.
Si vous avez bien reçu le message, félicitations, tout est prêt ! Pour en savoir plus sur les points de terminaison de l’API disponibles, consultez la documentation de référence.
Pour redémarrer le client de l’API WhatsApp Business, dans la console ECS (par exemple, https://us-west-2.console.aws.amazon.com/ecs/home?region=us-west-2#/clusters) :
Cette action interrompt le fonctionnement de la Webapp et de la CoreApp. Peu de temps après, l’infrastructure AWS redémarre la Webapp et la CoreApp.
Vous devrez probablement patienter pendant une ou deux minutes.
La mise à jour directe de la pile CloudFormation peut entraîner la destruction et la reconstitution de la base de données. Pour éviter toute perte de données, nous vous recommandons vivement de suivre les étapes manuelles de la section suivante pour mettre à jour le système.
Cette section vous accompagne dans la mise à jour du client de l’API WhatsApp Business et du modèle CloudFormation (CFN). La mise à jour provoque un temps d’arrêt. Par conséquent, veillez à ne pas envoyer de messages pendant qu’elle s’exécute. Vous pourrez rétablir l’envoi de messages une fois la mise à jour terminée.
Vous pouvez mettre à jour le modèle CFN et le client de l’API WhatsApp Business simultanément en procédant de la manière suivante :
Vérification rapide de la mise à jour : envoyez un texto et vérifiez que la réponse de l’API contient le numéro de version approprié (c’est-à-dire la nouvelle version). Vérifiez également que le destinataire a bien reçu le message.
Souvent, les entreprises veulent configurer un environnement à haut débit pour une campagne à durée limitée, tout en exécutant un environnement à faible coût en dehors de la période de la campagne. Dans cette section, nous vous expliquons comment diminuer manuellement la capacité de la configuration AWS afin de réaliser des économies.
Important : ces modifications entraînent des temps d’inactivité. La durée d’inactivité est estimée entre 5 et 15 minutes. Veillez à suivre toutes les recommandations DevOps, notamment à réaliser une sauvegarde des paramètres d’application et de la base de données.
2
.c5.large
, moins coûteux.
c5.large
, puis cliquez sur Create template version (Créer une version de modèle).
r5.xlarge
.
3
.3
.2
.2
.2
.