Pour commencer : créer une règle de bus EventBridge d'événements Amazon - Amazon EventBridge

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour commencer : créer une règle de bus EventBridge d'événements Amazon

Pour nous familiariser avec EventBridge les règles et leurs fonctionnalités, nous allons utiliser un AWS CloudFormation modèle pour configurer une règle de bus d'événements et les composants associés, notamment une source d'événement, un modèle d'événement et une cible. Nous pourrons ensuite explorer le fonctionnement des règles pour sélectionner les événements que vous souhaitez.

Le modèle crée une règle sur le bus d'événements par défaut. Cette règle utilise un modèle d'événement pour filtrer les événements provenant d'un compartiment Amazon S3 spécifique. La règle envoie les événements correspondants à la cible spécifiée, à savoir une rubrique Amazon SNS. Chaque fois qu'un objet est créé dans le bucket, la règle envoie une notification au sujet, qui envoie ensuite un e-mail à l'adresse e-mail que vous avez spécifiée.

Les ressources déployées sont les suivantes :

  • Un compartiment Amazon S3 dans lequel les EventBridge notifications sont activées pour servir de source d'événements.

  • Une rubrique Amazon SNS et un abonnement par e-mail comme cible pour les notifications.

  • Rôle d'exécution qui accorde EventBridge les autorisations nécessaires pour publier sur la rubrique Amazon SNS.

  • La règle elle-même, qui :

    • Définit un modèle d'événement qui correspond uniquement aux Object Created événements du compartiment Amazon S3 spécifique.

    • Spécifie la rubrique Amazon SNS en tant que cible destinée à diffuser les événements EventBridge correspondants.

Pour obtenir des informations techniques spécifiques sur le modèle, consultezDétails du modèle.

Les événements Amazon S3 sont mis en correspondance avec le modèle d'événement de la règle et envoyés à une rubrique SNS s'ils correspondent.

Avant de commencer

Pour recevoir des événements Amazon S3 EventBridge, vous devez les activer EventBridge dans Amazon S3. Cette rubrique suppose que EventBridge c'est activé. Pour plus d'informations, consultez la section Activation EventBridge dans le guide de l'utilisateur Amazon S3.

Création de la règle à l'aide de CloudFormation

Pour créer la règle et ses ressources associées, nous allons créer un CloudFormation modèle et l'utiliser pour créer une pile contenant un exemple de règle, avec la source et la cible.

Important

Les ressources Amazon utilisées vous seront facturées si vous créez une pile à partir de ce modèle.

Créez d'abord le CloudFormation modèle.

  1. Dans la Modèle section, cliquez sur l'icône de copie dans l'onglet JSON ou YAML pour copier le contenu du modèle.

  2. Collez le contenu du modèle dans un nouveau fichier.

  3. Enregistrez le fichier au niveau local.

Ensuite, utilisez le modèle que vous avez enregistré pour approvisionner une CloudFormation pile.

Créez la pile à l'aide de CloudFormation (console)
  1. Ouvrez la CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation/.

  2. Sur la page Stacks, dans le menu Créer une pile, choisissez avec de nouvelles ressources (standard).

  3. Spécifiez le modèle :

    1. Sous Prérequis, choisissez Choisir un modèle existant.

    2. Sous Spécifier le modèle, choisissez Télécharger un fichier modèle.

    3. Choisissez Choisir un fichier, naviguez jusqu'au fichier modèle, puis choisissez-le.

    4. Choisissez Suivant.

  4. Spécifiez les détails de la pile :

    1. Entrez le nom de la pile.

    2. Pour les paramètres, acceptez les valeurs par défaut pour BucketNameSNSTopicDisplayName,, SNSTopicNom et RuleName, ou entrez les vôtres.

    3. Pour EmailAddress, entrez une adresse e-mail valide à laquelle vous souhaitez recevoir des notifications.

    4. Choisissez Suivant.

  5. Configurez les options de pile :

    1. Sous Options d'échec de la pile, choisissez Supprimer toutes les ressources nouvellement créées.

      Note

      Le choix de cette option vous évite d'être facturé pour des ressources dont la politique de suppression indique qu'elles doivent être conservées même en cas d'échec de la création de la pile. Pour plus d'informations, consultez la section DeletionPolicyattribut dans le guide de CloudFormation l'utilisateur.

    2. Acceptez toutes les autres valeurs par défaut.

    3. Sous Fonctionnalités, cochez la case pour confirmer que des ressources IAM CloudFormation peuvent être créées dans votre compte.

    4. Choisissez Suivant.

  6. Vérifiez les détails de la pile et choisissez Soumettre.

Créez la pile en utilisant CloudFormation (AWS CLI)

Vous pouvez également utiliser le AWS CLI pour créer la pile.

  • Utilisez la commande create-stack.

    • Acceptez les valeurs des paramètres du modèle par défaut, en spécifiant le nom de la pile et votre adresse e-mail. Utilisez le template-body paramètre pour transmettre le contenu du modèle ou template-url pour spécifier l'emplacement de l'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
    • Remplacez la ou les valeurs par défaut d'un ou de plusieurs paramètres du modèle. Par exemple :

      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 crée la pile. Une fois la création de la pile terminée, les ressources de la pile sont prêtes à être utilisées. Vous pouvez utiliser l'onglet Ressources de la page détaillée de la pile pour afficher les ressources mises en service dans votre compte.

