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.
Résolution des problèmes liés à Amazon EventBridge
Vous pouvez utiliser les rubriques de cette section pour résoudre les problèmes liés à Amazon EventBridge .
Rubriques
- Ma règle s’est exécutée, mais ma fonction Lambda n’a pas été invoquée
- Je viens de créer ou de modifier une règle, mais elle ne correspond pas à un événement de test
- Ma règle ne s’est pas exécutée à l’heure que j’avais spécifiée dans ScheduleExpression
- Ma règle ne s’est pas exécutée à l’heure prévue
- Ma règle correspond aux API appels de service AWS internationaux, mais elle n'a pas fonctionné
- Le IAM rôle associé à ma règle est ignoré lors de l'exécution de la règle
- Ma règle a un modèle d’événement censé correspondre à une ressource, mais aucun événement ne correspond
- La livraison de mon événement à la cible a été retardée
- Certains événements ne sont pas livrés à ma cible
- Ma règle s’est exécutée plusieurs fois en réponse à un événement
- Prévention des boucles infinies
- Mes événements ne sont pas transmis à la SQS file d'attente Amazon cible
- Ma règle fonctionne, mais je ne vois aucun message publié dans mon SNS sujet Amazon
- Mon SNS sujet Amazon dispose toujours d'autorisations EventBridge même après avoir supprimé la règle associée au SNS sujet Amazon
- Avec quelles clés de IAM condition puis-je utiliser EventBridge ?
- Comment savoir si les EventBridge règles ne sont pas respectées ?
Ma règle s’est exécutée, mais ma fonction Lambda n’a pas été invoquée
L’une des raisons pour lesquelles votre fonction Lambda peut ne pas s’exécuter est que vous ne disposez pas des autorisations appropriées.
Pour vérifier vos autorisations pour votre fonction Lambda
-
À l'aide de AWS CLI, exécutez la commande suivante avec votre fonction et votre AWS région :
aws lambda get-policy --function-name
MyFunction
--regionus-east-1
Le résultat suivant doit s'afficher.
{ "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
-
Si le message d’erreur suivant s’affiche.
A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.
Ou, si vous voyez le résultat, mais ne pouvez pas localiser events.amazonaws.com en tant qu'entité de confiance dans la stratégie, exécutez la commande suivante :
aws lambda add-permission \ --function-name
MyFunction
\ --statement-idMyId
\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012
:rule/MyRule
-
Si la sortie contient un champ
SourceAccount
, vous devez le supprimer. UnSourceAccount
paramètre EventBridge empêche d'invoquer la fonction.
Note
Si la politique est incorrecte, vous pouvez modifier la règle dans la EventBridge console en la supprimant puis en la rajoutant à la règle. La EventBridge console définit ensuite les autorisations correctes sur la cible.
Si vous utilisez une version ou un alias Lambda spécifique, ajoutez le paramètre --qualifier
dans les commandes aws lambda get-policy
et aws lambda add-permission
, comme illustré dans la commande suivante.
aws lambda add-permission \ --function-name
MyFunction
\ --statement-idMyId
\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012
:rule/MyRule
--qualifieralias or version
Je viens de créer ou de modifier une règle, mais elle ne correspond pas à un événement de test
Lorsque vous modifiez une règle ou ses cibles, les événements entrants peuvent ne pas commencer ou arrêter immédiatement de chercher des correspondances aux nouvelles règles ou aux règles mises à jour. Les modifications ne prennent pas effet instantanément.
Si les événements ne correspondent toujours pas après un court laps de temps TriggeredRules
Invocations
, vérifiez les CloudWatch statistiques et FailedInvocations
votre règle. Pour plus d'informations sur ces statistiques, consultez Monitoring Amazon EventBridge.
Si la règle est destinée à correspondre à un événement provenant d'un AWS service, effectuez l'une des opérations suivantes :
Utilisez l’action
TestEventPattern
pour vérifier si le modèle d’événement de votre règle correspond à un événement de test. Pour plus d'informations, consultez TestEventPatternle Amazon EventBridge API Reference.Utilisez le bac à sable de la EventBridge console.
Ma règle ne s’est pas exécutée à l’heure que j’avais spécifiée dans ScheduleExpression
Assurez-vous d'avoir défini le calendrier de la règle dans le fuseau horaire UTC +0. Si le paramètre ScheduleExpression
est correct, suivez les étapes indiquées dans Je viens de créer ou de modifier une règle, mais elle ne correspond pas à un événement de test.
Ma règle ne s’est pas exécutée à l’heure prévue
EventBridge exécute les règles dans la minute qui suit l'heure de début que vous avez définie. Le compte à rebours pour l'exécution commence dès que la règle est créée.
Note
Les règles planifiées ont le type de livraison guaranteed
, ce qui signifie que les événements seront déclenchés au moins une fois à chaque heure prévue.
Vous pouvez utiliser une expression cron pour invoquer des cibles à une heure précise. Pour créer une règle qui s’exécute toutes les quatre heures à la 0ème minute, effectuez l’une des opérations suivantes :
-
Dans la EventBridge console, vous utilisez l'expression
0 0/4 * * ? *
cron. -
En utilisant le AWS CLI, vous utilisez l'expression
cron(0 0/4 * * ? *)
.
Par exemple, pour créer une règle nommée TestRule
qui s'exécute toutes les 4 heures à l'aide de AWS CLI, vous devez utiliser la commande suivante.
aws events put-rule --name
TestRule
--schedule-expression 'cron(0 0/4 * * ? *)'
Pour exécuter une règle toutes les cinq minutes, utilisez l’expression cron suivante.
aws events put-rule --name
TestRule
--schedule-expression 'cron(0/5 * * * ? *)'
La résolution maximale pour une EventBridge règle qui utilise une expression cron est d'une minute. Votre règle planifiée s’exécute au cours de cette minute, mais pas précisément à la seconde exacte.
Étant donné que EventBridge les services cibles sont distribués, il peut y avoir un délai de plusieurs secondes entre le moment où la règle planifiée s'exécute et le moment où le service cible exécute l'action sur la ressource cible.
Ma règle correspond aux API appels de service AWS internationaux, mais elle n'a pas fonctionné
AWS les services internationaux, tels que, IAM et Amazon Route 53, ne sont disponibles que dans la région de l'est des États-Unis (Virginie du Nord), de sorte que les événements liés à des AWS API appels provenant de services internationaux ne sont disponibles que dans cette région. Pour plus d’informations, consultez Événements liés aux AWS services d'Amazon EventBridge.
Le IAM rôle associé à ma règle est ignoré lors de l'exécution de la règle
EventBridge utilise uniquement des IAM rôles pour les règles qui envoient des événements aux flux Kinesis. Pour les règles qui invoquent des fonctions Lambda ou des SNS rubriques Amazon, vous devez fournir des autorisations basées sur les ressources.
Assurez-vous que vos AWS STS points de terminaison régionaux sont activés, afin qu' EventBridge ils puissent les utiliser lorsqu'ils assument le IAM rôle que vous leur avez attribué. Pour plus d'informations, consultez la section Activation et désactivation AWS STS dans une AWS région dans le guide de l'IAMutilisateur.
Ma règle a un modèle d’événement censé correspondre à une ressource, mais aucun événement ne correspond
La plupart des services AWS traitent deux points (:)) ou une barre oblique (/) comme le même caractère dans Amazon Resource Names (ARNs)., mais EventBridge utilisent une correspondance exacte dans les modèles d'événements et les règles. Veillez à utiliser les bons ARN caractères lors de la création de modèles d'événements afin qu'ils correspondent à la ARN syntaxe de l'événement correspondant.
Certains événements, tels que les AWS API appels provenant de CloudTrail, n'ont aucun élément dans le champ des ressources.
La livraison de mon événement à la cible a été retardée
EventBridge essaie de transmettre un événement à une cible pendant 24 heures au maximum, sauf dans les scénarios où votre ressource cible est limitée. La première tentative a lieu dès que l'événement arrive dans le flux d'événements. Si le service cible rencontre des problèmes, EventBridge replanifie automatiquement une autre livraison. Si 24 heures se sont écoulées depuis l'arrivée de l'événement, EventBridge arrête d'essayer de livrer l'événement et publie la FailedInvocations
métrique dans CloudWatch. Nous vous recommandons de configurer un DLQ pour stocker les événements qui n'ont pas pu être transmis avec succès à une cible. Pour plus d’informations, consultez Utilisation de files d'attente de lettres mortes pour traiter les événements non livrés dans EventBridge.
Certains événements ne sont pas livrés à ma cible
Si la cible d'une EventBridge règle est limitée pendant une période prolongée, il est EventBridge possible que vous ne réessayiez pas la livraison. Par exemple, si la cible n'est pas configurée pour gérer le trafic d'événements entrant et que le service cible limite les demandes effectuées en votre nom, il est possible EventBridge que la livraison ne EventBridge soit pas relayée.
Ma règle s’est exécutée plusieurs fois en réponse à un événement
Dans de rares cas, la même règle peut s’exécuter plusieurs fois pour un seul événement ou une seule période planifiée, ou la même cible peut être invoquée plusieurs fois pour une règle déclenchée donnée.
Prévention des boucles infinies
Dans EventBridge, il est possible de créer une règle qui conduit à des boucles infinies, où la règle s'exécute de manière répétée. Si vous disposez d’une règle qui provoque une boucle infinie, réécrivez-la de sorte que les actions entreprises par la règle ne correspondent pas à la même règle.
Par exemple, une règle qui ACLs détecte les modifications dans un compartiment Amazon S3, puis qui exécute un logiciel pour les faire passer à un nouvel état provoque une boucle infinie. Une façon de le résoudre consiste à réécrire la règle afin qu'elle ne corresponde ACLs qu'aux personnes en mauvais état.
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.
Mes événements ne sont pas transmis à la SQS file d'attente Amazon cible
Si votre SQS file d'attente Amazon est cryptée, vous devez créer une KMS clé gérée par le client et inclure la section d'autorisation suivante dans votre politique en matière de KMS clés. Pour plus d'informations, consultez la section Configuration AWS KMS des autorisations.
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
Ma règle fonctionne, mais je ne vois aucun message publié dans mon SNS sujet Amazon
Scénario 1
Vous devez disposer d'une autorisation pour publier des messages dans votre SNS rubrique Amazon. Utilisez la commande suivante en remplaçant us-east-1 par votre région et en utilisant votre sujet. AWS CLI ARN
aws sns get-topic-attributes --region
us-east-1
--topic-arn "arn:aws:sns:us-east-1
:123456789012
:MyTopic"
Pour obtenir l’autorisation appropriée, les attributs de votre politique doivent être similaires aux attributs suivants.
"{\"Version\":\"2012-10-17\", \"Id\":\"__default_policy_ID\", \"Statement\":[{\"Sid\":\"__default_statement_ID\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"*\"}, \"Action\":[\"SNS:Subscribe\", \"SNS:ListSubscriptionsByTopic\", \"SNS:DeleteTopic\", \"SNS:GetTopicAttributes\", \"SNS:Publish\", \"SNS:RemovePermission\", \"SNS:AddPermission\", \"SNS:SetTopicAttributes\"], \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\", \"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"123456789012\"}}},{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}]}"
Si events.amazonaws.com
n’a pas l’autorisation Publish
dans votre politique, commencez par copier la politique actuelle, puis ajoutez l’instruction suivante à la liste des instructions.
{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}
Définissez ensuite les attributs du sujet à l' AWS CLI aide de la commande suivante.
aws sns set-topic-attributes --region
us-east-1
--topic-arn "arn:aws:sns:us-east-1:123456789012
:MyTopic" --attribute-name Policy --attribute-valueNEW_POLICY_STRING
Note
Scénario 2
Si votre SNS sujet est crypté, vous devez inclure la section suivante dans votre politique relative aux KMS clés.
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
Mon SNS sujet Amazon dispose toujours d'autorisations EventBridge même après avoir supprimé la règle associée au SNS sujet Amazon
Lorsque vous créez une règle avec Amazon SNS comme cible, vous ajoutez l' EventBridge autorisation d'accéder à votre SNS sujet Amazon en votre nom. Si vous supprimez la règle peu de temps après l'avoir créée, il est EventBridge possible que l'autorisation ne soit pas supprimée de votre SNS sujet Amazon. Si cela se produit, vous pouvez supprimer l’autorisation de la rubrique à l’aide de la commande aws sns set-topic-attributes
. Pour en savoir plus sur les autorisations basées sur une ressource pour l’envoi d’événements, consultez Utilisation de politiques basées sur les ressources pour Amazon EventBridge.
Avec quelles clés de IAM condition puis-je utiliser EventBridge ?
EventBridge prend en charge AWS les clés de condition générales (voir IAMet AWS STS conditionner les clés contextuelles dans le guide de IAM l'utilisateur), ainsi que les clés répertoriées surUtilisation IAM des conditions politiques sur Amazon EventBridge.
Comment savoir si les EventBridge règles ne sont pas respectées ?
Vous pouvez utiliser l'alarme suivante pour vous avertir lorsque vos EventBridge règles ne sont pas respectées.
Pour créer une alarme pour vous alerter lorsque les règles sont interrompues
-
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Sélectionnez Create Alarm (Créer une alerte). Dans le volet CloudWatch Metrics by Category, sélectionnez Events Metrics.
-
Dans la liste des mesures, sélectionnez FailedInvocations.
-
Au-dessus du graphique, choisissez Statistique, Somme.
-
Pour Période, choisissez une valeur, par exemple, 5 minutes. Choisissez Suivant.
-
Sous Seuil d'alarme, pour Nom, tapez un nom unique pour l'alarme, par exemple myFailedRules. Pour Description, entrez une description de l’alarme, par exemple : Les règles ne livrent pas les événements aux cibles.
-
Pour is, choisissez >= et 1. Pour pour, entrez 10.
-
Sous Actions, pour Whenever this alarm, sélectionnez State is ALARM.
-
Pour Envoyer une notification à, sélectionnez un SNS sujet Amazon existant ou créez-en un nouveau. Pour créer une rubrique, choisissez New list. Tapez un nom pour le nouveau SNS sujet Amazon, par exemple : myFailedRules.
-
Pour Liste d'e-mails, tapez une liste d'adresses e-mail séparées par des virgules pour être averties lorsque l'alarme passe à l'ALARMétat.
-
Sélectionnez Create Alarm (Créer une alerte).