Modèles d'EventBridgeé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.

Modèles d'EventBridgeévénements Amazon

Les modèles d'événement ont la même structure que les événements auxquels ils correspondent. Les règles utilisent des modèles d'événements pour sélectionner des événements et les envoyer à des cibles. Soit un modèle d'événement correspond à un événement, soit il n'y correspond pas.

Important

Dans EventBridge, il est possible de créer des règles qui conduisent à des boucles infinies, dans lesquelles une règle est exécutée de manière répétée. Par exemple, une règle peut détecter que les listes de contrôle d'accès (ACL) ont été modifiées sur un compartiment S3 et lancer un logiciel pour les modifier afin qu'elles aient l'état souhaité. Si la règle n'est pas correctement écrite, la modification suivante des listes de contrôle d'accès (ACL) déclenche à nouveau la règle, créant ainsi une boucle infinie.

Pour éviter ce problème, écrivez les règles de sorte que les actions déclenchées ne relancent pas la même règle. Par exemple, votre règle pourrait ne s'exécuter que si les listes ACL s'avèrent être dans un état incorrect plutôt qu'après une modification.

Une boucle infinie peut rapidement entraîner des coûts plus importants que prévu. Nous vous recommandons d'utiliser les budgets, qui vous avertissent lorsque les frais dépassent votre limite spécifiée. Pour plus d'informations, consultez Gestion des coûts avec les budgets.

La vidéo suivante explique les bases des modèles d'événements :

L'événement suivant montre unAWS événement simple provenant de Amazon EC2.

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "111122223333", "time": "2017-12-22T18:43:48Z", "region": "us-west-1", "resources": [ "arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0" ], "detail": { "instance-id": "i-1234567890abcdef0", "state": "terminated" } }

Le modèle d'événement suivant traite tous lesinstance-termination événements Amazon EC2.

{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }

Crée des modèles d'événement

Pour créer un modèle d'événement, vous devez spécifier les champs d'événement auxquels vous souhaitez que le modèle d'événement corresponde. Spécifiez uniquement les champs que vous utilisez pour la correspondance. L'exemple de modèle d'événement précédent ne fournit des valeurs que pour trois champs : les champs de niveau supérieur"source" et"detail-type" le"state" champ situé à l'intérieur du champ"detail" d'objet. EventBridgeignore tous les autres champs de l'événement lors de l'application de la règle.

Pour qu'un modèle d'événement corresponde à un événement, cet événement doit contenir tous les noms de champs répertoriés dans le modèle d'événement. Les noms des champs doivent également apparaître dans l'événement avec la même structure d'imbrication.

EventBridgeignore les champs de l'événement qui ne sont pas inclus dans le modèle d'événement. Il en résulte qu'il existe un caractère générique « * » : « * » pour les champs qui n'apparaissent pas dans le modèle d'événements.

Les valeurs auxquelles les modèles d'événement correspondent suivent les règles JSON. Vous pouvez inclure des chaînes entre guillemets ("), des nombres et les mots-clés true, false, et null.

Pour les chaînes,EventBridge utilise unecharacter-by-character correspondance exacte sans changement de casse ou aucun autre type de normalisation de chaîne.

Pour les nombres,EventBridge utilise une représentation par chaîne. Par exemple, 300, 300,0 et 3.0e2 ne sont pas considérés égaux.

Lorsque vous écrivez des modèles d'événement pour correspondre à des événements, vous pouvez utiliser l'TestEventPatternAPI ou la commandetest-event-pattern CLI pour vérifier que votre modèle correspond aux événements corrects. Pour plus d'informations, consultez TestEventPattern.

Voici un récapitulatif de tous les opérateurs de comparaison disponibles dansEventBridge.

Note

Tous les opérateurs de comparaison ne sont pas actuellement pris en charge par EventBridgePipes.

Comparison (Comparaison) Example (Exemple) Syntaxe des règles Soutenu par Pipes

Null

UserID est null

"UserID": [ null ]

Oui

Empty

LastNameest vide

"LastName": [""]

Oui

Égal à

