Terraform Support Eventbridge
CSS-FHXB3M Display-WebKit-Box; display-webkit-flex; Display-MS-Flexbox; Display: Flex-WebKit-Flex-Direction: Row-MS-Flex-Direction: riga; Direzione Flex: ROW-WEBKIT-ALIGN-Item: Center-WebKit-Box-Align: Center-MS-Flex-Align: Centro; ALIGE-ITMS: CENTRO;. CSS-9A49Z0 Margin-Right: 0.5rem; Altezza: 2.5rem; larghezza: 2.5Rem-WebKit-Flex-Shrink: 0-MS-Flex-negativo: 0; Flex-Shrink: 0; Overflow: nascosto; Radius di confine: 9999px; Rahul Lokurte’B Blog
Questa soluzione utilizza la versione Terraform 0.12.16, puoi impostare alias diversi come segue. Terraform userebbe quindi questi provider quando iniziamo a creare i nostri moduli:
Riepilogo dell’articolo:
– Terraform supporta EventBridge e consente di impostare alias diversi per i provider.
– EventBridge è un servizio di bus eventi senza server senza server che collega le applicazioni con i dati di diverse fonti.
– Supporta l’integrazione con applicazioni basate su SAAS e altri servizi AWS come le funzioni Lambda e le funzioni di passo.
– L’articolo spiega come invocare una funzione AWS Lambda a intervalli programmati utilizzando AWS Eventbridge Rule e Terraform.
– Per iniziare, è necessario creare una struttura del progetto e impostare una regola per eseguire la funzione Lambda nei tempi previsti.
– La struttura del progetto prevede la creazione di una nuova directory, risorse e una cartella Lambda.
– Nella cartella Lambda, è necessario creare un indice.File JS con il codice funzione Lambda.
– La funzione Lambda utilizza la libreria Faker per generare dati casuali.
– Dopo aver creato la funzione Lambda, è possibile definire i provider di terraform in testa.file tf.
– Il principale.Il file TF specifica il provider AWS con opzioni di configurazione come regione, profilo e file di credenziali.
– Puoi anche definire le variabili nelle variabili.File TF per fornire valori per la configurazione del provider.
Domande e risposte:
1. Terraform Support Eventbridge?
Terraform supporta EventBridge e fornisce la possibilità di impostare alias diversi per i provider. Ciò consente a Terraform di utilizzare i provider specificati durante la creazione di moduli.
2. Cos’è Eventbridge?
EventBridge è un servizio di bus eventi senza server senza server che consente alle applicazioni di connettersi con i dati di varie fonti. Fornisce osservabilità per eventi e supporta l’integrazione con applicazioni basate su SAAS e di terze parti.
3. A quali servizi AWS possono inviare eventi eventi eventi?
EventBridge può inviare eventi a vari servizi AWS, tra cui le funzioni Lambda e le funzioni di passo.
4. Come possiamo invocare una funzione AWS Lambda a intervalli programmati con la regola di Eventbridge usando Terraform?
Per invocare una funzione AWS Lambda a intervalli programmati, è necessario prima impostare una regola usando EventBridge e quindi utilizzare Terraform per definire la regola e il suo programma.
5. Qual è la struttura del progetto per l’impostazione di una funzione Lambda programmata?
La struttura del progetto prevede la creazione di una nuova directory e una cartella delle risorse. All’interno della cartella delle risorse, crea una cartella Lambda per contenere il codice di funzione Lambda.
6. Come si crea una funzione Lambda?
Per creare una funzione Lambda, creare una cartella all’interno della cartella delle risorse e aggiungere un indice.File JS con il codice funzione Lambda. È possibile utilizzare la libreria Faker per generare dati casuali nella funzione Lambda.
7. A cosa servono i fornitori di terraform?
I fornitori di terraform vengono utilizzati per configurare e interagire con i fornitori di infrastrutture. In questo caso, il provider AWS viene utilizzato per definire la regione AWS, il profilo e altre opzioni di configurazione.
8. Cosa fa il principale.Il file TF contenga?
Il principale.Il file TF contiene la configurazione Terraform per il provider AWS. Specifica i provider richiesti e le loro opzioni di configurazione, come la regione, il profilo e i tag.
9. Come vengono utilizzate le variabili in terraform?
Le variabili vengono utilizzate per fornire valori dinamici alla configurazione Terraform. Possono essere definiti in una variabile.File TF e referenziato in altri file Terraform.
10. Cosa fanno le variabili.Il file TF contenga?
Le variabili.Il file TF contiene le definizioni di variabili che possono essere utilizzate nella configurazione Terraform. Le variabili possono avere descrizioni e valori predefiniti e vengono referenziate usando var.Sintassi variabile_name.
11. Can EventBridge integrare con applicazioni basate su SAAS?
Sì, EventBridge può integrarsi con applicazioni basate su SAAS e applicazioni di terze parti.
12. EventBridge Support Invio di eventi ad altri servizi AWS?
Sì, EventBridge può inviare eventi ad altri servizi AWS come le funzioni Lambda e le funzioni di passo.
13. Qual è lo scopo della libreria Faker nel codice funzione Lambda?
La libreria Faker viene utilizzata per generare dati casuali nella funzione Lambda. Può essere utilizzato per creare profili falsi, numeri di telefono, tipi di veicoli e altro ancora.
14. Come si definisce il fornitore di AWS in Terraform?
Il provider AWS è definito nella configurazione Terraform utilizzando il blocco provider. Specifica il provider come “AWS” e include opzioni di configurazione come regione e profilo.
15. Cosa puoi specificare nella sezione Default_tags della configurazione del provider AWS?
Nella sezione Default_tags, è possibile specificare i tag predefiniti da applicare alle risorse AWS create da Terraform. Questo può essere utile per organizzare e gestire le risorse.
CSS-FHXB3M Display-WebKit-Box; display-webkit-flex; Display-MS-Flexbox; Display: Flex-WebKit-Flex-Direction: Row-MS-Flex-Direction: riga; Direzione Flex: ROW-WEBKIT-ALIGN-Item: Center-WebKit-Box-Align: Center-MS-Flex-Align: Centro; ALIGE-ITMS: CENTRO;. CSS-9A49Z0 Margin-Right: 0.5rem; Altezza: 2.5rem; larghezza: 2.5Rem-WebKit-Flex-Shrink: 0-MS-Flex-negativo: 0; Flex-Shrink: 0; Overflow: nascosto; Radius di confine: 9999px; Rahul Lokurte’B Blog
Questa soluzione utilizza la versione Terraform 0.12.16, puoi impostare alias diversi come segue. Terraform userebbe quindi questi provider quando iniziamo a creare i nostri moduli:
Terraform Support Eventbridge
Об этой сттце
Ыы зарегистрировали подозритеstituire. С помощю ээй ст р ы ыы сможем о imperceде quello. Почему ээо мо л поззти?
Эта страница отображается в тех с лччч, когда автоматическиtal систе quisi которые наршают условия иполззования. Страница перестан scegliere. До этого момента для иполззования сжж google необходимо пхоходить поверку по по по по по.
” ылку запросов. Если ы и ипоеете общий доступ в интернет, проmma. Обратитесь к с ое системому администратору. Подробнеi.
Проверка по слову может также появляться, если вы вводите сложные запросы, обычно распространяемые автоматизированными системами, или же вводите запросы очень часто.
Come invocare una funzione AWS Lambda a intervalli programmati con la regola AWS Eventbridge usando Terraform

