Guida introduttiva: crea una regola Amazon EventBridge Event Bus - Amazon EventBridge

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

Guida introduttiva: crea una regola Amazon EventBridge Event Bus

Per acquisire familiarità con EventBridge le regole e le relative funzionalità, utilizzeremo un AWS CloudFormation modello per configurare una regola del bus degli eventi e i componenti associati, tra cui un'origine dell'evento, un modello di evento e una destinazione. Poi potremo scoprire come funzionano le regole per selezionare gli eventi che desideri.

Il modello crea una regola sul bus degli eventi predefinito. Questa regola utilizza un modello di eventi per filtrare gli eventi da uno specifico bucket Amazon S3. La regola invia gli eventi corrispondenti alla destinazione specificata, un argomento di Amazon SNS. Ogni volta che un oggetto viene creato nel bucket, la regola invia una notifica all'argomento, che quindi invia un'e-mail all'indirizzo e-mail specificato.

Le risorse distribuite sono costituite da:

  • Un bucket Amazon S3 con EventBridge notifiche abilitate a fungere da origine dell'evento.

  • Un argomento Amazon SNS e un abbonamento e-mail come destinazione per le notifiche.

  • Un ruolo di esecuzione che concede EventBridge le autorizzazioni necessarie per la pubblicazione sull'argomento Amazon SNS.

  • La regola stessa, che:

    • Definisce un pattern di eventi che corrisponde solo Object Created agli eventi dello specifico bucket Amazon S3.

    • Specifica l'argomento Amazon SNS come destinazione a EventBridge cui fornire eventi corrispondenti.

Per dettagli tecnici specifici del modello, consulta. dettagli del modello

Gli eventi di Amazon S3 vengono abbinati allo schema di eventi della regola e, se corrispondono, vengono inviati a un argomento SNS.

Prima di iniziare

Per ricevere eventi Amazon S3 in EventBridge, devi abilitarli EventBridge all'interno di Amazon S3. Questo argomento presuppone che sia abilitato. EventBridge Per ulteriori informazioni, consulta Enabling EventBridge in the Amazon S3 User Guide.

Creazione della regola utilizzando CloudFormation

Per creare la regola e le risorse associate, creeremo un CloudFormation modello e lo useremo per creare uno stack contenente una regola di esempio, completa di origine e destinazione.

Importante

Se crei uno stack da questo modello, ti verranno addebitate le risorse Amazon utilizzate.

Per prima cosa, crea il CloudFormation modello.

  1. Nella Modello sezione, fai clic sull'icona di copia nella scheda JSON o YAML per copiare il contenuto del modello.

  2. Incolla il contenuto del modello in un nuovo file.

  3. Salva il file localmente.

Quindi, usa il modello che hai salvato per effettuare il provisioning di uno CloudFormation stack.

Crea lo stack usando CloudFormation (console)
  1. Apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

  2. Nella pagina Stacks, dal menu Crea stack, scegli con nuove risorse (standard).

  3. Specificate il modello:

    1. In Prerequisito, scegli Scegli un modello esistente.

    2. In Specificare il modello, scegli Carica un file modello.

    3. Scegli il file, vai al file modello e selezionalo.

    4. Scegli Next (Successivo).

  4. Specificate i dettagli dello stack:

    1. Inserisci un nome per lo stack.

    2. Per i parametri, accettate i valori predefiniti per BucketNameSNSTopicDisplayName,, SNSTopicName e RuleName, oppure inserite i vostri.

    3. Per EmailAddress, inserisci un indirizzo email valido a cui desideri ricevere le notifiche.

    4. Scegli Next (Successivo).

  5. Configura le opzioni dello stack:

    1. In Opzioni di errore dello stack, scegli Elimina tutte le risorse appena create.

      Nota

      La scelta di questa opzione evita che ti vengano addebitate le risorse la cui politica di eliminazione specifica che tali risorse vengano mantenute anche se la creazione dello stack fallisce. Per ulteriori informazioni, consulta l'DeletionPolicyattributo nella Guida per l'utente. CloudFormation

    2. Accetta tutti gli altri valori predefiniti.

    3. In Capacità, seleziona la casella per confermare che CloudFormation potresti creare risorse IAM nel tuo account.

    4. Scegli Next (Successivo).

  6. Controlla i dettagli dello stack e scegli Invia.

Crea lo stack usando CloudFormation ()AWS CLI

Puoi anche usare il AWS CLI per creare lo stack.

  • Utilizza il comando create-stack.

    • Accetta i valori dei parametri predefiniti del modello, specificando il nome dello stack e il tuo indirizzo email. Utilizzate il template-body parametro per passare il contenuto del modello o template-url per specificare una posizione URL.

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ --template-body template-contents \ --parameters ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ --capabilities CAPABILITY_IAM
    • Sostituisci i valori predefiniti di uno o più parametri del modello. Per esempio:

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ ----template-body template-contents \ --parameters \ ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ ParameterKey=BucketName,ParameterValue=my-custom-bucket-name \ ParameterKey=RuleName,ParameterValue=my-custom-rule-name \ --capabilities CAPABILITY_IAM

