Invio di eventi ad Amazon CloudWatch Events - AWS SDK for JavaScript

Abbiamo annunciato l'imminente uscita end-of-support per la AWS SDK for JavaScript v2. Ti consigliamo di migrare alla AWS SDK for JavaScript v3. Per date, dettagli aggiuntivi e informazioni su come effettuare la migrazione, consulta l'annuncio collegato.

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à.

Invio di eventi ad Amazon CloudWatch Events

JavaScript code example that applies to Node.js execution

Questo esempio di codice di Node.js illustra:

  • Come creare e aggiornare una regola utilizzata per attivare un evento.

  • Come definire uno o più target per rispondere a un evento.

  • Come inviare eventi che corrispondono ai target per la gestione.

Lo scenario

CloudWatch Events fornisce un flusso quasi in tempo reale di eventi di sistema che descrivono le modifiche nelle risorse di Amazon Web Services a qualsiasi destinazione. Utilizzando semplici regole, puoi abbinare gli eventi e instradarli verso una o più funzioni o flussi target.

In questo esempio, una serie di moduli Node.js vengono utilizzati per inviare CloudWatch eventi a Events. I moduli Node.js utilizzano l'SDK per JavaScript gestire le istanze utilizzando questi metodi della classe CloudWatchEvents client:

Per ulteriori informazioni sugli CloudWatch eventi, consulta Adding Events with PutEvents nella Amazon CloudWatch Events User Guide.

Attività prerequisite

Per configurare ed eseguire questo esempio, è necessario completare queste attività:

Utilizzare la seguente policy di ruolo quando si crea un ruolo IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ] }

Utilizzare la seguente relazione di trust quando si crea un ruolo IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Creazione di una regola pianificata

Crea un modulo Node.js con il nome del file cwe_putrule.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Per accedere agli CloudWatch eventi, crea un oggetto di AWS.CloudWatchEvents servizio. Crea un oggetto JSON che contiene i parametri necessari per specificare la nuova regola pianificata, che includano i seguenti elementi:

  • Un nome per la regola

  • L'ARN del ruolo IAM creato in precedenza

  • Un'espressione per pianificare l'attivazione della regola ogni cinque minuti

Chiama il metodo putRule per creare la regola. La richiamata restituirà l'ARN della regola nuova o aggiornata.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Name: "DEMO_EVENT", RoleArn: "IAM_ROLE_ARN", ScheduleExpression: "rate(5 minutes)", State: "ENABLED", }; cwevents.putRule(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.RuleArn); } });

Digita la seguente riga di comando per eseguire l'esempio.

node cwe_putrule.js

Questo codice di esempio può essere trovato qui. GitHub

Aggiungere un obiettivo di AWS Lambda funzione

Crea un modulo Node.js con il nome del file cwe_puttargets.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Per accedere CloudWatch agli eventi, create un oggetto AWS.CloudWatchEvents di servizio. Crea un oggetto JSON contenente i parametri necessari per specificare la regola a cui desideri collegare il target, incluso l'ARN della funzione Lambda che hai creato. Chiama il metodo putTargets dell'oggetto di servizio AWS.CloudWatchEvents.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Rule: "DEMO_EVENT", Targets: [ { Arn: "LAMBDA_FUNCTION_ARN", Id: "myCloudWatchEventsTarget", }, ], }; cwevents.putTargets(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

Digita la seguente riga di comando per eseguire l'esempio.

node cwe_puttargets.js

Questo codice di esempio può essere trovato qui. GitHub

Invio di eventi

Crea un modulo Node.js con il nome del file cwe_putevents.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Per accedere CloudWatch agli eventi, crea un oggetto AWS.CloudWatchEvents di servizio. Crea un oggetto JSON che contiene i parametri necessari per l'invio di eventi. Per ogni evento, includi l'origine dell'evento, le ARN delle risorse interessate dall'evento e i dettagli dell'evento. Chiama il metodo putEvents dell'oggetto di servizio AWS.CloudWatchEvents.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Entries: [ { Detail: '{ "key1": "value1", "key2": "value2" }', DetailType: "appRequestSubmitted", Resources: ["RESOURCE_ARN"], Source: "com.company.app", }, ], }; cwevents.putEvents(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Entries); } });

Digita la seguente riga di comando per eseguire l'esempio.

node cwe_putevents.js

Questo codice di esempio può essere trovato qui GitHub.