Amazon Eventbridge è un servizio di bus eventi senza server che è possibile utilizzare per collegare le applicazioni con i dati da una varietà di fonti. Gli eventi sono fondamentali per Eventbridge e gli eventi sono osservabili. Event Bridge supporta anche l’integrazione con molte applicazioni basate su SaaS e applicazioni di terze parti. Supporta anche l’invio di eventi ad altri servizi AWS come le funzioni Lambda, le funzioni di passo.
In questo blog, imposteremo un regola Per eseguire la funzione Lambda in programma ogni 2 minuti utilizzando Terraform.
Struttura del progetto
- Crea una nuova directory e passa alla directory
mkdir lambda-schedule-event-bridge && CD Lambda-Schedule-Event-Bridge Risorse MKDIR Crea un lambda
Crea una cartella Profilo-Generator-Lambda nel risorse cartella e aggiungere il indice.js File con il contenuto seguente. Inoltre, inizializza il progetto del nodo e installa le dipendenze.
MKDIR Profile-Generator-Lambda && CD Profilo-Generator-Lambda Touch Index.JS NPM init -y NPM Installa Faker const faker = richiedere("Faker/locale/en_ind"); esportazioni.gestore = asincrone (evento, contesto) => < permettere FirstName = Faker.nome.nome di battesimo(); permettere LastName = Faker.nome.cognome(); permettere PhoneNumber = Faker.telefono.numero di telefono(); permettere VehicleType = Faker.veicolo.veicolo(); permettere Risposta = < nome di battesimo: nome di battesimo, cognome: cognome, numero di telefono: numero di telefono, tipo di veicolo: VehicleType,>; ritorno < codice status: 200, testate: < "Tipo di contenuto": "Applicazione/JSON", >, corpo: JSON.Stringify (< profilo: risposta,>),>; >; Fornitori di terraform
Ora scriveremo gli script di Terraform in lingua HCL in cui utilizzeremo il provider AWS. Crea un principale.File TF nella directory principale del progetto e aggiungi il contenuto di seguito.
Toccare Main.tf terraform < required_providers < aws = < fonte = "Hashicorp/AWS" versione = "3.50.0 " >>> Provider "AWS" < # Opzioni di configurazione regione = var.Profilo della regione = var.aws_profile shared_credentials_file = var.condiviso_credentials_file default_tags < tags = var.tags >> - Ogni modulo Terraform deve dichiarare quali provider richiede in modo che Terraform possa installarli e usarli. I requisiti del provider sono dichiarati in un blocco _requiredProviders.
- I fornitori di AWS richiedono configurazioni come regioni cloud, profili, credential_files per essere utilizzati prima di poter essere utilizzati.
- Tutti i valori verranno forniti dai parametri delle variabili.
Creiamo variabili.tf Nella directory principale del progetto e aggiungere il contenuto di seguito.
Toccare le variabili.tf variabile "regione" < description = "Regione di distribuzione" default = "AP-South-1" > variabile "AWS_Profile" < description = "Nome dato nel file delle credenziali" tipo = stringa default = "Rahul-Admin" > variabile "shared_credentials_file" < description = "File di profilo con credenziali sull'account AWS" tipo = stringa default = "~/.AWS/Credentials " > variabile "Tag" < description = "Una mappa di tag da aggiungere a tutte le risorse." tipo = mappa (stringa) default = < application = "TUTOR DI APPRENDIMENTO" env = "Test" >> Ogni variabile di input accettata da un modulo deve essere dichiarata utilizzando un blocco variabile. L’etichetta dopo la parola chiave variabile è un nome per la variabile, che deve essere univoca tra tutte le variabili nello stesso modulo.
- Un valore predefinito rende la variabile opzionale.
- Un tipo indica quali tipi di valore sono accettati per la variabile.
- Una descrizione specifica la documentazione della variabile di input.
Moduli Terraform
Ora useremo il modulo Terraform-AWS-Modules/Lambda/AWS per creare infrastrutture a strato Lambda e Lambda.
Crea i file lambda.TF nella directory principale del progetto e aggiungi il contenuto seguente.
Tocca Lambda.tf modulo "Profile_Generator_lambda" < fonte = "Terraform-AWS-Modules/Lambda/AWS" versione = "2.7.0 " # Inserire qui le 28 variabili richieste function_name = "Profilo-Generator-Lambda" Descrizione = "Genera nuovi profili" gestore = "indice.gestore " Runtime = "Nodejs14.X" Source_path = "$ /Risorse /Profilo-Generator-Lambda " tag = < Name = "Profilo-Generator-Lambda" >> Regola di Eventbridge
Crea i file event_bridge.tf Nella directory principale del progetto e aggiungere il contenuto di seguito.
Touch event_bridge.tf risorsa "AWS_CLOUDWATCH_EVENT_RULE" "Profile_Generator_LAMBDA_EVENT_RULE" < name = "Profilo-Generator-Lambda-Event-Rule" Descrizione = "Riprova programmato ogni 2 minuti" programma_expression = "Tasso (2 minuti)" > risorsa "AWS_CLOUDWATCH_EVENT_TARGET" "Profile_Generator_lambda_target" < arn = module.profile_generator_lambda.lambda_function_arn rule = aws_cloudwatch_event_rule.profile_generator_lambda_event_rule.name >risorsa "AWS_LAMBDA_PERMISTION" "Ambullo_Cloudwatch_to_Call_RW_FALFOUT_RETRY_STEP_DETHETION_LAMBDA" < statement_id = "AssedExecutionFromCloudWatch" azione = "Lambda: InvokeFunction" function_name = module.profilo_generator_lambda.lambda_function_name Principal = "Eventi.Amazonaws.com " Source_arn = aws_cloudwatch_event_rule.profili_generator_lambda_event_rule.arn> Come si può vedere sopra, il Programma_espressione L’attributo ha una velocità di 2 minuti. Significa che innesca la funzione Lambda che è nel bersaglio usando la risorsa AWS_CLOUDWATCH_EVENT_TARGET.profili_generator_lambda_target. Diamo anche il permesso di Lambda, in modo che l’evento sia in grado di invocare la funzione.
Esegui script Terraform
Eseguiamo i 3 comandi di base di Terraform per creare le risorse in AWS.
- Inizializza il Terraform che scaricherà tutti i provider e i moduli utilizzati nella configurazione.
Terraform init - Controlla se un piano corrisponde all’aspettativa e memorizza anche il piano in output File Plan-out
Piano Terraform -out "Pianifica" - Una volta verificato il piano, applica le modifiche per ottenere i componenti dell’infrastruttura desiderati.
applicazione di terraform "Pianifica" Verifica l’infrastruttura su AWS
- Lambda con eventi bridge