CloudFormation crea lo stack. Una volta completata la creazione dello stack, le risorse dello stack sono pronte per l'uso. Puoi utilizzare la scheda Risorse nella pagina dei dettagli dello stack per visualizzare le risorse che sono state fornite nel tuo account.

Dopo aver creato lo stack, riceverai un'email di conferma dell'iscrizione all'indirizzo che hai fornito. È necessario confermare l'iscrizione per ricevere le notifiche.

Esplorazione delle funzionalità delle regole

Una volta creata la regola, puoi utilizzare la EventBridge console per osservare il funzionamento delle regole e testare la consegna degli eventi.

  1. Aprire la EventBridge console a https://console.aws.amazon.com/events/casa? #/regole.

  2. Scegli la regola che hai creato.

    Nella pagina dei dettagli della regola, la sezione Dettagli della regola mostra le informazioni sulla regola, inclusi lo schema e gli obiettivi degli eventi.

Esame dello schema degli eventi

Prima di testare il funzionamento della regola, esaminiamo il modello di eventi che abbiamo specificato per controllare quali eventi vengono inviati alla destinazione. La regola invierà all'obiettivo solo gli eventi che corrispondono ai criteri del pattern. In questo caso, vogliamo solo l'evento che Amazon S3 genera quando un oggetto viene creato nel nostro bucket specifico.

  • Nella pagina dei dettagli della regola, in Schema di evento, puoi vedere che il modello di evento seleziona solo gli eventi in cui:

    • La fonte è il servizio Amazon S3 () aws.s3

    • Il tipo di dettaglio è Object Created

    • Il nome del bucket corrisponde al nome del bucket che abbiamo creato

    { "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "bucket": { "name": ["eventbridge-rule-example-source"] } } }

Invio di eventi tramite la regola

Successivamente, genereremo eventi nell'origine dell'evento per verificare che la corrispondenza e la consegna delle regole funzionino correttamente. Per fare ciò, caricheremo un oggetto nel bucket S3 che abbiamo specificato come origine dell'evento.

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nell'elenco dei bucket, scegli il bucket che hai creato con il modello (nome predefinito:). eventbridge-rule-example-source

  3. Scegli Carica.

  4. Carica un file di test per generare un Object Created evento:

    1. Scegli Aggiungi file e seleziona un file dal tuo computer.

    2. Scegli Carica.

  5. Attendi qualche istante che l'evento venga elaborato EventBridge e che la notifica venga inviata.

  6. Controlla la tua e-mail per una notifica sull'evento di creazione dell'oggetto. L'e-mail conterrà dettagli sull'evento S3, incluso il nome del bucket e la chiave dell'oggetto.

Visualizzazione delle metriche delle regole

Puoi visualizzare le metriche della tua regola per confermare che gli eventi vengano elaborati correttamente.

  1. Nella EventBridge console, scegli la tua regola.

  2. Seleziona la scheda Parametri.

  3. Puoi visualizzare metriche come:

    • Invocazioni: il numero di volte in cui la regola è stata attivata.

    • TriggeredRules: il numero di regole che sono state attivate dagli eventi corrispondenti.

Pulizia: eliminazione delle risorse

Come passaggio finale, elimineremo lo stack e le risorse in esso contenute.

Importante

Ti verranno addebitate le risorse Amazon contenute nello stack per tutto il tempo in cui esiste.

  1. Apri la CloudFormation console all'indirizzo. https://console.aws.amazon.com/cloudformation/

  2. Nella pagina Pile, scegli lo stack creato dal modello, quindi scegli Elimina, quindi conferma Elimina.

    CloudFormation avvia l'eliminazione dello stack e di tutte le risorse che include.

CloudFormation dettagli del modello

Questo modello crea risorse e concede autorizzazioni nel tuo account.

Risorse

Il CloudFormation modello di questo tutorial creerà le seguenti risorse nel tuo account:

Importante

Se crei uno stack da questo modello, ti verranno addebitate le risorse Amazon utilizzate.

  • AWS::S3::Bucket: un bucket Amazon S3 che funge da origine degli eventi per la regola, con EventBridge le notifiche abilitate.

  • AWS::SNS::Topic: un argomento di Amazon SNS che funge da destinazione per gli eventi corrispondenti alla regola.

  • AWS::SNS::Subscription: Un abbonamento e-mail all'argomento SNS.

  • AWS::IAM::Role: un ruolo di esecuzione IAM che concede le autorizzazioni al EventBridge servizio del tuo account.

  • AWS::Events::Rule: La regola che collega gli eventi del bucket Amazon S3 all'argomento Amazon SNS.

Autorizzazioni

Il modello include una AWS::IAM::Role risorsa che rappresenta un ruolo di esecuzione. Questo ruolo concede al EventBridge servizio (events.amazonaws.com) le seguenti autorizzazioni nel tuo account.

Le seguenti autorizzazioni vengono concesse tramite la politica gestita: AmazonSNSFullAccess

  • Accesso completo alle risorse e alle operazioni di Amazon SNS

CloudFormation modello

Salva il seguente codice YAML come file separato da utilizzare come CloudFormation modello per questo tutorial.

YAML
AWSTemplateFormatVersion: '2010-09-09' Description: '[AWSDocs] EventBridge: event-bus-rule-get-started' Parameters: BucketName: Type: String Description: Name of the S3 bucket Default: eventbridge-rule-example-source SNSTopicDisplayName: Type: String Description: Display name for the SNS topic Default: eventbridge-rule-example-target SNSTopicName: Type: String Description: Name for the SNS topic Default: eventbridge-rule-example-target RuleName: Type: String Description: Name for the EventBridge rule Default: eventbridge-rule-example EmailAddress: Type: String Description: Email address to receive notifications AllowedPattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$' Resources: # S3 Bucket with notifications enabled S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketName NotificationConfiguration: EventBridgeConfiguration: EventBridgeEnabled: true # SNS Topic for email notifications SNSTopic: Type: AWS::SNS::Topic Properties: DisplayName: !Ref SNSTopicDisplayName TopicName: !Ref SNSTopicName # SNS Subscription for email SNSSubscription: Type: AWS::SNS::Subscription Properties: Protocol: email Endpoint: !Ref EmailAddress TopicArn: !Ref SNSTopic # EventBridge Rule to match S3 object creation events and send them to the SNS topic EventBridgeRule: Type: AWS::Events::Rule Properties: Name: !Ref RuleName Description: "Rule to detect S3 object creation and send email notification" EventPattern: source: - aws.s3 detail-type: - "Object Created" detail: bucket: name: - !Ref BucketName State: ENABLED Targets: - Id: SendToSNS Arn: !Ref SNSTopic RoleArn: !GetAtt EventBridgeRole.Arn # IAM Role for EventBridge to publish to SNS EventBridgeRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: events.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonSNSFullAccess Outputs: BucketName: Description: Name of the S3 bucket Value: !Ref S3Bucket SNSTopicARN: Description: ARN of the SNS topic Value: !Ref SNSTopic EmailSubscription: Description: Email address for notifications Value: !Ref EmailAddress
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "[AWSDocs] EventBridge: event-bus-rule-get-started", "Parameters": { "BucketName": { "Type": "String", "Description": "Name of the S3 bucket", "Default": "eventbridge-rule-example-source" }, "SNSTopicDisplayName": { "Type": "String", "Description": "Display name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "SNSTopicName": { "Type": "String", "Description": "Name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "RuleName": { "Type": "String", "Description": "Name for the EventBridge rule", "Default": "eventbridge-rule-example" }, "EmailAddress": { "Type": "String", "Description": "Email address to receive notifications", "AllowedPattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$" } }, "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": { "Ref": "BucketName" }, "NotificationConfiguration": { "EventBridgeConfiguration": { "EventBridgeEnabled": true } } } }, "SNSTopic": { "Type": "AWS::SNS::Topic", "Properties": { "DisplayName": { "Ref": "SNSTopicDisplayName" }, "TopicName": { "Ref": "SNSTopicName" } } }, "SNSSubscription": { "Type": "AWS::SNS::Subscription", "Properties": { "Protocol": "email", "Endpoint": { "Ref": "EmailAddress" }, "TopicArn": { "Ref": "SNSTopic" } } }, "EventBridgeRule": { "Type": "AWS::Events::Rule", "Properties": { "Name": { "Ref": "RuleName" }, "Description": "Rule to detect S3 object creation and send email notification", "EventPattern": { "source": [ "aws.s3" ], "detail-type": [ "Object Created" ], "detail": { "bucket": { "name": [ { "Ref": "BucketName" } ] } } }, "State": "ENABLED", "Targets": [ { "Id": "SendToSNS", "Arn": { "Ref": "SNSTopic" }, "RoleArn": { "Fn::GetAtt": [ "EventBridgeRole", "Arn" ] } } ] } }, "EventBridgeRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/AmazonSNSFullAccess" ] } } }, "Outputs": { "BucketName": { "Description": "Name of the S3 bucket", "Value": { "Ref": "S3Bucket" } }, "SNSTopicARN": { "Description": "ARN of the SNS topic", "Value": { "Ref": "SNSTopic" } }, "EmailSubscription": { "Description": "Email address for notifications", "Value": { "Ref": "EmailAddress" } } } }