New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Comment puis-je créer un modèle d'événement personnalisé pour une règle EventBridge ?
Je souhaite capturer des événements pour les services AWS à l'aide d'une règle Amazon EventBridge. Cependant, je ne parviens pas à créer un modèle d'événement personnalisé qui corresponde à l'événement.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
EventBridge accepte les événements des services AWS, des partenaires EventBridge et les événements personnalisés. Cet article traite des événements JSON qui proviennent des services AWS. Vous pouvez créer des règles EventBridge avec des modèles d'événements pour filtrer les événements entrants. De cette façon, la règle EventBridge associe uniquement les événements souhaités et transmet ces événements aux cibles.
Déterminer le format JSON de l'événement entrant
Trois méthodes sont utilisées pour déterminer le format JSON d'un événement entrant :
Consultez cette liste d'exemples d'événements provenant des services AWS qu'EventBridge reçoit.
EventBridge fournit l'outil Environnement de test EventBridge pour aider les utilisateurs à créer et à valider des modèles d'événements. Par exemple, pour créer un événement de changement d'état de l'instance EC2, procédez comme suit :
- Ouvrez la console EventBridge.
- Dans le volet de navigation, développez Ressources pour développeurs, puis sélectionnez Environnement de test.
- Dans l'onglet Modèle d'événement, dans la section Exemple d'événement, sélectionnez Événements AWS.
- Dans le champ Exemples d'événements, sélectionnez Notification de changement d'état de l'instance EC2. Cela permet de remplir la fenêtre avec le premier exemple d'événement. Pour un type d'événement donné, plusieurs exemples peuvent être disponibles.
- Dans la section Méthode de création, choisissez de tester le modèle d'événement.
- Créez une règle EventBridge avec un modèle d'événement simple qui correspond à tous les événements d'un service AWS donné. Par exemple, ce modèle d'événement correspond à tous les événements Amazon Elastic Compute Cloud (Amazon EC2) :
Remarque : Les événements vides ne sont pas autorisés dans le modèle d'événement.<{ "source": [ "aws.ec2" ] }
Puis, associez une cible SNS ou un groupe de journaux CloudWatch à la règle pour capturer les événements entrants. La cible doit avoir l’option Configurer l'entrée cible définie sur Événements correspondants afin que le fichier JSON émis par le service soit reçu correctement.
Créer un modèle d'événement dans le même format JSON que l'événement entrant
Prérequis :
- Tous les champs que vous ne spécifiez pas dans votre modèle d'événement sont automatiquement mis en correspondance. Par exemple, si Détail n'est pas spécifié dans le modèle d'événement, celui-ci correspond à chaque événement avec n'importe quel détail.
- Pour faire correspondre les champs situés un niveau plus bas dans la structure JSON, utilisez des crochets { }. Une visionneuse JSON peut être utile si vous envisagez de plus grandes structures d'événement.
- La chaîne à associer à partir de l'événement JSON doit être insérée entre crochets []. Vous pouvez inclure plusieurs valeurs entre crochets afin que l'événement soit invoqué lorsque l'une des valeurs est présente dans un événement entrant. Par exemple, pour invoquer un événement en fonction de chaque événement envoyé par Amazon EC2 ou Amazon DynamoDB, utilisez la commande suivante :
{ "source": [ "aws.ec2", "aws.dynamodb" ] }
**Utiliser la cible SNS ou CloudWatch pour obtenir l'événement entrant **
Cet exemple montre un événement Route 53 émis vers EventBridge. L'appel d'API ChangeResourceRecordSets représente la création d'un enregistrement A dans une zone hébergée Amazon Route 53. Une rubrique Amazon Simple Notification Service (Amazon SNS) ou une cible Groupe de journaux Amazon CloudWatch capture l'événement suivant :
{ "version": "0", "id": "d857ae5c-cc83-3742-ab88-d825311ee4e9", "detail-type": "AWS API Call via CloudTrail", "source": "aws.route53", "account": "123456789012", "time": "2019-12-05T16:50:53Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAABCDEFGHIJKLMNOPQ:Admin", "arn": "arn:aws:sts::123456789012:assumed-role/Admin", "accountId": "123456789012", "accessKeyId": "ASIAABCDEFGH12345678", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAABCDEFGHIJKLMNOPQ", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-12-05T16:28:27Z" } } }, "eventTime": "2019-12-05T16:50:53Z", "eventSource": "route53.amazonaws.com", "eventName": "ChangeResourceRecordSets", "awsRegion": "us-east-1", "sourceIPAddress": "12.34.56.78", "userAgent": "console.amazonaws.com", "requestParameters": { "hostedZoneId": "Z1RP12345WXRQD", "changeBatch": { "changes": [ { "action": "CREATE", "resourceRecordSet": { "type": "A", "tTL": 300, "resourceRecords": [ { "value": "4.4.4.4" } ], "name": "test.example.us." } } ] } }, "responseElements": { "changeInfo": { "status": "PENDING", "id": "/change/C271P4WIKN511J", "submittedAt": "Dec 5, 2019 4:50:53 PM" } }, "additionalEventData": { "Note": "Do not use to reconstruct hosted zone" }, "requestID": "bbbf9847-96cb-45ef-b617-d535b9fe83d8", "eventID": "74e2d2c8-7497-4292-94d0-348272dbc4f7", "eventType": "AwsApiCall", "apiVersion": "2013-04-01" } }
Créer l’EventPattern correspondant
Cet exemple de modèle d'événement filtre un certain nombre de champs. Par exemple, eventName, hostedZoneld, action et type. Les événements correspondants doivent contenir tous les champs et valeurs correspondants. Le modèle isole les enregistrements A créés par rapport à une zone hébergée spécifique.
{ "source": [ "aws.route53" ], "detail": { "eventSource": [ "route53.amazonaws.com" ], "eventName": [ "ChangeResourceRecordSets" ], "requestParameters": { "hostedZoneId": [ "Z1RP12345WXRQD" ], "changeBatch": { "changes": { "action": [ "CREATE" ], "resourceRecordSet": { "type": [ "A" ] } } } } } }
Tester le modèle d'événement
Utiliser la console EventBridge pour tester le modèle d'événement
Pour tirer parti de l'environnement de test EventBridge, procédez comme suit :
- Dans la section Exemple d’événement, sélectionnez ou saisissez un exemple d'événement.
- Dans la section Modèle d’événement, fournissez un modèle d'événement. Vous pouvez utiliser les menus du formulaire Modèle d'événement pour créer un modèle d'événement. Vous pouvez également saisir un modèle d'événement personnalisé à l'aide des modèles personnalisés (éditeur JSON).
- Une fois les deux sections remplies, sélectionnez Modèle de test pour confirmer que le modèle d'événement correspond à l'exemple d'événement donné.
Utiliser l'interface de ligne de commande AWS pour tester le modèle d'événement
Dans l'AWS CLI, exécutez la commande test-event-pattern. Pour confirmer que le modèle d'événement correspond, assurez-vous que le résultat est vrai. Vous pouvez identifier les événements JSON envoyés par le service AWS et utiliser votre modèle d'événement personnalisé pour capturer des événements spécifiques.
Informations connexes
Modèles d'événements Amazon EventBridge
Tutoriel : Créer une règle EventBridge qui réagit aux appels d'API AWS avec CloudTrail
Amazon EventBridge - Quelle est la différence entre CloudWatch Events et EventBridge ? sur le site de YouTube
Vidéos associées


Contenus pertinents
- demandé il y a 7 moislg...
- demandé il y a 2 anslg...
- demandé il y a 10 jourslg...
- AWS OFFICIELA mis à jour il y a 3 mois
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 8 mois