Le nom est « Alice »

"Name": [ "Alice" ]

Oui

Égal à (ignorer le cas)

Le nom est « Alice »

« Nom » : [{"equals-ignore-case« : « alice »}]

Non

And

Le lieu est « New York » et le jour est « Monday »

"Location": [ "New York" ], "Day": ["Monday"]

Oui

Ou

PaymentTypeest « Credit » ou « Debit »

PaymentType« » : « Credit », « Debit"]

Oui

Ou (champs multiples)

Le lieu est « New York » ou le jour est « Monday ».

« $or » : [{« Location » : [« New York »]

Non

Not

La météo est tout sauf « Raining »

"Weather": [ { "anything-but": [ "Raining" ] } ]

Oui

Numérique (égal)

Le prix est de 100

"Price": [ { "numeric": [ "=", 100 ] } ]

Oui

Numérique (plage)

Le prix est supérieur à 10 et inférieur ou égal à 20

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Oui

Existe

ProductNameexiste

ProductName« » : true}]]

Oui

N'existe pas

ProductNamen'existe pas

ProductName« » : false}]]

Oui

Commence par

La région se trouve aux États-Unis

"Region": [ {"prefix": "us-" } ]

Oui

Ends with

FileNamese termine par une extension .png.

«FileName « : [{« suffixe » : « .png »}]

Non

Valeurs de correspondance

Dans un modèle d'événement, la valeur à faire correspondre se trouve dans un tableau JSON, entouré de crochets (« [», «] ») afin que vous puissiez fournir plusieurs valeurs. Par exemple, pour faire correspondre des événements provenant d'Amazon EC2 ouAWS Fargate, vous pouvez utiliser le modèle suivant, qui correspond à des événements pour lesquels la valeur du"source" champ est soit"aws.ec2" ou"aws.fargate".

{ "source": ["aws.ec2", "aws.fargate"] }

Exemples d'événements et modèles d'événements

Vous pouvez utiliser tous les types de données et toutes les valeurs JSON pour faire correspondre les événements. Les exemples suivants illustrent des événements et les modèles d'événement qui leur correspondent.

Correspondance de champs

Vous pouvez effectuer une correspondance en fonction de la valeur d'un champ. Découvrez l'événement Amazon EC2 Auto Scaling suivant.

{ "version": "0", "id": "3e3c153a-8339-4e30-8c35-687ebef853fe", "detail-type": "EC2 Instance Launch Successful", "source": "aws.autoscaling", "account": "123456789012", "time": "2015-11-11T21:31:47Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "", "responseElements": null } }

Pour l'événement précédent, vous pouvez utiliser le"responseElements" champ correspondant.

{ "source": ["aws.autoscaling"], "detail-type": ["EC2 Instance Launch Successful"], "detail": { "responseElements": [null] } }

Correspondance de valeur

Prenons l'exemple de l'événement Amazon Macie suivant, qui est tronqué.

{ "version": "0", "id": "0948ba87-d3b8-c6d4-f2da-732a1example", "detail-type": "Macie Finding", "source": "aws.macie", "account": "123456789012", "time": "2021-04-29T23:12:15Z", "region":"us-east-1", "resources": [ ], "detail": { "schemaVersion": "1.0", "id": "64b917aa-3843-014c-91d8-937ffexample", "accountId": "123456789012", "partition": "aws", "region": "us-east-1", "type": "Policy:IAMUser/S3BucketEncryptionDisabled", "title": "Encryption is disabled for the S3 bucket", "description": "Encryption is disabled for the Amazon S3 bucket. The data in the bucket isn’t encrypted using server-side encryption.", "severity": { "score": 1, "description": "Low" }, "createdAt": "2021-04-29T15:46:02Z", "updatedAt": "2021-04-29T23:12:15Z", "count": 2, . . .

Le modèle d'événements suivant correspond à tout événement dont le score de gravité est de 1 et le nombre de 2.

{ "source": ["aws.macie"], "detail-type": ["Macie Finding"], "detail": { "severity": { "score": [1] }, "count":[2] } }