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énements 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 vers 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 pouvant entraîner des higher-than-expected frais et des ralentissements. Par exemple, vous pouvez créer par inadvertance une règle qui entraîne une boucle infinie, dans laquelle une règle est déclenchée de manière récursive sans fin. Supposons que vous avez créé une règle permettant de détecter que les listes ACL ont été modifiées sur un compartiment Amazon S3 et de déclencher 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 obtenir des conseils sur la façon d’écrire des règles et des modèles d’événements précis afin de réduire au maximum ces résultats inattendus, consultez Bonnes pratiques lors de la définition de règles Amazon EventBridge et Bonnes pratiques lors de la définition des modèles EventBridge d'événements Amazon.
La vidéo suivante présente les principes de base des modèles d’événements :
Rubriques
- Création de modèles d’événements
- Exemples d’événements et de modèles d’événements
- Faire correspondre des valeurs nulles et des chaînes vides dans les modèles EventBridge d'événements Amazon
- Tableaux dans les modèles d' EventBridge événements Amazon
- Filtrage du contenu dans les modèles EventBridge d'événements Amazon
- Tester un modèle d'événement à l'aide du EventBridge Sandbox
- Bonnes pratiques lors de la définition des modèles EventBridge d'événements Amazon
L'événement suivant montre un AWS événement simple provenant d'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 les événements instance-termination
Amazon EC2.
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["terminated"]
}
}
Création de modèles d’événements
Pour créer un modèle d’événement, vous spécifiez les champs d’un é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"
, et le "state"
champ situé à l'intérieur du champ "detail"
d'objet. EventBridge ignore 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 figurant dans le modèle d’événement. Les noms de champs doivent également apparaître dans l’événement avec la même structure imbriquée.
Lorsque vous écrivez des modèles d’événements pour correspondre à des événements, vous pouvez utiliser l’API TestEventPattern
ou la commande d’interface de ligne de commande test-event-pattern
pour vérifier que votre modèle correspond au événements appropriés. Pour plus d'informations, consultez TestEventPattern.
Correspondance de valeurs d’événements
Dans un modèle d’événement, la valeur à mettre en correspondance se trouve dans un tableau JSON, entourée de crochets (« [ », « ] ») afin que vous puissiez fournir plusieurs valeurs. Par exemple, pour faire correspondre des événements provenant d'Amazon EC2 ou AWS Fargate, vous pouvez utiliser le modèle suivant, qui correspond aux événements dont la valeur du "source"
champ est soit ou"aws.ec2"
. "aws.fargate"
{
"source": ["aws.ec2", "aws.fargate"]
}
Considérations lors de la création de modèles d’événements
Voici certains éléments à prendre en compte lors de la construction de vos modèles d’événements :
EventBridge ignore les champs de l'événement qui ne sont pas inclus dans le modèle d'événement. En conséquence, le caractère générique
"*": "*"
est ajouté pour les champs qui n’apparaissent pas dans le modèle d’événements.Les valeurs auxquelles les modèles d’événements correspondent suivent les règles JSON. Vous pouvez inclure des chaînes entre guillemets ("), des nombres et les mots-clés
true
,false
, etnull
.Pour les chaînes, EventBridge utilise une character-by-character correspondance exacte sans pliage des boîtiers ni aucune autre normalisation des chaînes.
Pour les nombres, EventBridge utilise une représentation sous forme de chaîne. Par exemple, 300, 300,0 et 3.0e2 ne sont pas considérés égaux.
Si plusieurs modèles sont spécifiés pour le même champ JSON, utilise EventBridge uniquement le dernier.
-
Sachez que lorsque vous EventBridge compilez des modèles d'événements à utiliser, il utilise un point (.) comme caractère de jointure.
Cela signifie que les modèles d'événements suivants EventBridge seront traités comme identiques :
## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }
Et que les deux modèles d’événements correspondront aux deux événements suivants :
## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
Note
Cela décrit EventBridge le comportement actuel et ne doit pas être invoqué pour ne pas le modifier.
-
Les modèles d’événements contenant des champs en double ne sont pas valides. Si un modèle contient des champs dupliqués, EventBridge seule la valeur finale du champ est prise en compte.
Par exemple, les modèles d’événements suivants correspondront au même événement :
## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sns.amazonaws.com"] } }
Et EventBridge traite les deux événements suivants comme identiques :
## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } ] } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["sns.amazonaws.com"] } ] }
Note
Cela décrit EventBridge le comportement actuel et ne doit pas être invoqué pour ne pas le modifier.
Opérations de comparaison à utiliser dans les modèles d’événements
Vous trouverez ci-dessous un résumé de tous les opérateurs de comparaison disponibles dans EventBridge.
Les opérateurs de comparaison ne fonctionnent que sur les nœuds terminaux, à l’exception de $or
et anything-but
.
Comparison (Comparaison) | Exemple | Syntaxe des règles |
---|---|---|
And |
Le lieu est « New York » et le jour est « Monday » |
|
N'importe quoi, sauf | L'état est n'importe quelle valeur autre que « initialisation ». |
|
Tout sauf (commence par) | La région n'est pas située aux États-Unis. |
|
Tout sauf (se termine par) | FileName ne se termine pas par une extension .png. |
|
Tout sauf (ignorer le cas) | L'état est une valeur autre que « initialisation » ou toute autre variation du boîtier, telle que « INITIALISATION ». |
|
N'importe quoi, sauf en utilisant un joker | FileName n'est pas un chemin de fichier qui inclut |
|
La région est aux États-Unis. |
|
|
Commence par (ignorer le cas) | Le nom du service commence par les lettres « eventb », quel que soit le cas. |
|
LastName est vide. |
|
|
Égal à |
Le nom est « Alice » |
|
Le nom est « Alice » |
|
|
FileName se termine par une extension .png |
|
|
Se termine par (ignorer les majuscules) | Le nom du service se termine par les lettres « tbridge » ou par toute autre variante du boîtier, telle que « TBRIDGE ». |
|
ProductName existe |
|
|
ProductName n'existe pas |
|
|
La météo est tout sauf « Raining » |
|
|
UserID est null |
|
|
Le prix est de 100 |
|
|
Le prix est supérieur à 10 et inférieur ou égal à 20 |
|
|
Ou |
PaymentType est « Crédit » ou « Débit » |
|
Location est « New York », ou Day est « Monday ». |
|
|
Tout fichier portant l’extension .png, situé dans le dossier « dir » |
|
Exemples d’événements et de modèles d’événements
Vous pouvez utiliser tous les types de données et toutes les valeurs JSON pour mettre des événements en correspondance. Les exemples suivants illustrent des évènements et les modèles d’évènements qui leur correspondent.
Correspondance de champs
Vous pouvez mettre en correspondance la valeur d’un champ. Tenez compte de 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 champ "responseElements"
pour établir une correspondance.
{
"source": ["aws.autoscaling"],
"detail-type": ["EC2 Instance Launch Successful"],
"detail": {
"responseElements": [null]
}
}
Correspondance de valeurs
Prenons 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énement 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]
}
}