我有自定义逻辑,它定义了 jackson 应如何在 AWS lambda 函数中序列化和反序列化域对象。 AWS lambda 函数使用 AWS lambda 运行时 java 11(amazon-corretto-11) 部署在 AWS 上。 序列化在本地测试但在 AWS 中测试时工作正常。
如何找出 AWS lambda 运行时中实际使用了哪些 java 依赖项以及哪些版本的依赖项?
在我的具体情况下,它是我想找出的 jackson 依赖项的版本。
最佳答案
与其尝试对运行时进行逆向工程,这可能很难做到,不如尝试专注于您的问题:运行时提供的序列化不起作用。
你可以做的是重构你的处理函数来接受不是你类的对象(这样,反序列化发生在运行时,你得到 POJO),而是原始请求(如果你使用 APIGatewayProxyRequestEvent
来自 com.amazonaws:aws-lambda-java-events
'正在使用 API 网关)或 InputStream
。这样,您将获得原始有效载荷,然后您可以根据需要对其进行解析。在 AWS Lambda function handler in Java 中阅读更多内容。您还需要将依赖项包含在部署包中(谷歌搜索“fat jar”)。
关于java - 如何在 AWS Lambda 运行时查看实际的 java 依赖项/库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62513512/