Je souhaite que la règle d'événements Amazon EventBridge soit déclenchée dans ma fonction AWS Lambda créée par la pile AWS CloudFormation.
Brève description
Lorsque vous créez les ressources AWS::Events::Rule et AWS::Lambda::Function via la pile CloudFormation, il est possible que la règle d'événement ne se déclenche pas sur la console Lambda. Cela se produit généralement lorsque EventBridge n'est pas autorisé à invoquer la fonction Lambda. Cela peut également se produire lorsque la ressource de règle d'événement est supprimée de l'extérieur de la pile CloudFormation.
Résolution
EventBridge n'est pas autorisé à invoquer la fonction Lambda
Utilisez la ressource AWS::Lambda::Permission dans la pile CloudFormation pour ajouter l'autorisation lambda:InvokeFunction à la stratégie basée sur les ressources de votre fonction Lambda cible.
Par exemple, utilisez la ressource suivante pour autoriser la ressource EventRule à invoquer la fonction Lambda :
PermissionForEventsToInvokeLambda:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !Ref LambdaFunction
Action: lambda:InvokeFunction
Principal: events.amazonaws.com
SourceArn: !GetAtt EventRule.Arn
Une fois que vous avez accordé l'autorisation, le déclencheur de la règle d'événement apparaît dans la console Lambda.
La ressource de règle d'événement est supprimée de l'extérieur de la pile CloudFormation
Lorsqu'une règle d'événement EventBridge est supprimée de l'extérieur de la pile CloudFormation, elle n'apparaît pas dans le déclencheur Lambda.
Pour résoudre ce problème, modifiez l'ID logique de la ressource dans le modèle afin de recréer la ressource.
Informations connexes
AWS::Lambda::Permission
Invoquer la fonction Lambda en réponse à un événement