Une fois la pile créée, vous recevrez un e-mail de confirmation d'abonnement à l'adresse que vous avez fournie. Vous devez confirmer cet abonnement pour recevoir des notifications.

Exploration des fonctionnalités des règles

Une fois la règle créée, vous pouvez utiliser la EventBridge console pour observer le fonctionnement de la règle et tester la livraison des événements.

  1. Vous voulez ouvrir la EventBridge console à la https://console.aws.amazon.com/events/maison ? #/règles.

  2. Choisissez la règle que vous avez créée.

    Sur la page détaillée de la règle, la section Détails de la règle affiche des informations sur la règle, notamment son modèle d'événements et ses cibles.

Examen du schéma des événements

Avant de tester le fonctionnement de la règle, examinons le modèle d'événements que nous avons spécifié pour contrôler les événements envoyés à la cible. La règle n'enverra à la cible que les événements correspondant aux critères du modèle. Dans ce cas, nous voulons uniquement l'événement généré par Amazon S3 lorsqu'un objet est créé dans notre compartiment spécifique.

  • Sur la page détaillée de la règle, sous Modèle d'événement, vous pouvez voir que le modèle d'événement sélectionne uniquement les événements où :

    • La source est le service Amazon S3 (aws.s3)

    • Le type de détail est Object Created

    • Le nom du bucket correspond au nom du bucket que nous avons créé

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

Envoi d'événements par le biais de la règle

Nous allons ensuite générer des événements dans la source d'événements pour vérifier que la correspondance des règles et la diffusion fonctionnent correctement. Pour ce faire, nous allons télécharger un objet dans le compartiment S3 que nous avons spécifié comme source d'événement.

  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste des compartiments, choisissez le compartiment que vous avez créé avec le modèle (nom par défaut :eventbridge-rule-example-source).

  3. Choisissez Charger.

  4. Téléchargez un fichier de test pour générer un Object Created événement :

    1. Choisissez Ajouter des fichiers et sélectionnez un fichier sur votre ordinateur.

    2. Choisissez Charger.

  5. Patientez quelques instants pour que l'événement soit traité EventBridge et que la notification soit envoyée.

  6. Consultez vos e-mails pour recevoir une notification concernant l'événement de création de l'objet. L'e-mail contiendra des détails sur l'événement S3, notamment le nom du compartiment et la clé de l'objet.

Afficher les métriques des règles

Vous pouvez consulter les statistiques relatives à votre règle afin de confirmer que les événements sont traités correctement.

  1. Dans la EventBridge console, choisissez votre règle.

  2. Sélectionnez l’onglet Métriques.

  3. Vous pouvez consulter des statistiques telles que :

    • Invocations : le nombre de fois où la règle a été déclenchée.

    • TriggeredRules: le nombre de règles déclenchées par des événements correspondants.

Nettoyage : suppression de ressources

Enfin, nous supprimerons la pile et les ressources qu'elle contient.

Important

Les ressources Amazon contenues dans la pile vous seront facturées tant qu'elle existera.

  1. Ouvrez la CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation/.

  2. Sur la page Stacks, choisissez la pile créée à partir du modèle, choisissez Supprimer, puis confirmez Supprimer.

    CloudFormation initie la suppression de la pile et de toutes les ressources qu'elle contient.

CloudFormation détails du modèle

Ce modèle crée des ressources et accorde des autorisations sur votre compte.

Ressources

Le CloudFormation modèle de ce didacticiel créera les ressources suivantes dans votre compte :

Important

Les ressources Amazon utilisées vous seront facturées si vous créez une pile à partir de ce modèle.

  • AWS::S3::Bucket: un compartiment Amazon S3 qui agit comme source d'événements pour la règle, avec EventBridge les notifications activées.

  • AWS::SNS::Topic: rubrique Amazon SNS qui sert de cible aux événements correspondant à la règle.

  • AWS::SNS::Subscription: un abonnement par e-mail à la rubrique SNS.

  • AWS::IAM::Role: rôle d'exécution IAM octroyant des autorisations au EventBridge service dans votre compte.

  • AWS::Events::Rule: règle reliant les événements du compartiment Amazon S3 à la rubrique Amazon SNS.

Autorisations

Le modèle inclut une AWS::IAM::Role ressource qui représente un rôle d'exécution. Ce rôle accorde au EventBridge service (events.amazonaws.com) les autorisations suivantes sur votre compte.

Les autorisations suivantes sont accordées par le biais de la politique gérée AmazonSNSFullAccess :

  • Accès complet aux ressources et aux opérations d'Amazon SNS

CloudFormation modèle

Enregistrez le code YAML suivant dans un fichier distinct à utiliser comme CloudFormation modèle pour ce didacticiel.

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" } } } }