Se controlli i registri di Cloud Watch, puoi vedere che la funzione Lambda viene invocata ogni 2 minuti.

Elimina le risorse
Possiamo eliminare le risorse create da Terraform emettendo il comando seguente in modo da non essere fatturati per le risorse.
Terraform Distruggi Conclusione
In questo post sul blog, abbiamo visto come creare una funzione Lambda e Event Bridge usando Terraform. Abbiamo anche visto, come programmare la funzione Lambda ogni 2 minuti creando una regola del bus evento.
Hai trovato questo articolo prezioso?
Supporto Rahul Lokurte Diventando sponsor. Qualsiasi importo è apprezzato!
Eventbridge Pipes usando Terraform
In questo post, ti mostrerò come implementare una semplice applicazione basata su eventi utilizzando EventBridge Pipes e Terraform. Al momento della stesura di questo post, le risorse di Eventbridge Pipes non sono disponibili con Terraform Provider AWS, Quindi uso Terraform AWS Cloud Control Provider (AWSCC). Puoi seguire questo collegamento Per saperne di più sui tubi Eventbridge.
Caso d’uso
Permettere’s diciamo che abbiamo un’applicazione che gestisce query da diversi tipi di clienti come Oro, argento e platino. Attualmente, queste domande sono pubblicate su una coda centralizzata SQS ed elaborate da un’applicazione del consumatore.
Ora abbiamo un nuovo requisito che vogliamo filtrare tutte le domande dei clienti Platinum e ritrattarle per includere i dettagli dell’agente dell’assistenza clienti prima di inviarli al servizio del consumatore. (Fare riferimento al diagramma sopra)
Componenti dei tubi Eventbridge
Il seguente diagramma mostra i componenti principali dei tubi Eventbridge che implementeremo in questo esempio.
Fonte
Questo è il punto di partenza dei tubi Eventbridge. Il tubo può ricevere eventi da varie fonti come SQS, DynamoDB ecc. In questo esempio, Pipe riceve eventi da una coda SQS (Richiesta cliente).
risorsa "AWS_SQS_QUEUE" "Customer_Request_SQS" Name = "Customer-Request"
> Filtraggio
Dal momento che dobbiamo filtrare gli eventi dei clienti in platino dagli eventi di origine, possiamo includere il facoltativo “Filtraggio” entrare nel tubo. Puoi utilizzare i modelli di eventi Amazon EventBridge per scrivere criteri di filtraggio. Come puoi vedere nel codice seguente, uso il tipo di cliente campo nel corpo dei messaggi SQS per filtrare gli eventi del cliente platino.
filtri = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]
> Arricchimento
Possiamo utilizzare la fase di arricchimento dei tubi Eventbridge per migliorare i dati dalla fonte prima di inviarli al target. In questo esempio, il passaggio di arricchimento svolge le seguenti attività.
- Trasformare gli eventi prima di inviarli a un obiettivo di arricchimento.
- Includi ulteriori dati nel payload Event utilizzando una funzione Lambda di arricchimento.
Trasforma un evento di input
Di seguito è riportato un evento di esempio della richiesta del cliente. Potete vederlo Data di Creazione il campo ha un formato leggermente diverso e vorremmo trasformarlo come Data di Creazione Prima di inviarlo alla funzione Lambda di arricchimento.
"id": "003",
"Customer_Type": "Platinum",
"Query": "Hai bisogno di supporto tecnico",
"Gravità": "High",
"CreatedDate": "2023–02–25"
> Possiamo usare i tubi Eventbridge Trasformatore di input di arricchimento Per trasformare l’evento come sotto.
"id": "",
"tipo di cliente": "",
"Query": "",
"gravità":"",
"Data di Creazione": ""
> 2. Includi dati aggiuntivi nel payload Event
In questo esempio, vogliamo includere i dettagli dell’agente dell’assistenza clienti nell’evento prima di inviarli al servizio di consumo. Pertanto, dobbiamo rielaborare l’evento e generare un nuovo evento. Per fare ciò, possiamo usare una funzione Lambda come target di arricchimento dei tubi di eventbridge.
Modulo "Enrric_Customer_Request_lambda" Source = "Terraform-Aws-Modules/Lambda/AWS"
function_name = "arricch-customer-request"
Source_path = "$/lambda/arricch-cust-request"
gestore = "indice.gestore "
runtime = "nodejs18.X"
local_existing_package = "$/lambda/arricch-customer-request/indice.cerniera lampo"
create_role = false
lambda_role = aws_iam_role.Enrric_Customer_request_lambda_iam_role.arn
> Arricchment Lambda Handler
Come puoi vedere nel codice seguente, creo un nuovo evento per includere i dettagli dell’agente del cliente e tornare al tubo. Quindi il tubo invierà eventi arricchiti alla funzione Lambda target.
Export const Handler = async (event) => console.log ("Eventi del cliente in platino filtrati: %O", evento);
const archedevents = []
if (evento && evento.lunghezza> 0) Evento.foreach (eventbj => let updatevent = . EventObj,
. Agent_id: "0001",
Agent_name: "Mark John",
Agent_Email: "[email protected] "
>
>
arricchitevent.push (updatevent);
>);
>
restituire arricchitevents;
>; Bersaglio
Questo è il passaggio finale dei tubi Eventbridge che elabora i dati provenienti dalla fase di arricchimento. In questo esempio, utilizziamo una funzione Lambda come il Bersaglio.
Modulo "Process_Customer_Request_lambda" sorgente = "Terraform-Aws-Modules/Lambda/AWS"
function_name = "process-customer-request"
Source_path = "$/lambda/process-customer-request"
gestore = "indice.gestore "
runtime = "nodejs18.X"
local_existing_package = "$/lambda/process-clienti-request/indice.cerniera lampo"
create_role = false
lambda_role = aws_iam_role.Process_customer_request_lambda_iam_role.arn
> Handler Lambda bersaglio
Export const Handler = async (event) => console.log ("Eventi del cliente in platino arricchito: %O", evento);
if (evento && evento.lunghezza> 0) Evento.foreach (eventbject => console.Log (eventObject)
>);
>
evento di ritorno;
>; Combinato tutti i passaggi
Di seguito è il awscc_pipes_pipe risorsa che crea i tubi eventbridge con tutti i passaggi che abbiamo discusso prima. Puoi scaricare il codice sorgente completo da questo collegamento.
risorsa "AWSCC_PIPES_PIPE" "Name" Name = "Pipe-Customer-Request"
Role_arn = aws_iam_role.pipe_iam_role.arn
Source = AWS_SQS_QUEUE.customer_request_sqs.arn
Source_parameters = sqs = sqs_queue_parameters = batch_size = 10
>
>
Filter_Criteria = Filters = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]
>
>
arricchimento = modulo.Enrric_Customer_request_lambda.lambda_function_arn
arricchimento_parameters = input_template = "\", \ "customer_type \": \ "\", \ "query \": \ "\", \ "severità \": \ "\", \ "creato_date \": \ "\"> "
>
Target = Modulo.Process_customer_request_lambda.lambda_function_arn
> Test
Trova il file di esempio richiesta del cliente.JSON nel codice sorgente ed eseguire il comando seguente. Pubblicherà cinque richieste dei clienti a SQS (2 richieste di platino, 1 oro e 2 argento).
AWS SQS Send-Message-Batch \
--coda-url https: // sqs.US-East-1.Amazonaws.com // cliente-request \
--regione US-East-1 \
--File di voci: // Customer-Request.JSON Arricchimento dei registri delle funzioni lambda
Il seguente evento di registro mostra l’evento trasformato che EventBridge Pipes ha inviato alla funzione Lambda di arricchimento.
Target Lambda Function Logs
Il seguente evento di registro mostra l’evento arricchito che proveniva dal Arricchimento fare un passo.
Alcuni punti importanti
- Se stai usando AWS KMS Custom Encryption Key (CMK) per crittografare la fonte, è necessario dare esplicitamente “KMS: Decrypt” autorizzazione al tubo’Suolo di esecuzione.
- Se hai riscontrato un errore come sotto. Si prega di eliminare il tubo e ripetere il “applicazione di terraform”. Questo è un problema noto con il risorsa AWSCC_PIPE.
NosuchPath in sorgente, percorso fornito: // SourceParameters/FilterCriteria/Filters/0/Pattern Riferimenti
AWS Eventbus con Terraform
Una semplice guida su come distribuire un evento CloudWatch con Terraform. Se controlli la documentazione ufficiale di Terraform, lo noterai’s abbastanza leggero e tu’Probabilmente avrà bisogno di una guida a questo punto.
Tengo anche il mio blog aggiornato con nuovi articoli con la mia società di consulenza, puoi controllare su https: // cdcloudlogix.com/blog per ulteriori informazioni 🙂
Questa soluzione richiederebbe la necessità di creare un ruolo IAM per consentire all’evento CloudWatch Putsevents nel tuo account AWS remoto.
1. Fornitori di terraform
Questa soluzione utilizza la versione Terraform 0.12.16, puoi impostare alias diversi come segue. Terraform userebbe quindi questi provider quando iniziamo a creare i nostri moduli:
Puoi trovare tutta questa configurazione nel seguente repository GitHub, per qualsiasi domanda, fatemi sapere ��.
