Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementa i canarini CloudWatch Synthetics utilizzando Terraform
Creato da Dhrubajyoti Mukherjee (AWS) e Jean-Francois Landreau (AWS)
Archivio di codice: distribuisci i canari Synthetics CloudWatch | Ambiente: produzione | Tecnologie: DevOps; Produttività aziendale DevelopmentAndTesting; Infrastruttura; App Web e mobili |
Servizi AWS: Amazon CloudWatch; Amazon S3; Amazon SNS; Amazon VPC; AWS Identity and Access Management |
Riepilogo
È importante convalidare lo stato di un sistema dal punto di vista del cliente e confermare che i clienti siano in grado di connettersi. Ciò è più difficile quando i clienti non chiamano costantemente l'endpoint. Amazon CloudWatch Synthetics supporta la creazione di canaries, in grado di testare endpoint pubblici e privati. Utilizzando canaries, puoi conoscere lo stato di un sistema anche se non è in uso. Questi canarini sono script Node.js Puppeteer o script Python Selenium.
Questo modello descrive come utilizzare HashiCorp Terraform per distribuire canary che testano endpoint privati. Incorpora uno script Puppeteer che verifica se viene restituito un URL. 200-OK
Lo script Terraform può quindi essere integrato con lo script che distribuisce l'endpoint privato. Puoi anche modificare la soluzione per monitorare gli endpoint pubblici.
Prerequisiti e limitazioni
Prerequisiti
Un account Amazon Web Services (AWS) attivo con un cloud privato virtuale (VPC) e sottoreti private
L'URL dell'endpoint raggiungibile dalle sottoreti private
Terraform installato nell'ambiente di distribuzione
Limitazioni
La soluzione attuale funziona per le seguenti versioni di runtime di CloudWatch Synthetics:
syn-nodejs-puppeteer-3.4
syn-nodejs-puppeteer-3,5
syn-nodejs-puppeteer-3,6
syn-nodejs-puppeteer-3,7
Man mano che vengono rilasciate nuove versioni di runtime, potrebbe essere necessario aggiornare la soluzione corrente. Sarà inoltre necessario modificare la soluzione per stare al passo con gli aggiornamenti di sicurezza.
Versioni del prodotto
Terraform 1.3.0
Architettura
Amazon CloudWatch Synthetics è basato su CloudWatch, Lambda e Amazon Simple Storage Service (Amazon S3). Amazon CloudWatch offre una procedura guidata per creare i canarini e una dashboard che mostra lo stato delle corse dei canarini. La funzione Lambda esegue lo script. Amazon S3 archivia i log e gli screenshot delle corse Canary.
Questo modello simula un endpoint privato tramite un'istanza Amazon Elastic Compute Cloud (Amazon EC2) distribuita nelle sottoreti di destinazione. La funzione Lambda richiede interfacce di rete elastiche nel VPC in cui viene distribuito l'endpoint privato.
![La descrizione segue il diagramma.](images/pattern-img/73ed0103-ec45-4653-bb29-f402a88f0c64/images/39aaed0f-f259-4f2a-98fb-8e3a340d0b02.png)
Il diagramma mostra:
Il canarino Synthetics avvia la funzione Lambda canary.
La funzione Lambda canary si connette all'interfaccia elastic network.
La funzione Lambda canary monitora lo stato dell'endpoint.
Il Synthetics Canary invia i dati di esecuzione al bucket e alle metriche S3. CloudWatch
Viene avviato un CloudWatch allarme in base alle metriche.
L' CloudWatch allarme avvia l'argomento Amazon Simple Notification Service (Amazon SNS).
Strumenti
Servizi AWS
Amazon ti CloudWatch aiuta a monitorare i parametri delle tue risorse AWS e delle applicazioni che esegui su AWS in tempo reale.
AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
Amazon Simple Notification Service (Amazon SNS) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
Amazon Virtual Private Cloud (Amazon VPC) ti aiuta a lanciare le risorse AWS in una rete virtuale che hai definito. Questa rete virtuale è simile a una rete tradizionale che gestiresti nel tuo data center, con i vantaggi dell'utilizzo dell'infrastruttura scalabile di AWS. Questo modello utilizza endpoint VPC e interfacce di rete elastiche.
Altri servizi
HashiCorp Terraform
è uno strumento open source di infrastruttura come codice (IaC) che consente di utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud. Questo modello utilizza Terraform per implementare l'infrastruttura. Puppeteer è una libreria
Node.js. Il runtime CloudWatch Synthetics utilizza il framework Puppeteer.
Codice
La soluzione è disponibile nel repository cloud. GitHub watch-synthetics-canary-terraform
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Raccogli i requisiti per il monitoraggio dell'URL privato. | Raccogli la definizione completa dell'URL: dominio, parametri e intestazioni. Per comunicare in privato con Amazon S3 e CloudWatch Amazon, utilizza gli endpoint VPC. Nota come il VPC e le sottoreti sono accessibili all'endpoint. Considerate la frequenza delle corse dei canarini. | Architetto del cloud, amministratore di rete |
Modifica la soluzione esistente per monitorare l'URL privato. | Modifica il
| Architetto del cloud |
Implementa e gestisci la soluzione. | Per distribuire la soluzione, procedi come segue:
| Architetto del cloud, DevOps ingegnere |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
L'eliminazione delle risorse assegnate si blocca. | Elimina manualmente la funzione Canary Lambda, l'elastic network interface corrispondente e il gruppo di sicurezza, in quest'ordine. |
Risorse correlate
Informazioni aggiuntive
Artefatti del repository
Gli artefatti del repository hanno la seguente struttura.
. ├── README.md ├── main.tf ├── modules │ ├── canary │ └── canary-infra ├── terraform.tfvars ├── tf.plan └── variable.tf
Il main.tf
file contiene il modulo principale e distribuisce due sottomoduli:
canary-infra
implementa l'infrastruttura necessaria per le isole canarie.canary
dispiega i canarini.
I parametri di input per la soluzione si trovano nel terraform.tfvars
file. È possibile utilizzare il seguente esempio di codice per creare un canarino.
module "canary" { source = "./modules/canary" name = var.name runtime_version = var.runtime_version take_screenshot = var.take_screenshot api_hostname = var.api_hostname api_path = var.api_path reports-bucket = module.canary_infra.reports-bucket role = module.canary_infra.role security_group_id = module.canary_infra.security_group_id subnet_ids = var.subnet_ids frequency = var.frequency alert_sns_topic = var.alert_sns_topic }
Segue il file.var corrispondente.
name = "my-canary" runtime_version = "syn-nodejs-puppeteer-3.7" take_screenshot = false api_hostname = "mydomain.internal" api_path = "/path?param=value" vpc_id = "vpc_id" subnet_ids = ["subnet_id1"] frequency = 5 alert_sns_topic = "arn:aws:sns:eu-central-1:111111111111:yyyyy"
Pulizia della soluzione
Se si esegue il test in un ambiente di sviluppo, è possibile ripulire la soluzione per evitare costi aggiuntivi.
Nella Console di gestione AWS, accedi alla console Amazon S3. Svuota il bucket Amazon S3 creato dalla soluzione. Assicurati di eseguire un backup dei dati, se necessario.
Nel tuo ambiente di sviluppo, dalla
cloudwatch-synthetics-canary-terraform
directory, esegui ildestroy
comando.terraform destroy