AWS-为每个API调用公共任务Lambda



我们需要为应用程序编写自定义日志,以捕获诸如谁做了什么以及什么时候做之类的事情。

为此,我们创建了一个Lambda来将日志插入DynamoDb数据库。每当我们从应用程序的前端调用API时,我们都需要从公共位置调用这个Lambda,而不是在每个单独的Lambda中调用它。

我们尝试在API网关授权器中调用它,但它不起作用,因为我们的网关授权器类型为"Token"。因此,它不接受除访问令牌之外的任何其他参数。我们无法将自定义授权人的类型更改为"请求"类型,因为我们需要访问令牌才能在Cognito中授权用户。问题:有没有什么地方可以调用Logs Lambda,以便在调用每个API时执行它?

你的最后一段没有意义,但通常最好的方法是流式传输,因为这可以最大限度地减少你需要进行的Lambda调用量。

您可以将包含路径、当前时间、主体等内容的API访问日志流式传输到cloudwatch日志流或lambda。

在这个lambda中,您可以在那里执行自定义日志记录逻辑。如果你有其他来源会有不同类型的事件,你可能需要直接使用Kinesis进行流媒体播放。

尝试使用不同的事件触发器。如果您的lambda可以由队列或cloudfront触发,则不会出现授权问题。但是,您的应用程序必须扮演合适的角色才能使用其中的一些。如果您使用的是Java,您可以通过多种方式拦截您的请求,并在处理API之前通过SDK进行lambda调用。需要更多细节来提供整体解决方案。

最新更新