Stiamo disattivando l'API On-Premises. Consulta il nostro documento Disattivazione API On-Premises per i dettagli e per scoprire come eseguire la migrazione alla nostra API Cloud di nuova generazione.
Questo documento mostra la modalità di utilizzo di Amazon Web Services (AWS) per l'implementazione dell'API di WhatsApp Business. Il processo può essere diviso in due passaggi principali:
Dopo aver completato la configurazione, puoi scegliere di aggiornare il client. Se hai bisogno di riavviare sia Webapp sia CoreApp, segui questi passaggi.
Questo documento illustra un nuovo modello AWS che abbiamo testato per un throughput di messaggi maggiore e più stabile. Se stai cercando il precedente modello AWS, consulta l'archivio AWS.
Prima di iniziare dovrai:
Devi configurare un account AWS valido e conoscere il funzionamento di AWS. WhatsApp fornisce modelli CloudFormation per facilitare l'implementazione del client dell'API di WhatsApp Business. Per ulteriori informazioni, consulta il Centro risorse per le nozioni di base su AWS.
Devi creare una nuova coppia di chiavi per accedere all'istanza EC2 creata dal modello dell'API di WhatsApp Business. Puoi anche utilizzare una coppia di chiavi creata in precedenza. Consulta la documentazione sulle coppie di chiavi Amazon EC2 per informazioni sulla creazione e sull'utilizzo di coppie di chiavi con un'istanza EC2.
La coppia di chiavi deve essere creata utilizzando l'area geografica per la quale verrà implementata l'API di WhatsApp Business.
Il client dell'API di WhatsApp Business utilizza un'immagine CentOS 9 (disponibile nell'AWS Marketplace). Prima di utilizzare il modello, devi controllare e accettare le condizioni. La mancata accettazione delle condizioni comporterà la mancata creazione del modello.
Per controllare e accettare l'immagine AMI CentOS 9:
I modelli dell'API di WhatsApp Business utilizzano il tipo di risorsa EFS, che non è disponibile in tutte le aree geografiche AWS. Attualmente, sono supportate solo le seguenti aree geografiche:
A seconda del test iniziale, WhatsApp stabilirà se è possibile fornire un'opzione alternativa disponibile in tutte le aree geografiche.
No, KOPS non è supportato. Non supportiamo la soluzione AWS basata su ECS. Abbiamo inoltre una configurazione Kubernetes minikube generale.
La rete Virtual Private Cloud (VPC) viene generalmente creata quando crei un account AWS. Per una specifica azienda potrebbero inoltre essere disponibili diverse personalizzazioni e necessarie numerose limitazioni di controllo dell'accesso.
Se l'infrastruttura di rete VPC è già stata creata, è possibile saltare questo passaggio. In caso contrario, il seguente modello può essere utilizzato per creare l'infrastruttura di rete su AWS.
Il modello di rete viene fornito solo a scopo di riferimento e può essere modificato in base alle esigenze specifiche.
Per l'implementazione del modello di rete:
Nome | Descrizione |
---|---|
| Obbligatorio. Nome dello stack da creare. |
Nome | Descrizione |
---|---|
| Obbligatorio. Le aree di disponibilità (AZ) per la creazione della rete VPC. |
| Obbligatorio. Il numero di aree di disponibilità selezionate. |
Nome | Descrizione |
---|---|
| Obbligatorio. L'intervallo di indirizzi IP (CIDR) per questa rete VPC. |
| Obbligatorio. La tenancy della rete VPC. |
Nome | Descrizione |
---|---|
| Obbligatorio. L'intervallo di indirizzi IP (CIDR) per le subnet pubbliche |
| Obbligatorio. L'intervallo di indirizzi IP (CIDR) per le subnet pubbliche |
| Facoltativo. Obbligatorio, se il numero di aree di disponibilità è maggiore di 2. |
| Facoltativo. Obbligatorio, se il numero di aree di disponibilità è maggiore di 3. |
Nome | Descrizione |
---|---|
| Obbligatorio. Opzioni: |
| Condizionale. Obbligatorio, se la creazione della subnet privata è impostata su |
| Condizionale. Obbligatorio, se la creazione della subnet privata è impostata su |
| Condizionale. Obbligatorio, se la creazione della subnet privata è impostata su |
| Condizionale. Obbligatorio, se la creazione della subnet privata è impostata su |
Prima dell'implementazione dello stack dell'API di WhatsApp Business su AWS, devi caricare i file di configurazione dei substack indicati in un bucket S3 per cui hai accesso in lettura.
WhatsApp Enterprise rappresenta il modello principale e crea tutte le risorse (tranne la rete) necessarie per il client dell'API di WhatsApp Business. Come notato in precedenza, questo modello crea anche una risorsa del database, se necessario.
Per l'implementazione del client dell'API di WhatsApp Business:
Nome | Descrizione |
---|---|
| Obbligatorio. Il nome dello stack da creare. Il nome dello stack può avere al massimo 22 caratteri. Nota: per le implementazioni nelle aree geografiche ap-southeast-1, ap-southeast-2, ap-northeast-1 o ap-northeast-2, il nome dello stack deve usare al massimo 8 caratteri. Se |
Nome | Descrizione |
---|---|
| Facoltativo. Abilita la funzione High Availability. Impostazione predefinita: |
| Obbligatorio. Numero di messaggi che desideri inviare al secondo. Insieme all'opzione |
| Obbligatorio. Il tipo di messaggio dominante che desideri inviare e ricevere. Insieme all'opzione |
| Facoltativo. Installa node-exporter su ogni host CoreApp, ad esempio per scopi di monitoraggio. Impostazione predefinita: |
Nome | Descrizione |
---|---|
| Obbligatorio. Il nome dello stack CloudFormation di rete creato dal passaggio di configurazione della rete. |
| Obbligatorio. Il numero di subnet scelte. Al momento, supportiamo solo 2 subnet per l'implementazione per distribuire in modo uniforme le attività ECS su tutti gli host. |
| Obbligatorio. Al momento, supportiamo solo servizi di bilanciamento del carico Internet-facing, visibili al pubblico. Modifica i gruppi di sicurezza dopo la creazione dello stack dell'API per chiudere l'accesso non necessario. |
Nome | Descrizione |
---|---|
| Obbligatorio. Scegli la coppia di chiavi appropriata per accedere all'istanza EC2, se necessario. |
| Facoltativo. Questo parametro è per prove future per supportare i client dell'API di WhatsApp Business sperimentali. Il valore predefinito dovrebbe essere ottimale per la maggior parte dei casi. |
| Obbligatorio. È sempre consigliabile utilizzare la versione stabile più recente (consulta il registro modifiche per la versione più recente). La versione del client dell'API di WhatsApp Business inizia sempre con una "v", a meno che non sia esplicitamente indicato diversamente. L'utilizzo di una versione errata causerà la mancata creazione dello stack. |
| Obbligatorio. Per i carichi di lavoro di produzione, si consiglia di scegliere almeno 32 GB. |
Nome | Descrizione |
---|---|
| Facoltativo. Abilita l'archiviazione delle informazioni di configurazione nel database. |
| Facoltativo. Il nome host del database esistente. |
| Obbligatorio. Nome dell'amministratore per accedere al database. |
| Obbligatorio. Password dell'amministratore per accedere al database. La password del database non deve contenere nessuno di questi caratteri: ?{}&~!()^/"@ |
| Obbligatorio. Numero di porta per accedere al back-end del database. |
| Facoltativo. Indica se mantenere la connessione con il database per i contenitori web. Impostazione predefinita: |
| Facoltativo. Il tempo impiegato in millisecondi affinché il database chiuda le connessioni inattive. |
Nome | Descrizione |
---|---|
| Facoltativo. Il driver di registrazione per i registri dei contenitori. |
| Facoltativo. Dimensione massima di un file di registro contenitore in MB prima che venga ruotato. Valori consentiti tra 1 e 250 (entrambi inclusi). Valore predefinito: 500. |
| Facoltativo. Numero massimo di file di registro da conservare per contenitore. Valori consentiti tra 1 e 30 (entrambi inclusi). Valore predefinito: 7. |
| Facoltativo. Numero di giorni per la conservazione dei registri in CloudWatch. Valore predefinito: |
Nome | Descrizione |
---|---|
| Non usato. Lascia questo parametro vuoto. |
Nome | Descrizione |
---|---|
| Facoltativo. Per impostazione predefinita, la chiave di servizio AWS (opzione Default-Key (Chiave predefinita)) viene utilizzata per crittografare i dati DB ed EFS inattivi. Le altre opzioni sono:
|
| Facoltativo. Puoi fornire un ID chiave KMS, che verrà utilizzato per crittografare i dati. Lascia vuota questa opzione se l'opzione User-Provided-Key (Chiave fornita dall'utente) non è stata selezionata. |
| Facoltativo. Per impostazione predefinita, i dati in transito verso il database vengono crittografati. Al momento, è applicabile solo a Coreapp. La crittografia Webapp non è ancora supportata. Inoltre, con un nuovo motore di database, anche se questa opzione è disabilitata, Coreapp esegue la crittografia, ma senza verifica del certificato del server (identità). |
| Facoltativo. Il valore predefinito contiene il bundle del certificato RDS. Se non viene utilizzato un database RDS, è possibile fornire un bundle di certificato CA appropriato oppure è possibile lasciare vuoto il valore. Il valore predefinito consente di abilitare la connessione sicura con il database. |
| Facoltativo. Certificato client per la connessione con il database. |
| Facoltativo. Chiave client per la connessione con il database. |
Questi parametri sono necessari per permettere alle dashboard di Grafana di recuperare le metriche dell'app per scopi di monitoraggio.
Nome | Descrizione |
---|---|
| Obbligatorio. Specifica il nome utente dell'API di WhatsApp Business. |
| Obbligatorio. Specifica la password per |
Nome | Descrizione |
---|---|
| Obbligatorio. Specifica la password utilizzata come password di accesso per la dashboard di Grafana durante la creazione dello stack. |
| Facoltativo. Indica se SMTP è abilitato per la configurazione di avvisi tramite e-mail. I valori validi sono: Valore predefinito: |
| Facoltativo. L'host SMTP utilizzato negli avvisi tramite e-mail. Ad esempio, smtp.gmail.com:465. |
| Facoltativo. Specifica il nome utente SMTP utilizzato negli avvisi tramite e-mail. |
| Facoltativo. Specifica la password SMTP utilizzata negli avvisi tramite e-mail. |
Dopo aver creato correttamente il modello, verranno visualizzati i seguenti parametri:
Per impostazione predefinita, le regole di sicurezza create dallo stack consentono a tutto il traffico di poter raggiungere le istanze EC2 tramite SSH, gli endpoint dell'API e la dashboard di Grafana tramite HTTP, e i contenitori cadvisor e Prometheus. Per motivi di sicurezza, si consiglia vivamente di chiudere gli accessi non necessari. Come esempio, questa sezione illustra i passaggi per l'aggiornamento della regola di sicurezza SSH. Dovresti sempre limitare l'accesso SSH al solo traffico di cui ti fidi.
"<stackName>-ms-xxx-EcsSecurityGroup"
per limitare l'accesso SSH per lo stack di monitoraggio.
Dopo aver implementato correttamente il client dell'API di WhatsApp Business, è necessario configurarlo per renderlo operativo.
Consulta la Guida per il numero di telefono per ulteriori informazioni dettagliate sulla registrazione del numero di telefono.
Scarica il certificato con codifica base64 dal tuo account WhatsApp nel Business Manager di Facebook nella tab Numeri di telefono di WhatsApp Manager.
Dopo aver selezionato il numero di telefono e il certificato con codifica base64 corretti, è necessario registrare il client dell'API di WhatsApp Business tramite il nodo account
. Consulta la documentazione sulla registrazione per maggiori informazioni.
Se il numero di telefono è in grado di ricevere SMS, utilizza il metodo SMS per il recupero del codice di registrazione.
Se hai già ricevuto il codice di registrazione da WhatsApp, puoi saltare questo passaggio.
Dopo la creazione dello stack, devi utilizzare la chiamata API shards
per aumentare il numero di istanze Coreapp attive per raggiungere il throughput desiderato. Il numero di partizioni è disponibile nella sezione Output dello stack.
La configurazione delle callback web dell'API di WhatsApp Business e di altri parametri è descritta nella documentazione sulle impostazioni dell'app. Per ottenere un throughput stabile, si consigliano le seguenti impostazioni dell'app.
{ "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" } }
Al momento della creazione, il client dell'API di WhatsApp Business genera un certificato autofirmato per impostazione predefinita. Il certificato di Autorità di certificazione (CA) utilizzato per generare il certificato autofirmato potrebbe essere necessario per verificare l'endpoint del client dell'API di WhatsApp Business ed evitare un avviso di attendibilità del certificato.
Puoi scaricare il certificato CA e archiviarlo localmente per evitare l'avviso di attendibilità del certificato oppure caricarne uno in tuo possesso. Consulta la documentazione sul nodo certificate
per maggiori informazioni.
Nelle implementazioni AWS, il certificato SSL viene creato utilizzando il nome host del servizio di bilanciamento del carico. Se per l'accesso viene utilizzato un indirizzo IP al posto del nome host, l'avviso verrà comunque rilevato.
WhatsApp supporterà la configurazione dei certificati SSL forniti dal cliente in una versione futura.
Dopo aver completato correttamente i passaggi di configurazione e registrazione, è possibile inviare e ricevere un messaggio per convalidare le funzionalità di base del client dell'API di WhatsApp Business. Questa operazione è descritta in dettaglio nella documentazione sui messaggi.
Al momento della corretta ricezione del messaggio, il client dell'API di WhatsApp Business eseguirà il POST
dello stato/dei dettagli del messaggio sul webhook configurato nel Passaggio 3.
Se il messaggio è stato ricevuto correttamente, è tutto pronto: congratulazioni! Consulta la documentazione di riferimento per ulteriori informazioni sugli endpoint API disponibili.
Per riavviare il client dell'API di WhatsApp Business, nella console ECS, ad esempio, https://us-west-2.console.aws.amazon.com/ecs/home?region=us-west-2#/clusters):
Questa operazione interromperà Webapp e CoreApp. In breve tempo, l'infrastruttura AWS riavvierà sia Webapp sia CoreApp.
Prevedi un periodo di inattività di circa uno o due minuti.
Aggiornare direttamente uno stack CloudFormation può comportare la distruzione e la ricreazione del database. Ti consigliamo vivamente di seguire i passaggi manuali descritti nella sezione successiva per l'aggiornamento del sistema per evitare la perdita di dati.
Questa sezione illustra la modalità di aggiornamento sia dell'API di WhatsApp Business sia del modello CloudFormation (CFN). L'esecuzione di un aggiornamento comporterà un periodo di inattività, quindi non inviare messaggi in questo intervallo di tempo, fino a quando l'aggiornamento non sarà completato.
Puoi aggiornare il modello CFN e la versione client dell'API di WhatsApp Business nello stesso momento procedendo come segue:
Verifica rapida dell'aggiornamento:invia un SMS e verifica che la risposta dell'API contenga il numero di versione corretto (ovvero, la nuova versione). Verifica anche che il messaggio sia stato ricevuto dal destinatario.
È comune che le aziende desiderino configurare un ambiente con throughput elevato per una campagna limitata nel tempo e mantenere attivo un ambiente a basso costo durante il periodo non dedicato alla campagna. Questa sezione offre dei suggerimenti su come ridurre manualmente la configurazione AWS per risparmiare sui costi.
Importante: si ricorda che ci saranno tempi di inattività. Il tempo di inattività stimato potrebbe essere compreso fra 5 e 15 minuti. Assicurati di aver seguito tutte le best practice di DevOps, come il backup delle impostazioni dell'app e il backup del database.
2
.c5.large
.
c5.large
, poi scegli Create template version (Crea versione modello).
r5.xlarge
.
3
.3
.2
.2
.2
.