Pourquoi ne puis-je pas afficher le déclencheur EventBridge dans ma fonction Lambda créée par ma pile CloudFormation ?

Lecture de 2 minute(s)
0

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

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an