我想在 AWS CloudFormation 堆栈创建的 AWS Lambda 函数中查看 Amazon EventBridge 事件规则触发器。
简短描述
当您通过 CloudFormation 堆栈创建 AWS::Events::Rule 和 AWS::Lambda::Function 资源时,您可能不会在 Lambda 控制台上看到事件规则触发器。这通常发生在 EventBridge 没有权限调用 Lambda 函数时。当从 CloudFormation 堆栈外部删除事件规则资源时,也可能发生这种情况。
解决方法
EventBridge 无权调用 Lambda 函数
使用 CloudFormation 堆栈中的 AWS::Lambda::Permission 资源将 lambda:InvokeFunction 权限添加到目标 Lambda 函数的基于资源的策略中。
例如,使用以下资源向 EventRule 资源授予调用 Lambda 函数的权限:
PermissionForEventsToInvokeLambda:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !Ref LambdaFunction
Action: lambda:InvokeFunction
Principal: events.amazonaws.com
SourceArn: !GetAtt EventRule.Arn
授予权限后,事件规则触发器将显示在 Lambda 控制台中。
事件规则资源已从 CloudFormation 堆栈外部删除
从 CloudFormation 堆栈外部删除 EventBridge 事件规则时,该事件规则不会显示在 Lambda 触发器中。
要解决此问题,请在模板中更改资源的逻辑 ID 以重新创建资源。
相关信息
AWS::Lambda::Permission
调用 Lambda 函数以响应事件